1
0
mirror of https://github.com/vrana/adminer.git synced 2025-09-04 03:35:41 +02:00

Compare commits

...

31 Commits
v4.9 ... v4.9.2

Author SHA1 Message Date
Peter Knut
3f0bc24e01 Release 4.9.2 2024-09-18 09:50:35 +02:00
Peter Knut
4863f48d33 Basic JS code cleanup 2024-09-18 09:39:17 +02:00
Peter Knut
9ea8f44919 Fix undefined property in error message if driver does not support error number 2024-09-18 00:46:34 +02:00
khoazero123
fa791b5461 PostgreSQL: Fix exporting CREATE TABLE with sequence default value 2024-09-18 00:31:15 +02:00
Roy-Orbison
203162b203 Function to retrieve driver name
Plugins cannot access $drivers global after compilation.
2024-09-18 00:27:02 +02:00
Peter Knut
e4e76b6384 PostgreSQL: Allow to set connection's sslmode with AdminerLoginSsl plugin
Thanks to wodka (https://github.com/vrana/adminer/pull/427/files)
2024-09-18 00:27:02 +02:00
Peter Knut
353cd452a3 PostgreSQL: Fix exporting CREATE TABLE query with GENERATED default values
Thanks to GottfriedCP (https://github.com/adminerevo/adminerevo/issues/157)
2024-09-18 00:27:02 +02:00
Peter Knut
5bc4ac6c18 Merge branch 'editor-search-fix' 2024-09-17 15:46:51 +02:00
Peter Knut
aec8275502 Editor: Fix searching in tables
Thanks to ytetsuro (https://github.com/vrana/adminer/pull/473)
2024-09-17 15:46:36 +02:00
Peter Knut
7d5077e687 Cleanup the code for searching 2024-09-17 15:36:02 +02:00
Peter Knut
91d0d8538f MySQL: Do not show 'empty' enum value in strict mode 2024-09-10 23:47:06 +02:00
Peter Knut
2439369143 PostreSQL: Fix search condition for network address types, add macaddr8 type
This fixes issue https://github.com/adminerevo/adminerevo/issues/115
2024-09-10 10:27:59 +02:00
Peter Knut
d5bce9b3e9 PostreSQL: Fix search fields configuration
Regression from 4.9.
2024-09-10 08:28:18 +02:00
Peter Knut
b42762e4dc Remove hardcoded textarea height 2024-09-09 23:54:51 +02:00
Peter Knut
695a720403 Bump version to 4.9.2-dev 2024-09-09 23:53:50 +02:00
Peter Knut
e6fdf2b400 Release 4.9.1 2024-09-09 10:30:14 +02:00
Peter Knut
b542b6613c PostgreSQL: Fix undefined properties on PHP 8
Thanks to FrancoisCapon (https://github.com/vrana/adminer/pull/429)
2024-09-08 23:22:44 +02:00
Peter Knut
374b8ed6a6 PostgreSQL: Fix documentation link for SERIAL type
Thanks to leggiero (https://github.com/vrana/adminer/pull/432)
2024-09-08 23:01:47 +02:00
Michal Paulovic
58cca3f951 MySQL: Add unix_timestamp to functions 2024-09-08 23:01:46 +02:00
caltong
5eecb8e6a3 PostgreSQL: Make data length calculation more accurate 2024-09-08 22:28:06 +02:00
Thomas Daniels
0d0936550c PostgreSQL: Show only accessible databases 2024-09-08 01:02:49 +02:00
Peter Knut
c4ed9500a1 Add support for translations in plugins 2024-09-07 22:54:04 +02:00
Peter Knut
0863766970 Replace deprecated <acronym> with <abbr> 2024-09-07 22:53:18 +02:00
Peter Knut
146a24efad AdminerLoginOtp: Autocomplete hints for OTP input field, code refactoring
Tanks to SGCBB (https://github.com/vrana/adminer/pull/488)
2024-09-07 22:53:08 +02:00
Sneda8
00b9fbda08 PHP 8.3 error suppression
PHP 8.3 has shortened the array access on null error message to "Trying to access array offset on null". This commit changes the regular expression used to circumvent errors.
2024-09-06 00:33:53 +02:00
Peter Knut
8ea329538f Improved displaying of long table names in menu 2024-09-03 00:34:00 +02:00
Peter Knut
a3428cc7ff Fix compiling jush external files 2024-09-02 23:18:44 +02:00
Peter Knut
2a01969c96 Add .editorconfig file
Thanks to cweiske (https://github.com/adminerevo/adminerevo/pull/163).
2024-08-26 00:56:10 +02:00
Peter Knut
9b8d14c3ee Refactor and fix the plugin AdminerEditForeign
Thanks to Amunak (https://github.com/adminerevo/adminerevo/pull/86).
2024-08-25 23:48:02 +02:00
Peter Knut
2ce88d9bdc Fix field selection in Elasticsearch
Thanks to cweiske: https://github.com/adminerevo/adminerevo/pull/159
2024-08-25 22:14:50 +02:00
Peter Knut
593c8e5bcc Bump version to 4.9.1-dev 2024-08-21 00:07:57 +02:00
74 changed files with 1219 additions and 648 deletions

20
.editorconfig Normal file
View File

@@ -0,0 +1,20 @@
# https://editorconfig.org/
root = true
[*]
charset = utf-8
end_of_line = lf
insert_final_newline = true
trim_trailing_whitespace = true
[*.{php,css,js}]
indent_style = tab
[*.json]
indent_style = space
indent_size = 4
[*.md]
indent_style = space
trim_trailing_whitespace = false
max_line_length = 120

View File

@@ -630,6 +630,13 @@ WHERE sys1.xtype = 'TR' AND sys2.name = " . q($table)
return array(); return array();
} }
/**
* @return bool
*/
function is_strict_mode() {
return false;
}
function show_status() { function show_status() {
return array(); return array();
} }

View File

@@ -16,10 +16,17 @@ if (!defined("DRIVER")) {
global $adminer; global $adminer;
mysqli_report(MYSQLI_REPORT_OFF); // stays between requests, not required since PHP 5.3.4 mysqli_report(MYSQLI_REPORT_OFF); // stays between requests, not required since PHP 5.3.4
list($host, $port) = explode(":", $server, 2); // part after : is used for port or socket list($host, $port) = explode(":", $server, 2); // part after : is used for port or socket
$ssl = $adminer->connectSsl(); $ssl = $adminer->connectSsl();
if ($ssl) { if (isset($ssl['key']) || isset($ssl['cert']) || isset($ssl['ca'])) {
$this->ssl_set($ssl['key'], $ssl['cert'], $ssl['ca'], '', ''); $this->ssl_set(
isset($ssl['key']) ? $ssl['key'] : null,
isset($ssl['cert']) ? $ssl['cert'] : null,
isset($ssl['ca']) ? $ssl['ca'] : null,
null, null
);
} }
$return = @$this->real_connect( $return = @$this->real_connect(
($server != "" ? $host : ini_get("mysqli.default_host")), ($server != "" ? $host : ini_get("mysqli.default_host")),
($server . $username != "" ? $username : ini_get("mysqli.default_user")), ($server . $username != "" ? $username : ini_get("mysqli.default_user")),
@@ -50,7 +57,7 @@ if (!defined("DRIVER")) {
$row = $result->fetch_array(); $row = $result->fetch_array();
return $row[$field]; return $row[$field];
} }
function quote($string) { function quote($string) {
return "'" . $this->escape_string($string) . "'"; return "'" . $this->escape_string($string) . "'";
} }
@@ -234,25 +241,23 @@ if (!defined("DRIVER")) {
function connect($server, $username, $password) { function connect($server, $username, $password) {
global $adminer; global $adminer;
$options = array(PDO::MYSQL_ATTR_LOCAL_INFILE => false);
$dsn = "mysql:charset=utf8;host=" . str_replace(":", ";unix_socket=", preg_replace('~:(\d)~', ';port=\1', $server));
$options = [PDO::MYSQL_ATTR_LOCAL_INFILE => false];
$ssl = $adminer->connectSsl(); $ssl = $adminer->connectSsl();
if ($ssl) { if (isset($ssl['key'])) {
if (!empty($ssl['key'])) { $options[PDO::MYSQL_ATTR_SSL_KEY] = $ssl['key'];
$options[PDO::MYSQL_ATTR_SSL_KEY] = $ssl['key'];
}
if (!empty($ssl['cert'])) {
$options[PDO::MYSQL_ATTR_SSL_CERT] = $ssl['cert'];
}
if (!empty($ssl['ca'])) {
$options[PDO::MYSQL_ATTR_SSL_CA] = $ssl['ca'];
}
} }
$this->dsn( if (isset($ssl['cert'])) {
"mysql:charset=utf8;host=" . str_replace(":", ";unix_socket=", preg_replace('~:(\d)~', ';port=\1', $server)), $options[PDO::MYSQL_ATTR_SSL_CERT] = $ssl['cert'];
$username, }
$password, if (isset($ssl['ca'])) {
$options $options[PDO::MYSQL_ATTR_SSL_CA] = $ssl['ca'];
); }
$this->dsn($dsn, $username, $password, $options);
return true; return true;
} }
@@ -305,7 +310,7 @@ if (!defined("DRIVER")) {
} }
return queries($prefix . implode(",\n", $values) . $suffix); return queries($prefix . implode(",\n", $values) . $suffix);
} }
function slowQuery($query, $timeout) { function slowQuery($query, $timeout) {
if (min_version('5.7.8', '10.1.2')) { if (min_version('5.7.8', '10.1.2')) {
if (preg_match('~MariaDB~', $this->_conn->server_info)) { if (preg_match('~MariaDB~', $this->_conn->server_info)) {
@@ -316,13 +321,13 @@ if (!defined("DRIVER")) {
} }
} }
function convertSearch($idf, $val, $field) { function convertSearch($idf, array $where, array $field) {
return (preg_match('~char|text|enum|set~', $field["type"]) && !preg_match("~^utf8~", $field["collation"]) && preg_match('~[\x80-\xFF]~', $val['val']) return (preg_match('~char|text|enum|set~', $field["type"]) && !preg_match("~^utf8~", $field["collation"]) && preg_match('~[\x80-\xFF]~', $where['val'])
? "CONVERT($idf USING " . charset($this->_conn) . ")" ? "CONVERT($idf USING " . charset($this->_conn) . ")"
: $idf : $idf
); );
} }
function warnings() { function warnings() {
$result = $this->_conn->query("SHOW WARNINGS"); $result = $this->_conn->query("SHOW WARNINGS");
if ($result && $result->num_rows) { if ($result && $result->num_rows) {
@@ -1056,6 +1061,19 @@ if (!defined("DRIVER")) {
return get_key_vals("SHOW VARIABLES"); return get_key_vals("SHOW VARIABLES");
} }
/**
* @return bool
*/
function is_strict_mode() {
static $strictMode = null;
if ($strictMode === null) {
$strictMode = (bool)preg_match('~STRICT_(TRANS|ALL)_TABLES~', get_key_vals("SHOW VARIABLES LIKE 'sql_mode'")["sql_mode"]);
}
return $strictMode;
}
/** Get process list /** Get process list
* @return array ($row) * @return array ($row)
*/ */
@@ -1160,7 +1178,7 @@ if (!defined("DRIVER")) {
'structured_types' => $structured_types, 'structured_types' => $structured_types,
'unsigned' => array("unsigned", "zerofill", "unsigned zerofill"), ///< @var array number variants 'unsigned' => array("unsigned", "zerofill", "unsigned zerofill"), ///< @var array number variants
'operators' => array("=", "<", ">", "<=", ">=", "!=", "LIKE", "LIKE %%", "REGEXP", "IN", "FIND_IN_SET", "IS NULL", "NOT LIKE", "NOT REGEXP", "NOT IN", "IS NOT NULL", "SQL"), ///< @var array operators used in select 'operators' => array("=", "<", ">", "<=", ">=", "!=", "LIKE", "LIKE %%", "REGEXP", "IN", "FIND_IN_SET", "IS NULL", "NOT LIKE", "NOT REGEXP", "NOT IN", "IS NOT NULL", "SQL"), ///< @var array operators used in select
'functions' => array("char_length", "date", "from_unixtime", "lower", "round", "floor", "ceil", "sec_to_time", "time_to_sec", "upper"), ///< @var array functions used in select 'functions' => array("char_length", "date", "from_unixtime", "unix_timestamp", "lower", "round", "floor", "ceil", "sec_to_time", "time_to_sec", "upper"), ///< @var array functions used in select
'grouping' => array("avg", "count", "count distinct", "group_concat", "max", "min", "sum"), ///< @var array grouping functions used in select 'grouping' => array("avg", "count", "count distinct", "group_concat", "max", "min", "sum"), ///< @var array grouping functions used in select
'edit_functions' => array( ///< @var array of array("$type|$type2" => "$function/$function2") functions used in editing, [0] - edit and insert, [1] - edit only 'edit_functions' => array( ///< @var array of array("$type|$type2" => "$function/$function2") functions used in editing, [0] - edit and insert, [1] - edit only
array( array(

View File

@@ -486,6 +486,13 @@ AND c_src.TABLE_NAME = " . q($table);
return get_key_vals('SELECT name, display_value FROM v$parameter'); return get_key_vals('SELECT name, display_value FROM v$parameter');
} }
/**
* @return bool
*/
function is_strict_mode() {
return false;
}
function process_list() { function process_list() {
return get_rows('SELECT sess.process AS "process", sess.username AS "user", sess.schemaname AS "schema", sess.status AS "status", sess.wait_class AS "wait_class", sess.seconds_in_wait AS "seconds_in_wait", sql.sql_text AS "sql_text", sess.machine AS "machine", sess.port AS "port" return get_rows('SELECT sess.process AS "process", sess.username AS "user", sess.schemaname AS "schema", sess.status AS "status", sess.wait_class AS "wait_class", sess.seconds_in_wait AS "seconds_in_wait", sql.sql_text AS "sql_text", sess.machine AS "machine", sess.port AS "port"
FROM v$session sess LEFT OUTER JOIN v$sql sql FROM v$session sess LEFT OUTER JOIN v$sql sql

View File

@@ -19,7 +19,14 @@ if (isset($_GET["pgsql"])) {
global $adminer; global $adminer;
$db = $adminer->database(); $db = $adminer->database();
set_error_handler(array($this, '_error')); set_error_handler(array($this, '_error'));
$this->_string = "host='" . str_replace(":", "' port='", addcslashes($server, "'\\")) . "' user='" . addcslashes($username, "'\\") . "' password='" . addcslashes($password, "'\\") . "'"; $this->_string = "host='" . str_replace(":", "' port='", addcslashes($server, "'\\")) . "' user='" . addcslashes($username, "'\\") . "' password='" . addcslashes($password, "'\\") . "'";
$ssl = $adminer->connectSsl();
if (isset($ssl["mode"])) {
$this->_string .= " sslmode='" . $ssl["mode"] . "'";
}
$this->_link = @pg_connect("$this->_string dbname='" . ($db != "" ? addcslashes($db, "'\\") : "postgres") . "'", PGSQL_CONNECT_FORCE_NEW); $this->_link = @pg_connect("$this->_string dbname='" . ($db != "" ? addcslashes($db, "'\\") : "postgres") . "'", PGSQL_CONNECT_FORCE_NEW);
if (!$this->_link && $db != "") { if (!$this->_link && $db != "") {
// try to connect directly with database for performance // try to connect directly with database for performance
@@ -36,7 +43,7 @@ if (isset($_GET["pgsql"])) {
} }
function quote($string) { function quote($string) {
return "'" . pg_escape_string($this->_link, $string) . "'"; return pg_escape_literal($this->_link, $string);
} }
function value($val, $field) { function value($val, $field) {
@@ -148,9 +155,19 @@ if (isset($_GET["pgsql"])) {
function connect($server, $username, $password) { function connect($server, $username, $password) {
global $adminer; global $adminer;
$db = $adminer->database(); $db = $adminer->database();
$this->dsn("pgsql:host='" . str_replace(":", "' port='", addcslashes($server, "'\\")) . "' client_encoding=utf8 dbname='" . ($db != "" ? addcslashes($db, "'\\") : "postgres") . "'", $username, $password); //! client_encoding is supported since 9.1 but we can't yet use min_version here
//! connect without DB in case of an error //! client_encoding is supported since 9.1, but we can't yet use min_version here
$dsn = "pgsql:host='" . str_replace(":", "' port='", addcslashes($server, "'\\")) . "' client_encoding=utf8 dbname='" . ($db != "" ? addcslashes($db, "'\\") : "postgres") . "'";
$ssl = $adminer->connectSsl();
if (isset($ssl["mode"])) {
$dsn .= " sslmode='" . $ssl["mode"] . "'";
}
$this->dsn($dsn, $username, $password);
return true; return true;
} }
@@ -212,13 +229,13 @@ if (isset($_GET["pgsql"])) {
return $query; return $query;
} }
function convertSearch($idf, $val, $field) { function convertSearch($idf, array $where, array $field) {
return (preg_match('~char|text' $textTypes = "char|text";
. (!preg_match('~LIKE~', $val["op"]) ? '|date|time(stamp)?|boolean|uuid|' . number_type() : '') if (strpos($where["op"], "LIKE") === false) {
. '~', $field["type"]) $textTypes .= "|date|time(stamp)?|boolean|uuid|inet|cidr|macaddr|" . number_type();
? $idf }
: "CAST($idf AS text)"
); return (preg_match("~$textTypes~", $field["type"]) ? $idf : "CAST($idf AS text)");
} }
function quoteBinary($s) { function quoteBinary($s) {
@@ -274,7 +291,9 @@ if (isset($_GET["pgsql"])) {
} }
function get_databases() { function get_databases() {
return get_vals("SELECT datname FROM pg_database WHERE has_database_privilege(datname, 'CONNECT') ORDER BY datname"); return get_vals("SELECT d.datname FROM pg_database d JOIN pg_roles r ON d.datdba = r.oid
WHERE d.datallowconn = TRUE AND has_database_privilege(d.datname, 'CONNECT') AND pg_has_role(r.rolname, 'USAGE')
ORDER BY d.datname");
} }
function limit($query, $where, $limit, $offset = 0, $separator = " ") { function limit($query, $where, $limit, $offset = 0, $separator = " ") {
@@ -322,7 +341,7 @@ ORDER BY 1";
function table_status($name = "") { function table_status($name = "") {
$return = array(); $return = array();
foreach (get_rows("SELECT c.relname AS \"Name\", CASE c.relkind WHEN 'r' THEN 'table' WHEN 'm' THEN 'materialized view' ELSE 'view' END AS \"Engine\", pg_relation_size(c.oid) AS \"Data_length\", pg_total_relation_size(c.oid) - pg_relation_size(c.oid) AS \"Index_length\", obj_description(c.oid, 'pg_class') AS \"Comment\", " . (min_version(12) ? "''" : "CASE WHEN c.relhasoids THEN 'oid' ELSE '' END") . " AS \"Oid\", c.reltuples as \"Rows\", n.nspname foreach (get_rows("SELECT c.relname AS \"Name\", CASE c.relkind WHEN 'r' THEN 'table' WHEN 'm' THEN 'materialized view' ELSE 'view' END AS \"Engine\", pg_table_size(c.oid) AS \"Data_length\", pg_indexes_size(c.oid) AS \"Index_length\", obj_description(c.oid, 'pg_class') AS \"Comment\", " . (min_version(12) ? "''" : "CASE WHEN c.relhasoids THEN 'oid' ELSE '' END") . " AS \"Oid\", c.reltuples as \"Rows\", n.nspname
FROM pg_class c FROM pg_class c
JOIN pg_namespace n ON(n.nspname = current_schema() AND n.oid = c.relnamespace) JOIN pg_namespace n ON(n.nspname = current_schema() AND n.oid = c.relnamespace)
WHERE relkind IN ('r', 'm', 'v', 'f', 'p') WHERE relkind IN ('r', 'm', 'v', 'f', 'p')
@@ -376,7 +395,7 @@ ORDER BY a.attnum"
} }
$row["null"] = !$row["attnotnull"]; $row["null"] = !$row["attnotnull"];
$row["auto_increment"] = $row['attidentity'] || preg_match('~^nextval\(~i', $row["default"]); $row["auto_increment"] = $row['attidentity'] || preg_match('~^nextval\(~i', $row["default"]);
$row["privileges"] = array("insert" => 1, "select" => 1, "update" => 1); $row["privileges"] = array("insert" => 1, "select" => 1, "update" => 1, "where" => 1, "order" => 1);
if (preg_match('~(.+)::[^,)]+(.*)~', $row["default"], $match)) { if (preg_match('~(.+)::[^,)]+(.*)~', $row["default"], $match)) {
$row["default"] = ($match[1] == "NULL" ? null : idf_unescape($match[1]) . $match[2]); $row["default"] = ($match[1] == "NULL" ? null : idf_unescape($match[1]) . $match[2]);
} }
@@ -773,7 +792,7 @@ AND typelem = 0"
$return = "CREATE TABLE " . idf_escape($status['nspname']) . "." . idf_escape($status['Name']) . " (\n "; $return = "CREATE TABLE " . idf_escape($status['nspname']) . "." . idf_escape($status['Name']) . " (\n ";
// fields' definitions // fields' definitions
foreach ($fields as $field_name => $field) { foreach ($fields as $field) {
$part = idf_escape($field['field']) . ' ' . $field['full_type'] $part = idf_escape($field['field']) . ' ' . $field['full_type']
. default_value($field) . default_value($field)
. ($field['attnotnull'] ? " NOT NULL" : ""); . ($field['attnotnull'] ? " NOT NULL" : "");
@@ -782,10 +801,11 @@ AND typelem = 0"
// sequences for fields // sequences for fields
if (preg_match('~nextval\(\'([^\']+)\'\)~', $field['default'], $matches)) { if (preg_match('~nextval\(\'([^\']+)\'\)~', $field['default'], $matches)) {
$sequence_name = $matches[1]; $sequence_name = $matches[1];
$sq = reset(get_rows(min_version(10) $rows = get_rows(min_version(10)
? "SELECT *, cache_size AS cache_value FROM pg_sequences WHERE schemaname = current_schema() AND sequencename = " . q($sequence_name) ? "SELECT *, cache_size AS cache_value FROM pg_sequences WHERE schemaname = current_schema() AND sequencename = " . q(idf_unescape($sequence_name))
: "SELECT * FROM $sequence_name" : "SELECT * FROM $sequence_name"
)); );
$sq = reset($rows);
$sequences[] = ($style == "DROP+CREATE" ? "DROP SEQUENCE IF EXISTS $sequence_name;\n" : "") $sequences[] = ($style == "DROP+CREATE" ? "DROP SEQUENCE IF EXISTS $sequence_name;\n" : "")
. "CREATE SEQUENCE $sequence_name INCREMENT $sq[increment_by] MINVALUE $sq[min_value] MAXVALUE $sq[max_value]" . ($auto_increment && $sq['last_value'] ? " START $sq[last_value]" : "") . " CACHE $sq[cache_value];"; . "CREATE SEQUENCE $sequence_name INCREMENT $sq[increment_by] MINVALUE $sq[min_value] MAXVALUE $sq[max_value]" . ($auto_increment && $sq['last_value'] ? " START $sq[last_value]" : "") . " CACHE $sq[cache_value];";
} }
@@ -858,6 +878,13 @@ AND typelem = 0"
return get_key_vals("SHOW ALL"); return get_key_vals("SHOW ALL");
} }
/**
* @return bool
*/
function is_strict_mode() {
return false;
}
function process_list() { function process_list() {
return get_rows("SELECT * FROM pg_stat_activity ORDER BY " . (min_version(9.2) ? "pid" : "procpid")); return get_rows("SELECT * FROM pg_stat_activity ORDER BY " . (min_version(9.2) ? "pid" : "procpid"));
} }
@@ -897,7 +924,7 @@ AND typelem = 0"
lang('Date and time') => array("date" => 13, "time" => 17, "timestamp" => 20, "timestamptz" => 21, "interval" => 0), lang('Date and time') => array("date" => 13, "time" => 17, "timestamp" => 20, "timestamptz" => 21, "interval" => 0),
lang('Strings') => array("character" => 0, "character varying" => 0, "text" => 0, "tsquery" => 0, "tsvector" => 0, "uuid" => 0, "xml" => 0), lang('Strings') => array("character" => 0, "character varying" => 0, "text" => 0, "tsquery" => 0, "tsvector" => 0, "uuid" => 0, "xml" => 0),
lang('Binary') => array("bit" => 0, "bit varying" => 0, "bytea" => 0), lang('Binary') => array("bit" => 0, "bit varying" => 0, "bytea" => 0),
lang('Network') => array("cidr" => 43, "inet" => 43, "macaddr" => 17, "txid_snapshot" => 0), lang('Network') => array("cidr" => 43, "inet" => 43, "macaddr" => 17, "macaddr8" => 23, "txid_snapshot" => 0),
lang('Geometry') => array("box" => 0, "circle" => 0, "line" => 0, "lseg" => 0, "path" => 0, "point" => 0, "polygon" => 0), lang('Geometry') => array("box" => 0, "circle" => 0, "line" => 0, "lseg" => 0, "path" => 0, "point" => 0, "polygon" => 0),
) as $key => $val) { //! can be retrieved from pg_type ) as $key => $val) { //! can be retrieved from pg_type
$types += $val; $types += $val;

View File

@@ -764,6 +764,13 @@ if (isset($_GET["sqlite"]) || isset($_GET["sqlite2"])) {
return $return; return $return;
} }
/**
* @return bool
*/
function is_strict_mode() {
return false;
}
function show_status() { function show_status() {
$return = array(); $return = array();
foreach (get_vals("PRAGMA compile_options") as $option) { foreach (get_vals("PRAGMA compile_options") as $option) {

View File

@@ -39,7 +39,7 @@ class Adminer {
function bruteForceKey() { function bruteForceKey() {
return $_SERVER["REMOTE_ADDR"]; return $_SERVER["REMOTE_ADDR"];
} }
/** Get server name displayed in breadcrumbs /** Get server name displayed in breadcrumbs
* @param string * @param string
* @return string HTML code or null * @return string HTML code or null
@@ -128,7 +128,7 @@ class Adminer {
echo "<p><input type='submit' value='" . lang('Login') . "'>\n"; echo "<p><input type='submit' value='" . lang('Login') . "'>\n";
echo checkbox("auth[permanent]", 1, $_COOKIE["adminer_permanent"], lang('Permanent login')) . "\n"; echo checkbox("auth[permanent]", 1, $_COOKIE["adminer_permanent"], lang('Permanent login')) . "\n";
} }
/** Get login form field /** Get login form field
* @param string * @param string
* @param string HTML * @param string HTML
@@ -488,7 +488,7 @@ class Adminer {
echo "</script>\n"; echo "</script>\n";
echo "</div></fieldset>\n"; echo "</div></fieldset>\n";
} }
/** Print command box in select /** Print command box in select
* @return bool whether to print default commands * @return bool whether to print default commands
*/ */
@@ -537,50 +537,60 @@ class Adminer {
* @return array expressions to join by AND * @return array expressions to join by AND
*/ */
function selectSearchProcess($fields, $indexes) { function selectSearchProcess($fields, $indexes) {
global $connection, $driver; global $driver;
$return = array();
$return = [];
foreach ($indexes as $i => $index) { foreach ($indexes as $i => $index) {
if ($index["type"] == "FULLTEXT" && $_GET["fulltext"][$i] != "") { if ($index["type"] == "FULLTEXT" && $_GET["fulltext"][$i] != "") {
$return[] = "MATCH (" . implode(", ", array_map('idf_escape', $index["columns"])) . ") AGAINST (" . q($_GET["fulltext"][$i]) . (isset($_GET["boolean"][$i]) ? " IN BOOLEAN MODE" : "") . ")"; $return[] = "MATCH (" . implode(", ", array_map('idf_escape', $index["columns"])) . ") AGAINST (" . q($_GET["fulltext"][$i]) . (isset($_GET["boolean"][$i]) ? " IN BOOLEAN MODE" : "") . ")";
} }
} }
foreach ((array) $_GET["where"] as $key => $val) {
if ("$val[col]$val[val]" != "" && in_array($val["op"], $this->operators)) { foreach ((array) $_GET["where"] as $where) {
$col = $where["col"];
$op = $where["op"];
$val = $where["val"];
if ("$col$val" != "" && in_array($op, $this->operators)) {
$prefix = ""; $prefix = "";
$cond = " $val[op]"; $cond = " $op";
if (preg_match('~IN$~', $val["op"])) {
$in = process_length($val["val"]); if (preg_match('~IN$~', $op)) {
$in = process_length($val);
$cond .= " " . ($in != "" ? $in : "(NULL)"); $cond .= " " . ($in != "" ? $in : "(NULL)");
} elseif ($val["op"] == "SQL") { } elseif ($op == "SQL") {
$cond = " $val[val]"; // SQL injection $cond = " $val"; // SQL injection
} elseif ($val["op"] == "LIKE %%") { } elseif ($op == "LIKE %%") {
$cond = " LIKE " . $this->processInput($fields[$val["col"]], "%$val[val]%"); $cond = " LIKE " . $this->processInput($fields[$col], "%$val%");
} elseif ($val["op"] == "ILIKE %%") { } elseif ($op == "ILIKE %%") {
$cond = " ILIKE " . $this->processInput($fields[$val["col"]], "%$val[val]%"); $cond = " ILIKE " . $this->processInput($fields[$col], "%$val%");
} elseif ($val["op"] == "FIND_IN_SET") { } elseif ($op == "FIND_IN_SET") {
$prefix = "$val[op](" . q($val["val"]) . ", "; $prefix = "$op(" . q($val) . ", ";
$cond = ")"; $cond = ")";
} elseif (!preg_match('~NULL$~', $val["op"])) { } elseif (!preg_match('~NULL$~', $op)) {
$cond .= " " . $this->processInput($fields[$val["col"]], $val["val"]); $cond .= " " . $this->processInput($fields[$col], $val);
} }
if ($val["col"] != "") {
$return[] = $prefix . $driver->convertSearch(idf_escape($val["col"]), $val, $fields[$val["col"]]) . $cond; if ($col != "") {
$return[] = $prefix . $driver->convertSearch(idf_escape($col), $where, $fields[$col]) . $cond;
} else { } else {
// find anywhere // find anywhere
$cols = array(); $cols = array();
foreach ($fields as $name => $field) { foreach ($fields as $name => $field) {
if (isset($field["privileges"]["where"]) if (isset($field["privileges"]["where"])
&& (preg_match('~^[-\d.' . (preg_match('~IN$~', $val["op"]) ? ',' : '') . ']+$~', $val["val"]) || !preg_match('~' . number_type() . '|bit~', $field["type"])) && (preg_match('~^[-\d.' . (preg_match('~IN$~', $op) ? ',' : '') . ']+$~', $val) || !preg_match('~' . number_type() . '|bit~', $field["type"]))
&& (!preg_match("~[\x80-\xFF]~", $val["val"]) || preg_match('~char|text|enum|set~', $field["type"])) && (!preg_match("~[\x80-\xFF]~", $val) || preg_match('~char|text|enum|set~', $field["type"]))
&& (!preg_match('~date|timestamp~', $field["type"]) || preg_match('~^\d+-\d+-\d+~', $val["val"])) && (!preg_match('~date|timestamp~', $field["type"]) || preg_match('~^\d+-\d+-\d+~', $val))
) { ) {
$cols[] = $prefix . $driver->convertSearch(idf_escape($name), $val, $field) . $cond; $cols[] = $prefix . $driver->convertSearch(idf_escape($name), $where, $field) . $cond;
} }
} }
$return[] = ($cols ? "(" . implode(" OR ", $cols) . ")" : "1 = 0"); $return[] = ($cols ? "(" . implode(" OR ", $cols) . ")" : "1 = 0");
} }
} }
} }
return $return; return $return;
} }

View File

@@ -1,6 +1,6 @@
<?php <?php
function adminer_errors($errno, $errstr) { function adminer_errors($errno, $errstr) {
return !!preg_match('~^(Trying to access array offset on value of type null|Undefined array key)~', $errstr); return (bool)preg_match('~^(Trying to access array offset on( value of type)? null|Undefined array key)~', $errstr);
} }
error_reporting(6135); // errors and warnings error_reporting(6135); // errors and warnings

View File

@@ -11,16 +11,25 @@ function add_driver($id, $name) {
$drivers[$id] = $name; $drivers[$id] = $name;
} }
/** Get driver name
* @param string
* @return string
*/
function get_driver($id) {
global $drivers;
return $drivers[$id];
}
/*abstract*/ class Min_SQL { /*abstract*/ class Min_SQL {
var $_conn; var $_conn;
/** Create object for performing database operations /** Create object for performing database operations
* @param Min_DB * @param Min_DB
*/ */
function __construct($connection) { function __construct($connection) {
$this->_conn = $connection; $this->_conn = $connection;
} }
/** Select data from table /** Select data from table
* @param string * @param string
* @param array result of $adminer->selectColumnsProcess()[0] * @param array result of $adminer->selectColumnsProcess()[0]
@@ -52,7 +61,7 @@ function add_driver($id, $name) {
} }
return $return; return $return;
} }
/** Delete data from table /** Delete data from table
* @param string * @param string
* @param string " WHERE ..." * @param string " WHERE ..."
@@ -63,7 +72,7 @@ function add_driver($id, $name) {
$query = "FROM " . table($table); $query = "FROM " . table($table);
return queries("DELETE" . ($limit ? limit1($table, $query, $queryWhere) : " $query$queryWhere")); return queries("DELETE" . ($limit ? limit1($table, $query, $queryWhere) : " $query$queryWhere"));
} }
/** Update data in table /** Update data in table
* @param string * @param string
* @param array escaped columns in keys, quoted data in values * @param array escaped columns in keys, quoted data in values
@@ -80,7 +89,7 @@ function add_driver($id, $name) {
$query = table($table) . " SET$separator" . implode(",$separator", $values); $query = table($table) . " SET$separator" . implode(",$separator", $values);
return queries("UPDATE" . ($limit ? limit1($table, $query, $queryWhere, $separator) : " $query$queryWhere")); return queries("UPDATE" . ($limit ? limit1($table, $query, $queryWhere, $separator) : " $query$queryWhere"));
} }
/** Insert data into table /** Insert data into table
* @param string * @param string
* @param array escaped columns in keys, quoted data in values * @param array escaped columns in keys, quoted data in values
@@ -92,7 +101,7 @@ function add_driver($id, $name) {
: " DEFAULT VALUES" : " DEFAULT VALUES"
)); ));
} }
/** Insert or update data in table /** Insert or update data in table
* @param string * @param string
* @param array * @param array
@@ -102,28 +111,28 @@ function add_driver($id, $name) {
/*abstract*/ function insertUpdate($table, $rows, $primary) { /*abstract*/ function insertUpdate($table, $rows, $primary) {
return false; return false;
} }
/** Begin transaction /** Begin transaction
* @return bool * @return bool
*/ */
function begin() { function begin() {
return queries("BEGIN"); return queries("BEGIN");
} }
/** Commit transaction /** Commit transaction
* @return bool * @return bool
*/ */
function commit() { function commit() {
return queries("COMMIT"); return queries("COMMIT");
} }
/** Rollback transaction /** Rollback transaction
* @return bool * @return bool
*/ */
function rollback() { function rollback() {
return queries("ROLLBACK"); return queries("ROLLBACK");
} }
/** Return query with a timeout /** Return query with a timeout
* @param string * @param string
* @param int seconds * @param int seconds
@@ -131,14 +140,14 @@ function add_driver($id, $name) {
*/ */
function slowQuery($query, $timeout) { function slowQuery($query, $timeout) {
} }
/** Convert column to be searchable /** Convert column to be searchable
* @param string escaped column name * @param string escaped column name
* @param array array("op" => , "val" => ) * @param array array("op" => , "val" => )
* @param array * @param array
* @return string * @return string
*/ */
function convertSearch($idf, $val, $field) { function convertSearch($idf, array $where, array $field) {
return $idf; return $idf;
} }
@@ -169,19 +178,19 @@ function add_driver($id, $name) {
function quoteBinary($s) { function quoteBinary($s) {
return q($s); return q($s);
} }
/** Get warnings about the last command /** Get warnings about the last command
* @return string HTML * @return string HTML
*/ */
function warnings() { function warnings() {
return ''; return '';
} }
/** Get help link for table /** Get help link for table
* @param string * @param string
* @return string relative URL or null * @return string relative URL or null
*/ */
function tableHelp($name) { function tableHelp($name) {
} }
} }

View File

@@ -21,11 +21,11 @@ function select($result, $connection2 = null, $orgtables = array(), $limit = 0)
echo "<table cellspacing='0' class='nowrap'>\n"; echo "<table cellspacing='0' class='nowrap'>\n";
echo "<thead><tr>"; echo "<thead><tr>";
for ($j=0; $j < count($row); $j++) { for ($j=0; $j < count($row); $j++) {
$field = $result->fetch_field(); $field = (array)$result->fetch_field();
$name = $field->name; $name = $field["name"];
$orgtable = $field->orgtable; $orgtable = $field["orgtable"];
$orgname = $field->orgname; $orgname = $field["orgname"];
$return[$field->table] = $orgtable; $return[$field["table"]] = $orgtable;
if ($orgtables && $jush == "sql") { // MySQL EXPLAIN if ($orgtables && $jush == "sql") { // MySQL EXPLAIN
$links[$j] = ($name == "table" ? "table=" : ($name == "possible_keys" ? "indexes=" : null)); $links[$j] = ($name == "table" ? "table=" : ($name == "possible_keys" ? "indexes=" : null));
} elseif ($orgtable != "") { } elseif ($orgtable != "") {
@@ -46,11 +46,11 @@ function select($result, $connection2 = null, $orgtables = array(), $limit = 0)
$links[$j] = $orgtable; $links[$j] = $orgtable;
} }
} }
if ($field->charsetnr == 63) { // 63 - binary if ($field["charsetnr"] == 63) { // 63 - binary
$blobs[$j] = true; $blobs[$j] = true;
} }
$types[$j] = $field->type; $types[$j] = $field["type"];
echo "<th" . ($orgtable != "" || $field->name != $orgname ? " title='" . h(($orgtable != "" ? "$orgtable." : "") . $orgname) . "'" : "") . ">" . h($name) echo "<th" . ($orgtable != "" || $field["name"] != $orgname ? " title='" . h(($orgtable != "" ? "$orgtable." : "") . $orgname) . "'" : "") . ">" . h($name)
. ($orgtables ? doc_link(array( . ($orgtables ? doc_link(array(
'sql' => "explain-output.html#explain_" . strtolower($name), 'sql' => "explain-output.html#explain_" . strtolower($name),
'mariadb' => "explain/#the-columns-in-explain-select", 'mariadb' => "explain/#the-columns-in-explain-select",
@@ -238,7 +238,15 @@ function process_field($field, $type_field) {
*/ */
function default_value($field) { function default_value($field) {
$default = $field["default"]; $default = $field["default"];
return ($default === null ? "" : " DEFAULT " . (preg_match('~char|binary|text|enum|set~', $field["type"]) || preg_match('~^(?![a-z])~i', $default) ? q($default) : $default)); if ($default === null) return "";
if (preg_match('~^GENERATED ~i', $default)) {
return " $default";
}
$quote = preg_match('~char|binary|text|enum|set~', $field["type"]) || preg_match('~^(?![a-z])~i', $default);
return " DEFAULT " . ($quote ? q($default) : $default);
} }
/** Get type class to use in CSS /** Get type class to use in CSS
@@ -279,11 +287,11 @@ function edit_fields($fields, $collations, $type = "TABLE", $foreign_keys = arra
<td><?php echo lang('Options'); /* no label required, options have their own label */ ?> <td><?php echo lang('Options'); /* no label required, options have their own label */ ?>
<?php if ($type == "TABLE") { ?> <?php if ($type == "TABLE") { ?>
<td id="label-null">NULL <td id="label-null">NULL
<td><input type="radio" name="auto_increment_col" value=""><acronym id="label-ai" title="<?php echo lang('Auto Increment'); ?>">AI</acronym><?php echo doc_link(array( <td><input type="radio" name="auto_increment_col" value=""><abbr id="label-ai" title="<?php echo lang('Auto Increment'); ?>">AI</abbr><?php echo doc_link(array(
'sql' => "example-auto-increment.html", 'sql' => "example-auto-increment.html",
'mariadb' => "auto_increment/", 'mariadb' => "auto_increment/",
'sqlite' => "autoinc.html", 'sqlite' => "autoinc.html",
'pgsql' => "datatype.html#DATATYPE-SERIAL", 'pgsql' => "datatype-numeric.html#DATATYPE-SERIAL",
'mssql' => "ms186775.aspx", 'mssql' => "ms186775.aspx",
)); ?> )); ?>
<td id="label-default"<?php echo $default_class; ?>><?php echo lang('Default value'); ?> <td id="label-default"<?php echo $default_class; ?>><?php echo lang('Default value'); ?>

View File

@@ -914,13 +914,16 @@ function column_foreign_keys($table) {
*/ */
function enum_input($type, $attrs, $field, $value, $empty = null) { function enum_input($type, $attrs, $field, $value, $empty = null) {
global $adminer; global $adminer;
$return = ($empty !== null && !is_strict_mode() ? "<label><input type='$type'$attrs value='$empty'" . ((is_array($value) ? in_array($empty, $value) : $value === 0) ? " checked" : "") . "><i>" . lang('empty') . "</i></label>" : "");
preg_match_all("~'((?:[^']|'')*)'~", $field["length"], $matches); preg_match_all("~'((?:[^']|'')*)'~", $field["length"], $matches);
$return = ($empty !== null ? "<label><input type='$type'$attrs value='$empty'" . ((is_array($value) ? in_array($empty, $value) : $value === 0) ? " checked" : "") . "><i>" . lang('empty') . "</i></label>" : "");
foreach ($matches[1] as $i => $val) { foreach ($matches[1] as $i => $val) {
$val = stripcslashes(str_replace("''", "'", $val)); $val = stripcslashes(str_replace("''", "'", $val));
$checked = (is_int($value) ? $value == $i+1 : (is_array($value) ? in_array($i+1, $value) : $value === $val)); $checked = (is_int($value) ? $value == $i+1 : (is_array($value) ? in_array($i+1, $value) : $value === $val));
$return .= " <label><input type='$type'$attrs value='" . ($i+1) . "'" . ($checked ? ' checked' : '') . '>' . h($adminer->editVal($val, $field)) . '</label>'; $return .= " <label><input type='$type'$attrs value='" . ($i+1) . "'" . ($checked ? ' checked' : '') . '>' . h($adminer->editVal($val, $field)) . '</label>';
} }
return $return; return $return;
} }
@@ -978,7 +981,7 @@ function input($field, $value, $function) {
$attrs .= " cols='50' rows='12'"; $attrs .= " cols='50' rows='12'";
} else { } else {
$rows = min(12, substr_count($value, "\n") + 1); $rows = min(12, substr_count($value, "\n") + 1);
$attrs .= " cols='30' rows='$rows'" . ($rows == 1 ? " style='height: 1.2em;'" : ""); // 1.2em - line-height $attrs .= " cols='30' rows='$rows'";
} }
echo "<textarea$attrs>" . h($value) . '</textarea>'; echo "<textarea$attrs>" . h($value) . '</textarea>';
} elseif ($function == "json" || preg_match('~^jsonb?$~', $field["type"])) { } elseif ($function == "json" || preg_match('~^jsonb?$~', $field["type"])) {

View File

@@ -1,2 +1,2 @@
<?php <?php
$VERSION = "4.9"; $VERSION = "4.9.2";

View File

@@ -302,4 +302,12 @@ $translations = array(
'Disable %s or enable %s or %s extensions.' => null, 'Disable %s or enable %s or %s extensions.' => null,
'yes' => null, 'yes' => null,
'no' => null, 'no' => null,
'Columns' => null,
'Nullable' => null,
'Default' => null,
'Yes' => null,
'No' => null,
'One Time Password' => null,
'Invalid OTP code.' => null,
); );

View File

@@ -22,10 +22,10 @@ $translations = array(
'Session expired, please login again.' => 'Сесията е изтекла; моля, влезте отново.', 'Session expired, please login again.' => 'Сесията е изтекла; моля, влезте отново.',
'%s version: %s through PHP extension %s' => '%s версия: %s през PHP разширение %s', '%s version: %s through PHP extension %s' => '%s версия: %s през PHP разширение %s',
'Refresh' => 'Обновяване', 'Refresh' => 'Обновяване',
// text direction - 'ltr' or 'rtl' // text direction - 'ltr' or 'rtl'
'ltr' => 'ltr', 'ltr' => 'ltr',
'Privileges' => 'Права', 'Privileges' => 'Права',
'Create user' => 'Създаване на потребител', 'Create user' => 'Създаване на потребител',
'User has been dropped.' => 'Потребителя беше премахнат.', 'User has been dropped.' => 'Потребителя беше премахнат.',
@@ -36,14 +36,14 @@ $translations = array(
'Routine' => 'Процедура', 'Routine' => 'Процедура',
'Grant' => 'Осигуряване', 'Grant' => 'Осигуряване',
'Revoke' => 'Отнемане', 'Revoke' => 'Отнемане',
'Process list' => 'Списък с процеси', 'Process list' => 'Списък с процеси',
'%d process(es) have been killed.' => array('%d процес беше прекъснат.', '%d процеса бяха прекъснати.'), '%d process(es) have been killed.' => array('%d процес беше прекъснат.', '%d процеса бяха прекъснати.'),
'Kill' => 'Прекъсване', 'Kill' => 'Прекъсване',
'Variables' => 'Променливи', 'Variables' => 'Променливи',
'Status' => 'Състояние', 'Status' => 'Състояние',
'SQL command' => 'SQL команда', 'SQL command' => 'SQL команда',
'%d query(s) executed OK.' => array('%d заявка е изпълнена.', '%d заявки са изпълнени.'), '%d query(s) executed OK.' => array('%d заявка е изпълнена.', '%d заявки са изпълнени.'),
'Query executed OK, %d row(s) affected.' => array('Заявката е изпълнена, %d ред е засегнат.', 'Заявката е изпълнена, %d редове са засегнати.'), 'Query executed OK, %d row(s) affected.' => array('Заявката е изпълнена, %d ред е засегнат.', 'Заявката е изпълнена, %d редове са засегнати.'),
@@ -57,7 +57,7 @@ $translations = array(
'History' => 'Хронология', 'History' => 'Хронология',
'Clear' => 'Изчистване', 'Clear' => 'Изчистване',
'Edit all' => 'Редактиране на всички', 'Edit all' => 'Редактиране на всички',
'File upload' => 'Прикачване на файл', 'File upload' => 'Прикачване на файл',
'From server' => 'От сървър', 'From server' => 'От сървър',
'Webserver file %s' => 'Сървърен файл %s', 'Webserver file %s' => 'Сървърен файл %s',
@@ -69,14 +69,14 @@ $translations = array(
'Too big POST data. Reduce the data or increase the %s configuration directive.' => 'Изпратени са прекалено много данни. Намалете обема на данните или увеличете %s управляващата директива.', 'Too big POST data. Reduce the data or increase the %s configuration directive.' => 'Изпратени са прекалено много данни. Намалете обема на данните или увеличете %s управляващата директива.',
'You can upload a big SQL file via FTP and import it from server.' => 'Можете да прикачите голям SQL файл чрез FTP и да го импортирате от сървъра.', 'You can upload a big SQL file via FTP and import it from server.' => 'Можете да прикачите голям SQL файл чрез FTP и да го импортирате от сървъра.',
'You are offline.' => 'Вие сте офлайн.', 'You are offline.' => 'Вие сте офлайн.',
'Export' => 'Експорт', 'Export' => 'Експорт',
'Output' => 'Резултат', 'Output' => 'Резултат',
'open' => 'показване', 'open' => 'показване',
'save' => 'запис', 'save' => 'запис',
'Format' => 'Формат', 'Format' => 'Формат',
'Data' => 'Данни', 'Data' => 'Данни',
'Database' => 'База данни', 'Database' => 'База данни',
'database' => 'база данни', 'database' => 'база данни',
'Use' => 'Избор', 'Use' => 'Избор',
@@ -90,10 +90,10 @@ $translations = array(
'Alter database' => 'Промяна на база данни', 'Alter database' => 'Промяна на база данни',
'Create database' => 'Създаване на база данни', 'Create database' => 'Създаване на база данни',
'Database schema' => 'Схема на базата данни', 'Database schema' => 'Схема на базата данни',
// link to current database schema layout // link to current database schema layout
'Permanent link' => 'Постоянна препратка', 'Permanent link' => 'Постоянна препратка',
// thousands separator - must contain single byte // thousands separator - must contain single byte
',' => ',', ',' => ',',
'0123456789' => '0123456789', '0123456789' => '0123456789',
@@ -116,7 +116,7 @@ $translations = array(
'Tables have been moved.' => 'Таблиците бяха преместени.', 'Tables have been moved.' => 'Таблиците бяха преместени.',
'Copy' => 'Копиране', 'Copy' => 'Копиране',
'Tables have been copied.' => 'Таблиците бяха копирани.', 'Tables have been copied.' => 'Таблиците бяха копирани.',
'Routines' => 'Процедури', 'Routines' => 'Процедури',
'Routine has been called, %d row(s) affected.' => array('Беше приложена процедура, %d ред е засегнат.', 'Беше приложена процедура, %d редове са засегнати.'), 'Routine has been called, %d row(s) affected.' => array('Беше приложена процедура, %d ред е засегнат.', 'Беше приложена процедура, %d редове са засегнати.'),
'Call' => 'Прилагане', 'Call' => 'Прилагане',
@@ -129,7 +129,7 @@ $translations = array(
'Alter function' => 'Промяна на функция', 'Alter function' => 'Промяна на функция',
'Alter procedure' => 'Промяна на процедура', 'Alter procedure' => 'Промяна на процедура',
'Return type' => 'Резултат', 'Return type' => 'Резултат',
'Events' => 'Събития', 'Events' => 'Събития',
'Event has been dropped.' => 'Събитието беше премахнато.', 'Event has been dropped.' => 'Събитието беше премахнато.',
'Event has been altered.' => 'Събитието беше променено.', 'Event has been altered.' => 'Събитието беше променено.',
@@ -142,7 +142,7 @@ $translations = array(
'Start' => 'Начало', 'Start' => 'Начало',
'End' => 'Край', 'End' => 'Край',
'On completion preserve' => 'Запазване след завършване', 'On completion preserve' => 'Запазване след завършване',
'Tables' => 'Таблици', 'Tables' => 'Таблици',
'Tables and views' => 'Таблици и изгледи', 'Tables and views' => 'Таблици и изгледи',
'Table' => 'Таблица', 'Table' => 'Таблица',
@@ -174,12 +174,12 @@ $translations = array(
'Move down' => 'Преместване надолу', 'Move down' => 'Преместване надолу',
'Remove' => 'Премахване', 'Remove' => 'Премахване',
'Maximum number of allowed fields exceeded. Please increase %s.' => 'Максималния брой полета е превишен. Моля, увеличете %s.', 'Maximum number of allowed fields exceeded. Please increase %s.' => 'Максималния брой полета е превишен. Моля, увеличете %s.',
'Partition by' => 'Разделяне на', 'Partition by' => 'Разделяне на',
'Partitions' => 'Раздели', 'Partitions' => 'Раздели',
'Partition name' => 'Име на раздела', 'Partition name' => 'Име на раздела',
'Values' => 'Стойности', 'Values' => 'Стойности',
'View' => 'Изглед', 'View' => 'Изглед',
'Materialized view' => 'Запаметен изглед', 'Materialized view' => 'Запаметен изглед',
'View has been dropped.' => 'Изгледа беше премахнат.', 'View has been dropped.' => 'Изгледа беше премахнат.',
@@ -187,14 +187,14 @@ $translations = array(
'View has been created.' => 'Изгледа беше създаден.', 'View has been created.' => 'Изгледа беше създаден.',
'Alter view' => 'Промяна на изглед', 'Alter view' => 'Промяна на изглед',
'Create view' => 'Създаване на изглед', 'Create view' => 'Създаване на изглед',
'Indexes' => 'Индекси', 'Indexes' => 'Индекси',
'Indexes have been altered.' => 'Индексите бяха променени.', 'Indexes have been altered.' => 'Индексите бяха променени.',
'Alter indexes' => 'Промяна на индекси', 'Alter indexes' => 'Промяна на индекси',
'Add next' => 'Добавяне на следващ', 'Add next' => 'Добавяне на следващ',
'Index Type' => 'Вид на индекса', 'Index Type' => 'Вид на индекса',
'Column (length)' => 'Колона (дължина)', 'Column (length)' => 'Колона (дължина)',
'Foreign keys' => 'Препратки', 'Foreign keys' => 'Препратки',
'Foreign key' => 'Препратка', 'Foreign key' => 'Препратка',
'Foreign key has been dropped.' => 'Препратката беше премахната.', 'Foreign key has been dropped.' => 'Препратката беше премахната.',
@@ -210,7 +210,7 @@ $translations = array(
'ON DELETE' => 'При изтриване', 'ON DELETE' => 'При изтриване',
'ON UPDATE' => 'При промяна', 'ON UPDATE' => 'При промяна',
'Source and target columns must have the same data type, there must be an index on the target columns and referenced data must exist.' => 'Колоните източник и цел трябва да са от еднакъв вид, трябва да има индекс на колоните приемник и да има въведени данни.', 'Source and target columns must have the same data type, there must be an index on the target columns and referenced data must exist.' => 'Колоните източник и цел трябва да са от еднакъв вид, трябва да има индекс на колоните приемник и да има въведени данни.',
'Triggers' => 'Тригери', 'Triggers' => 'Тригери',
'Add trigger' => 'Добавяне на тригер', 'Add trigger' => 'Добавяне на тригер',
'Trigger has been dropped.' => 'Тригера беше премахнат.', 'Trigger has been dropped.' => 'Тригера беше премахнат.',
@@ -221,7 +221,7 @@ $translations = array(
'Time' => 'Време', 'Time' => 'Време',
'Event' => 'Събитие', 'Event' => 'Събитие',
'Name' => 'Име', 'Name' => 'Име',
'select' => 'показване', 'select' => 'показване',
'Select' => 'Показване', 'Select' => 'Показване',
'Select data' => 'Показване на данни', 'Select data' => 'Показване на данни',
@@ -247,16 +247,16 @@ $translations = array(
'Loading' => 'Зареждане', 'Loading' => 'Зареждане',
'Whole result' => 'Пълен резултат', 'Whole result' => 'Пълен резултат',
'%d byte(s)' => array('%d байт', '%d байта'), '%d byte(s)' => array('%d байт', '%d байта'),
'Import' => 'Импорт', 'Import' => 'Импорт',
'%d row(s) have been imported.' => array('%d ред беше импортиран.', '%d реда бяха импортирани.'), '%d row(s) have been imported.' => array('%d ред беше импортиран.', '%d реда бяха импортирани.'),
'File must be in UTF-8 encoding.' => 'Файла трябва да е с UTF-8 кодировка.', 'File must be in UTF-8 encoding.' => 'Файла трябва да е с UTF-8 кодировка.',
// in-place editing in select // in-place editing in select
'Modify' => 'Промяна', 'Modify' => 'Промяна',
'Ctrl+click on a value to modify it.' => 'Ctrl+щракване в стойността, за да я промените.', 'Ctrl+click on a value to modify it.' => 'Ctrl+щракване в стойността, за да я промените.',
'Use edit link to modify this value.' => 'Използвайте "редакция" за промяна на данните.', 'Use edit link to modify this value.' => 'Използвайте "редакция" за промяна на данните.',
// %s can contain auto-increment value // %s can contain auto-increment value
'Item%s has been inserted.' => 'Елементи%s бяха вмъкнати.', 'Item%s has been inserted.' => 'Елементи%s бяха вмъкнати.',
'Item has been deleted.' => 'Елемента беше изтрит.', 'Item has been deleted.' => 'Елемента беше изтрит.',
@@ -277,14 +277,14 @@ $translations = array(
'Clone' => 'Клониране', 'Clone' => 'Клониране',
'Delete' => 'Изтриване', 'Delete' => 'Изтриване',
'You have no privileges to update this table.' => 'Нямате праве за обновяване на таблицата.', 'You have no privileges to update this table.' => 'Нямате праве за обновяване на таблицата.',
'E-mail' => 'E-mail', 'E-mail' => 'E-mail',
'From' => 'От', 'From' => 'От',
'Subject' => 'Тема', 'Subject' => 'Тема',
'Attachments' => 'Прикачени', 'Attachments' => 'Прикачени',
'Send' => 'Изпращане', 'Send' => 'Изпращане',
'%d e-mail(s) have been sent.' => array('%d писмо беше изпратено.', '%d писма бяха изпратени.'), '%d e-mail(s) have been sent.' => array('%d писмо беше изпратено.', '%d писма бяха изпратени.'),
// data type descriptions // data type descriptions
'Numbers' => 'Числа', 'Numbers' => 'Числа',
'Date and time' => 'Дата и час', 'Date and time' => 'Дата и час',
@@ -294,7 +294,7 @@ $translations = array(
'Network' => 'Мрежа', 'Network' => 'Мрежа',
'Geometry' => 'Геометрия', 'Geometry' => 'Геометрия',
'Relations' => 'Зависимости', 'Relations' => 'Зависимости',
'Editor' => 'Редактор', 'Editor' => 'Редактор',
// date format in Editor: $1 yyyy, $2 yy, $3 mm, $4 m, $5 dd, $6 d // date format in Editor: $1 yyyy, $2 yy, $3 mm, $4 m, $5 dd, $6 d
'$1-$3-$5' => '$1-$3-$5', '$1-$3-$5' => '$1-$3-$5',
@@ -305,11 +305,11 @@ $translations = array(
'now' => 'сега', 'now' => 'сега',
'yes' => 'да', 'yes' => 'да',
'no' => 'не', 'no' => 'не',
// general SQLite error in create, drop or rename database // general SQLite error in create, drop or rename database
'File exists.' => 'Файла вече съществува.', 'File exists.' => 'Файла вече съществува.',
'Please use one of the extensions %s.' => 'Моля, използвайте някое от разширенията %s.', 'Please use one of the extensions %s.' => 'Моля, използвайте някое от разширенията %s.',
// PostgreSQL and MS SQL schema support // PostgreSQL and MS SQL schema support
'Alter schema' => 'Промяна на схемата', 'Alter schema' => 'Промяна на схемата',
'Create schema' => 'Създаване на схема', 'Create schema' => 'Създаване на схема',
@@ -318,7 +318,7 @@ $translations = array(
'Schema has been altered.' => 'Схемата беше променена.', 'Schema has been altered.' => 'Схемата беше променена.',
'Schema' => 'Схема', 'Schema' => 'Схема',
'Invalid schema.' => 'Невалидна схема.', 'Invalid schema.' => 'Невалидна схема.',
// PostgreSQL sequences support // PostgreSQL sequences support
'Sequences' => 'Последователности', 'Sequences' => 'Последователности',
'Create sequence' => 'Създаване на последователност', 'Create sequence' => 'Създаване на последователност',
@@ -326,7 +326,7 @@ $translations = array(
'Sequence has been created.' => 'Последователността беше създадена.', 'Sequence has been created.' => 'Последователността беше създадена.',
'Sequence has been altered.' => 'Последователността беше променена.', 'Sequence has been altered.' => 'Последователността беше променена.',
'Alter sequence' => 'Промяна на последователност', 'Alter sequence' => 'Промяна на последователност',
// PostgreSQL user types support // PostgreSQL user types support
'User types' => 'Видове потребители', 'User types' => 'Видове потребители',
'Create type' => 'Създаване на вид', 'Create type' => 'Създаване на вид',
@@ -347,4 +347,12 @@ $translations = array(
'Unknown error.' => null, 'Unknown error.' => null,
'Database does not support password.' => null, 'Database does not support password.' => null,
'Disable %s or enable %s or %s extensions.' => null, 'Disable %s or enable %s or %s extensions.' => null,
'Columns' => null,
'Nullable' => null,
'Default' => null,
'Yes' => 'Да',
'No' => 'Не',
'One Time Password' => null,
'Invalid OTP code.' => null,
); );

View File

@@ -302,4 +302,12 @@ $translations = array(
'Disable %s or enable %s or %s extensions.' => null, 'Disable %s or enable %s or %s extensions.' => null,
'yes' => null, 'yes' => null,
'no' => null, 'no' => null,
'Columns' => null,
'Nullable' => null,
'Default' => null,
'Yes' => null,
'No' => null,
'One Time Password' => null,
'Invalid OTP code.' => null,
); );

View File

@@ -347,4 +347,12 @@ $translations = array(
'Unknown error.' => null, 'Unknown error.' => null,
'Database does not support password.' => null, 'Database does not support password.' => null,
'Disable %s or enable %s or %s extensions.' => null, 'Disable %s or enable %s or %s extensions.' => null,
'Columns' => null,
'Nullable' => null,
'Default' => null,
'Yes' => 'Da',
'No' => 'Ne',
'One Time Password' => null,
'Invalid OTP code.' => null,
); );

View File

@@ -302,4 +302,12 @@ $translations = array(
'Disable %s or enable %s or %s extensions.' => null, 'Disable %s or enable %s or %s extensions.' => null,
'yes' => null, 'yes' => null,
'no' => null, 'no' => null,
'Columns' => null,
'Nullable' => null,
'Default' => null,
'Yes' => null,
'No' => null,
'One Time Password' => null,
'Invalid OTP code.' => null,
); );

View File

@@ -29,10 +29,10 @@ $translations = array(
'The action will be performed after successful login with the same credentials.' => 'Akce bude provedena po úspěšném přihlášení se stejnými přihlašovacími údaji.', 'The action will be performed after successful login with the same credentials.' => 'Akce bude provedena po úspěšném přihlášení se stejnými přihlašovacími údaji.',
'%s version: %s through PHP extension %s' => 'Verze %s: %s přes PHP rozšíření %s', '%s version: %s through PHP extension %s' => 'Verze %s: %s přes PHP rozšíření %s',
'Refresh' => 'Obnovit', 'Refresh' => 'Obnovit',
// text direction - 'ltr' or 'rtl' // text direction - 'ltr' or 'rtl'
'ltr' => 'ltr', 'ltr' => 'ltr',
'Privileges' => 'Oprávnění', 'Privileges' => 'Oprávnění',
'Create user' => 'Vytvořit uživatele', 'Create user' => 'Vytvořit uživatele',
'User has been dropped.' => 'Uživatel byl odstraněn.', 'User has been dropped.' => 'Uživatel byl odstraněn.',
@@ -43,14 +43,14 @@ $translations = array(
'Routine' => 'Procedura', 'Routine' => 'Procedura',
'Grant' => 'Povolit', 'Grant' => 'Povolit',
'Revoke' => 'Zakázat', 'Revoke' => 'Zakázat',
'Process list' => 'Seznam procesů', 'Process list' => 'Seznam procesů',
'%d process(es) have been killed.' => array('Byl ukončen %d proces.', 'Byly ukončeny %d procesy.', 'Bylo ukončeno %d procesů.'), '%d process(es) have been killed.' => array('Byl ukončen %d proces.', 'Byly ukončeny %d procesy.', 'Bylo ukončeno %d procesů.'),
'Kill' => 'Ukončit', 'Kill' => 'Ukončit',
'Variables' => 'Proměnné', 'Variables' => 'Proměnné',
'Status' => 'Stav', 'Status' => 'Stav',
'SQL command' => 'SQL příkaz', 'SQL command' => 'SQL příkaz',
'%d query(s) executed OK.' => array('%d příkaz proběhl v pořádku.', '%d příkazy proběhly v pořádku.', '%d příkazů proběhlo v pořádku.'), '%d query(s) executed OK.' => array('%d příkaz proběhl v pořádku.', '%d příkazy proběhly v pořádku.', '%d příkazů proběhlo v pořádku.'),
'Query executed OK, %d row(s) affected.' => array('Příkaz proběhl v pořádku, byl změněn %d záznam.', 'Příkaz proběhl v pořádku, byly změněny %d záznamy.', 'Příkaz proběhl v pořádku, bylo změněno %d záznamů.'), 'Query executed OK, %d row(s) affected.' => array('Příkaz proběhl v pořádku, byl změněn %d záznam.', 'Příkaz proběhl v pořádku, byly změněny %d záznamy.', 'Příkaz proběhl v pořádku, bylo změněno %d záznamů.'),
@@ -67,7 +67,7 @@ $translations = array(
'History' => 'Historie', 'History' => 'Historie',
'Clear' => 'Vyčistit', 'Clear' => 'Vyčistit',
'Edit all' => 'Upravit vše', 'Edit all' => 'Upravit vše',
'File upload' => 'Nahrání souboru', 'File upload' => 'Nahrání souboru',
'From server' => 'Ze serveru', 'From server' => 'Ze serveru',
'Webserver file %s' => 'Soubor %s na webovém serveru', 'Webserver file %s' => 'Soubor %s na webovém serveru',
@@ -79,14 +79,14 @@ $translations = array(
'Too big POST data. Reduce the data or increase the %s configuration directive.' => 'Příliš velká POST data. Zmenšete data nebo zvyšte hodnotu konfigurační direktivy %s.', 'Too big POST data. Reduce the data or increase the %s configuration directive.' => 'Příliš velká POST data. Zmenšete data nebo zvyšte hodnotu konfigurační direktivy %s.',
'You can upload a big SQL file via FTP and import it from server.' => 'Velký SQL soubor můžete nahrát pomocí FTP a importovat ho ze serveru.', 'You can upload a big SQL file via FTP and import it from server.' => 'Velký SQL soubor můžete nahrát pomocí FTP a importovat ho ze serveru.',
'You are offline.' => 'Jste offline.', 'You are offline.' => 'Jste offline.',
'Export' => 'Export', 'Export' => 'Export',
'Output' => 'Výstup', 'Output' => 'Výstup',
'open' => 'otevřít', 'open' => 'otevřít',
'save' => 'uložit', 'save' => 'uložit',
'Format' => 'Formát', 'Format' => 'Formát',
'Data' => 'Data', 'Data' => 'Data',
'Database' => 'Databáze', 'Database' => 'Databáze',
'database' => 'databáze', 'database' => 'databáze',
'DB' => 'DB', 'DB' => 'DB',
@@ -101,10 +101,10 @@ $translations = array(
'Alter database' => 'Pozměnit databázi', 'Alter database' => 'Pozměnit databázi',
'Create database' => 'Vytvořit databázi', 'Create database' => 'Vytvořit databázi',
'Database schema' => 'Schéma databáze', 'Database schema' => 'Schéma databáze',
// link to current database schema layout // link to current database schema layout
'Permanent link' => 'Trvalý odkaz', 'Permanent link' => 'Trvalý odkaz',
// thousands separator - must contain single byte // thousands separator - must contain single byte
',' => ' ', ',' => ' ',
'0123456789' => '0123456789', '0123456789' => '0123456789',
@@ -128,7 +128,7 @@ $translations = array(
'Copy' => 'Zkopírovat', 'Copy' => 'Zkopírovat',
'Tables have been copied.' => 'Tabulky byly zkopírovány.', 'Tables have been copied.' => 'Tabulky byly zkopírovány.',
'overwrite' => 'přepsat', 'overwrite' => 'přepsat',
'Routines' => 'Procedury a funkce', 'Routines' => 'Procedury a funkce',
'Routine has been called, %d row(s) affected.' => array('Procedura byla zavolána, byl změněn %d záznam.', 'Procedura byla zavolána, byly změněny %d záznamy.', 'Procedura byla zavolána, bylo změněno %d záznamů.'), 'Routine has been called, %d row(s) affected.' => array('Procedura byla zavolána, byl změněn %d záznam.', 'Procedura byla zavolána, byly změněny %d záznamy.', 'Procedura byla zavolána, bylo změněno %d záznamů.'),
'Call' => 'Zavolat', 'Call' => 'Zavolat',
@@ -141,7 +141,7 @@ $translations = array(
'Alter function' => 'Změnit funkci', 'Alter function' => 'Změnit funkci',
'Alter procedure' => 'Změnit proceduru', 'Alter procedure' => 'Změnit proceduru',
'Return type' => 'Návratový typ', 'Return type' => 'Návratový typ',
'Events' => 'Události', 'Events' => 'Události',
'Event has been dropped.' => 'Událost byla odstraněna.', 'Event has been dropped.' => 'Událost byla odstraněna.',
'Event has been altered.' => 'Událost byla změněna.', 'Event has been altered.' => 'Událost byla změněna.',
@@ -154,7 +154,7 @@ $translations = array(
'Start' => 'Začátek', 'Start' => 'Začátek',
'End' => 'Konec', 'End' => 'Konec',
'On completion preserve' => 'Po dokončení zachovat', 'On completion preserve' => 'Po dokončení zachovat',
'Tables' => 'Tabulky', 'Tables' => 'Tabulky',
'Tables and views' => 'Tabulky a pohledy', 'Tables and views' => 'Tabulky a pohledy',
'Table' => 'Tabulka', 'Table' => 'Tabulka',
@@ -187,12 +187,12 @@ $translations = array(
'Move down' => 'Přesunout dolů', 'Move down' => 'Přesunout dolů',
'Remove' => 'Odebrat', 'Remove' => 'Odebrat',
'Maximum number of allowed fields exceeded. Please increase %s.' => 'Byl překročen maximální povolený počet polí. Zvyšte prosím %s.', 'Maximum number of allowed fields exceeded. Please increase %s.' => 'Byl překročen maximální povolený počet polí. Zvyšte prosím %s.',
'Partition by' => 'Rozdělit podle', 'Partition by' => 'Rozdělit podle',
'Partitions' => 'Oddíly', 'Partitions' => 'Oddíly',
'Partition name' => 'Název oddílu', 'Partition name' => 'Název oddílu',
'Values' => 'Hodnoty', 'Values' => 'Hodnoty',
'View' => 'Pohled', 'View' => 'Pohled',
'Materialized view' => 'Materializovaný pohled', 'Materialized view' => 'Materializovaný pohled',
'View has been dropped.' => 'Pohled byl odstraněn.', 'View has been dropped.' => 'Pohled byl odstraněn.',
@@ -200,14 +200,14 @@ $translations = array(
'View has been created.' => 'Pohled byl vytvořen.', 'View has been created.' => 'Pohled byl vytvořen.',
'Alter view' => 'Pozměnit pohled', 'Alter view' => 'Pozměnit pohled',
'Create view' => 'Vytvořit pohled', 'Create view' => 'Vytvořit pohled',
'Indexes' => 'Indexy', 'Indexes' => 'Indexy',
'Indexes have been altered.' => 'Indexy byly změněny.', 'Indexes have been altered.' => 'Indexy byly změněny.',
'Alter indexes' => 'Pozměnit indexy', 'Alter indexes' => 'Pozměnit indexy',
'Add next' => 'Přidat další', 'Add next' => 'Přidat další',
'Index Type' => 'Typ indexu', 'Index Type' => 'Typ indexu',
'Column (length)' => 'Sloupec (délka)', 'Column (length)' => 'Sloupec (délka)',
'Foreign keys' => 'Cizí klíče', 'Foreign keys' => 'Cizí klíče',
'Foreign key' => 'Cizí klíč', 'Foreign key' => 'Cizí klíč',
'Foreign key has been dropped.' => 'Cizí klíč byl odstraněn.', 'Foreign key has been dropped.' => 'Cizí klíč byl odstraněn.',
@@ -223,7 +223,7 @@ $translations = array(
'ON DELETE' => 'Při smazání', 'ON DELETE' => 'Při smazání',
'ON UPDATE' => 'Při změně', 'ON UPDATE' => 'Při změně',
'Source and target columns must have the same data type, there must be an index on the target columns and referenced data must exist.' => 'Zdrojové a cílové sloupce musí mít stejný datový typ, nad cílovými sloupci musí být definován index a odkazovaná data musí existovat.', 'Source and target columns must have the same data type, there must be an index on the target columns and referenced data must exist.' => 'Zdrojové a cílové sloupce musí mít stejný datový typ, nad cílovými sloupci musí být definován index a odkazovaná data musí existovat.',
'Triggers' => 'Triggery', 'Triggers' => 'Triggery',
'Add trigger' => 'Přidat trigger', 'Add trigger' => 'Přidat trigger',
'Trigger has been dropped.' => 'Trigger byl odstraněn.', 'Trigger has been dropped.' => 'Trigger byl odstraněn.',
@@ -234,7 +234,7 @@ $translations = array(
'Time' => 'Čas', 'Time' => 'Čas',
'Event' => 'Událost', 'Event' => 'Událost',
'Name' => 'Název', 'Name' => 'Název',
'select' => 'vypsat', 'select' => 'vypsat',
'Select' => 'Vypsat', 'Select' => 'Vypsat',
'Select data' => 'Vypsat data', 'Select data' => 'Vypsat data',
@@ -260,16 +260,16 @@ $translations = array(
'Loading' => 'Nahrává se', 'Loading' => 'Nahrává se',
'Whole result' => 'Celý výsledek', 'Whole result' => 'Celý výsledek',
'%d byte(s)' => array('%d bajt', '%d bajty', '%d bajtů'), '%d byte(s)' => array('%d bajt', '%d bajty', '%d bajtů'),
'Import' => 'Import', 'Import' => 'Import',
'%d row(s) have been imported.' => array('Byl importován %d záznam.', 'Byly importovány %d záznamy.', 'Bylo importováno %d záznamů.'), '%d row(s) have been imported.' => array('Byl importován %d záznam.', 'Byly importovány %d záznamy.', 'Bylo importováno %d záznamů.'),
'File must be in UTF-8 encoding.' => 'Soubor musí být v kódování UTF-8.', 'File must be in UTF-8 encoding.' => 'Soubor musí být v kódování UTF-8.',
// in-place editing in select // in-place editing in select
'Modify' => 'Změnit', 'Modify' => 'Změnit',
'Ctrl+click on a value to modify it.' => 'Ctrl+klikněte na políčko, které chcete změnit.', 'Ctrl+click on a value to modify it.' => 'Ctrl+klikněte na políčko, které chcete změnit.',
'Use edit link to modify this value.' => 'Ke změně této hodnoty použijte odkaz upravit.', 'Use edit link to modify this value.' => 'Ke změně této hodnoty použijte odkaz upravit.',
// %s can contain auto-increment value // %s can contain auto-increment value
'Item%s has been inserted.' => 'Položka%s byla vložena.', 'Item%s has been inserted.' => 'Položka%s byla vložena.',
'Item has been deleted.' => 'Položka byla smazána.', 'Item has been deleted.' => 'Položka byla smazána.',
@@ -290,14 +290,14 @@ $translations = array(
'Clone' => 'Klonovat', 'Clone' => 'Klonovat',
'Delete' => 'Smazat', 'Delete' => 'Smazat',
'You have no privileges to update this table.' => 'Nemáte oprávnění editovat tuto tabulku.', 'You have no privileges to update this table.' => 'Nemáte oprávnění editovat tuto tabulku.',
'E-mail' => 'E-mail', 'E-mail' => 'E-mail',
'From' => 'Odesílatel', 'From' => 'Odesílatel',
'Subject' => 'Předmět', 'Subject' => 'Předmět',
'Attachments' => 'Přílohy', 'Attachments' => 'Přílohy',
'Send' => 'Odeslat', 'Send' => 'Odeslat',
'%d e-mail(s) have been sent.' => array('Byl odeslán %d e-mail.', 'Byly odeslány %d e-maily.', 'Bylo odesláno %d e-mailů.'), '%d e-mail(s) have been sent.' => array('Byl odeslán %d e-mail.', 'Byly odeslány %d e-maily.', 'Bylo odesláno %d e-mailů.'),
// data type descriptions // data type descriptions
'Numbers' => 'Čísla', 'Numbers' => 'Čísla',
'Date and time' => 'Datum a čas', 'Date and time' => 'Datum a čas',
@@ -307,7 +307,7 @@ $translations = array(
'Network' => 'Síť', 'Network' => 'Síť',
'Geometry' => 'Geometrie', 'Geometry' => 'Geometrie',
'Relations' => 'Vztahy', 'Relations' => 'Vztahy',
'Editor' => 'Editor', 'Editor' => 'Editor',
// date format in Editor: $1 yyyy, $2 yy, $3 mm, $4 m, $5 dd, $6 d // date format in Editor: $1 yyyy, $2 yy, $3 mm, $4 m, $5 dd, $6 d
'$1-$3-$5' => '$6.$4.$1', '$1-$3-$5' => '$6.$4.$1',
@@ -318,11 +318,11 @@ $translations = array(
'now' => 'teď', 'now' => 'teď',
'yes' => 'ano', 'yes' => 'ano',
'no' => 'ne', 'no' => 'ne',
// general SQLite error in create, drop or rename database // general SQLite error in create, drop or rename database
'File exists.' => 'Soubor existuje.', 'File exists.' => 'Soubor existuje.',
'Please use one of the extensions %s.' => 'Prosím použijte jednu z koncovek %s.', 'Please use one of the extensions %s.' => 'Prosím použijte jednu z koncovek %s.',
// PostgreSQL and MS SQL schema support // PostgreSQL and MS SQL schema support
'Alter schema' => 'Pozměnit schéma', 'Alter schema' => 'Pozměnit schéma',
'Create schema' => 'Vytvořit schéma', 'Create schema' => 'Vytvořit schéma',
@@ -331,7 +331,7 @@ $translations = array(
'Schema has been altered.' => 'Schéma bylo změněno.', 'Schema has been altered.' => 'Schéma bylo změněno.',
'Schema' => 'Schéma', 'Schema' => 'Schéma',
'Invalid schema.' => 'Nesprávné schéma.', 'Invalid schema.' => 'Nesprávné schéma.',
// PostgreSQL sequences support // PostgreSQL sequences support
'Sequences' => 'Sekvence', 'Sequences' => 'Sekvence',
'Create sequence' => 'Vytvořit sekvenci', 'Create sequence' => 'Vytvořit sekvenci',
@@ -339,11 +339,20 @@ $translations = array(
'Sequence has been created.' => 'Sekvence byla vytvořena.', 'Sequence has been created.' => 'Sekvence byla vytvořena.',
'Sequence has been altered.' => 'Sekvence byla změněna.', 'Sequence has been altered.' => 'Sekvence byla změněna.',
'Alter sequence' => 'Pozměnit sekvenci', 'Alter sequence' => 'Pozměnit sekvenci',
// PostgreSQL user types support // PostgreSQL user types support
'User types' => 'Uživatelské typy', 'User types' => 'Uživatelské typy',
'Create type' => 'Vytvořit typ', 'Create type' => 'Vytvořit typ',
'Type has been dropped.' => 'Typ byl odstraněn.', 'Type has been dropped.' => 'Typ byl odstraněn.',
'Type has been created.' => 'Typ byl vytvořen.', 'Type has been created.' => 'Typ byl vytvořen.',
'Alter type' => 'Pozměnit typ', 'Alter type' => 'Pozměnit typ',
// Plugins
'Columns' => 'Sloupce',
'Nullable' => 'Povoleno null',
'Default' => 'Výchozí',
'Yes' => 'Ano',
'No' => 'Ne',
'One Time Password' => 'Jednorázové heslo',
'Invalid OTP code.' => 'Neplatný kód OTP.',
); );

View File

@@ -302,4 +302,12 @@ $translations = array(
'Unknown error.' => null, 'Unknown error.' => null,
'Database does not support password.' => null, 'Database does not support password.' => null,
'Disable %s or enable %s or %s extensions.' => null, 'Disable %s or enable %s or %s extensions.' => null,
'Columns' => null,
'Nullable' => null,
'Default' => null,
'Yes' => 'Ja',
'No' => 'Nej',
'One Time Password' => null,
'Invalid OTP code.' => null,
); );

View File

@@ -302,4 +302,12 @@ $translations = array(
'Unknown error.' => null, 'Unknown error.' => null,
'Database does not support password.' => null, 'Database does not support password.' => null,
'Disable %s or enable %s or %s extensions.' => null, 'Disable %s or enable %s or %s extensions.' => null,
'Columns' => null,
'Nullable' => null,
'Default' => null,
'Yes' => 'Ja',
'No' => 'Nein',
'One Time Password' => null,
'Invalid OTP code.' => null,
); );

View File

@@ -22,10 +22,10 @@ $translations = array(
'Session expired, please login again.' => 'Η συνεδρία έληξε, παρακαλώ συνδεθείτε ξανά.', 'Session expired, please login again.' => 'Η συνεδρία έληξε, παρακαλώ συνδεθείτε ξανά.',
'%s version: %s through PHP extension %s' => '%s έκδοση: %s μέσω επέκτασης PHP %s', '%s version: %s through PHP extension %s' => '%s έκδοση: %s μέσω επέκτασης PHP %s',
'Refresh' => 'Ανανέωση', 'Refresh' => 'Ανανέωση',
// text direction - 'ltr' or 'rtl' // text direction - 'ltr' or 'rtl'
'ltr' => 'ltr', 'ltr' => 'ltr',
'Privileges' => 'Δικαιώματα', 'Privileges' => 'Δικαιώματα',
'Create user' => 'Δημιουργία Χρήστη', 'Create user' => 'Δημιουργία Χρήστη',
'User has been dropped.' => 'Ο Χρήστης διαγράφηκε.', 'User has been dropped.' => 'Ο Χρήστης διαγράφηκε.',
@@ -36,14 +36,14 @@ $translations = array(
'Routine' => 'Ρουτίνα', 'Routine' => 'Ρουτίνα',
'Grant' => 'Παραχώρηση', 'Grant' => 'Παραχώρηση',
'Revoke' => 'Ανάκληση', 'Revoke' => 'Ανάκληση',
'Process list' => 'Λίστα διεργασιών', 'Process list' => 'Λίστα διεργασιών',
'%d process(es) have been killed.' => array('Τερματίστηκε %d διεργασία.', 'Τερματίστηκαν %d διεργασίες.'), '%d process(es) have been killed.' => array('Τερματίστηκε %d διεργασία.', 'Τερματίστηκαν %d διεργασίες.'),
'Kill' => 'Τερματισμός', 'Kill' => 'Τερματισμός',
'Variables' => 'Μεταβλητές', 'Variables' => 'Μεταβλητές',
'Status' => 'Κατάσταση', 'Status' => 'Κατάσταση',
'SQL command' => 'Εντολή SQL', 'SQL command' => 'Εντολή SQL',
'%d query(s) executed OK.' => array('Το ερώτημα %d εκτελέστηκε ΟΚ.', 'Τα ερώτηματα %d εκτελέστηκαν ΟΚ.'), '%d query(s) executed OK.' => array('Το ερώτημα %d εκτελέστηκε ΟΚ.', 'Τα ερώτηματα %d εκτελέστηκαν ΟΚ.'),
'Query executed OK, %d row(s) affected.' => array('Το ερώτημα εκτελέστηκε ΟΚ, επηρεάστηκε %d σειρά.', 'Το ερώτημα εκτελέστηκε ΟΚ, επηρεάστηκαν %d σειρές.'), 'Query executed OK, %d row(s) affected.' => array('Το ερώτημα εκτελέστηκε ΟΚ, επηρεάστηκε %d σειρά.', 'Το ερώτημα εκτελέστηκε ΟΚ, επηρεάστηκαν %d σειρές.'),
@@ -57,7 +57,7 @@ $translations = array(
'History' => 'Ιστορικό', 'History' => 'Ιστορικό',
'Clear' => 'Καθαρισμός', 'Clear' => 'Καθαρισμός',
'Edit all' => 'Επεξεργασία όλων', 'Edit all' => 'Επεξεργασία όλων',
'File upload' => 'Μεταφόρτωση αρχείου', 'File upload' => 'Μεταφόρτωση αρχείου',
'From server' => 'Από διακομιστή', 'From server' => 'Από διακομιστή',
'Webserver file %s' => 'Αρχείο %s από διακομιστή web', 'Webserver file %s' => 'Αρχείο %s από διακομιστή web',
@@ -69,7 +69,7 @@ $translations = array(
'Too big POST data. Reduce the data or increase the %s configuration directive.' => 'Πολλά δεδομένα POST. Μείωστε τα περιεχόμενα ή αυξήστε την σχετική ρύθμιση %s.', 'Too big POST data. Reduce the data or increase the %s configuration directive.' => 'Πολλά δεδομένα POST. Μείωστε τα περιεχόμενα ή αυξήστε την σχετική ρύθμιση %s.',
'You can upload a big SQL file via FTP and import it from server.' => 'Μπορείτε να μεταφορτώσετε ένα μεγάλο αρχείο SQL μέσω FTP και να το εισάγετε από το διακομιστή.', 'You can upload a big SQL file via FTP and import it from server.' => 'Μπορείτε να μεταφορτώσετε ένα μεγάλο αρχείο SQL μέσω FTP και να το εισάγετε από το διακομιστή.',
'You are offline.' => 'Βρίσκεστε εκτός σύνδεσης.', 'You are offline.' => 'Βρίσκεστε εκτός σύνδεσης.',
'Export' => 'Εξαγωγή', 'Export' => 'Εξαγωγή',
'Output' => 'Αποτέλεσμα', 'Output' => 'Αποτέλεσμα',
'open' => 'άνοιγμα', 'open' => 'άνοιγμα',
@@ -77,7 +77,7 @@ $translations = array(
'Saving' => 'Γίνεται Αποθήκευση', 'Saving' => 'Γίνεται Αποθήκευση',
'Format' => 'Μορφή', 'Format' => 'Μορφή',
'Data' => 'Δεδομένα', 'Data' => 'Δεδομένα',
'Database' => 'Β. Δεδομένων', 'Database' => 'Β. Δεδομένων',
'database' => 'β. δεδομένων', 'database' => 'β. δεδομένων',
'Use' => 'χρήση', 'Use' => 'χρήση',
@@ -91,10 +91,10 @@ $translations = array(
'Alter database' => 'Τροποποίηση Β.Δ.', 'Alter database' => 'Τροποποίηση Β.Δ.',
'Create database' => 'Δημιουργία Β.Δ.', 'Create database' => 'Δημιουργία Β.Δ.',
'Database schema' => 'Σχήμα Β.Δ.', 'Database schema' => 'Σχήμα Β.Δ.',
// link to current database schema layout // link to current database schema layout
'Permanent link' => 'Μόνιμος Σύνδεσμος', 'Permanent link' => 'Μόνιμος Σύνδεσμος',
// thousands separator - must contain single byte // thousands separator - must contain single byte
',' => '.', ',' => '.',
'0123456789' => '0123456789', '0123456789' => '0123456789',
@@ -117,7 +117,7 @@ $translations = array(
'Tables have been moved.' => 'Οι πίνακες μεταφέρθηκαν.', 'Tables have been moved.' => 'Οι πίνακες μεταφέρθηκαν.',
'Copy' => 'Αντιγραφή', 'Copy' => 'Αντιγραφή',
'Tables have been copied.' => 'Οι πίνακες αντιγράφηκαν.', 'Tables have been copied.' => 'Οι πίνακες αντιγράφηκαν.',
'Routines' => 'Ρουτίνες', 'Routines' => 'Ρουτίνες',
'Routine has been called, %d row(s) affected.' => array('Η ρουτίνα εκτελέστηκε, επηρεάστηκε %d σειρά.', 'Η ρουτίνα εκτελέστηκε, επηρεάστηκαν %d σειρές.'), 'Routine has been called, %d row(s) affected.' => array('Η ρουτίνα εκτελέστηκε, επηρεάστηκε %d σειρά.', 'Η ρουτίνα εκτελέστηκε, επηρεάστηκαν %d σειρές.'),
'Call' => 'Εκτέλεση', 'Call' => 'Εκτέλεση',
@@ -130,7 +130,7 @@ $translations = array(
'Alter function' => 'Τροποποίηση λειτουργίας', 'Alter function' => 'Τροποποίηση λειτουργίας',
'Alter procedure' => 'Τροποποίηση διαδικασίας', 'Alter procedure' => 'Τροποποίηση διαδικασίας',
'Return type' => 'Επιστρεφόμενος τύπος', 'Return type' => 'Επιστρεφόμενος τύπος',
'Events' => 'Γεγονός', 'Events' => 'Γεγονός',
'Event has been dropped.' => 'Το γεγονός διαγράφηκε.', 'Event has been dropped.' => 'Το γεγονός διαγράφηκε.',
'Event has been altered.' => 'Το γεγονός τροποποιήθηκε.', 'Event has been altered.' => 'Το γεγονός τροποποιήθηκε.',
@@ -143,7 +143,7 @@ $translations = array(
'Start' => 'Έναρξη', 'Start' => 'Έναρξη',
'End' => 'Λήξη', 'End' => 'Λήξη',
'On completion preserve' => 'Κατά την ολοκλήρωση διατήρησε', 'On completion preserve' => 'Κατά την ολοκλήρωση διατήρησε',
'Tables' => 'Πίνακες', 'Tables' => 'Πίνακες',
'Tables and views' => 'Πίνακες και Προβολές', 'Tables and views' => 'Πίνακες και Προβολές',
'Table' => 'Πίνακας', 'Table' => 'Πίνακας',
@@ -175,12 +175,12 @@ $translations = array(
'Move down' => 'Μετακίνηση προς τα κάτω', 'Move down' => 'Μετακίνηση προς τα κάτω',
'Remove' => 'Αφαίρεση', 'Remove' => 'Αφαίρεση',
'Maximum number of allowed fields exceeded. Please increase %s.' => 'Υπέρβαση μέγιστου επιτρεπόμενου αριθμού πεδίων. Παρακαλώ αυξήστε %s.', 'Maximum number of allowed fields exceeded. Please increase %s.' => 'Υπέρβαση μέγιστου επιτρεπόμενου αριθμού πεδίων. Παρακαλώ αυξήστε %s.',
'Partition by' => 'Τμηματοποίηση ανά', 'Partition by' => 'Τμηματοποίηση ανά',
'Partitions' => 'Τμήματα', 'Partitions' => 'Τμήματα',
'Partition name' => 'Όνομα Τμήματος', 'Partition name' => 'Όνομα Τμήματος',
'Values' => 'Τιμές', 'Values' => 'Τιμές',
'View' => 'Προβολή', 'View' => 'Προβολή',
'Materialized view' => 'Υλοποιημένη προβολή', 'Materialized view' => 'Υλοποιημένη προβολή',
'View has been dropped.' => 'Η προβολή διαγράφηκε.', 'View has been dropped.' => 'Η προβολή διαγράφηκε.',
@@ -188,14 +188,14 @@ $translations = array(
'View has been created.' => 'Η προβολή δημιουργήθηκε.', 'View has been created.' => 'Η προβολή δημιουργήθηκε.',
'Alter view' => 'Τροποποίηση προβολής', 'Alter view' => 'Τροποποίηση προβολής',
'Create view' => 'Δημιουργία προβολής', 'Create view' => 'Δημιουργία προβολής',
'Indexes' => 'Δείκτες', 'Indexes' => 'Δείκτες',
'Indexes have been altered.' => 'Οι δείκτες τροποποιήθηκαν.', 'Indexes have been altered.' => 'Οι δείκτες τροποποιήθηκαν.',
'Alter indexes' => 'Τροποποίηση δεικτών', 'Alter indexes' => 'Τροποποίηση δεικτών',
'Add next' => 'Προσθήκη επόμενου', 'Add next' => 'Προσθήκη επόμενου',
'Index Type' => 'Τύπος δείκτη', 'Index Type' => 'Τύπος δείκτη',
'Column (length)' => 'Στήλη (μήκος)', 'Column (length)' => 'Στήλη (μήκος)',
'Foreign keys' => 'Εξαρτημένα κλειδιά', 'Foreign keys' => 'Εξαρτημένα κλειδιά',
'Foreign key' => 'Εξαρτημένο κλειδί', 'Foreign key' => 'Εξαρτημένο κλειδί',
'Foreign key has been dropped.' => 'Το εξαρτημένο κλειδί διαγράφηκε.', 'Foreign key has been dropped.' => 'Το εξαρτημένο κλειδί διαγράφηκε.',
@@ -211,7 +211,7 @@ $translations = array(
'ON DELETE' => 'ΚΑΤΑ ΤΗ ΔΙΑΓΡΑΦΗ', 'ON DELETE' => 'ΚΑΤΑ ΤΗ ΔΙΑΓΡΑΦΗ',
'ON UPDATE' => 'ΚΑΤΑ ΤΗΝ ΑΛΛΑΓΗ', 'ON UPDATE' => 'ΚΑΤΑ ΤΗΝ ΑΛΛΑΓΗ',
'Source and target columns must have the same data type, there must be an index on the target columns and referenced data must exist.' => 'Οι στήλες στην πηγή και το στόχο πρέπει να έχουν τον ίδιο τύπο, πρέπει να υπάρχει δείκτης στη στήλη στόχο και να υπάρχουν εξαρτημένα δεδομένα.', 'Source and target columns must have the same data type, there must be an index on the target columns and referenced data must exist.' => 'Οι στήλες στην πηγή και το στόχο πρέπει να έχουν τον ίδιο τύπο, πρέπει να υπάρχει δείκτης στη στήλη στόχο και να υπάρχουν εξαρτημένα δεδομένα.',
'Triggers' => 'Εναύσματα', 'Triggers' => 'Εναύσματα',
'Add trigger' => 'Προσθήκη εναύσματος', 'Add trigger' => 'Προσθήκη εναύσματος',
'Trigger has been dropped.' => 'Το έναυσμα διαγράφηκε.', 'Trigger has been dropped.' => 'Το έναυσμα διαγράφηκε.',
@@ -222,7 +222,7 @@ $translations = array(
'Time' => 'Ώρα', 'Time' => 'Ώρα',
'Event' => 'Γεγονός', 'Event' => 'Γεγονός',
'Name' => 'Όνομα', 'Name' => 'Όνομα',
'select' => 'επιλογή', 'select' => 'επιλογή',
'Select' => 'Επιλογή', 'Select' => 'Επιλογή',
'Select data' => 'Επιλέξτε δεδομένα', 'Select data' => 'Επιλέξτε δεδομένα',
@@ -248,16 +248,16 @@ $translations = array(
'Loading' => 'Φορτώνει', 'Loading' => 'Φορτώνει',
'Whole result' => 'Όλο το αποτέλεσμα', 'Whole result' => 'Όλο το αποτέλεσμα',
'%d byte(s)' => array('%d byte', '%d bytes'), '%d byte(s)' => array('%d byte', '%d bytes'),
'Import' => 'Εισαγωγή', 'Import' => 'Εισαγωγή',
'%d row(s) have been imported.' => array('$d σειρά εισήχθη.', '%d σειρές εισήχθησαν.'), '%d row(s) have been imported.' => array('$d σειρά εισήχθη.', '%d σειρές εισήχθησαν.'),
'File must be in UTF-8 encoding.' => 'Το αρχείο πρέπει να έχει κωδικοποίηση UTF-8.', 'File must be in UTF-8 encoding.' => 'Το αρχείο πρέπει να έχει κωδικοποίηση UTF-8.',
// in-place editing in select // in-place editing in select
'Modify' => 'Τροποποίηση', 'Modify' => 'Τροποποίηση',
'Ctrl+click on a value to modify it.' => 'Πιέστε Ctrl+click σε μια τιμή για να την τροποποιήσετε.', 'Ctrl+click on a value to modify it.' => 'Πιέστε Ctrl+click σε μια τιμή για να την τροποποιήσετε.',
'Use edit link to modify this value.' => 'Χρησιμοποιήστε το σύνδεσμο επεξεργασία για να τροποποιήσετε την τιμή.', 'Use edit link to modify this value.' => 'Χρησιμοποιήστε το σύνδεσμο επεξεργασία για να τροποποιήσετε την τιμή.',
// %s can contain auto-increment value // %s can contain auto-increment value
'Item%s has been inserted.' => 'Η εγγραφή%s εισήχθη.', 'Item%s has been inserted.' => 'Η εγγραφή%s εισήχθη.',
'Item has been deleted.' => 'Η εγγραφή διαγράφηκε.', 'Item has been deleted.' => 'Η εγγραφή διαγράφηκε.',
@@ -277,14 +277,14 @@ $translations = array(
'Clone' => 'Κλωνοποίηση', 'Clone' => 'Κλωνοποίηση',
'Delete' => 'Διαγραφή', 'Delete' => 'Διαγραφή',
'You have no privileges to update this table.' => 'Δεν έχετε δικαίωμα να τροποποιήσετε αυτό τον πίνακα.', 'You have no privileges to update this table.' => 'Δεν έχετε δικαίωμα να τροποποιήσετε αυτό τον πίνακα.',
'E-mail' => 'E-mail', 'E-mail' => 'E-mail',
'From' => 'Από', 'From' => 'Από',
'Subject' => 'Θέμα', 'Subject' => 'Θέμα',
'Attachments' => 'Συνημμένα', 'Attachments' => 'Συνημμένα',
'Send' => 'Αποστολή', 'Send' => 'Αποστολή',
'%d e-mail(s) have been sent.' => array('%d e-mail απεστάλη.', '%d e-mail απεστάλησαν.'), '%d e-mail(s) have been sent.' => array('%d e-mail απεστάλη.', '%d e-mail απεστάλησαν.'),
// data type descriptions // data type descriptions
'Numbers' => 'Αριθμοί', 'Numbers' => 'Αριθμοί',
'Date and time' => 'Ημερομηνία και ώρα', 'Date and time' => 'Ημερομηνία και ώρα',
@@ -294,7 +294,7 @@ $translations = array(
'Network' => 'Δίκτυο', 'Network' => 'Δίκτυο',
'Geometry' => 'Γεωμετρία', 'Geometry' => 'Γεωμετρία',
'Relations' => 'Συσχετήσεις', 'Relations' => 'Συσχετήσεις',
'Editor' => 'Επεξεργαστής', 'Editor' => 'Επεξεργαστής',
// date format in Editor: $1 yyyy, $2 yy, $3 mm, $4 m, $5 dd, $6 d // date format in Editor: $1 yyyy, $2 yy, $3 mm, $4 m, $5 dd, $6 d
'$1-$3-$5' => '$5/$3/$1', '$1-$3-$5' => '$5/$3/$1',
@@ -305,11 +305,11 @@ $translations = array(
'now' => 'τώρα', 'now' => 'τώρα',
'yes' => 'ναι', 'yes' => 'ναι',
'no' => 'όχι', 'no' => 'όχι',
// general SQLite error in create, drop or rename database // general SQLite error in create, drop or rename database
'File exists.' => 'Το αρχείο υπάρχει.', 'File exists.' => 'Το αρχείο υπάρχει.',
'Please use one of the extensions %s.' => 'Παρακαλώ χρησιμοποιείστε μια από τις επεκτάσεις %s.', 'Please use one of the extensions %s.' => 'Παρακαλώ χρησιμοποιείστε μια από τις επεκτάσεις %s.',
// PostgreSQL and MS SQL schema support // PostgreSQL and MS SQL schema support
'Alter schema' => 'Τροποποίηση σχήματος', 'Alter schema' => 'Τροποποίηση σχήματος',
'Create schema' => 'Δημιουργία σχήματος', 'Create schema' => 'Δημιουργία σχήματος',
@@ -318,7 +318,7 @@ $translations = array(
'Schema has been altered.' => 'Το σχήμα τροποποιήθηκε.', 'Schema has been altered.' => 'Το σχήμα τροποποιήθηκε.',
'Schema' => 'Σχήμα', 'Schema' => 'Σχήμα',
'Invalid schema.' => 'Άκυρο σχήμα.', 'Invalid schema.' => 'Άκυρο σχήμα.',
// PostgreSQL sequences support // PostgreSQL sequences support
'Sequences' => 'Αλληλουχία', 'Sequences' => 'Αλληλουχία',
'Create sequence' => 'Δημιουργία αλληλουχίας', 'Create sequence' => 'Δημιουργία αλληλουχίας',
@@ -326,7 +326,7 @@ $translations = array(
'Sequence has been created.' => 'Η αλληλουχία δημιουργήθηκε.', 'Sequence has been created.' => 'Η αλληλουχία δημιουργήθηκε.',
'Sequence has been altered.' => 'Η αλληλουχία τροποποιήθηκε.', 'Sequence has been altered.' => 'Η αλληλουχία τροποποιήθηκε.',
'Alter sequence' => 'Τροποποίηση αλληλουχίας', 'Alter sequence' => 'Τροποποίηση αλληλουχίας',
// PostgreSQL user types support // PostgreSQL user types support
'User types' => 'Τύποι χρήστη', 'User types' => 'Τύποι χρήστη',
'Create type' => 'Δημιουργία τύπου', 'Create type' => 'Δημιουργία τύπου',
@@ -347,4 +347,12 @@ $translations = array(
'Unknown error.' => null, 'Unknown error.' => null,
'Database does not support password.' => null, 'Database does not support password.' => null,
'Disable %s or enable %s or %s extensions.' => null, 'Disable %s or enable %s or %s extensions.' => null,
'Columns' => null,
'Nullable' => null,
'Default' => null,
'Yes' => null,
'No' => null,
'One Time Password' => null,
'Invalid OTP code.' => null,
); );

View File

@@ -302,4 +302,12 @@ $translations = array(
'Disable %s or enable %s or %s extensions.' => null, 'Disable %s or enable %s or %s extensions.' => null,
'yes' => null, 'yes' => null,
'no' => null, 'no' => null,
'Columns' => null,
'Nullable' => null,
'Default' => null,
'Yes' => null,
'No' => null,
'One Time Password' => null,
'Invalid OTP code.' => null,
); );

View File

@@ -302,4 +302,12 @@ $translations = array(
'Disable %s or enable %s or %s extensions.' => null, 'Disable %s or enable %s or %s extensions.' => null,
'yes' => null, 'yes' => null,
'no' => null, 'no' => null,
'Columns' => null,
'Nullable' => null,
'Default' => null,
'Yes' => null,
'No' => null,
'One Time Password' => null,
'Invalid OTP code.' => null,
); );

View File

@@ -21,10 +21,10 @@ $translations = array(
'Session expired, please login again.' => 'نشست پایان یافته، لطفا دوباره وارد شوید.', 'Session expired, please login again.' => 'نشست پایان یافته، لطفا دوباره وارد شوید.',
'%s version: %s through PHP extension %s' => 'نسخه %s : %s توسعه پی اچ پی %s', '%s version: %s through PHP extension %s' => 'نسخه %s : %s توسعه پی اچ پی %s',
'Refresh' => 'بازیابی', 'Refresh' => 'بازیابی',
// text direction - 'ltr' or 'rtl' // text direction - 'ltr' or 'rtl'
'ltr' => 'rtl', 'ltr' => 'rtl',
'Privileges' => 'امتیازات', 'Privileges' => 'امتیازات',
'Create user' => 'ایجاد کاربر', 'Create user' => 'ایجاد کاربر',
'User has been dropped.' => 'کاربر حذف شد.', 'User has been dropped.' => 'کاربر حذف شد.',
@@ -35,14 +35,14 @@ $translations = array(
'Routine' => 'روتین', 'Routine' => 'روتین',
'Grant' => 'اعطا', 'Grant' => 'اعطا',
'Revoke' => 'لغو کردن', 'Revoke' => 'لغو کردن',
'Process list' => 'لیست فرآیند', 'Process list' => 'لیست فرآیند',
'%d process(es) have been killed.' => '%d فرآیند متوقف شد.', '%d process(es) have been killed.' => '%d فرآیند متوقف شد.',
'Kill' => 'حذف فرآیند', 'Kill' => 'حذف فرآیند',
'Variables' => 'متغیرها', 'Variables' => 'متغیرها',
'Status' => 'وضعیت', 'Status' => 'وضعیت',
'SQL command' => 'دستور SQL', 'SQL command' => 'دستور SQL',
'%d query(s) executed OK.' => '%d کوئری اجرا شد.', '%d query(s) executed OK.' => '%d کوئری اجرا شد.',
'Query executed OK, %d row(s) affected.' => 'کوئری اجرا شد. %d سطر تغیر کرد.', 'Query executed OK, %d row(s) affected.' => 'کوئری اجرا شد. %d سطر تغیر کرد.',
@@ -56,7 +56,7 @@ $translations = array(
'History' => 'تاریخ', 'History' => 'تاریخ',
'Clear' => 'پاک کردن', 'Clear' => 'پاک کردن',
'Edit all' => 'ویرایش همه', 'Edit all' => 'ویرایش همه',
'File upload' => 'بارگذاری فایل', 'File upload' => 'بارگذاری فایل',
'From server' => 'از سرور', 'From server' => 'از سرور',
'Webserver file %s' => '%s فایل وب سرور', 'Webserver file %s' => '%s فایل وب سرور',
@@ -75,7 +75,7 @@ $translations = array(
'save' => 'ذخیره', 'save' => 'ذخیره',
'Format' => 'حذف', 'Format' => 'حذف',
'Data' => 'داده', 'Data' => 'داده',
'Database' => 'پایگاه داده', 'Database' => 'پایگاه داده',
'database' => 'پایگاه داده', 'database' => 'پایگاه داده',
'Use' => 'استفاده', 'Use' => 'استفاده',
@@ -89,10 +89,10 @@ $translations = array(
'Alter database' => 'ویرایش پایگاه داده', 'Alter database' => 'ویرایش پایگاه داده',
'Create database' => 'ایجاد پایگاه داده', 'Create database' => 'ایجاد پایگاه داده',
'Database schema' => 'ساختار پایگاه داده', 'Database schema' => 'ساختار پایگاه داده',
// link to current database schema layout // link to current database schema layout
'Permanent link' => 'ارتباط دائم', 'Permanent link' => 'ارتباط دائم',
// thousands separator - must contain single byte // thousands separator - must contain single byte
',' => ' ', ',' => ' ',
'0123456789' => '۰۱۲۳۴۵۶۷۸۹', '0123456789' => '۰۱۲۳۴۵۶۷۸۹',
@@ -115,7 +115,7 @@ $translations = array(
'Tables have been moved.' => 'جدولها انتقال داده شدند.', 'Tables have been moved.' => 'جدولها انتقال داده شدند.',
'Copy' => 'کپی کردن', 'Copy' => 'کپی کردن',
'Tables have been copied.' => 'جدولها کپی شدند.', 'Tables have been copied.' => 'جدولها کپی شدند.',
'Routines' => 'روالها', 'Routines' => 'روالها',
'Routine has been called, %d row(s) affected.' => array('روال فراخوانی شد %d سطر متاثر شد.', 'روال فراخوانی شد %d سطر متاثر شد.'), 'Routine has been called, %d row(s) affected.' => array('روال فراخوانی شد %d سطر متاثر شد.', 'روال فراخوانی شد %d سطر متاثر شد.'),
'Call' => 'صدا زدن', 'Call' => 'صدا زدن',
@@ -128,7 +128,7 @@ $translations = array(
'Alter function' => 'ویرایش تابع', 'Alter function' => 'ویرایش تابع',
'Alter procedure' => 'ویرایش زیربرنامه', 'Alter procedure' => 'ویرایش زیربرنامه',
'Return type' => 'برگرداندن نوع', 'Return type' => 'برگرداندن نوع',
'Events' => 'رویدادها', 'Events' => 'رویدادها',
'Event has been dropped.' => 'رویداد حذف شد.', 'Event has been dropped.' => 'رویداد حذف شد.',
'Event has been altered.' => 'رویداد ویرایش شد.', 'Event has been altered.' => 'رویداد ویرایش شد.',
@@ -141,7 +141,7 @@ $translations = array(
'Start' => 'آغاز', 'Start' => 'آغاز',
'End' => 'پایان', 'End' => 'پایان',
'On completion preserve' => 'تکمیل حفاظت فعال است', 'On completion preserve' => 'تکمیل حفاظت فعال است',
'Tables' => 'جدولها', 'Tables' => 'جدولها',
'Tables and views' => 'جدولها و نمایه ها', 'Tables and views' => 'جدولها و نمایه ها',
'Table' => 'جدول', 'Table' => 'جدول',
@@ -173,12 +173,12 @@ $translations = array(
'Move down' => 'انتقال به پایین', 'Move down' => 'انتقال به پایین',
'Remove' => 'حذف', 'Remove' => 'حذف',
'Maximum number of allowed fields exceeded. Please increase %s.' => 'حداکثر تعداد فیلدهای مجاز اشباع شد. لطفا %s را افزایش دهید.', 'Maximum number of allowed fields exceeded. Please increase %s.' => 'حداکثر تعداد فیلدهای مجاز اشباع شد. لطفا %s را افزایش دهید.',
'Partition by' => 'بخشبندی توسط', 'Partition by' => 'بخشبندی توسط',
'Partitions' => 'بخشبندیها', 'Partitions' => 'بخشبندیها',
'Partition name' => 'نام بخش', 'Partition name' => 'نام بخش',
'Values' => 'مقادیر', 'Values' => 'مقادیر',
'View' => 'نمایش', 'View' => 'نمایش',
'Materialized view' => 'نمایه مادی', 'Materialized view' => 'نمایه مادی',
'View has been dropped.' => 'نمایش حذف شد.', 'View has been dropped.' => 'نمایش حذف شد.',
@@ -186,14 +186,14 @@ $translations = array(
'View has been created.' => 'نمایش ایجاد شد.', 'View has been created.' => 'نمایش ایجاد شد.',
'Alter view' => 'حذف نمایش', 'Alter view' => 'حذف نمایش',
'Create view' => 'ایجاد نمایش', 'Create view' => 'ایجاد نمایش',
'Indexes' => 'ایندکسها', 'Indexes' => 'ایندکسها',
'Indexes have been altered.' => 'ایندکسها ویرایش شدند.', 'Indexes have been altered.' => 'ایندکسها ویرایش شدند.',
'Alter indexes' => 'ویرایش ایندکسها', 'Alter indexes' => 'ویرایش ایندکسها',
'Add next' => 'افرودن بعدی', 'Add next' => 'افرودن بعدی',
'Index Type' => 'نوع ایندکس', 'Index Type' => 'نوع ایندکس',
'Column (length)' => 'ستون (طول)', 'Column (length)' => 'ستون (طول)',
'Foreign keys' => 'کلیدهای خارجی', 'Foreign keys' => 'کلیدهای خارجی',
'Foreign key' => 'کلید خارجی', 'Foreign key' => 'کلید خارجی',
'Foreign key has been dropped.' => 'کلید خارجی حذف شد.', 'Foreign key has been dropped.' => 'کلید خارجی حذف شد.',
@@ -209,7 +209,7 @@ $translations = array(
'ON DELETE' => 'ON DELETE', 'ON DELETE' => 'ON DELETE',
'ON UPDATE' => 'ON UPDATE', 'ON UPDATE' => 'ON UPDATE',
'Source and target columns must have the same data type, there must be an index on the target columns and referenced data must exist.' => 'داده مبدا و مقصد ستونها بایستی شبیه هم باشند.', 'Source and target columns must have the same data type, there must be an index on the target columns and referenced data must exist.' => 'داده مبدا و مقصد ستونها بایستی شبیه هم باشند.',
'Triggers' => 'تریگرها', 'Triggers' => 'تریگرها',
'Add trigger' => 'افزودن تریگر', 'Add trigger' => 'افزودن تریگر',
'Trigger has been dropped.' => 'تریگر حذف شد.', 'Trigger has been dropped.' => 'تریگر حذف شد.',
@@ -220,7 +220,7 @@ $translations = array(
'Time' => 'زمان', 'Time' => 'زمان',
'Event' => 'رویداد', 'Event' => 'رویداد',
'Name' => 'نام', 'Name' => 'نام',
'select' => 'انتخاب', 'select' => 'انتخاب',
'Select' => 'انتخاب', 'Select' => 'انتخاب',
'Select data' => 'انتخاب داده', 'Select data' => 'انتخاب داده',
@@ -246,16 +246,16 @@ $translations = array(
'Loading' => 'در حال بارگزاری', 'Loading' => 'در حال بارگزاری',
'Whole result' => 'همه نتایج', 'Whole result' => 'همه نتایج',
'%d byte(s)' => array('%d بایت', '%d بایت'), '%d byte(s)' => array('%d بایت', '%d بایت'),
'Import' => 'وارد کردن', 'Import' => 'وارد کردن',
'%d row(s) have been imported.' => array('%d سطر وارد شد.', '%d سطر وارد شد.'), '%d row(s) have been imported.' => array('%d سطر وارد شد.', '%d سطر وارد شد.'),
'File must be in UTF-8 encoding.' => 'فرمت فایل باید UTF-8 باشید.', 'File must be in UTF-8 encoding.' => 'فرمت فایل باید UTF-8 باشید.',
// in-place editing in select // in-place editing in select
'Modify' => 'ویرایش', 'Modify' => 'ویرایش',
'Ctrl+click on a value to modify it.' => 'برای ویرایش بر روی مقدار ctrl+click کنید.', 'Ctrl+click on a value to modify it.' => 'برای ویرایش بر روی مقدار ctrl+click کنید.',
'Use edit link to modify this value.' => 'از لینک ویرایش برای ویرایش این مقدار استفاده کنید.', 'Use edit link to modify this value.' => 'از لینک ویرایش برای ویرایش این مقدار استفاده کنید.',
// %s can contain auto-increment value // %s can contain auto-increment value
'Item%s has been inserted.' => '%s آیتم درج شد.', 'Item%s has been inserted.' => '%s آیتم درج شد.',
'Item has been deleted.' => 'آیتم حذف شد.', 'Item has been deleted.' => 'آیتم حذف شد.',
@@ -275,14 +275,14 @@ $translations = array(
'Clone' => 'تکثیر', 'Clone' => 'تکثیر',
'Delete' => 'حذف', 'Delete' => 'حذف',
'You have no privileges to update this table.' => 'شما اختیار ویرایش این جدول را ندارید.', 'You have no privileges to update this table.' => 'شما اختیار ویرایش این جدول را ندارید.',
'E-mail' => 'پست الکترونیک', 'E-mail' => 'پست الکترونیک',
'From' => 'فرستنده', 'From' => 'فرستنده',
'Subject' => 'موضوع', 'Subject' => 'موضوع',
'Attachments' => 'پیوست ها', 'Attachments' => 'پیوست ها',
'Send' => 'ارسال', 'Send' => 'ارسال',
'%d e-mail(s) have been sent.' => array('%d ایمیل ارسال شد.', '%d ایمیل ارسال شد.'), '%d e-mail(s) have been sent.' => array('%d ایمیل ارسال شد.', '%d ایمیل ارسال شد.'),
// data type descriptions // data type descriptions
'Numbers' => 'اعداد', 'Numbers' => 'اعداد',
'Date and time' => 'تاریخ و زمان', 'Date and time' => 'تاریخ و زمان',
@@ -292,7 +292,7 @@ $translations = array(
'Network' => 'شبکه', 'Network' => 'شبکه',
'Geometry' => 'هندسه', 'Geometry' => 'هندسه',
'Relations' => 'رابطه ها', 'Relations' => 'رابطه ها',
'Editor' => 'ویرایشگر', 'Editor' => 'ویرایشگر',
// date format in Editor: $1 yyyy, $2 yy, $3 mm, $4 m, $5 dd, $6 d // date format in Editor: $1 yyyy, $2 yy, $3 mm, $4 m, $5 dd, $6 d
'$1-$3-$5' => '$1-$3-$5', '$1-$3-$5' => '$1-$3-$5',
@@ -307,7 +307,7 @@ $translations = array(
// general SQLite error in create, drop or rename database // general SQLite error in create, drop or rename database
'File exists.' => 'فایل موجود است.', 'File exists.' => 'فایل موجود است.',
'Please use one of the extensions %s.' => 'لطفا یکی از پسوندها را انتخاب نمائید %s.', 'Please use one of the extensions %s.' => 'لطفا یکی از پسوندها را انتخاب نمائید %s.',
// PostgreSQL and MS SQL schema support // PostgreSQL and MS SQL schema support
'Alter schema' => 'ویرایش ساختار', 'Alter schema' => 'ویرایش ساختار',
'Create schema' => 'ایجاد ساختار', 'Create schema' => 'ایجاد ساختار',
@@ -316,7 +316,7 @@ $translations = array(
'Schema has been altered.' => 'ساختار ویرایش شد.', 'Schema has been altered.' => 'ساختار ویرایش شد.',
'Schema' => 'ساختار', 'Schema' => 'ساختار',
'Invalid schema.' => 'ساختار نامعتبر.', 'Invalid schema.' => 'ساختار نامعتبر.',
// PostgreSQL sequences support // PostgreSQL sequences support
'Sequences' => 'صف ها', 'Sequences' => 'صف ها',
'Create sequence' => 'ایجاد صف', 'Create sequence' => 'ایجاد صف',
@@ -324,7 +324,7 @@ $translations = array(
'Sequence has been created.' => 'صف ایجاد شد.', 'Sequence has been created.' => 'صف ایجاد شد.',
'Sequence has been altered.' => 'صف ویرایش شد.', 'Sequence has been altered.' => 'صف ویرایش شد.',
'Alter sequence' => 'ویرایش صف', 'Alter sequence' => 'ویرایش صف',
// PostgreSQL user types support // PostgreSQL user types support
'User types' => 'انواع کاربر', 'User types' => 'انواع کاربر',
'Create type' => 'ایجاد نوع', 'Create type' => 'ایجاد نوع',
@@ -347,4 +347,12 @@ $translations = array(
'Unknown error.' => null, 'Unknown error.' => null,
'Database does not support password.' => null, 'Database does not support password.' => null,
'Disable %s or enable %s or %s extensions.' => null, 'Disable %s or enable %s or %s extensions.' => null,
'Columns' => null,
'Nullable' => null,
'Default' => null,
'Yes' => null,
'No' => null,
'One Time Password' => null,
'Invalid OTP code.' => null,
); );

View File

@@ -22,10 +22,10 @@ $translations = array(
'Session expired, please login again.' => 'Istunto vanhentunut, kirjaudu uudelleen.', 'Session expired, please login again.' => 'Istunto vanhentunut, kirjaudu uudelleen.',
'%s version: %s through PHP extension %s' => '%s versio: %s PHP-laajennuksella %s', '%s version: %s through PHP extension %s' => '%s versio: %s PHP-laajennuksella %s',
'Refresh' => 'Virkistä', 'Refresh' => 'Virkistä',
// text direction - 'ltr' or 'rtl' // text direction - 'ltr' or 'rtl'
'ltr' => 'ltr', 'ltr' => 'ltr',
'Privileges' => 'Oikeudet', 'Privileges' => 'Oikeudet',
'Create user' => 'Luo käyttäjä', 'Create user' => 'Luo käyttäjä',
'User has been dropped.' => 'Käyttäjä poistettiin.', 'User has been dropped.' => 'Käyttäjä poistettiin.',
@@ -36,14 +36,14 @@ $translations = array(
'Routine' => 'Rutiini', 'Routine' => 'Rutiini',
'Grant' => 'Myönnä', 'Grant' => 'Myönnä',
'Revoke' => 'Kiellä', 'Revoke' => 'Kiellä',
'Process list' => 'Prosessilista', 'Process list' => 'Prosessilista',
'%d process(es) have been killed.' => array('%d prosessi lopetettu.', '%d prosessia lopetettu..'), '%d process(es) have been killed.' => array('%d prosessi lopetettu.', '%d prosessia lopetettu..'),
'Kill' => 'Lopeta', 'Kill' => 'Lopeta',
'Variables' => 'Muuttujat', 'Variables' => 'Muuttujat',
'Status' => 'Tila', 'Status' => 'Tila',
'SQL command' => 'SQL-komento', 'SQL command' => 'SQL-komento',
'%d query(s) executed OK.' => array('%d kysely onnistui.', '%d kyselyä onnistui.'), '%d query(s) executed OK.' => array('%d kysely onnistui.', '%d kyselyä onnistui.'),
'Query executed OK, %d row(s) affected.' => array('Kysely onnistui, kohdistui %d riviin.', 'Kysely onnistui, kohdistui %d riviin.'), 'Query executed OK, %d row(s) affected.' => array('Kysely onnistui, kohdistui %d riviin.', 'Kysely onnistui, kohdistui %d riviin.'),
@@ -57,7 +57,7 @@ $translations = array(
'History' => 'Historia', 'History' => 'Historia',
'Clear' => 'Tyhjennä', 'Clear' => 'Tyhjennä',
'Edit all' => 'Muokkaa kaikkia', 'Edit all' => 'Muokkaa kaikkia',
'File upload' => 'Tiedoston lataus palvelimelle', 'File upload' => 'Tiedoston lataus palvelimelle',
'From server' => 'Verkkopalvelimella Adminer-kansiossa oleva tiedosto', 'From server' => 'Verkkopalvelimella Adminer-kansiossa oleva tiedosto',
'Webserver file %s' => 'Verkkopalvelintiedosto %s', 'Webserver file %s' => 'Verkkopalvelintiedosto %s',
@@ -69,7 +69,7 @@ $translations = array(
'Too big POST data. Reduce the data or increase the %s configuration directive.' => 'Liian suuri POST-datamäärä. Pienennä dataa tai kasvata arvoa %s konfigurointitiedostossa.', 'Too big POST data. Reduce the data or increase the %s configuration directive.' => 'Liian suuri POST-datamäärä. Pienennä dataa tai kasvata arvoa %s konfigurointitiedostossa.',
'You can upload a big SQL file via FTP and import it from server.' => 'Voit ladata suuren SQL-tiedoston FTP:n kautta ja tuoda sen sitten palvelimelta.', 'You can upload a big SQL file via FTP and import it from server.' => 'Voit ladata suuren SQL-tiedoston FTP:n kautta ja tuoda sen sitten palvelimelta.',
'You are offline.' => 'Olet offline-tilassa.', 'You are offline.' => 'Olet offline-tilassa.',
'Export' => 'Vienti', 'Export' => 'Vienti',
'Output' => 'Tulos', 'Output' => 'Tulos',
'open' => 'avaa', 'open' => 'avaa',
@@ -77,7 +77,7 @@ $translations = array(
'Saving' => 'Tallennetaan', 'Saving' => 'Tallennetaan',
'Format' => 'Muoto', 'Format' => 'Muoto',
'Data' => 'Data', 'Data' => 'Data',
'Database' => 'Tietokanta', 'Database' => 'Tietokanta',
'database' => 'tietokanta', 'database' => 'tietokanta',
'Use' => 'Käytä', 'Use' => 'Käytä',
@@ -91,10 +91,10 @@ $translations = array(
'Alter database' => 'Muuta tietokantaa', 'Alter database' => 'Muuta tietokantaa',
'Create database' => 'Luo tietokanta', 'Create database' => 'Luo tietokanta',
'Database schema' => 'Tietokantakaava', 'Database schema' => 'Tietokantakaava',
// link to current database schema layout // link to current database schema layout
'Permanent link' => 'Pysyvä linkki', 'Permanent link' => 'Pysyvä linkki',
// thousands separator - must contain single byte // thousands separator - must contain single byte
',' => ',', ',' => ',',
'0123456789' => '0123456789', '0123456789' => '0123456789',
@@ -117,7 +117,7 @@ $translations = array(
'Tables have been moved.' => 'Taulut on siirretty.', 'Tables have been moved.' => 'Taulut on siirretty.',
'Copy' => 'Kopioi', 'Copy' => 'Kopioi',
'Tables have been copied.' => 'Taulut on kopioitu.', 'Tables have been copied.' => 'Taulut on kopioitu.',
'Routines' => 'Rutiinit', 'Routines' => 'Rutiinit',
'Routine has been called, %d row(s) affected.' => array('Rutiini kutsuttu, kohdistui %d riviin.', 'Rutiini kutsuttu, kohdistui %d riviin.'), 'Routine has been called, %d row(s) affected.' => array('Rutiini kutsuttu, kohdistui %d riviin.', 'Rutiini kutsuttu, kohdistui %d riviin.'),
'Call' => 'Kutsua', 'Call' => 'Kutsua',
@@ -130,7 +130,7 @@ $translations = array(
'Alter function' => 'Muuta funktiota', 'Alter function' => 'Muuta funktiota',
'Alter procedure' => 'Muuta proseduuria', 'Alter procedure' => 'Muuta proseduuria',
'Return type' => 'Palautustyyppi', 'Return type' => 'Palautustyyppi',
'Events' => 'Tapahtumat', 'Events' => 'Tapahtumat',
'Event has been dropped.' => 'Tapahtuma on poistettu.', 'Event has been dropped.' => 'Tapahtuma on poistettu.',
'Event has been altered.' => 'Tapahtumaa on muutettu.', 'Event has been altered.' => 'Tapahtumaa on muutettu.',
@@ -143,7 +143,7 @@ $translations = array(
'Start' => 'Aloitus', 'Start' => 'Aloitus',
'End' => 'Lopetus', 'End' => 'Lopetus',
'On completion preserve' => 'Säilytä, kun valmis', 'On completion preserve' => 'Säilytä, kun valmis',
'Tables' => 'Taulut', 'Tables' => 'Taulut',
'Tables and views' => 'Taulut ja näkymät', 'Tables and views' => 'Taulut ja näkymät',
'Table' => 'Taulu', 'Table' => 'Taulu',
@@ -175,12 +175,12 @@ $translations = array(
'Move down' => 'Siirrä alas', 'Move down' => 'Siirrä alas',
'Remove' => 'Poista', 'Remove' => 'Poista',
'Maximum number of allowed fields exceeded. Please increase %s.' => 'Kenttien sallittu enimmäismäärä ylitetty. Kasvata arvoa %s.', 'Maximum number of allowed fields exceeded. Please increase %s.' => 'Kenttien sallittu enimmäismäärä ylitetty. Kasvata arvoa %s.',
'Partition by' => 'Osioi arvolla', 'Partition by' => 'Osioi arvolla',
'Partitions' => 'Osiot', 'Partitions' => 'Osiot',
'Partition name' => 'Osion nimi', 'Partition name' => 'Osion nimi',
'Values' => 'Arvot', 'Values' => 'Arvot',
'View' => 'Näkymä', 'View' => 'Näkymä',
'Materialized view' => 'Materialisoitunut näkymä', 'Materialized view' => 'Materialisoitunut näkymä',
'View has been dropped.' => 'Näkymä on poistettu.', 'View has been dropped.' => 'Näkymä on poistettu.',
@@ -188,14 +188,14 @@ $translations = array(
'View has been created.' => 'Näkymä on luotu.', 'View has been created.' => 'Näkymä on luotu.',
'Alter view' => 'Muuta näkymää', 'Alter view' => 'Muuta näkymää',
'Create view' => 'Luo näkymä', 'Create view' => 'Luo näkymä',
'Indexes' => 'Indeksit', 'Indexes' => 'Indeksit',
'Indexes have been altered.' => 'Indeksejä on muutettu.', 'Indexes have been altered.' => 'Indeksejä on muutettu.',
'Alter indexes' => 'Muuta indeksejä', 'Alter indexes' => 'Muuta indeksejä',
'Add next' => 'Lisää seuraava', 'Add next' => 'Lisää seuraava',
'Index Type' => 'Indeksityyppi', 'Index Type' => 'Indeksityyppi',
'Column (length)' => 'Sarake (pituus)', 'Column (length)' => 'Sarake (pituus)',
'Foreign keys' => 'Vieraat avaimet', 'Foreign keys' => 'Vieraat avaimet',
'Foreign key' => 'Vieras avain', 'Foreign key' => 'Vieras avain',
'Foreign key has been dropped.' => 'Vieras avain on poistettu.', 'Foreign key has been dropped.' => 'Vieras avain on poistettu.',
@@ -211,7 +211,7 @@ $translations = array(
'ON DELETE' => 'ON DELETE', 'ON DELETE' => 'ON DELETE',
'ON UPDATE' => 'ON UPDATE', 'ON UPDATE' => 'ON UPDATE',
'Source and target columns must have the same data type, there must be an index on the target columns and referenced data must exist.' => 'Lähde- ja kohdesarakkeiden tulee olla samaa tietotyyppiä, kohdesarakkeisiin tulee olla indeksi ja dataa, johon viitataan, täytyy olla.', 'Source and target columns must have the same data type, there must be an index on the target columns and referenced data must exist.' => 'Lähde- ja kohdesarakkeiden tulee olla samaa tietotyyppiä, kohdesarakkeisiin tulee olla indeksi ja dataa, johon viitataan, täytyy olla.',
'Triggers' => 'Liipaisimet', 'Triggers' => 'Liipaisimet',
'Add trigger' => 'Lisää liipaisin', 'Add trigger' => 'Lisää liipaisin',
'Trigger has been dropped.' => 'Liipaisin on poistettu.', 'Trigger has been dropped.' => 'Liipaisin on poistettu.',
@@ -222,7 +222,7 @@ $translations = array(
'Time' => 'Aika', 'Time' => 'Aika',
'Event' => 'Tapahtuma', 'Event' => 'Tapahtuma',
'Name' => 'Nimi', 'Name' => 'Nimi',
'select' => 'valitse', 'select' => 'valitse',
'Select' => 'Valitse', 'Select' => 'Valitse',
'Select data' => 'Valitse data', 'Select data' => 'Valitse data',
@@ -248,16 +248,16 @@ $translations = array(
'Loading' => 'Ladataan', 'Loading' => 'Ladataan',
'Whole result' => 'Koko tulos', 'Whole result' => 'Koko tulos',
'%d byte(s)' => array('%d tavu', '%d tavua'), '%d byte(s)' => array('%d tavu', '%d tavua'),
'Import' => 'Tuonti', 'Import' => 'Tuonti',
'%d row(s) have been imported.' => array('%d rivi tuotiin.', '%d riviä tuotiin.'), '%d row(s) have been imported.' => array('%d rivi tuotiin.', '%d riviä tuotiin.'),
'File must be in UTF-8 encoding.' => 'Tiedoston täytyy olla UTF-8-muodossa.', 'File must be in UTF-8 encoding.' => 'Tiedoston täytyy olla UTF-8-muodossa.',
// in-place editing in select // in-place editing in select
'Modify' => 'Muuta', 'Modify' => 'Muuta',
'Ctrl+click on a value to modify it.' => 'Ctrl+napsauta arvoa muuttaaksesi.', 'Ctrl+click on a value to modify it.' => 'Ctrl+napsauta arvoa muuttaaksesi.',
'Use edit link to modify this value.' => 'Käytä muokkaa-linkkiä muuttaaksesi tätä arvoa.', 'Use edit link to modify this value.' => 'Käytä muokkaa-linkkiä muuttaaksesi tätä arvoa.',
// %s can contain auto-increment value // %s can contain auto-increment value
'Item%s has been inserted.' => 'Tietue%s lisättiin.', 'Item%s has been inserted.' => 'Tietue%s lisättiin.',
'Item has been deleted.' => 'Tietue poistettiin.', 'Item has been deleted.' => 'Tietue poistettiin.',
@@ -277,14 +277,14 @@ $translations = array(
'Clone' => 'Kloonaa', 'Clone' => 'Kloonaa',
'Delete' => 'Poista', 'Delete' => 'Poista',
'You have no privileges to update this table.' => 'Sinulla ei ole oikeutta päivittää tätä taulua.', 'You have no privileges to update this table.' => 'Sinulla ei ole oikeutta päivittää tätä taulua.',
'E-mail' => 'S-posti', 'E-mail' => 'S-posti',
'From' => 'Lähettäjä', 'From' => 'Lähettäjä',
'Subject' => 'Aihe', 'Subject' => 'Aihe',
'Attachments' => 'Liitteet', 'Attachments' => 'Liitteet',
'Send' => 'Lähetä', 'Send' => 'Lähetä',
'%d e-mail(s) have been sent.' => array('% sähköpostiviestiä lähetetty.', '% sähköpostiviestiä lähetetty.'), '%d e-mail(s) have been sent.' => array('% sähköpostiviestiä lähetetty.', '% sähköpostiviestiä lähetetty.'),
// data type descriptions // data type descriptions
'Numbers' => 'Numerot', 'Numbers' => 'Numerot',
'Date and time' => 'Päiväys ja aika', 'Date and time' => 'Päiväys ja aika',
@@ -294,7 +294,7 @@ $translations = array(
'Network' => 'Verkko', 'Network' => 'Verkko',
'Geometry' => 'Geometria', 'Geometry' => 'Geometria',
'Relations' => 'Suhteet', 'Relations' => 'Suhteet',
'Editor' => 'Editori', 'Editor' => 'Editori',
// date format in Editor: $1 yyyy, $2 yy, $3 mm, $4 m, $5 dd, $6 d // date format in Editor: $1 yyyy, $2 yy, $3 mm, $4 m, $5 dd, $6 d
'$1-$3-$5' => '$5.$3.$1', '$1-$3-$5' => '$5.$3.$1',
@@ -305,11 +305,11 @@ $translations = array(
'now' => 'nyt', 'now' => 'nyt',
'yes' => 'kyllä', 'yes' => 'kyllä',
'no' => 'ei', 'no' => 'ei',
// general SQLite error in create, drop or rename database // general SQLite error in create, drop or rename database
'File exists.' => 'Tiedosto on olemassa.', 'File exists.' => 'Tiedosto on olemassa.',
'Please use one of the extensions %s.' => 'Käytä jotain %s-laajennuksista.', 'Please use one of the extensions %s.' => 'Käytä jotain %s-laajennuksista.',
// PostgreSQL and MS SQL schema support // PostgreSQL and MS SQL schema support
'Alter schema' => 'Muuta kaavaa', 'Alter schema' => 'Muuta kaavaa',
'Create schema' => 'Luo kaava', 'Create schema' => 'Luo kaava',
@@ -318,7 +318,7 @@ $translations = array(
'Schema has been altered.' => 'Kaavaa muutettiin.', 'Schema has been altered.' => 'Kaavaa muutettiin.',
'Schema' => 'Kaava', 'Schema' => 'Kaava',
'Invalid schema.' => 'Kaava ei kelpaa.', 'Invalid schema.' => 'Kaava ei kelpaa.',
// PostgreSQL sequences support // PostgreSQL sequences support
'Sequences' => 'Sekvenssit', 'Sequences' => 'Sekvenssit',
'Create sequence' => 'Luo sekvenssi', 'Create sequence' => 'Luo sekvenssi',
@@ -326,7 +326,7 @@ $translations = array(
'Sequence has been created.' => 'Sekvenssi on luotu.', 'Sequence has been created.' => 'Sekvenssi on luotu.',
'Sequence has been altered.' => 'Sekvenssiä on muutettu.', 'Sequence has been altered.' => 'Sekvenssiä on muutettu.',
'Alter sequence' => 'Muuta sekvenssiä', 'Alter sequence' => 'Muuta sekvenssiä',
// PostgreSQL user types support // PostgreSQL user types support
'User types' => 'Käyttäjän tyypit', 'User types' => 'Käyttäjän tyypit',
'Create type' => 'Luo tyyppi', 'Create type' => 'Luo tyyppi',
@@ -347,4 +347,12 @@ $translations = array(
'Unknown error.' => 'Tuntematon virhe.', 'Unknown error.' => 'Tuntematon virhe.',
'Database does not support password.' => 'Tietokanta ei tue salasanaa.', 'Database does not support password.' => 'Tietokanta ei tue salasanaa.',
'Disable %s or enable %s or %s extensions.' => 'Poista käytöstä %s tai ota käyttöön laajennus %s tai %s.', 'Disable %s or enable %s or %s extensions.' => 'Poista käytöstä %s tai ota käyttöön laajennus %s tai %s.',
'Columns' => null,
'Nullable' => null,
'Default' => null,
'Yes' => 'Kyllä',
'No' => 'Ei',
'One Time Password' => null,
'Invalid OTP code.' => null,
); );

View File

@@ -302,4 +302,12 @@ $translations = array(
'Unknown error.' => 'Erreur inconnue', 'Unknown error.' => 'Erreur inconnue',
'Database does not support password.' => 'La base de données ne support pas les mots de passe', 'Database does not support password.' => 'La base de données ne support pas les mots de passe',
'Disable %s or enable %s or %s extensions.' => 'Désactiver %s ou activer %s or %s extensions.', 'Disable %s or enable %s or %s extensions.' => 'Désactiver %s ou activer %s or %s extensions.',
'Columns' => null,
'Nullable' => null,
'Default' => null,
'Yes' => 'Oui',
'No' => 'Non',
'One Time Password' => null,
'Invalid OTP code.' => null,
); );

View File

@@ -302,4 +302,12 @@ $translations = array(
'Unknown error.' => null, 'Unknown error.' => null,
'Database does not support password.' => null, 'Database does not support password.' => null,
'Disable %s or enable %s or %s extensions.' => null, 'Disable %s or enable %s or %s extensions.' => null,
'Columns' => null,
'Nullable' => null,
'Default' => null,
'Yes' => 'Si',
'No' => 'Non',
'One Time Password' => null,
'Invalid OTP code.' => null,
); );

View File

@@ -302,4 +302,12 @@ $translations = array(
'Unknown error.' => null, 'Unknown error.' => null,
'Database does not support password.' => null, 'Database does not support password.' => null,
'Disable %s or enable %s or %s extensions.' => null, 'Disable %s or enable %s or %s extensions.' => null,
'Columns' => null,
'Nullable' => null,
'Default' => null,
'Yes' => null,
'No' => null,
'One Time Password' => null,
'Invalid OTP code.' => null,
); );

View File

@@ -302,4 +302,12 @@ $translations = array(
'Disable %s or enable %s or %s extensions.' => null, 'Disable %s or enable %s or %s extensions.' => null,
'yes' => null, 'yes' => null,
'no' => null, 'no' => null,
'Columns' => null,
'Nullable' => null,
'Default' => null,
'Yes' => null,
'No' => null,
'One Time Password' => null,
'Invalid OTP code.' => null,
); );

View File

@@ -347,4 +347,12 @@ $translations = array(
'Unknown error.' => null, 'Unknown error.' => null,
'Database does not support password.' => null, 'Database does not support password.' => null,
'Disable %s or enable %s or %s extensions.' => null, 'Disable %s or enable %s or %s extensions.' => null,
'Columns' => null,
'Nullable' => null,
'Default' => null,
'Yes' => null,
'No' => null,
'One Time Password' => null,
'Invalid OTP code.' => null,
); );

View File

@@ -302,4 +302,12 @@ $translations = array(
'Disable %s or enable %s or %s extensions.' => 'Disabilita %s o abilita %s oppure %s estensioni.', 'Disable %s or enable %s or %s extensions.' => 'Disabilita %s o abilita %s oppure %s estensioni.',
'yes' => 'si', 'yes' => 'si',
'no' => 'no', 'no' => 'no',
'Columns' => null,
'Nullable' => null,
'Default' => null,
'Yes' => 'Si',
'No' => 'No',
'One Time Password' => null,
'Invalid OTP code.' => null,
); );

View File

@@ -302,4 +302,12 @@ $translations = array(
'Unknown error.' => null, 'Unknown error.' => null,
'Database does not support password.' => null, 'Database does not support password.' => null,
'Disable %s or enable %s or %s extensions.' => null, 'Disable %s or enable %s or %s extensions.' => null,
'Columns' => null,
'Nullable' => null,
'Default' => null,
'Yes' => null,
'No' => null,
'One Time Password' => null,
'Invalid OTP code.' => null,
); );

View File

@@ -302,4 +302,12 @@ $translations = array(
'Disable %s or enable %s or %s extensions.' => 'გათიშეთ %s ან ჩართეთ %s ან %s გაფართოება.', 'Disable %s or enable %s or %s extensions.' => 'გათიშეთ %s ან ჩართეთ %s ან %s გაფართოება.',
'overwrite' => null, 'overwrite' => null,
'Columns' => null,
'Nullable' => null,
'Default' => null,
'Yes' => null,
'No' => null,
'One Time Password' => null,
'Invalid OTP code.' => null,
); );

View File

@@ -302,4 +302,12 @@ $translations = array(
'Database does not support password.' => null, 'Database does not support password.' => null,
'Disable %s or enable %s or %s extensions.' => null, 'Disable %s or enable %s or %s extensions.' => null,
'no' => null, 'no' => null,
'Columns' => null,
'Nullable' => null,
'Default' => null,
'Yes' => null,
'No' => null,
'One Time Password' => null,
'Invalid OTP code.' => null,
); );

View File

@@ -19,10 +19,10 @@ $translations = array(
'Session expired, please login again.' => 'Sesijos galiojimas baigėsi. Prisijunkite iš naujo.', 'Session expired, please login again.' => 'Sesijos galiojimas baigėsi. Prisijunkite iš naujo.',
'%s version: %s through PHP extension %s' => '%s versija: %s per PHP plėtinį %s', '%s version: %s through PHP extension %s' => '%s versija: %s per PHP plėtinį %s',
'Refresh' => 'Atnaujinti', 'Refresh' => 'Atnaujinti',
// text direction - 'ltr' or 'rtl' // text direction - 'ltr' or 'rtl'
'ltr' => 'ltr', 'ltr' => 'ltr',
'Privileges' => 'Privilegijos', 'Privileges' => 'Privilegijos',
'Create user' => 'Sukurti vartotoją', 'Create user' => 'Sukurti vartotoją',
'User has been dropped.' => 'Vartotojas ištrintas.', 'User has been dropped.' => 'Vartotojas ištrintas.',
@@ -33,14 +33,14 @@ $translations = array(
'Routine' => 'Procedūra', 'Routine' => 'Procedūra',
'Grant' => 'Suteikti', 'Grant' => 'Suteikti',
'Revoke' => 'Atšaukti', 'Revoke' => 'Atšaukti',
'Process list' => 'Procesų sąrašas', 'Process list' => 'Procesų sąrašas',
'%d process(es) have been killed.' => array('%d procesas nutrauktas.', '%d procesai nutraukti.', '%d procesų nutraukta.'), '%d process(es) have been killed.' => array('%d procesas nutrauktas.', '%d procesai nutraukti.', '%d procesų nutraukta.'),
'Kill' => 'Nutraukti', 'Kill' => 'Nutraukti',
'Variables' => 'Kintamieji', 'Variables' => 'Kintamieji',
'Status' => 'Būsena', 'Status' => 'Būsena',
'SQL command' => 'SQL užklausa', 'SQL command' => 'SQL užklausa',
'%d query(s) executed OK.' => array('%d užklausa įvykdyta.', '%d užklausos įvykdytos.', '%d užklausų įvykdyta.'), '%d query(s) executed OK.' => array('%d užklausa įvykdyta.', '%d užklausos įvykdytos.', '%d užklausų įvykdyta.'),
'Query executed OK, %d row(s) affected.' => array('Užklausa įvykdyta. Pakeistas %d įrašas.', 'Užklausa įvykdyta. Pakeisti %d įrašai.', 'Užklausa įvykdyta. Pakeista %d įrašų.'), 'Query executed OK, %d row(s) affected.' => array('Užklausa įvykdyta. Pakeistas %d įrašas.', 'Užklausa įvykdyta. Pakeisti %d įrašai.', 'Užklausa įvykdyta. Pakeista %d įrašų.'),
@@ -54,7 +54,7 @@ $translations = array(
'History' => 'Istorija', 'History' => 'Istorija',
'Clear' => 'Išvalyti', 'Clear' => 'Išvalyti',
'Edit all' => 'Redaguoti visus', 'Edit all' => 'Redaguoti visus',
'File upload' => 'Failo įkėlimas', 'File upload' => 'Failo įkėlimas',
'From server' => 'Iš serverio', 'From server' => 'Iš serverio',
'Webserver file %s' => 'Failas %s iš serverio', 'Webserver file %s' => 'Failas %s iš serverio',
@@ -64,14 +64,14 @@ $translations = array(
'Unable to upload a file.' => 'Nepavyko įkelti failo.', 'Unable to upload a file.' => 'Nepavyko įkelti failo.',
'Maximum allowed file size is %sB.' => 'Maksimalus failo dydis - %sB.', 'Maximum allowed file size is %sB.' => 'Maksimalus failo dydis - %sB.',
'Too big POST data. Reduce the data or increase the %s configuration directive.' => 'Per daug POST duomenų. Sumažinkite duomenų kiekį arba padidinkite konfigūracijos nustatymą %s.', 'Too big POST data. Reduce the data or increase the %s configuration directive.' => 'Per daug POST duomenų. Sumažinkite duomenų kiekį arba padidinkite konfigūracijos nustatymą %s.',
'Export' => 'Eksportas', 'Export' => 'Eksportas',
'Output' => 'Išvestis', 'Output' => 'Išvestis',
'open' => 'atidaryti', 'open' => 'atidaryti',
'save' => 'išsaugoti', 'save' => 'išsaugoti',
'Format' => 'Formatas', 'Format' => 'Formatas',
'Data' => 'Duomenys', 'Data' => 'Duomenys',
'Database' => 'Duomenų bazė', 'Database' => 'Duomenų bazė',
'database' => 'duomenų bazė', 'database' => 'duomenų bazė',
'Use' => 'Naudoti', 'Use' => 'Naudoti',
@@ -85,10 +85,10 @@ $translations = array(
'Alter database' => 'Redaguoti duomenų bazę', 'Alter database' => 'Redaguoti duomenų bazę',
'Create database' => 'Sukurti duomenų bazę', 'Create database' => 'Sukurti duomenų bazę',
'Database schema' => 'Duomenų bazės schema', 'Database schema' => 'Duomenų bazės schema',
// link to current database schema layout // link to current database schema layout
'Permanent link' => 'Pastovi nuoroda', 'Permanent link' => 'Pastovi nuoroda',
// thousands separator - must contain single byte // thousands separator - must contain single byte
',' => ' ', ',' => ' ',
'0123456789' => '0123456789', '0123456789' => '0123456789',
@@ -110,7 +110,7 @@ $translations = array(
'Tables have been moved.' => 'Lentelės perkeltos.', 'Tables have been moved.' => 'Lentelės perkeltos.',
'Copy' => 'Kopijuoti', 'Copy' => 'Kopijuoti',
'Tables have been copied.' => 'Lentelės nukopijuotos.', 'Tables have been copied.' => 'Lentelės nukopijuotos.',
'Routines' => 'Procedūros', 'Routines' => 'Procedūros',
'Routine has been called, %d row(s) affected.' => array('Procedūra įvykdyta. %d įrašas pakeistas.', 'Procedūra įvykdyta. %d įrašai pakeisti.', 'Procedūra įvykdyta. %d įrašų pakeista.'), 'Routine has been called, %d row(s) affected.' => array('Procedūra įvykdyta. %d įrašas pakeistas.', 'Procedūra įvykdyta. %d įrašai pakeisti.', 'Procedūra įvykdyta. %d įrašų pakeista.'),
'Call' => 'Vykdyti', 'Call' => 'Vykdyti',
@@ -123,7 +123,7 @@ $translations = array(
'Alter function' => 'Keisti funkciją', 'Alter function' => 'Keisti funkciją',
'Alter procedure' => 'Keiskti procedūrą', 'Alter procedure' => 'Keiskti procedūrą',
'Return type' => 'Grąžinimo tipas', 'Return type' => 'Grąžinimo tipas',
'Events' => 'Įvykiai', 'Events' => 'Įvykiai',
'Event has been dropped.' => 'Įvykis pašalintas.', 'Event has been dropped.' => 'Įvykis pašalintas.',
'Event has been altered.' => 'Įvykis pakeistas.', 'Event has been altered.' => 'Įvykis pakeistas.',
@@ -136,7 +136,7 @@ $translations = array(
'Start' => 'Pradžia', 'Start' => 'Pradžia',
'End' => 'Pabaiga', 'End' => 'Pabaiga',
'On completion preserve' => 'Įvykdžius išsaugoti', 'On completion preserve' => 'Įvykdžius išsaugoti',
'Tables' => 'Lentelės', 'Tables' => 'Lentelės',
'Tables and views' => 'Lentelės ir vaizdai', 'Tables and views' => 'Lentelės ir vaizdai',
'Table' => 'Lentelė', 'Table' => 'Lentelė',
@@ -164,26 +164,26 @@ $translations = array(
'Move down' => 'Perkelti žemyn', 'Move down' => 'Perkelti žemyn',
'Remove' => 'Pašalinti', 'Remove' => 'Pašalinti',
'Maximum number of allowed fields exceeded. Please increase %s.' => 'Viršytas maksimalus leidžiamų stulpelių kiekis. Padidinkite %s.', 'Maximum number of allowed fields exceeded. Please increase %s.' => 'Viršytas maksimalus leidžiamų stulpelių kiekis. Padidinkite %s.',
'Partition by' => 'Skirstyti pagal', 'Partition by' => 'Skirstyti pagal',
'Partitions' => 'Skirsniai', 'Partitions' => 'Skirsniai',
'Partition name' => 'Skirsnio pavadinimas', 'Partition name' => 'Skirsnio pavadinimas',
'Values' => 'Reikšmės', 'Values' => 'Reikšmės',
'View' => 'Vaizdas', 'View' => 'Vaizdas',
'View has been dropped.' => 'Vaizdas pašalintas.', 'View has been dropped.' => 'Vaizdas pašalintas.',
'View has been altered.' => 'Vaizdas pakeistas.', 'View has been altered.' => 'Vaizdas pakeistas.',
'View has been created.' => 'Vaizdas sukurtas.', 'View has been created.' => 'Vaizdas sukurtas.',
'Alter view' => 'Redaguoti vaizdą', 'Alter view' => 'Redaguoti vaizdą',
'Create view' => 'Sukurti vaizdą', 'Create view' => 'Sukurti vaizdą',
'Indexes' => 'Indeksai', 'Indexes' => 'Indeksai',
'Indexes have been altered.' => 'Indeksai pakeisti.', 'Indexes have been altered.' => 'Indeksai pakeisti.',
'Alter indexes' => 'Redaguoti indeksus', 'Alter indexes' => 'Redaguoti indeksus',
'Add next' => 'Pridėti kitą', 'Add next' => 'Pridėti kitą',
'Index Type' => 'Indekso tipas', 'Index Type' => 'Indekso tipas',
'Column (length)' => 'Stulpelis (ilgis)', 'Column (length)' => 'Stulpelis (ilgis)',
'Foreign keys' => 'Išoriniai raktai', 'Foreign keys' => 'Išoriniai raktai',
'Foreign key' => 'Išorinis raktas', 'Foreign key' => 'Išorinis raktas',
'Foreign key has been dropped.' => 'Išorinis raktas pašalintas.', 'Foreign key has been dropped.' => 'Išorinis raktas pašalintas.',
@@ -199,7 +199,7 @@ $translations = array(
'ON DELETE' => 'Ištrinant', 'ON DELETE' => 'Ištrinant',
'ON UPDATE' => 'Atnaujinant', 'ON UPDATE' => 'Atnaujinant',
'Source and target columns must have the same data type, there must be an index on the target columns and referenced data must exist.' => 'Šaltinio ir tikslinis stulpelis turi būti to paties tipo, tiksliniame stulpelyje turi būti naudojamas indeksas ir duomenys turi egzistuoti.', 'Source and target columns must have the same data type, there must be an index on the target columns and referenced data must exist.' => 'Šaltinio ir tikslinis stulpelis turi būti to paties tipo, tiksliniame stulpelyje turi būti naudojamas indeksas ir duomenys turi egzistuoti.',
'Triggers' => 'Trigeriai', 'Triggers' => 'Trigeriai',
'Add trigger' => 'Pridėti trigerį', 'Add trigger' => 'Pridėti trigerį',
'Trigger has been dropped.' => 'Trigeris pašalintas.', 'Trigger has been dropped.' => 'Trigeris pašalintas.',
@@ -210,7 +210,7 @@ $translations = array(
'Time' => 'Laikas', 'Time' => 'Laikas',
'Event' => 'Įvykis', 'Event' => 'Įvykis',
'Name' => 'Pavadinimas', 'Name' => 'Pavadinimas',
'select' => 'atrinkti', 'select' => 'atrinkti',
'Select' => 'Atrinkti', 'Select' => 'Atrinkti',
'Select data' => 'Atrinkti duomenis', 'Select data' => 'Atrinkti duomenis',
@@ -231,13 +231,13 @@ $translations = array(
'last' => 'paskutinis', 'last' => 'paskutinis',
'Whole result' => 'Visas rezultatas', 'Whole result' => 'Visas rezultatas',
'%d byte(s)' => array('%d baitas', '%d baigai', '%d baitų'), '%d byte(s)' => array('%d baitas', '%d baigai', '%d baitų'),
'Import' => 'Importas', 'Import' => 'Importas',
'%d row(s) have been imported.' => array('%d įrašas įkelta.', '%d įrašai įkelti.', '%d įrašų įkelta.'), '%d row(s) have been imported.' => array('%d įrašas įkelta.', '%d įrašai įkelti.', '%d įrašų įkelta.'),
// in-place editing in select // in-place editing in select
'Use edit link to modify this value.' => 'Norėdami redaguoti reikšmę naudokite redagavimo nuorodą.', 'Use edit link to modify this value.' => 'Norėdami redaguoti reikšmę naudokite redagavimo nuorodą.',
// %s can contain auto-increment value // %s can contain auto-increment value
'Item%s has been inserted.' => 'Įrašas%s sukurtas.', 'Item%s has been inserted.' => 'Įrašas%s sukurtas.',
'Item has been deleted.' => 'Įrašas ištrintas.', 'Item has been deleted.' => 'Įrašas ištrintas.',
@@ -255,14 +255,14 @@ $translations = array(
'Save and insert next' => 'Išsaugoti ir įrašyti kitą', 'Save and insert next' => 'Išsaugoti ir įrašyti kitą',
'Clone' => 'Klonuoti', 'Clone' => 'Klonuoti',
'Delete' => 'Trinti', 'Delete' => 'Trinti',
'E-mail' => 'El. paštas', 'E-mail' => 'El. paštas',
'From' => 'Nuo', 'From' => 'Nuo',
'Subject' => 'Antraštė', 'Subject' => 'Antraštė',
'Attachments' => 'Priedai', 'Attachments' => 'Priedai',
'Send' => 'Siųsti', 'Send' => 'Siųsti',
'%d e-mail(s) have been sent.' => array('Išsiųstas %d laiškas.', 'Išsiųsti %d laiškai.', 'Išsiųsta %d laiškų.'), '%d e-mail(s) have been sent.' => array('Išsiųstas %d laiškas.', 'Išsiųsti %d laiškai.', 'Išsiųsta %d laiškų.'),
// data type descriptions // data type descriptions
'Numbers' => 'Skaičiai', 'Numbers' => 'Skaičiai',
'Date and time' => 'Data ir laikas', 'Date and time' => 'Data ir laikas',
@@ -272,7 +272,7 @@ $translations = array(
'Network' => 'Tinklas', 'Network' => 'Tinklas',
'Geometry' => 'Geometrija', 'Geometry' => 'Geometrija',
'Relations' => 'Ryšiai', 'Relations' => 'Ryšiai',
'Editor' => 'Redaktorius', 'Editor' => 'Redaktorius',
// date format in Editor: $1 yyyy, $2 yy, $3 mm, $4 m, $5 dd, $6 d // date format in Editor: $1 yyyy, $2 yy, $3 mm, $4 m, $5 dd, $6 d
'$1-$3-$5' => '$1-$3-$5', '$1-$3-$5' => '$1-$3-$5',
@@ -281,11 +281,11 @@ $translations = array(
// hint for time format - use language equivalents for hour, minute and second shortcuts // hint for time format - use language equivalents for hour, minute and second shortcuts
'HH:MM:SS' => 'HH:MM:SS', 'HH:MM:SS' => 'HH:MM:SS',
'now' => 'dabar', 'now' => 'dabar',
// general SQLite error in create, drop or rename database // general SQLite error in create, drop or rename database
'File exists.' => 'Failas egzistuoja.', 'File exists.' => 'Failas egzistuoja.',
'Please use one of the extensions %s.' => 'Naudokite vieną iš plėtinių %s.', 'Please use one of the extensions %s.' => 'Naudokite vieną iš plėtinių %s.',
// PostgreSQL and MS SQL schema support // PostgreSQL and MS SQL schema support
'Alter schema' => 'Keisti schemą', 'Alter schema' => 'Keisti schemą',
'Create schema' => 'Sukurti schemą', 'Create schema' => 'Sukurti schemą',
@@ -294,7 +294,7 @@ $translations = array(
'Schema has been altered.' => 'Schema pakeista.', 'Schema has been altered.' => 'Schema pakeista.',
'Schema' => 'Schema', 'Schema' => 'Schema',
'Invalid schema.' => 'Neteisinga schema.', 'Invalid schema.' => 'Neteisinga schema.',
// PostgreSQL sequences support // PostgreSQL sequences support
'Sequences' => 'Sekos', 'Sequences' => 'Sekos',
'Create sequence' => 'Sukurti seką', 'Create sequence' => 'Sukurti seką',
@@ -302,7 +302,7 @@ $translations = array(
'Sequence has been created.' => 'Seka sukurta.', 'Sequence has been created.' => 'Seka sukurta.',
'Sequence has been altered.' => 'Seka pakeista.', 'Sequence has been altered.' => 'Seka pakeista.',
'Alter sequence' => 'Keisti seką', 'Alter sequence' => 'Keisti seką',
// PostgreSQL user types support // PostgreSQL user types support
'User types' => 'Vartotojų tipai', 'User types' => 'Vartotojų tipai',
'Create type' => 'Sukurti tipą', 'Create type' => 'Sukurti tipą',
@@ -347,4 +347,12 @@ $translations = array(
'Disable %s or enable %s or %s extensions.' => null, 'Disable %s or enable %s or %s extensions.' => null,
'yes' => null, 'yes' => null,
'no' => null, 'no' => null,
'Columns' => null,
'Nullable' => null,
'Default' => null,
'Yes' => null,
'No' => null,
'One Time Password' => null,
'Invalid OTP code.' => null,
); );

View File

@@ -285,10 +285,10 @@ $translations = array(
'Size' => 'Izmērs', 'Size' => 'Izmērs',
'Compute' => 'Izskaitļot', 'Compute' => 'Izskaitļot',
'You are offline.' => 'Jūs est bezsasaistē.', 'You are offline.' => 'Jūs est bezsasaistē.',
'You have no privileges to update this table.' => 'jums nav pieejas labot šo tabulu.', 'You have no privileges to update this table.' => 'Jums nav pieejas labot šo tabulu.',
'Saving' => 'Saglabāšana', 'Saving' => 'Saglabāšana',
'yes' => 'Jā', 'yes' => 'jā',
'no' => 'Nē', 'no' => 'nē',
'Drop %s?' => 'Dzēst %s?', 'Drop %s?' => 'Dzēst %s?',
'overwrite' => 'pārrakstīt', 'overwrite' => 'pārrakstīt',
'DB' => 'DB', 'DB' => 'DB',
@@ -302,4 +302,12 @@ $translations = array(
'Database does not support password.' => 'Datubāze neatbalsta paroli.', 'Database does not support password.' => 'Datubāze neatbalsta paroli.',
'Disable %s or enable %s or %s extensions.' => null, 'Disable %s or enable %s or %s extensions.' => null,
'Columns' => null,
'Nullable' => null,
'Default' => null,
'Yes' => 'Jā',
'No' => 'Nē',
'One Time Password' => null,
'Invalid OTP code.' => null,
); );

View File

@@ -347,4 +347,12 @@ $translations = array(
'Unknown error.' => null, 'Unknown error.' => null,
'Database does not support password.' => null, 'Database does not support password.' => null,
'Disable %s or enable %s or %s extensions.' => null, 'Disable %s or enable %s or %s extensions.' => null,
'Columns' => null,
'Nullable' => null,
'Default' => null,
'Yes' => 'Ya',
'No' => 'Tidak',
'One Time Password' => null,
'Invalid OTP code.' => null,
); );

View File

@@ -302,4 +302,12 @@ $translations = array(
'Disable %s or enable %s or %s extensions.' => 'Schakel %s uit or schakel extensies %s of %s in.', 'Disable %s or enable %s or %s extensions.' => 'Schakel %s uit or schakel extensies %s of %s in.',
'yes' => 'ja', 'yes' => 'ja',
'no' => 'neen', 'no' => 'neen',
'Columns' => null,
'Nullable' => null,
'Default' => null,
'Yes' => 'Ja',
'No' => 'Neen',
'One Time Password' => null,
'Invalid OTP code.' => null,
); );

View File

@@ -302,4 +302,12 @@ $translations = array(
'Unknown error.' => null, 'Unknown error.' => null,
'Database does not support password.' => null, 'Database does not support password.' => null,
'Disable %s or enable %s or %s extensions.' => null, 'Disable %s or enable %s or %s extensions.' => null,
'Columns' => null,
'Nullable' => null,
'Default' => null,
'Yes' => 'Ja',
'No' => 'Nei',
'One Time Password' => null,
'Invalid OTP code.' => null,
); );

View File

@@ -42,10 +42,10 @@ $translations = array(
'Process list' => 'Lista procesów', 'Process list' => 'Lista procesów',
'%d process(es) have been killed.' => array('Przerwano %d wątek.', 'Przerwano %d wątki.', 'Przerwano %d wątków.'), '%d process(es) have been killed.' => array('Przerwano %d wątek.', 'Przerwano %d wątki.', 'Przerwano %d wątków.'),
'Kill' => 'Przerwij wykonywanie', 'Kill' => 'Przerwij wykonywanie',
'Variables' => 'Zmienne', 'Variables' => 'Zmienne',
'Status' => 'Status', 'Status' => 'Status',
'SQL command' => 'Zapytanie SQL', 'SQL command' => 'Zapytanie SQL',
'%d query(s) executed OK.' => array('Pomyślnie wykonano %d zapytanie.', 'Pomyślnie wykonano %d zapytania.', 'Pomyślnie wykonano %d zapytań.'), '%d query(s) executed OK.' => array('Pomyślnie wykonano %d zapytanie.', 'Pomyślnie wykonano %d zapytania.', 'Pomyślnie wykonano %d zapytań.'),
'Query executed OK, %d row(s) affected.' => array('Zapytanie wykonane pomyślnie, zmieniono %d rekord.', 'Zapytanie wykonane pomyślnie, zmieniono %d rekordy.', 'Zapytanie wykonane pomyślnie, zmieniono %d rekordów.'), 'Query executed OK, %d row(s) affected.' => array('Zapytanie wykonane pomyślnie, zmieniono %d rekord.', 'Zapytanie wykonane pomyślnie, zmieniono %d rekordy.', 'Zapytanie wykonane pomyślnie, zmieniono %d rekordów.'),
@@ -60,7 +60,7 @@ $translations = array(
'History' => 'Historia', 'History' => 'Historia',
'Clear' => 'Wyczyść', 'Clear' => 'Wyczyść',
'Edit all' => 'Edytuj wszystkie', 'Edit all' => 'Edytuj wszystkie',
'File upload' => 'Wgranie pliku', 'File upload' => 'Wgranie pliku',
'From server' => 'Z serwera', 'From server' => 'Z serwera',
'Webserver file %s' => 'Plik %s na serwerze', 'Webserver file %s' => 'Plik %s na serwerze',
@@ -72,14 +72,14 @@ $translations = array(
'Too big POST data. Reduce the data or increase the %s configuration directive.' => 'Przesłano zbyt dużo danych. Zmniejsz objętość danych lub zwiększ zmienną konfiguracyjną %s.', 'Too big POST data. Reduce the data or increase the %s configuration directive.' => 'Przesłano zbyt dużo danych. Zmniejsz objętość danych lub zwiększ zmienną konfiguracyjną %s.',
'You can upload a big SQL file via FTP and import it from server.' => 'Większe pliki SQL możesz wgrać na serwer poprzez FTP przed zaimportowaniem.', 'You can upload a big SQL file via FTP and import it from server.' => 'Większe pliki SQL możesz wgrać na serwer poprzez FTP przed zaimportowaniem.',
'You are offline.' => 'Jesteś offline.', 'You are offline.' => 'Jesteś offline.',
'Export' => 'Eksport', 'Export' => 'Eksport',
'Output' => 'Rezultat', 'Output' => 'Rezultat',
'open' => 'otwórz', 'open' => 'otwórz',
'save' => 'zapisz', 'save' => 'zapisz',
'Format' => 'Format', 'Format' => 'Format',
'Data' => 'Dane', 'Data' => 'Dane',
'Database' => 'Baza danych', 'Database' => 'Baza danych',
'database' => 'baza danych', 'database' => 'baza danych',
'Use' => 'Wybierz', 'Use' => 'Wybierz',
@@ -93,10 +93,10 @@ $translations = array(
'Alter database' => 'Zmień bazę danych', 'Alter database' => 'Zmień bazę danych',
'Create database' => 'Utwórz bazę danych', 'Create database' => 'Utwórz bazę danych',
'Database schema' => 'Schemat bazy danych', 'Database schema' => 'Schemat bazy danych',
// link to current database schema layout // link to current database schema layout
'Permanent link' => 'Trwały link', 'Permanent link' => 'Trwały link',
// thousands separator - must contain single byte // thousands separator - must contain single byte
',' => ' ', ',' => ' ',
'0123456789' => '0123456789', '0123456789' => '0123456789',
@@ -119,7 +119,7 @@ $translations = array(
'Tables have been moved.' => 'Tabele zostały przeniesione.', 'Tables have been moved.' => 'Tabele zostały przeniesione.',
'Copy' => 'Kopiuj', 'Copy' => 'Kopiuj',
'Tables have been copied.' => 'Tabele zostały skopiowane.', 'Tables have been copied.' => 'Tabele zostały skopiowane.',
'Routines' => 'Procedury i funkcje', 'Routines' => 'Procedury i funkcje',
'Routine has been called, %d row(s) affected.' => array('Procedura została uruchomiona, zmieniono %d rekord.', 'Procedura została uruchomiona, zmieniono %d rekordy.', 'Procedura została uruchomiona, zmieniono %d rekordów.'), 'Routine has been called, %d row(s) affected.' => array('Procedura została uruchomiona, zmieniono %d rekord.', 'Procedura została uruchomiona, zmieniono %d rekordy.', 'Procedura została uruchomiona, zmieniono %d rekordów.'),
'Call' => 'Uruchom', 'Call' => 'Uruchom',
@@ -132,7 +132,7 @@ $translations = array(
'Alter function' => 'Zmień funkcję', 'Alter function' => 'Zmień funkcję',
'Alter procedure' => 'Zmień procedurę', 'Alter procedure' => 'Zmień procedurę',
'Return type' => 'Zwracany typ', 'Return type' => 'Zwracany typ',
'Events' => 'Wydarzenia', 'Events' => 'Wydarzenia',
'Event has been dropped.' => 'Wydarzenie zostało usunięte.', 'Event has been dropped.' => 'Wydarzenie zostało usunięte.',
'Event has been altered.' => 'Wydarzenie zostało zmienione.', 'Event has been altered.' => 'Wydarzenie zostało zmienione.',
@@ -145,7 +145,7 @@ $translations = array(
'Start' => 'Początek', 'Start' => 'Początek',
'End' => 'Koniec', 'End' => 'Koniec',
'On completion preserve' => 'Nie kasuj wydarzenia po przeterminowaniu', 'On completion preserve' => 'Nie kasuj wydarzenia po przeterminowaniu',
'Tables' => 'Tabele', 'Tables' => 'Tabele',
'Tables and views' => 'Tabele i perspektywy', 'Tables and views' => 'Tabele i perspektywy',
'Table' => 'Tabela', 'Table' => 'Tabela',
@@ -178,12 +178,12 @@ $translations = array(
'Move down' => 'Przesuń w dół', 'Move down' => 'Przesuń w dół',
'Remove' => 'Usuń', 'Remove' => 'Usuń',
'Maximum number of allowed fields exceeded. Please increase %s.' => 'Przekroczono maksymalną liczbę pól. Zwiększ %s.', 'Maximum number of allowed fields exceeded. Please increase %s.' => 'Przekroczono maksymalną liczbę pól. Zwiększ %s.',
'Partition by' => 'Partycjonowanie', 'Partition by' => 'Partycjonowanie',
'Partitions' => 'Partycje', 'Partitions' => 'Partycje',
'Partition name' => 'Nazwa partycji', 'Partition name' => 'Nazwa partycji',
'Values' => 'Wartości', 'Values' => 'Wartości',
'View' => 'Perspektywa', 'View' => 'Perspektywa',
'Materialized view' => 'Zmaterializowana perspektywa', 'Materialized view' => 'Zmaterializowana perspektywa',
'View has been dropped.' => 'Perspektywa została usunięta.', 'View has been dropped.' => 'Perspektywa została usunięta.',
@@ -191,14 +191,14 @@ $translations = array(
'View has been created.' => 'Perspektywa została utworzona.', 'View has been created.' => 'Perspektywa została utworzona.',
'Alter view' => 'Zmień perspektywę', 'Alter view' => 'Zmień perspektywę',
'Create view' => 'Utwórz perspektywę', 'Create view' => 'Utwórz perspektywę',
'Indexes' => 'Indeksy', 'Indexes' => 'Indeksy',
'Indexes have been altered.' => 'Indeksy zostały zmienione.', 'Indexes have been altered.' => 'Indeksy zostały zmienione.',
'Alter indexes' => 'Zmień indeksy', 'Alter indexes' => 'Zmień indeksy',
'Add next' => 'Dodaj następny', 'Add next' => 'Dodaj następny',
'Index Type' => 'Typ indeksu', 'Index Type' => 'Typ indeksu',
'Column (length)' => 'Kolumna (długość)', 'Column (length)' => 'Kolumna (długość)',
'Foreign keys' => 'Klucze obce', 'Foreign keys' => 'Klucze obce',
'Foreign key' => 'Klucz obcy', 'Foreign key' => 'Klucz obcy',
'Foreign key has been dropped.' => 'Klucz obcy został usunięty.', 'Foreign key has been dropped.' => 'Klucz obcy został usunięty.',
@@ -214,7 +214,7 @@ $translations = array(
'ON DELETE' => 'W przypadku usunięcia', 'ON DELETE' => 'W przypadku usunięcia',
'ON UPDATE' => 'W przypadku zmiany', 'ON UPDATE' => 'W przypadku zmiany',
'Source and target columns must have the same data type, there must be an index on the target columns and referenced data must exist.' => 'Źródłowa i docelowa kolumna muszą być tego samego typu, powinien istnieć indeks na docelowej kolumnie oraz muszą istnieć dane referencyjne.', 'Source and target columns must have the same data type, there must be an index on the target columns and referenced data must exist.' => 'Źródłowa i docelowa kolumna muszą być tego samego typu, powinien istnieć indeks na docelowej kolumnie oraz muszą istnieć dane referencyjne.',
'Triggers' => 'Wyzwalacze', 'Triggers' => 'Wyzwalacze',
'Add trigger' => 'Dodaj wyzwalacz', 'Add trigger' => 'Dodaj wyzwalacz',
'Trigger has been dropped.' => 'Wyzwalacz został usunięty.', 'Trigger has been dropped.' => 'Wyzwalacz został usunięty.',
@@ -225,7 +225,7 @@ $translations = array(
'Time' => 'Czas', 'Time' => 'Czas',
'Event' => 'Wydarzenie', 'Event' => 'Wydarzenie',
'Name' => 'Nazwa', 'Name' => 'Nazwa',
'select' => 'przeglądaj', 'select' => 'przeglądaj',
'Select' => 'pokaż', 'Select' => 'pokaż',
'Select data' => 'Pokaż dane', 'Select data' => 'Pokaż dane',
@@ -251,16 +251,16 @@ $translations = array(
'Loading' => 'Wczytywanie', 'Loading' => 'Wczytywanie',
'Whole result' => 'Wybierz wszystkie', 'Whole result' => 'Wybierz wszystkie',
'%d byte(s)' => array('%d bajt', '%d bajty', '%d bajtów'), '%d byte(s)' => array('%d bajt', '%d bajty', '%d bajtów'),
'Import' => 'Import', 'Import' => 'Import',
'%d row(s) have been imported.' => array('%d rekord został zaimportowany.', '%d rekordy zostały zaimportowane.', '%d rekordów zostało zaimportowanych.'), '%d row(s) have been imported.' => array('%d rekord został zaimportowany.', '%d rekordy zostały zaimportowane.', '%d rekordów zostało zaimportowanych.'),
'File must be in UTF-8 encoding.' => 'Kodowanie pliku musi być ustawione na UTF-8.', 'File must be in UTF-8 encoding.' => 'Kodowanie pliku musi być ustawione na UTF-8.',
// in-place editing in select // in-place editing in select
'Modify' => 'Zmień', 'Modify' => 'Zmień',
'Ctrl+click on a value to modify it.' => 'Ctrl+kliknij wartość, aby ją edytować.', 'Ctrl+click on a value to modify it.' => 'Ctrl+kliknij wartość, aby ją edytować.',
'Use edit link to modify this value.' => 'Użyj linku edycji aby zmienić tę wartość.', 'Use edit link to modify this value.' => 'Użyj linku edycji aby zmienić tę wartość.',
// %s can contain auto-increment value // %s can contain auto-increment value
'Item%s has been inserted.' => 'Rekord%s został dodany.', 'Item%s has been inserted.' => 'Rekord%s został dodany.',
'Item has been deleted.' => 'Rekord został usunięty.', 'Item has been deleted.' => 'Rekord został usunięty.',
@@ -281,14 +281,14 @@ $translations = array(
'Clone' => 'Duplikuj', 'Clone' => 'Duplikuj',
'Delete' => 'Usuń', 'Delete' => 'Usuń',
'You have no privileges to update this table.' => 'Brak uprawnień do edycji tej tabeli', 'You have no privileges to update this table.' => 'Brak uprawnień do edycji tej tabeli',
'E-mail' => 'E-mail', 'E-mail' => 'E-mail',
'From' => 'Nadawca', 'From' => 'Nadawca',
'Subject' => 'Temat', 'Subject' => 'Temat',
'Attachments' => 'Załączniki', 'Attachments' => 'Załączniki',
'Send' => 'Wyślij', 'Send' => 'Wyślij',
'%d e-mail(s) have been sent.' => array('Wysłano %d e-mail.', 'Wysłano %d e-maile.', 'Wysłano %d e-maili.'), '%d e-mail(s) have been sent.' => array('Wysłano %d e-mail.', 'Wysłano %d e-maile.', 'Wysłano %d e-maili.'),
// data type descriptions // data type descriptions
'Numbers' => 'Numeryczne', 'Numbers' => 'Numeryczne',
'Date and time' => 'Data i czas', 'Date and time' => 'Data i czas',
@@ -298,7 +298,7 @@ $translations = array(
'Network' => 'Sieć', 'Network' => 'Sieć',
'Geometry' => 'Geometria', 'Geometry' => 'Geometria',
'Relations' => 'Relacje', 'Relations' => 'Relacje',
'Editor' => 'Edytor', 'Editor' => 'Edytor',
// date format in Editor: $1 yyyy, $2 yy, $3 mm, $4 m, $5 dd, $6 d // date format in Editor: $1 yyyy, $2 yy, $3 mm, $4 m, $5 dd, $6 d
'$1-$3-$5' => '$6.$4.$1', '$1-$3-$5' => '$6.$4.$1',
@@ -309,11 +309,11 @@ $translations = array(
'now' => 'teraz', 'now' => 'teraz',
'yes' => 'tak', 'yes' => 'tak',
'no' => 'nie', 'no' => 'nie',
// general SQLite error in create, drop or rename database // general SQLite error in create, drop or rename database
'File exists.' => 'Plik już istnieje.', 'File exists.' => 'Plik już istnieje.',
'Please use one of the extensions %s.' => 'Proszę użyć jednego z rozszerzeń: %s.', 'Please use one of the extensions %s.' => 'Proszę użyć jednego z rozszerzeń: %s.',
// PostgreSQL and MS SQL schema support // PostgreSQL and MS SQL schema support
'Alter schema' => 'Zmień schemat', 'Alter schema' => 'Zmień schemat',
'Create schema' => 'Utwórz schemat', 'Create schema' => 'Utwórz schemat',
@@ -322,7 +322,7 @@ $translations = array(
'Schema has been altered.' => 'Schemat został zmieniony.', 'Schema has been altered.' => 'Schemat został zmieniony.',
'Schema' => 'Schemat', 'Schema' => 'Schemat',
'Invalid schema.' => 'Nieprawidłowy schemat.', 'Invalid schema.' => 'Nieprawidłowy schemat.',
// PostgreSQL sequences support // PostgreSQL sequences support
'Sequences' => 'Sekwencje', 'Sequences' => 'Sekwencje',
'Create sequence' => 'Utwórz sekwencję', 'Create sequence' => 'Utwórz sekwencję',
@@ -330,7 +330,7 @@ $translations = array(
'Sequence has been created.' => 'Sekwencja została utworzona.', 'Sequence has been created.' => 'Sekwencja została utworzona.',
'Sequence has been altered.' => 'Sekwencja została zmieniona.', 'Sequence has been altered.' => 'Sekwencja została zmieniona.',
'Alter sequence' => 'Zmień sekwencję', 'Alter sequence' => 'Zmień sekwencję',
// PostgreSQL user types support // PostgreSQL user types support
'User types' => 'Typy użytkownika', 'User types' => 'Typy użytkownika',
'Create type' => 'Utwórz typ', 'Create type' => 'Utwórz typ',
@@ -347,4 +347,12 @@ $translations = array(
'Unknown error.' => null, 'Unknown error.' => null,
'Database does not support password.' => null, 'Database does not support password.' => null,
'Disable %s or enable %s or %s extensions.' => null, 'Disable %s or enable %s or %s extensions.' => null,
'Columns' => null,
'Nullable' => null,
'Default' => null,
'Yes' => 'Tak',
'No' => 'Nie',
'One Time Password' => null,
'Invalid OTP code.' => null,
); );

View File

@@ -302,4 +302,12 @@ $translations = array(
'yes' => null, 'yes' => null,
'no' => null, 'no' => null,
'HH:MM:SS' => null, 'HH:MM:SS' => null,
'Columns' => null,
'Nullable' => null,
'Default' => null,
'Yes' => null,
'No' => null,
'One Time Password' => null,
'Invalid OTP code.' => null,
); );

View File

@@ -302,4 +302,12 @@ $translations = array(
'yes' => null, 'yes' => null,
'no' => null, 'no' => null,
'HH:MM:SS' => null, 'HH:MM:SS' => null,
'Columns' => null,
'Nullable' => null,
'Default' => null,
'Yes' => null,
'No' => null,
'One Time Password' => null,
'Invalid OTP code.' => null,
); );

View File

@@ -302,4 +302,12 @@ $translations = array(
'Disable %s or enable %s or %s extensions.' => null, 'Disable %s or enable %s or %s extensions.' => null,
'yes' => null, 'yes' => null,
'no' => null, 'no' => null,
'Columns' => null,
'Nullable' => null,
'Default' => null,
'Yes' => null,
'No' => null,
'One Time Password' => null,
'Invalid OTP code.' => null,
); );

View File

@@ -287,8 +287,8 @@ $translations = array(
'You are offline.' => 'Вы не выполнили вход.', 'You are offline.' => 'Вы не выполнили вход.',
'You have no privileges to update this table.' => 'У вас нет прав на обновление этой таблицы.', 'You have no privileges to update this table.' => 'У вас нет прав на обновление этой таблицы.',
'Saving' => 'Сохранение', 'Saving' => 'Сохранение',
'yes' => 'Да', 'yes' => 'да',
'no' => 'Нет', 'no' => 'нет',
'Drop %s?' => 'Удалить %s?', 'Drop %s?' => 'Удалить %s?',
'overwrite' => 'перезаписать', 'overwrite' => 'перезаписать',
'DB' => 'DB', 'DB' => 'DB',
@@ -302,4 +302,12 @@ $translations = array(
'Database does not support password.' => 'База данных не поддерживает пароль.', 'Database does not support password.' => 'База данных не поддерживает пароль.',
'Disable %s or enable %s or %s extensions.' => 'Отключите %s или включите расширения %s или %s.', 'Disable %s or enable %s or %s extensions.' => 'Отключите %s или включите расширения %s или %s.',
'Columns' => null,
'Nullable' => null,
'Default' => null,
'Yes' => 'Да',
'No' => 'Нет',
'One Time Password' => null,
'Invalid OTP code.' => null,
); );

View File

@@ -265,7 +265,6 @@ $translations = array(
'Permanent link' => 'Permanentný odkaz', 'Permanent link' => 'Permanentný odkaz',
'Edit all' => 'Upraviť všetko', 'Edit all' => 'Upraviť všetko',
'HH:MM:SS' => 'HH:MM:SS', 'HH:MM:SS' => 'HH:MM:SS',
'Drop %s?' => 'Odstrániť %s?', 'Drop %s?' => 'Odstrániť %s?',
'Tables have been optimized.' => 'Tabuľky boli optimalizované.', 'Tables have been optimized.' => 'Tabuľky boli optimalizované.',
'Materialized view' => 'Materializovaný pohľad', 'Materialized view' => 'Materializovaný pohľad',
@@ -302,4 +301,11 @@ $translations = array(
'Disable %s or enable %s or %s extensions.' => 'Zakážte %s alebo povoľte rozšírenie %s alebo %s.', 'Disable %s or enable %s or %s extensions.' => 'Zakážte %s alebo povoľte rozšírenie %s alebo %s.',
'yes' => 'áno', 'yes' => 'áno',
'no' => 'nie', 'no' => 'nie',
'Yes' => 'Áno',
'No' => 'Nie',
'Columns' => 'Stĺpce',
'Nullable' => 'Povolené null',
'Default' => 'Predvolené',
'One Time Password' => 'Jednorázové heslo',
'Invalid OTP code.' => 'Neplatný kód OTP.',
); );

View File

@@ -19,10 +19,10 @@ $translations = array(
'Session expired, please login again.' => 'Seja je potekla. Prosimo, ponovno se prijavite.', 'Session expired, please login again.' => 'Seja je potekla. Prosimo, ponovno se prijavite.',
'%s version: %s through PHP extension %s' => 'Verzija %s: %s preko dodatka za PHP %s', '%s version: %s through PHP extension %s' => 'Verzija %s: %s preko dodatka za PHP %s',
'Refresh' => 'Osveži', 'Refresh' => 'Osveži',
// text direction // text direction
'ltr' => 'ltr', 'ltr' => 'ltr',
'Privileges' => 'Pravice', 'Privileges' => 'Pravice',
'Create user' => 'Ustvari uporabnika', 'Create user' => 'Ustvari uporabnika',
'User has been dropped.' => 'Uporabnik je odstranjen.', 'User has been dropped.' => 'Uporabnik je odstranjen.',
@@ -33,14 +33,14 @@ $translations = array(
'Routine' => 'Postopek', 'Routine' => 'Postopek',
'Grant' => 'Dovoli', 'Grant' => 'Dovoli',
'Revoke' => 'Odvzemi', 'Revoke' => 'Odvzemi',
'Process list' => 'Seznam procesov', 'Process list' => 'Seznam procesov',
'%d process(es) have been killed.' => array('Končan je %d proces.', 'Končana sta %d procesa.', 'Končani so %d procesi.', 'Končanih je %d procesov.'), '%d process(es) have been killed.' => array('Končan je %d proces.', 'Končana sta %d procesa.', 'Končani so %d procesi.', 'Končanih je %d procesov.'),
'Kill' => 'Končaj', 'Kill' => 'Končaj',
'Variables' => 'Spremenljivke', 'Variables' => 'Spremenljivke',
'Status' => 'Stanje', 'Status' => 'Stanje',
'SQL command' => 'Ukaz SQL', 'SQL command' => 'Ukaz SQL',
'%d query(s) executed OK.' => array('Uspešno se je končala %d poizvedba.', 'Uspešno sta se končali %d poizvedbi.', 'Uspešno so se končale %d poizvedbe.', 'Uspešno se je končalo %d poizvedb.'), '%d query(s) executed OK.' => array('Uspešno se je končala %d poizvedba.', 'Uspešno sta se končali %d poizvedbi.', 'Uspešno so se končale %d poizvedbe.', 'Uspešno se je končalo %d poizvedb.'),
'Query executed OK, %d row(s) affected.' => array('Poizvedba se je uspešno izvedla, spremenjena je %d vrstica.', 'Poizvedba se je uspešno izvedla, spremenjeni sta %d vrstici.', 'Poizvedba se je uspešno izvedla, spremenjene so %d vrstice.', 'Poizvedba se je uspešno izvedla, spremenjenih je %d vrstic.'), 'Query executed OK, %d row(s) affected.' => array('Poizvedba se je uspešno izvedla, spremenjena je %d vrstica.', 'Poizvedba se je uspešno izvedla, spremenjeni sta %d vrstici.', 'Poizvedba se je uspešno izvedla, spremenjene so %d vrstice.', 'Poizvedba se je uspešno izvedla, spremenjenih je %d vrstic.'),
@@ -53,7 +53,7 @@ $translations = array(
'%.3f s' => '%.3f s', '%.3f s' => '%.3f s',
'History' => 'Zgodovina', 'History' => 'Zgodovina',
'Clear' => 'Počisti', 'Clear' => 'Počisti',
'File upload' => 'Naloži datoteko', 'File upload' => 'Naloži datoteko',
'From server' => 'z strežnika', 'From server' => 'z strežnika',
'Webserver file %s' => 'Datoteka na spletnem strežniku %s', 'Webserver file %s' => 'Datoteka na spletnem strežniku %s',
@@ -63,14 +63,14 @@ $translations = array(
'Unable to upload a file.' => 'Ne morem naložiti datoteke.', 'Unable to upload a file.' => 'Ne morem naložiti datoteke.',
'Maximum allowed file size is %sB.' => 'Največja velikost datoteke je %sB.', 'Maximum allowed file size is %sB.' => 'Največja velikost datoteke je %sB.',
'Too big POST data. Reduce the data or increase the %s configuration directive.' => 'Preveliko podatkov za POST. Zmanjšajte število podatkov ali povečajte nastavitev za %s.', 'Too big POST data. Reduce the data or increase the %s configuration directive.' => 'Preveliko podatkov za POST. Zmanjšajte število podatkov ali povečajte nastavitev za %s.',
'Export' => 'Izvozi', 'Export' => 'Izvozi',
'Output' => 'Izhod rezultata', 'Output' => 'Izhod rezultata',
'open' => 'odpri', 'open' => 'odpri',
'save' => 'shrani', 'save' => 'shrani',
'Format' => 'Format', 'Format' => 'Format',
'Data' => 'Podatki', 'Data' => 'Podatki',
'Database' => 'Baza', 'Database' => 'Baza',
'database' => 'baza', 'database' => 'baza',
'Use' => 'Uporabi', 'Use' => 'Uporabi',
@@ -84,7 +84,7 @@ $translations = array(
'Alter database' => 'Spremeni bazo', 'Alter database' => 'Spremeni bazo',
'Create database' => 'Ustvari bazo', 'Create database' => 'Ustvari bazo',
'Database schema' => 'Shema baze', 'Database schema' => 'Shema baze',
// thousands separator - must contain single byte // thousands separator - must contain single byte
',' => ' ', ',' => ' ',
'0123456789' => '0123456789', '0123456789' => '0123456789',
@@ -106,7 +106,7 @@ $translations = array(
'Tables have been moved.' => 'Tabele so premaknjene.', 'Tables have been moved.' => 'Tabele so premaknjene.',
'Copy' => 'Kopiraj', 'Copy' => 'Kopiraj',
'Tables have been copied.' => 'Tabele so kopirane.', 'Tables have been copied.' => 'Tabele so kopirane.',
'Routines' => 'Postopki', 'Routines' => 'Postopki',
'Routine has been called, %d row(s) affected.' => array('Klican je bil postopek, spremenjena je %d vrstica.', 'Klican je bil postopek, spremenjeni sta %d vrstici.', 'Klican je bil postopek, spremenjene so %d vrstice.', 'Klican je bil postopek, spremenjenih je %d vrstic.'), 'Routine has been called, %d row(s) affected.' => array('Klican je bil postopek, spremenjena je %d vrstica.', 'Klican je bil postopek, spremenjeni sta %d vrstici.', 'Klican je bil postopek, spremenjene so %d vrstice.', 'Klican je bil postopek, spremenjenih je %d vrstic.'),
'Call' => 'Pokliči', 'Call' => 'Pokliči',
@@ -119,7 +119,7 @@ $translations = array(
'Alter function' => 'Spremeni funkcijo', 'Alter function' => 'Spremeni funkcijo',
'Alter procedure' => 'Spremeni postopek', 'Alter procedure' => 'Spremeni postopek',
'Return type' => 'Vračalni tip', 'Return type' => 'Vračalni tip',
'Events' => 'Dogodki', 'Events' => 'Dogodki',
'Event has been dropped.' => 'Dogodek je zavržen.', 'Event has been dropped.' => 'Dogodek je zavržen.',
'Event has been altered.' => 'Dogodek je spremenjen.', 'Event has been altered.' => 'Dogodek je spremenjen.',
@@ -132,7 +132,7 @@ $translations = array(
'Start' => 'Začetek', 'Start' => 'Začetek',
'End' => 'Konec', 'End' => 'Konec',
'On completion preserve' => 'Po zaključku ohrani', 'On completion preserve' => 'Po zaključku ohrani',
'Tables' => 'Tabele', 'Tables' => 'Tabele',
'Tables and views' => 'Tabele in pogledi', 'Tables and views' => 'Tabele in pogledi',
'Table' => 'Tabela', 'Table' => 'Tabela',
@@ -160,26 +160,26 @@ $translations = array(
'Move down' => 'Premakni dol', 'Move down' => 'Premakni dol',
'Remove' => 'Odstrani', 'Remove' => 'Odstrani',
'Maximum number of allowed fields exceeded. Please increase %s.' => 'Največje število dovoljenih polje je preseženo. Prosimo, povečajte %s.', 'Maximum number of allowed fields exceeded. Please increase %s.' => 'Največje število dovoljenih polje je preseženo. Prosimo, povečajte %s.',
'Partition by' => 'Porazdeli po', 'Partition by' => 'Porazdeli po',
'Partitions' => 'Porazdelitve', 'Partitions' => 'Porazdelitve',
'Partition name' => 'Ime porazdelitve', 'Partition name' => 'Ime porazdelitve',
'Values' => 'Vrednosti', 'Values' => 'Vrednosti',
'View' => 'Pogledi', 'View' => 'Pogledi',
'View has been dropped.' => 'Pogled je zavržen.', 'View has been dropped.' => 'Pogled je zavržen.',
'View has been altered.' => 'Pogled je spremenjen.', 'View has been altered.' => 'Pogled je spremenjen.',
'View has been created.' => 'Pogled je ustvarjen.', 'View has been created.' => 'Pogled je ustvarjen.',
'Alter view' => 'Spremeni pogled', 'Alter view' => 'Spremeni pogled',
'Create view' => 'Ustvari pogled', 'Create view' => 'Ustvari pogled',
'Indexes' => 'Indeksi', 'Indexes' => 'Indeksi',
'Indexes have been altered.' => 'Indeksi so spremenjeni.', 'Indexes have been altered.' => 'Indeksi so spremenjeni.',
'Alter indexes' => 'Spremeni indekse', 'Alter indexes' => 'Spremeni indekse',
'Add next' => 'Dodaj naslednjega', 'Add next' => 'Dodaj naslednjega',
'Index Type' => 'Tip indeksa', 'Index Type' => 'Tip indeksa',
'Column (length)' => 'Stolpec (dolžina)', 'Column (length)' => 'Stolpec (dolžina)',
'Foreign keys' => 'Tuji ključi', 'Foreign keys' => 'Tuji ključi',
'Foreign key' => 'Tuj ključ', 'Foreign key' => 'Tuj ključ',
'Foreign key has been dropped.' => 'Tuj ključ je zavržen.', 'Foreign key has been dropped.' => 'Tuj ključ je zavržen.',
@@ -195,7 +195,7 @@ $translations = array(
'ON DELETE' => 'pri brisanju', 'ON DELETE' => 'pri brisanju',
'ON UPDATE' => 'pri posodabljanju', 'ON UPDATE' => 'pri posodabljanju',
'Source and target columns must have the same data type, there must be an index on the target columns and referenced data must exist.' => 'Izvorni in ciljni stolpec mora imeti isti podatkovni tip. Obstajati mora indeks na ciljnih stolpcih in obstajati morajo referenčni podatki.', 'Source and target columns must have the same data type, there must be an index on the target columns and referenced data must exist.' => 'Izvorni in ciljni stolpec mora imeti isti podatkovni tip. Obstajati mora indeks na ciljnih stolpcih in obstajati morajo referenčni podatki.',
'Triggers' => 'Sprožilniki', 'Triggers' => 'Sprožilniki',
'Add trigger' => 'Dodaj sprožilnik', 'Add trigger' => 'Dodaj sprožilnik',
'Trigger has been dropped.' => 'Sprožilnik je odstranjen.', 'Trigger has been dropped.' => 'Sprožilnik je odstranjen.',
@@ -206,7 +206,7 @@ $translations = array(
'Time' => 'Čas', 'Time' => 'Čas',
'Event' => 'Dogodek', 'Event' => 'Dogodek',
'Name' => 'Naziv', 'Name' => 'Naziv',
'select' => 'izberi', 'select' => 'izberi',
'Select' => 'Izberi', 'Select' => 'Izberi',
'Select data' => 'Izberi podatke', 'Select data' => 'Izberi podatke',
@@ -227,14 +227,14 @@ $translations = array(
'last' => 'Zadnja', 'last' => 'Zadnja',
'Whole result' => 'Cel razultat', 'Whole result' => 'Cel razultat',
'%d byte(s)' => array('%d bajt', '%d bajta', '%d bajti', '%d bajtov'), '%d byte(s)' => array('%d bajt', '%d bajta', '%d bajti', '%d bajtov'),
'Import' => 'Uvozi', 'Import' => 'Uvozi',
'%d row(s) have been imported.' => array('Uvožena je %d vrstica.', 'Uvoženi sta %d vrstici.', 'Uvožene so %d vrstice.', 'Uvoženih je %d vrstic.'), '%d row(s) have been imported.' => array('Uvožena je %d vrstica.', 'Uvoženi sta %d vrstici.', 'Uvožene so %d vrstice.', 'Uvoženih je %d vrstic.'),
// in-place editing in select // in-place editing in select
'Ctrl+click on a value to modify it.' => 'Ctrl+klik na vrednost za urejanje.', 'Ctrl+click on a value to modify it.' => 'Ctrl+klik na vrednost za urejanje.',
'Use edit link to modify this value.' => 'Uporabite urejanje povezave za spreminjanje te vrednosti.', 'Use edit link to modify this value.' => 'Uporabite urejanje povezave za spreminjanje te vrednosti.',
// %s can contain auto-increment value // %s can contain auto-increment value
'Item%s has been inserted.' => 'Predmet%s je vstavljen.', 'Item%s has been inserted.' => 'Predmet%s je vstavljen.',
'Item has been deleted.' => 'Predmet je izbrisan.', 'Item has been deleted.' => 'Predmet je izbrisan.',
@@ -252,14 +252,14 @@ $translations = array(
'Save and insert next' => 'Shrani in vstavi tekst', 'Save and insert next' => 'Shrani in vstavi tekst',
'Clone' => 'Kloniraj', 'Clone' => 'Kloniraj',
'Delete' => 'Izbriši', 'Delete' => 'Izbriši',
'E-mail' => 'E-mail', 'E-mail' => 'E-mail',
'From' => 'Od', 'From' => 'Od',
'Subject' => 'Zadeva', 'Subject' => 'Zadeva',
'Attachments' => 'Priponke', 'Attachments' => 'Priponke',
'Send' => 'Pošlji', 'Send' => 'Pošlji',
'%d e-mail(s) have been sent.' => array('Poslan je %d e-mail.', 'Poslana sta %d e-maila.', 'Poslani so %d e-maili.', 'Poslanih je %d e-mailov.'), '%d e-mail(s) have been sent.' => array('Poslan je %d e-mail.', 'Poslana sta %d e-maila.', 'Poslani so %d e-maili.', 'Poslanih je %d e-mailov.'),
// data type descriptions // data type descriptions
'Numbers' => 'Števila', 'Numbers' => 'Števila',
'Date and time' => 'Datum in čas', 'Date and time' => 'Datum in čas',
@@ -269,18 +269,18 @@ $translations = array(
'Network' => 'Mrežni', 'Network' => 'Mrežni',
'Geometry' => 'Geometrčni', 'Geometry' => 'Geometrčni',
'Relations' => 'Relacijski', 'Relations' => 'Relacijski',
'Editor' => 'Urejevalnik', 'Editor' => 'Urejevalnik',
// date format in Editor: $1 yyyy, $2 yy, $3 mm, $4 m, $5 dd, $6 d // date format in Editor: $1 yyyy, $2 yy, $3 mm, $4 m, $5 dd, $6 d
'$1-$3-$5' => '$6.$4.$1', '$1-$3-$5' => '$6.$4.$1',
// hint for date format - use language equivalents for day, month and year shortcuts // hint for date format - use language equivalents for day, month and year shortcuts
'[yyyy]-mm-dd' => 'd.m.[rrrr]', '[yyyy]-mm-dd' => 'd.m.[rrrr]',
'now' => 'zdaj', 'now' => 'zdaj',
// general SQLite error in create, drop or rename database // general SQLite error in create, drop or rename database
'File exists.' => 'Datoteka obstaja.', 'File exists.' => 'Datoteka obstaja.',
'Please use one of the extensions %s.' => 'Prosim, uporabite enega od dodatkov %s.', 'Please use one of the extensions %s.' => 'Prosim, uporabite enega od dodatkov %s.',
// PostgreSQL and MS SQL schema support // PostgreSQL and MS SQL schema support
'Alter schema' => 'Spremeni shemo', 'Alter schema' => 'Spremeni shemo',
'Create schema' => 'Ustvari shemo', 'Create schema' => 'Ustvari shemo',
@@ -289,7 +289,7 @@ $translations = array(
'Schema has been altered.' => 'Shema je spremenjena.', 'Schema has been altered.' => 'Shema je spremenjena.',
'Schema' => 'Shema', 'Schema' => 'Shema',
'Invalid schema.' => 'Neveljavna shema.', 'Invalid schema.' => 'Neveljavna shema.',
// PostgreSQL sequences support // PostgreSQL sequences support
'Sequences' => 'Sekvence', 'Sequences' => 'Sekvence',
'Create sequence' => 'Ustvari sekvenco', 'Create sequence' => 'Ustvari sekvenco',
@@ -297,7 +297,7 @@ $translations = array(
'Sequence has been created.' => 'Sekvence je ustvarjena.', 'Sequence has been created.' => 'Sekvence je ustvarjena.',
'Sequence has been altered.' => 'Sekvence je spremenjena.', 'Sequence has been altered.' => 'Sekvence je spremenjena.',
'Alter sequence' => 'Spremni sekvenco', 'Alter sequence' => 'Spremni sekvenco',
// PostgreSQL user types support // PostgreSQL user types support
'User types' => 'Uporabniški tipi', 'User types' => 'Uporabniški tipi',
'Create type' => 'Ustvari tip', 'Create type' => 'Ustvari tip',
@@ -344,4 +344,12 @@ $translations = array(
'yes' => null, 'yes' => null,
'no' => null, 'no' => null,
'HH:MM:SS' => null, 'HH:MM:SS' => null,
'Columns' => null,
'Nullable' => null,
'Default' => null,
'Yes' => null,
'No' => null,
'One Time Password' => null,
'Invalid OTP code.' => null,
); );

View File

@@ -347,4 +347,12 @@ $translations = array(
'Unknown error.' => null, 'Unknown error.' => null,
'Database does not support password.' => null, 'Database does not support password.' => null,
'Disable %s or enable %s or %s extensions.' => null, 'Disable %s or enable %s or %s extensions.' => null,
'Columns' => null,
'Nullable' => null,
'Default' => null,
'Yes' => 'Да',
'No' => 'Не',
'One Time Password' => null,
'Invalid OTP code.' => null,
); );

View File

@@ -346,4 +346,12 @@ $translations = array(
'Type has been dropped.' => 'Typ har, typ, tagits bort.', 'Type has been dropped.' => 'Typ har, typ, tagits bort.',
'Type has been created.' => 'Typ har skapats.', 'Type has been created.' => 'Typ har skapats.',
'Alter type' => 'Ändra typ', 'Alter type' => 'Ändra typ',
'Columns' => null,
'Nullable' => null,
'Default' => null,
'Yes' => 'Ja',
'No' => 'Nej',
'One Time Password' => null,
'Invalid OTP code.' => null,
); );

View File

@@ -302,4 +302,12 @@ $translations = array(
'Disable %s or enable %s or %s extensions.' => null, 'Disable %s or enable %s or %s extensions.' => null,
'yes' => null, 'yes' => null,
'no' => null, 'no' => null,
'Columns' => null,
'Nullable' => null,
'Default' => null,
'Yes' => null,
'No' => null,
'One Time Password' => null,
'Invalid OTP code.' => null,
); );

View File

@@ -302,4 +302,12 @@ $translations = array(
'Disable %s or enable %s or %s extensions.' => null, 'Disable %s or enable %s or %s extensions.' => null,
'yes' => null, 'yes' => null,
'no' => null, 'no' => null,
'Columns' => null,
'Nullable' => null,
'Default' => null,
'Yes' => null,
'No' => null,
'One Time Password' => null,
'Invalid OTP code.' => null,
); );

View File

@@ -347,4 +347,12 @@ $translations = array(
'Unknown error.' => null, 'Unknown error.' => null,
'Database does not support password.' => null, 'Database does not support password.' => null,
'Disable %s or enable %s or %s extensions.' => null, 'Disable %s or enable %s or %s extensions.' => null,
'Columns' => null,
'Nullable' => null,
'Default' => null,
'Yes' => 'Evet',
'No' => 'Hayır',
'One Time Password' => null,
'Invalid OTP code.' => null,
); );

View File

@@ -19,10 +19,10 @@ $translations = array(
'Session expired, please login again.' => 'Сесія закінчилась, будь ласка, увійдіть в систему знову.', 'Session expired, please login again.' => 'Сесія закінчилась, будь ласка, увійдіть в систему знову.',
'%s version: %s through PHP extension %s' => 'Версія %s: %s з PHP-розширенням %s', '%s version: %s through PHP extension %s' => 'Версія %s: %s з PHP-розширенням %s',
'Refresh' => 'Оновити', 'Refresh' => 'Оновити',
// text direction - 'ltr' or 'rtl' // text direction - 'ltr' or 'rtl'
'ltr' => 'ltr', 'ltr' => 'ltr',
'Privileges' => 'Привілеї', 'Privileges' => 'Привілеї',
'Create user' => 'Створити користувача', 'Create user' => 'Створити користувача',
'User has been dropped.' => 'Користувача було видалено.', 'User has been dropped.' => 'Користувача було видалено.',
@@ -33,14 +33,14 @@ $translations = array(
'Routine' => 'Процедура', 'Routine' => 'Процедура',
'Grant' => 'Дозволити', 'Grant' => 'Дозволити',
'Revoke' => 'Заборонити', 'Revoke' => 'Заборонити',
'Process list' => 'Перелік процесів', 'Process list' => 'Перелік процесів',
'%d process(es) have been killed.' => array('Було завершено %d процес.', 'Було завершено %d процеси.', 'Було завершёно %d процесів.'), '%d process(es) have been killed.' => array('Було завершено %d процес.', 'Було завершено %d процеси.', 'Було завершёно %d процесів.'),
'Kill' => 'Завершити процес', 'Kill' => 'Завершити процес',
'Variables' => 'Змінні', 'Variables' => 'Змінні',
'Status' => 'Статус', 'Status' => 'Статус',
'SQL command' => 'SQL запит', 'SQL command' => 'SQL запит',
'%d query(s) executed OK.' => array('%d запит виконано успішно.', '%d запити виконано успішно.', '%d запитів виконано успішно.'), '%d query(s) executed OK.' => array('%d запит виконано успішно.', '%d запити виконано успішно.', '%d запитів виконано успішно.'),
'Query executed OK, %d row(s) affected.' => array('Запит виконано успішно, змінено %d рядок.', 'Запит виконано успішно, змінено %d рядки.', 'Запит виконано успішно, змінено %d рядків.'), 'Query executed OK, %d row(s) affected.' => array('Запит виконано успішно, змінено %d рядок.', 'Запит виконано успішно, змінено %d рядки.', 'Запит виконано успішно, змінено %d рядків.'),
@@ -54,7 +54,7 @@ $translations = array(
'History' => 'Історія', 'History' => 'Історія',
'Clear' => 'Очистити', 'Clear' => 'Очистити',
'Edit all' => 'Редагувати все', 'Edit all' => 'Редагувати все',
'File upload' => 'Завантажити файл', 'File upload' => 'Завантажити файл',
'From server' => 'З сервера', 'From server' => 'З сервера',
'Webserver file %s' => 'Файл %s на вебсервері', 'Webserver file %s' => 'Файл %s на вебсервері',
@@ -64,14 +64,14 @@ $translations = array(
'Unable to upload a file.' => 'Неможливо завантажити файл.', 'Unable to upload a file.' => 'Неможливо завантажити файл.',
'Maximum allowed file size is %sB.' => 'Максимально допустимий розмір файлу %sБ.', 'Maximum allowed file size is %sB.' => 'Максимально допустимий розмір файлу %sБ.',
'Too big POST data. Reduce the data or increase the %s configuration directive.' => 'Занадто великий об\'єм POST-даних. Зменшіть об\'єм або збільшіть параметр директиви %s конфигурації.', 'Too big POST data. Reduce the data or increase the %s configuration directive.' => 'Занадто великий об\'єм POST-даних. Зменшіть об\'єм або збільшіть параметр директиви %s конфигурації.',
'Export' => 'Експорт', 'Export' => 'Експорт',
'Output' => 'Вихідні дані', 'Output' => 'Вихідні дані',
'open' => 'відкрити', 'open' => 'відкрити',
'save' => 'зберегти', 'save' => 'зберегти',
'Format' => 'Формат', 'Format' => 'Формат',
'Data' => 'Дані', 'Data' => 'Дані',
'Database' => 'База даних', 'Database' => 'База даних',
'database' => 'база даних', 'database' => 'база даних',
'Use' => 'Обрати', 'Use' => 'Обрати',
@@ -85,10 +85,10 @@ $translations = array(
'Alter database' => 'Змінити базу даних', 'Alter database' => 'Змінити базу даних',
'Create database' => 'Створити базу даних', 'Create database' => 'Створити базу даних',
'Database schema' => 'Схема бази даних', 'Database schema' => 'Схема бази даних',
// link to current database schema layout // link to current database schema layout
'Permanent link' => 'Постійне посилання', 'Permanent link' => 'Постійне посилання',
// thousands separator - must contain single byte // thousands separator - must contain single byte
',' => ' ', ',' => ' ',
'0123456789' => '0123456789', '0123456789' => '0123456789',
@@ -110,7 +110,7 @@ $translations = array(
'Tables have been moved.' => 'Таблиці було перенесено.', 'Tables have been moved.' => 'Таблиці було перенесено.',
'Copy' => 'копіювати', 'Copy' => 'копіювати',
'Tables have been copied.' => 'Таблиці було зкопійовано.', 'Tables have been copied.' => 'Таблиці було зкопійовано.',
'Routines' => 'Збережені процедури', 'Routines' => 'Збережені процедури',
'Routine has been called, %d row(s) affected.' => array('Була викликана процедура, %d запис було змінено.', 'Була викликана процедура, %d записи було змінено.', 'Була викликана процедура, %d записів було змінено.'), 'Routine has been called, %d row(s) affected.' => array('Була викликана процедура, %d запис було змінено.', 'Була викликана процедура, %d записи було змінено.', 'Була викликана процедура, %d записів було змінено.'),
'Call' => 'Викликати', 'Call' => 'Викликати',
@@ -123,7 +123,7 @@ $translations = array(
'Alter function' => 'Змінити функцію', 'Alter function' => 'Змінити функцію',
'Alter procedure' => 'Змінити процедуру', 'Alter procedure' => 'Змінити процедуру',
'Return type' => 'Тип, що повернеться', 'Return type' => 'Тип, що повернеться',
'Events' => 'Події', 'Events' => 'Події',
'Event has been dropped.' => 'Подію було видалено.', 'Event has been dropped.' => 'Подію було видалено.',
'Event has been altered.' => 'Подію було змінено.', 'Event has been altered.' => 'Подію було змінено.',
@@ -136,7 +136,7 @@ $translations = array(
'Start' => 'Початок', 'Start' => 'Початок',
'End' => 'Кінець', 'End' => 'Кінець',
'On completion preserve' => 'Після завершення зберегти', 'On completion preserve' => 'Після завершення зберегти',
'Tables' => 'Таблиці', 'Tables' => 'Таблиці',
'Tables and views' => 'Таблиці і вигляди', 'Tables and views' => 'Таблиці і вигляди',
'Table' => 'Таблиця', 'Table' => 'Таблиця',
@@ -165,26 +165,26 @@ $translations = array(
'Move down' => 'Пересунути вниз', 'Move down' => 'Пересунути вниз',
'Remove' => 'Видалити', 'Remove' => 'Видалити',
'Maximum number of allowed fields exceeded. Please increase %s.' => 'Досягнута максимальна кількість доступних полів. Будь ласка, збільшіть %s.', 'Maximum number of allowed fields exceeded. Please increase %s.' => 'Досягнута максимальна кількість доступних полів. Будь ласка, збільшіть %s.',
'Partition by' => 'Розділити по', 'Partition by' => 'Розділити по',
'Partitions' => 'Розділи', 'Partitions' => 'Розділи',
'Partition name' => 'Назва розділу', 'Partition name' => 'Назва розділу',
'Values' => 'Значення', 'Values' => 'Значення',
'View' => 'Вигляд', 'View' => 'Вигляд',
'View has been dropped.' => 'Вигляд було видалено.', 'View has been dropped.' => 'Вигляд було видалено.',
'View has been altered.' => 'Вигляд було змінено.', 'View has been altered.' => 'Вигляд було змінено.',
'View has been created.' => 'Вигляд було створено.', 'View has been created.' => 'Вигляд було створено.',
'Alter view' => 'Змінити вигляд', 'Alter view' => 'Змінити вигляд',
'Create view' => 'Створити вигляд', 'Create view' => 'Створити вигляд',
'Indexes' => 'Індекси', 'Indexes' => 'Індекси',
'Indexes have been altered.' => 'Індексування було змінено.', 'Indexes have been altered.' => 'Індексування було змінено.',
'Alter indexes' => 'Змінити індексування', 'Alter indexes' => 'Змінити індексування',
'Add next' => 'Додати ще', 'Add next' => 'Додати ще',
'Index Type' => 'Тип індексу', 'Index Type' => 'Тип індексу',
'Column (length)' => 'Стовпець (довжина)', 'Column (length)' => 'Стовпець (довжина)',
'Foreign keys' => 'Зовнішні ключі', 'Foreign keys' => 'Зовнішні ключі',
'Foreign key' => 'Зовнішній ключ', 'Foreign key' => 'Зовнішній ключ',
'Foreign key has been dropped.' => 'Зовнішній ключ було видалено.', 'Foreign key has been dropped.' => 'Зовнішній ключ було видалено.',
@@ -200,7 +200,7 @@ $translations = array(
'ON DELETE' => 'ПРИ ВИДАЛЕННІ', 'ON DELETE' => 'ПРИ ВИДАЛЕННІ',
'ON UPDATE' => 'ПРИ ЗМІНІ', 'ON UPDATE' => 'ПРИ ЗМІНІ',
'Source and target columns must have the same data type, there must be an index on the target columns and referenced data must exist.' => 'Стовпці повинні мати той самий тип даних, цільові стовпці повинні бути проіндексовані і дані, на які посилаються повинні існувати.', 'Source and target columns must have the same data type, there must be an index on the target columns and referenced data must exist.' => 'Стовпці повинні мати той самий тип даних, цільові стовпці повинні бути проіндексовані і дані, на які посилаються повинні існувати.',
'Triggers' => 'Тригери', 'Triggers' => 'Тригери',
'Add trigger' => 'Додати тригер', 'Add trigger' => 'Додати тригер',
'Trigger has been dropped.' => 'Тригер було видалено.', 'Trigger has been dropped.' => 'Тригер було видалено.',
@@ -211,7 +211,7 @@ $translations = array(
'Time' => 'Час', 'Time' => 'Час',
'Event' => 'Подія', 'Event' => 'Подія',
'Name' => 'Назва', 'Name' => 'Назва',
'select' => 'вибрати', 'select' => 'вибрати',
'Select' => 'Вибрати', 'Select' => 'Вибрати',
'Select data' => 'Вибрати дані', 'Select data' => 'Вибрати дані',
@@ -232,14 +232,14 @@ $translations = array(
'last' => 'остання', 'last' => 'остання',
'Whole result' => 'Весь результат', 'Whole result' => 'Весь результат',
'%d byte(s)' => array('%d байт', '%d байта', '%d байтів'), '%d byte(s)' => array('%d байт', '%d байта', '%d байтів'),
'Import' => 'Імпортувати', 'Import' => 'Імпортувати',
'%d row(s) have been imported.' => array('%d рядок було імпортовано.', '%d рядки було імпортовано.', '%d рядків було імпортовано.'), '%d row(s) have been imported.' => array('%d рядок було імпортовано.', '%d рядки було імпортовано.', '%d рядків було імпортовано.'),
// in-place editing in select // in-place editing in select
'Ctrl+click on a value to modify it.' => 'Ctrl+клікніть на значенні щоб змінити його.', 'Ctrl+click on a value to modify it.' => 'Ctrl+клікніть на значенні щоб змінити його.',
'Use edit link to modify this value.' => 'Використовуйте посилання щоб змінити це значення.', 'Use edit link to modify this value.' => 'Використовуйте посилання щоб змінити це значення.',
// %s can contain auto-increment value // %s can contain auto-increment value
'Item%s has been inserted.' => 'Запис%s було вставлено.', 'Item%s has been inserted.' => 'Запис%s було вставлено.',
'Item has been deleted.' => 'Запис було видалено.', 'Item has been deleted.' => 'Запис було видалено.',
@@ -257,14 +257,14 @@ $translations = array(
'Save and insert next' => 'Зберегти і вставити знову', 'Save and insert next' => 'Зберегти і вставити знову',
'Clone' => 'Клонувати', 'Clone' => 'Клонувати',
'Delete' => 'Видалити', 'Delete' => 'Видалити',
'E-mail' => 'E-mail', 'E-mail' => 'E-mail',
'From' => 'Від', 'From' => 'Від',
'Subject' => 'Заголовок', 'Subject' => 'Заголовок',
'Attachments' => 'Додатки', 'Attachments' => 'Додатки',
'Send' => 'Надіслати', 'Send' => 'Надіслати',
'%d e-mail(s) have been sent.' => array('Було надіслано %d повідомлення.', 'Було надіслано %d повідомлення.', 'Було надіслано %d повідомлень.'), '%d e-mail(s) have been sent.' => array('Було надіслано %d повідомлення.', 'Було надіслано %d повідомлення.', 'Було надіслано %d повідомлень.'),
// data type descriptions // data type descriptions
'Numbers' => 'Числа', 'Numbers' => 'Числа',
'Date and time' => 'Дата і час', 'Date and time' => 'Дата і час',
@@ -274,7 +274,7 @@ $translations = array(
'Network' => 'Мережа', 'Network' => 'Мережа',
'Geometry' => 'Геометрія', 'Geometry' => 'Геометрія',
'Relations' => 'Зв\'язки', 'Relations' => 'Зв\'язки',
'Editor' => 'Редактор', 'Editor' => 'Редактор',
// date format in Editor: $1 yyyy, $2 yy, $3 mm, $4 m, $5 dd, $6 d // date format in Editor: $1 yyyy, $2 yy, $3 mm, $4 m, $5 dd, $6 d
'$1-$3-$5' => '$5.$3.$1', '$1-$3-$5' => '$5.$3.$1',
@@ -285,11 +285,11 @@ $translations = array(
'now' => 'зараз', 'now' => 'зараз',
'yes' => 'так', 'yes' => 'так',
'no' => 'ні', 'no' => 'ні',
// general SQLite error in create, drop or rename database // general SQLite error in create, drop or rename database
'File exists.' => 'Файл існує.', 'File exists.' => 'Файл існує.',
'Please use one of the extensions %s.' => 'Будь ласка, використовуйте одне з розширень %s.', 'Please use one of the extensions %s.' => 'Будь ласка, використовуйте одне з розширень %s.',
// PostgreSQL and MS SQL schema support // PostgreSQL and MS SQL schema support
'Alter schema' => 'Змінити схему', 'Alter schema' => 'Змінити схему',
'Create schema' => 'Створити схему', 'Create schema' => 'Створити схему',
@@ -298,7 +298,7 @@ $translations = array(
'Schema has been altered.' => 'Схему було змінено.', 'Schema has been altered.' => 'Схему було змінено.',
'Schema' => 'Схема', 'Schema' => 'Схема',
'Invalid schema.' => 'Невірна схема.', 'Invalid schema.' => 'Невірна схема.',
// PostgreSQL sequences support // PostgreSQL sequences support
'Sequences' => 'Послідовності', 'Sequences' => 'Послідовності',
'Create sequence' => 'Створити послідовність', 'Create sequence' => 'Створити послідовність',
@@ -306,7 +306,7 @@ $translations = array(
'Sequence has been created.' => 'Послідовність було створено.', 'Sequence has been created.' => 'Послідовність було створено.',
'Sequence has been altered.' => 'Послідовність було змінено.', 'Sequence has been altered.' => 'Послідовність було змінено.',
'Alter sequence' => 'Змінити послідовність', 'Alter sequence' => 'Змінити послідовність',
// PostgreSQL user types support // PostgreSQL user types support
'User types' => 'Типи користувачів', 'User types' => 'Типи користувачів',
'Create type' => 'Створити тип', 'Create type' => 'Створити тип',
@@ -347,4 +347,12 @@ $translations = array(
'Vacuum' => null, 'Vacuum' => null,
'%d / ' => array(), '%d / ' => array(),
'Disable %s or enable %s or %s extensions.' => null, 'Disable %s or enable %s or %s extensions.' => null,
'Columns' => null,
'Nullable' => null,
'Default' => null,
'Yes' => 'Так',
'No' => 'Ні',
'One Time Password' => null,
'Invalid OTP code.' => null,
); );

View File

@@ -21,10 +21,10 @@ $translations = array(
'Session expired, please login again.' => 'Phiên làm việc đã hết, hãy đăng nhập lại.', 'Session expired, please login again.' => 'Phiên làm việc đã hết, hãy đăng nhập lại.',
'%s version: %s through PHP extension %s' => 'Phiên bản %s: %s (PHP extension: %s)', '%s version: %s through PHP extension %s' => 'Phiên bản %s: %s (PHP extension: %s)',
'Refresh' => 'Làm mới', 'Refresh' => 'Làm mới',
// text direction - 'ltr' or 'rtl' // text direction - 'ltr' or 'rtl'
'ltr' => 'ltr', 'ltr' => 'ltr',
'Privileges' => 'Quyền truy cập', 'Privileges' => 'Quyền truy cập',
'Create user' => 'Tạo người dùng', 'Create user' => 'Tạo người dùng',
'User has been dropped.' => 'Đã xoá người dùng.', 'User has been dropped.' => 'Đã xoá người dùng.',
@@ -35,14 +35,14 @@ $translations = array(
'Routine' => 'Hàm tích hợp', 'Routine' => 'Hàm tích hợp',
'Grant' => 'Cấp quyền', 'Grant' => 'Cấp quyền',
'Revoke' => 'Tước quyền', 'Revoke' => 'Tước quyền',
'Process list' => 'Danh sách tiến trình', 'Process list' => 'Danh sách tiến trình',
'%d process(es) have been killed.' => '%d tiến trình đã dừng.', '%d process(es) have been killed.' => '%d tiến trình đã dừng.',
'Kill' => 'Dừng', 'Kill' => 'Dừng',
'Variables' => 'Biến', 'Variables' => 'Biến',
'Status' => 'Trạng thái', 'Status' => 'Trạng thái',
'SQL command' => 'Câu lệnh SQL', 'SQL command' => 'Câu lệnh SQL',
'%d query(s) executed OK.' => '%d câu lệnh đã chạy thành công.', '%d query(s) executed OK.' => '%d câu lệnh đã chạy thành công.',
'Query executed OK, %d row(s) affected.' => 'Đã thực hiện xong, ảnh hưởng đến %d dòng.', 'Query executed OK, %d row(s) affected.' => 'Đã thực hiện xong, ảnh hưởng đến %d dòng.',
@@ -56,7 +56,7 @@ $translations = array(
'History' => 'Lịch sử', 'History' => 'Lịch sử',
'Clear' => 'Xoá', 'Clear' => 'Xoá',
'Edit all' => 'Sửa tất cả', 'Edit all' => 'Sửa tất cả',
'File upload' => 'Tải tệp lên', 'File upload' => 'Tải tệp lên',
'From server' => 'Dùng tệp trên máy chủ', 'From server' => 'Dùng tệp trên máy chủ',
'Webserver file %s' => 'Tệp trên máy chủ', 'Webserver file %s' => 'Tệp trên máy chủ',
@@ -67,14 +67,14 @@ $translations = array(
'Maximum allowed file size is %sB.' => 'Kích thước tệp tối đa là %sB.', 'Maximum allowed file size is %sB.' => 'Kích thước tệp tối đa là %sB.',
'Too big POST data. Reduce the data or increase the %s configuration directive.' => 'Dữ liệu tải lên/POST quá lớn. Hãy giảm kích thước tệp hoặc tăng cấu hình (hiện tại %s).', 'Too big POST data. Reduce the data or increase the %s configuration directive.' => 'Dữ liệu tải lên/POST quá lớn. Hãy giảm kích thước tệp hoặc tăng cấu hình (hiện tại %s).',
'You can upload a big SQL file via FTP and import it from server.' => 'Bạn có thể tải tệp lên dùng FTP và nhập vào cơ sở dữ liệu.', 'You can upload a big SQL file via FTP and import it from server.' => 'Bạn có thể tải tệp lên dùng FTP và nhập vào cơ sở dữ liệu.',
'Export' => 'Xuất', 'Export' => 'Xuất',
'Output' => 'Kết quả', 'Output' => 'Kết quả',
'open' => 'xem', 'open' => 'xem',
'save' => 'lưu', 'save' => 'lưu',
'Format' => 'Định dạng', 'Format' => 'Định dạng',
'Data' => 'Dữ liệu', 'Data' => 'Dữ liệu',
'Database' => 'Cơ sở dữ liệu', 'Database' => 'Cơ sở dữ liệu',
'database' => 'cơ sở dữ liệu', 'database' => 'cơ sở dữ liệu',
'Use' => 'Sử dụng', 'Use' => 'Sử dụng',
@@ -88,10 +88,10 @@ $translations = array(
'Alter database' => 'Thay đổi CSDL', 'Alter database' => 'Thay đổi CSDL',
'Create database' => 'Tạo CSDL', 'Create database' => 'Tạo CSDL',
'Database schema' => 'Cấu trúc CSDL', 'Database schema' => 'Cấu trúc CSDL',
// link to current database schema layout // link to current database schema layout
'Permanent link' => 'Liên kết cố định', 'Permanent link' => 'Liên kết cố định',
// thousands separator - must contain single byte // thousands separator - must contain single byte
',' => ',', ',' => ',',
'0123456789' => '0123456789', '0123456789' => '0123456789',
@@ -114,7 +114,7 @@ $translations = array(
'Tables have been moved.' => 'Bảng.', 'Tables have been moved.' => 'Bảng.',
'Copy' => 'Sao chép', 'Copy' => 'Sao chép',
'Tables have been copied.' => 'Bảng đã được sao chép.', 'Tables have been copied.' => 'Bảng đã được sao chép.',
'Routines' => 'Routines', 'Routines' => 'Routines',
'Routine has been called, %d row(s) affected.' => 'Đã chạy routine, thay đổi %d dòng.', 'Routine has been called, %d row(s) affected.' => 'Đã chạy routine, thay đổi %d dòng.',
'Call' => 'Gọi', 'Call' => 'Gọi',
@@ -139,7 +139,7 @@ $translations = array(
'Start' => 'Bắt đầu', 'Start' => 'Bắt đầu',
'End' => 'Kết thúc', 'End' => 'Kết thúc',
'On completion preserve' => 'Khi kết thúc, duy trì', 'On completion preserve' => 'Khi kết thúc, duy trì',
'Tables' => 'Các bảng', 'Tables' => 'Các bảng',
'Tables and views' => 'Bảng và khung nhìn', 'Tables and views' => 'Bảng và khung nhìn',
'Table' => 'Bảng', 'Table' => 'Bảng',
@@ -170,26 +170,26 @@ $translations = array(
'Move down' => 'Chuyển xuống dưới', 'Move down' => 'Chuyển xuống dưới',
'Remove' => 'Xoá', 'Remove' => 'Xoá',
'Maximum number of allowed fields exceeded. Please increase %s.' => 'Thiết lập %s cần tăng thêm. (Đã vượt giới hạnố trường tối đa cho phép trong một biểu mẫu).', 'Maximum number of allowed fields exceeded. Please increase %s.' => 'Thiết lập %s cần tăng thêm. (Đã vượt giới hạnố trường tối đa cho phép trong một biểu mẫu).',
'Partition by' => 'Phân chia bằng', 'Partition by' => 'Phân chia bằng',
'Partitions' => 'Phân hoạch', 'Partitions' => 'Phân hoạch',
'Partition name' => 'Tên phân hoạch', 'Partition name' => 'Tên phân hoạch',
'Values' => 'Giá trị', 'Values' => 'Giá trị',
'View' => 'Khung nhìn', 'View' => 'Khung nhìn',
'View has been dropped.' => 'Khung nhìn đã bị xoá.', 'View has been dropped.' => 'Khung nhìn đã bị xoá.',
'View has been altered.' => 'Khung nhìn đã được sửa.', 'View has been altered.' => 'Khung nhìn đã được sửa.',
'View has been created.' => 'Khung nhìn đã được tạo.', 'View has been created.' => 'Khung nhìn đã được tạo.',
'Alter view' => 'Sửa khung nhìn', 'Alter view' => 'Sửa khung nhìn',
'Create view' => 'Tạo khung nhìn', 'Create view' => 'Tạo khung nhìn',
'Indexes' => 'Chỉ mục', 'Indexes' => 'Chỉ mục',
'Indexes have been altered.' => 'Chỉ mục đã được sửa.', 'Indexes have been altered.' => 'Chỉ mục đã được sửa.',
'Alter indexes' => 'Sửa chỉ mục', 'Alter indexes' => 'Sửa chỉ mục',
'Add next' => 'Thêm tiếp', 'Add next' => 'Thêm tiếp',
'Index Type' => 'Loại chỉ mục', 'Index Type' => 'Loại chỉ mục',
'Column (length)' => 'Cột (độ dài)', 'Column (length)' => 'Cột (độ dài)',
'Foreign keys' => 'Các khoá ngoại', 'Foreign keys' => 'Các khoá ngoại',
'Foreign key' => 'Khoá ngoại', 'Foreign key' => 'Khoá ngoại',
'Foreign key has been dropped.' => 'Khoá ngoại đã bị xoá.', 'Foreign key has been dropped.' => 'Khoá ngoại đã bị xoá.',
@@ -205,7 +205,7 @@ $translations = array(
'ON DELETE' => 'Khi xoá', 'ON DELETE' => 'Khi xoá',
'ON UPDATE' => 'Khi cập nhật', 'ON UPDATE' => 'Khi cập nhật',
'Source and target columns must have the same data type, there must be an index on the target columns and referenced data must exist.' => 'Cột gốc và cột đích phải cùng kiểu, phải đặt chỉ mục trong cột đích và dữ liệu tham chiếu phải tồn tại.', 'Source and target columns must have the same data type, there must be an index on the target columns and referenced data must exist.' => 'Cột gốc và cột đích phải cùng kiểu, phải đặt chỉ mục trong cột đích và dữ liệu tham chiếu phải tồn tại.',
'Triggers' => 'Phản xạ', 'Triggers' => 'Phản xạ',
'Add trigger' => 'Thêm phản xạ', 'Add trigger' => 'Thêm phản xạ',
'Trigger has been dropped.' => 'Đã xoá phản xạ.', 'Trigger has been dropped.' => 'Đã xoá phản xạ.',
@@ -216,7 +216,7 @@ $translations = array(
'Time' => 'Thời gian', 'Time' => 'Thời gian',
'Event' => 'Sự kiện', 'Event' => 'Sự kiện',
'Name' => 'Tên', 'Name' => 'Tên',
'select' => 'xem', 'select' => 'xem',
'Select' => 'Xem', 'Select' => 'Xem',
'Select data' => 'Xem dữ liệu', 'Select data' => 'Xem dữ liệu',
@@ -240,16 +240,16 @@ $translations = array(
'Loading' => 'Đang nạp', 'Loading' => 'Đang nạp',
'Whole result' => 'Toàn bộ kết quả', 'Whole result' => 'Toàn bộ kết quả',
'%d byte(s)' => '%d byte(s)', '%d byte(s)' => '%d byte(s)',
'Import' => 'Nhập khẩu', 'Import' => 'Nhập khẩu',
'%d row(s) have been imported.' => 'Đã nhập % dòng dữ liệu.', '%d row(s) have been imported.' => 'Đã nhập % dòng dữ liệu.',
'File must be in UTF-8 encoding.' => 'Tệp phải mã hoá bằng chuẩn UTF-8.', 'File must be in UTF-8 encoding.' => 'Tệp phải mã hoá bằng chuẩn UTF-8.',
// in-place editing in select // in-place editing in select
'Modify' => 'Sửa', 'Modify' => 'Sửa',
'Ctrl+click on a value to modify it.' => 'Nhấn Ctrl và bấm vào giá trị để sửa.', 'Ctrl+click on a value to modify it.' => 'Nhấn Ctrl và bấm vào giá trị để sửa.',
'Use edit link to modify this value.' => 'Dùng nút sửa để thay đổi giá trị này.', 'Use edit link to modify this value.' => 'Dùng nút sửa để thay đổi giá trị này.',
// %s can contain auto-increment value // %s can contain auto-increment value
'Item%s has been inserted.' => 'Đã thêm%s.', 'Item%s has been inserted.' => 'Đã thêm%s.',
'Item has been deleted.' => 'Đã xoá.', 'Item has been deleted.' => 'Đã xoá.',
@@ -269,14 +269,14 @@ $translations = array(
'Clone' => 'Sao chép', 'Clone' => 'Sao chép',
'Delete' => 'Xoá', 'Delete' => 'Xoá',
'You have no privileges to update this table.' => 'Bạn không có quyền sửa bảng này.', 'You have no privileges to update this table.' => 'Bạn không có quyền sửa bảng này.',
'E-mail' => 'Địa chỉ email', 'E-mail' => 'Địa chỉ email',
'From' => 'Người gửi', 'From' => 'Người gửi',
'Subject' => 'Chủ đề', 'Subject' => 'Chủ đề',
'Attachments' => 'Đính kèm', 'Attachments' => 'Đính kèm',
'Send' => 'Gửi', 'Send' => 'Gửi',
'%d e-mail(s) have been sent.' => '%d thư đã gửi.', '%d e-mail(s) have been sent.' => '%d thư đã gửi.',
// data type descriptions // data type descriptions
'Numbers' => 'Số', 'Numbers' => 'Số',
'Date and time' => 'Ngày giờ', 'Date and time' => 'Ngày giờ',
@@ -286,7 +286,7 @@ $translations = array(
'Network' => 'Mạng', 'Network' => 'Mạng',
'Geometry' => 'Toạ độ', 'Geometry' => 'Toạ độ',
'Relations' => 'Quan hệ', 'Relations' => 'Quan hệ',
'Editor' => 'Biên tập', 'Editor' => 'Biên tập',
// date format in Editor: $1 yyyy, $2 yy, $3 mm, $4 m, $5 dd, $6 d // date format in Editor: $1 yyyy, $2 yy, $3 mm, $4 m, $5 dd, $6 d
'$1-$3-$5' => '$1-$3-$5', '$1-$3-$5' => '$1-$3-$5',
@@ -297,11 +297,11 @@ $translations = array(
'now' => 'hiện tại', 'now' => 'hiện tại',
'yes' => 'có', 'yes' => 'có',
'no' => 'không', 'no' => 'không',
// general SQLite error in create, drop or rename database // general SQLite error in create, drop or rename database
'File exists.' => 'Tệp đã có rồi.', 'File exists.' => 'Tệp đã có rồi.',
'Please use one of the extensions %s.' => 'Cần phải dùng một trong các phần mở rộng sau: %s.', 'Please use one of the extensions %s.' => 'Cần phải dùng một trong các phần mở rộng sau: %s.',
// PostgreSQL and MS SQL schema support // PostgreSQL and MS SQL schema support
'Alter schema' => 'Thay đổi schema', 'Alter schema' => 'Thay đổi schema',
'Create schema' => 'Tạo schema', 'Create schema' => 'Tạo schema',
@@ -310,7 +310,7 @@ $translations = array(
'Schema has been altered.' => 'Đã thay đổi schema.', 'Schema has been altered.' => 'Đã thay đổi schema.',
'Schema' => 'Schema', 'Schema' => 'Schema',
'Invalid schema.' => 'Schema không hợp lệ.', 'Invalid schema.' => 'Schema không hợp lệ.',
// PostgreSQL sequences support // PostgreSQL sequences support
'Sequences' => 'Dãy số', 'Sequences' => 'Dãy số',
'Create sequence' => 'Tạo dãy số', 'Create sequence' => 'Tạo dãy số',
@@ -318,7 +318,7 @@ $translations = array(
'Sequence has been created.' => 'Đã tạo dãy số.', 'Sequence has been created.' => 'Đã tạo dãy số.',
'Sequence has been altered.' => 'Đã sửa dãy số.', 'Sequence has been altered.' => 'Đã sửa dãy số.',
'Alter sequence' => 'Thay đổi dãy số', 'Alter sequence' => 'Thay đổi dãy số',
// PostgreSQL user types support // PostgreSQL user types support
'User types' => 'Kiểu tự định nghĩa', 'User types' => 'Kiểu tự định nghĩa',
'Create type' => 'Tạo kiểu', 'Create type' => 'Tạo kiểu',
@@ -346,4 +346,12 @@ $translations = array(
'Unknown error.' => null, 'Unknown error.' => null,
'Database does not support password.' => null, 'Database does not support password.' => null,
'Disable %s or enable %s or %s extensions.' => null, 'Disable %s or enable %s or %s extensions.' => null,
'Columns' => null,
'Nullable' => null,
'Default' => null,
'Yes' => 'Có',
'No' => 'Không',
'One Time Password' => null,
'Invalid OTP code.' => null,
); );

View File

@@ -29,10 +29,10 @@ $translations = array(
'The action will be performed after successful login with the same credentials.' => 'Xx.', 'The action will be performed after successful login with the same credentials.' => 'Xx.',
'%s version: %s through PHP extension %s' => '%s xx: %s xx %s', '%s version: %s through PHP extension %s' => '%s xx: %s xx %s',
'Refresh' => 'Xx', 'Refresh' => 'Xx',
// text direction - 'ltr' or 'rtl' // text direction - 'ltr' or 'rtl'
'ltr' => 'xx', 'ltr' => 'xx',
'Privileges' => 'Xx', 'Privileges' => 'Xx',
'Create user' => 'Xx', 'Create user' => 'Xx',
'User has been dropped.' => 'Xx.', 'User has been dropped.' => 'Xx.',
@@ -43,14 +43,14 @@ $translations = array(
'Routine' => 'Xx', 'Routine' => 'Xx',
'Grant' => 'Xx', 'Grant' => 'Xx',
'Revoke' => 'Xx', 'Revoke' => 'Xx',
'Process list' => 'Xx', 'Process list' => 'Xx',
'%d process(es) have been killed.' => array('%d xx.', '%d xx.'), '%d process(es) have been killed.' => array('%d xx.', '%d xx.'),
'Kill' => 'Xx', 'Kill' => 'Xx',
'Variables' => 'Xx', 'Variables' => 'Xx',
'Status' => 'Xx', 'Status' => 'Xx',
'SQL command' => 'Xx', 'SQL command' => 'Xx',
'%d query(s) executed OK.' => array('%d xx.', '%d xx.'), '%d query(s) executed OK.' => array('%d xx.', '%d xx.'),
'Query executed OK, %d row(s) affected.' => array('Xx, %d.', 'Xx, %d.'), 'Query executed OK, %d row(s) affected.' => array('Xx, %d.', 'Xx, %d.'),
@@ -67,7 +67,7 @@ $translations = array(
'History' => 'Xx', 'History' => 'Xx',
'Clear' => 'Xx', 'Clear' => 'Xx',
'Edit all' => 'Xx', 'Edit all' => 'Xx',
'File upload' => 'Xx', 'File upload' => 'Xx',
'From server' => 'Xx', 'From server' => 'Xx',
'Webserver file %s' => 'Xx %s', 'Webserver file %s' => 'Xx %s',
@@ -79,7 +79,7 @@ $translations = array(
'Too big POST data. Reduce the data or increase the %s configuration directive.' => 'Xx %s.', 'Too big POST data. Reduce the data or increase the %s configuration directive.' => 'Xx %s.',
'You can upload a big SQL file via FTP and import it from server.' => 'Xx.', 'You can upload a big SQL file via FTP and import it from server.' => 'Xx.',
'You are offline.' => 'Xx.', 'You are offline.' => 'Xx.',
'Export' => 'Xx', 'Export' => 'Xx',
'Output' => 'Xx', 'Output' => 'Xx',
'open' => 'xx', 'open' => 'xx',
@@ -87,7 +87,7 @@ $translations = array(
'Saving' => 'Xx', 'Saving' => 'Xx',
'Format' => 'Xx', 'Format' => 'Xx',
'Data' => 'Xx', 'Data' => 'Xx',
'Database' => 'Xx', 'Database' => 'Xx',
'database' => 'xx', 'database' => 'xx',
'DB' => 'XX', 'DB' => 'XX',
@@ -102,10 +102,10 @@ $translations = array(
'Alter database' => 'Xx', 'Alter database' => 'Xx',
'Create database' => 'Xx', 'Create database' => 'Xx',
'Database schema' => 'Xx', 'Database schema' => 'Xx',
// link to current database schema layout // link to current database schema layout
'Permanent link' => 'Xx', 'Permanent link' => 'Xx',
// thousands separator - must contain single byte // thousands separator - must contain single byte
',' => 'x', ',' => 'x',
'0123456789' => 'xxxxxxxxxx', '0123456789' => 'xxxxxxxxxx',
@@ -129,7 +129,7 @@ $translations = array(
'Copy' => 'Xx', 'Copy' => 'Xx',
'Tables have been copied.' => 'Xx.', 'Tables have been copied.' => 'Xx.',
'overwrite' => 'xx', 'overwrite' => 'xx',
'Routines' => 'Xx', 'Routines' => 'Xx',
'Routine has been called, %d row(s) affected.' => array('Xx, %d.', 'Xx, %d.'), 'Routine has been called, %d row(s) affected.' => array('Xx, %d.', 'Xx, %d.'),
'Call' => 'Xx', 'Call' => 'Xx',
@@ -142,7 +142,7 @@ $translations = array(
'Alter function' => 'Xx', 'Alter function' => 'Xx',
'Alter procedure' => 'Xx', 'Alter procedure' => 'Xx',
'Return type' => 'Xx', 'Return type' => 'Xx',
'Events' => 'Xx', 'Events' => 'Xx',
'Event has been dropped.' => 'Xx.', 'Event has been dropped.' => 'Xx.',
'Event has been altered.' => 'Xx.', 'Event has been altered.' => 'Xx.',
@@ -155,7 +155,7 @@ $translations = array(
'Start' => 'Xx', 'Start' => 'Xx',
'End' => 'Xx', 'End' => 'Xx',
'On completion preserve' => 'Xx', 'On completion preserve' => 'Xx',
'Tables' => 'Xx', 'Tables' => 'Xx',
'Tables and views' => 'Xx', 'Tables and views' => 'Xx',
'Table' => 'Xx', 'Table' => 'Xx',
@@ -188,12 +188,12 @@ $translations = array(
'Move down' => 'Xx', 'Move down' => 'Xx',
'Remove' => 'Xx', 'Remove' => 'Xx',
'Maximum number of allowed fields exceeded. Please increase %s.' => 'Xx %s.', 'Maximum number of allowed fields exceeded. Please increase %s.' => 'Xx %s.',
'Partition by' => 'Xx', 'Partition by' => 'Xx',
'Partitions' => 'Xx', 'Partitions' => 'Xx',
'Partition name' => 'Xx', 'Partition name' => 'Xx',
'Values' => 'Xx', 'Values' => 'Xx',
'View' => 'Xx', 'View' => 'Xx',
'Materialized view' => 'Xx', 'Materialized view' => 'Xx',
'View has been dropped.' => 'Xx.', 'View has been dropped.' => 'Xx.',
@@ -201,14 +201,14 @@ $translations = array(
'View has been created.' => 'Xx.', 'View has been created.' => 'Xx.',
'Alter view' => 'Xx', 'Alter view' => 'Xx',
'Create view' => 'Xx', 'Create view' => 'Xx',
'Indexes' => 'Xx', 'Indexes' => 'Xx',
'Indexes have been altered.' => 'Xx.', 'Indexes have been altered.' => 'Xx.',
'Alter indexes' => 'Xx', 'Alter indexes' => 'Xx',
'Add next' => 'Xx', 'Add next' => 'Xx',
'Index Type' => 'Xx', 'Index Type' => 'Xx',
'Column (length)' => 'Xx', 'Column (length)' => 'Xx',
'Foreign keys' => 'Xx', 'Foreign keys' => 'Xx',
'Foreign key' => 'Xx', 'Foreign key' => 'Xx',
'Foreign key has been dropped.' => 'Xx.', 'Foreign key has been dropped.' => 'Xx.',
@@ -224,7 +224,7 @@ $translations = array(
'ON DELETE' => 'Xx', 'ON DELETE' => 'Xx',
'ON UPDATE' => 'Xx', 'ON UPDATE' => 'Xx',
'Source and target columns must have the same data type, there must be an index on the target columns and referenced data must exist.' => 'Xx.', 'Source and target columns must have the same data type, there must be an index on the target columns and referenced data must exist.' => 'Xx.',
'Triggers' => 'Xx', 'Triggers' => 'Xx',
'Add trigger' => 'Xx', 'Add trigger' => 'Xx',
'Trigger has been dropped.' => 'Xx.', 'Trigger has been dropped.' => 'Xx.',
@@ -235,7 +235,7 @@ $translations = array(
'Time' => 'Xx', 'Time' => 'Xx',
'Event' => 'Xx', 'Event' => 'Xx',
'Name' => 'Xx', 'Name' => 'Xx',
'select' => 'xx', 'select' => 'xx',
'Select' => 'Xx', 'Select' => 'Xx',
'Select data' => 'Xx', 'Select data' => 'Xx',
@@ -261,16 +261,16 @@ $translations = array(
'Loading' => 'Xx', 'Loading' => 'Xx',
'Whole result' => 'Xx', 'Whole result' => 'Xx',
'%d byte(s)' => array('%d xx', '%d xx'), '%d byte(s)' => array('%d xx', '%d xx'),
'Import' => 'Xx', 'Import' => 'Xx',
'%d row(s) have been imported.' => array('%d xx.', '%d xx.'), '%d row(s) have been imported.' => array('%d xx.', '%d xx.'),
'File must be in UTF-8 encoding.' => 'Xx.', 'File must be in UTF-8 encoding.' => 'Xx.',
// in-place editing in select // in-place editing in select
'Modify' => 'Xx', 'Modify' => 'Xx',
'Ctrl+click on a value to modify it.' => 'Xx.', 'Ctrl+click on a value to modify it.' => 'Xx.',
'Use edit link to modify this value.' => 'Xx.', 'Use edit link to modify this value.' => 'Xx.',
// %s can contain auto-increment value // %s can contain auto-increment value
'Item%s has been inserted.' => 'Xx%s.', 'Item%s has been inserted.' => 'Xx%s.',
'Item has been deleted.' => 'Xx.', 'Item has been deleted.' => 'Xx.',
@@ -290,14 +290,14 @@ $translations = array(
'Clone' => 'Xx', 'Clone' => 'Xx',
'Delete' => 'Xx', 'Delete' => 'Xx',
'You have no privileges to update this table.' => 'Xx.', 'You have no privileges to update this table.' => 'Xx.',
'E-mail' => 'Xx', 'E-mail' => 'Xx',
'From' => 'Xx', 'From' => 'Xx',
'Subject' => 'Xx', 'Subject' => 'Xx',
'Attachments' => 'Xx', 'Attachments' => 'Xx',
'Send' => 'Xx', 'Send' => 'Xx',
'%d e-mail(s) have been sent.' => array('%d xx.', '%d xx.'), '%d e-mail(s) have been sent.' => array('%d xx.', '%d xx.'),
// data type descriptions // data type descriptions
'Numbers' => 'Xx', 'Numbers' => 'Xx',
'Date and time' => 'Xx', 'Date and time' => 'Xx',
@@ -307,7 +307,7 @@ $translations = array(
'Network' => 'Xx', 'Network' => 'Xx',
'Geometry' => 'Xx', 'Geometry' => 'Xx',
'Relations' => 'Xx', 'Relations' => 'Xx',
'Editor' => 'Xx', 'Editor' => 'Xx',
// date format in Editor: $1 yyyy, $2 yy, $3 mm, $4 m, $5 dd, $6 d // date format in Editor: $1 yyyy, $2 yy, $3 mm, $4 m, $5 dd, $6 d
'$1-$3-$5' => 'xx', '$1-$3-$5' => 'xx',
@@ -318,11 +318,11 @@ $translations = array(
'now' => 'xx', 'now' => 'xx',
'yes' => 'xx', 'yes' => 'xx',
'no' => 'xx', 'no' => 'xx',
// general SQLite error in create, drop or rename database // general SQLite error in create, drop or rename database
'File exists.' => 'Xx.', 'File exists.' => 'Xx.',
'Please use one of the extensions %s.' => 'Xx %s.', 'Please use one of the extensions %s.' => 'Xx %s.',
// PostgreSQL and MS SQL schema support // PostgreSQL and MS SQL schema support
'Alter schema' => 'Xx', 'Alter schema' => 'Xx',
'Create schema' => 'Xx', 'Create schema' => 'Xx',
@@ -331,7 +331,7 @@ $translations = array(
'Schema has been altered.' => 'Xx.', 'Schema has been altered.' => 'Xx.',
'Schema' => 'Xx', 'Schema' => 'Xx',
'Invalid schema.' => 'Xx.', 'Invalid schema.' => 'Xx.',
// PostgreSQL sequences support // PostgreSQL sequences support
'Sequences' => 'Xx', 'Sequences' => 'Xx',
'Create sequence' => 'Xx', 'Create sequence' => 'Xx',
@@ -339,11 +339,20 @@ $translations = array(
'Sequence has been created.' => 'Xx.', 'Sequence has been created.' => 'Xx.',
'Sequence has been altered.' => 'Xx.', 'Sequence has been altered.' => 'Xx.',
'Alter sequence' => 'Xx', 'Alter sequence' => 'Xx',
// PostgreSQL user types support // PostgreSQL user types support
'User types' => 'Xx', 'User types' => 'Xx',
'Create type' => 'Xx', 'Create type' => 'Xx',
'Type has been dropped.' => 'Xx.', 'Type has been dropped.' => 'Xx.',
'Type has been created.' => 'Xx.', 'Type has been created.' => 'Xx.',
'Alter type' => 'Xx', 'Alter type' => 'Xx',
// Plugins
'Columns' => 'Xx',
'Nullable' => 'Xx',
'Default' => 'Xx',
'Yes' => 'Xx',
'No' => 'Xx',
'One Time Password' => 'Xx',
'Invalid OTP code.' => 'Xx.',
); );

View File

@@ -29,10 +29,10 @@ $translations = array(
'The action will be performed after successful login with the same credentials.' => '此操作將在成功使用相同的憑據登錄後執行。', 'The action will be performed after successful login with the same credentials.' => '此操作將在成功使用相同的憑據登錄後執行。',
'%s version: %s through PHP extension %s' => '%s 版本:%s 透過 PHP 擴充模組 %s', '%s version: %s through PHP extension %s' => '%s 版本:%s 透過 PHP 擴充模組 %s',
'Refresh' => '重新載入', 'Refresh' => '重新載入',
// text direction - 'ltr' or 'rtl' // text direction - 'ltr' or 'rtl'
'ltr' => 'ltr', 'ltr' => 'ltr',
'Privileges' => '權限', 'Privileges' => '權限',
'Create user' => '建立使用者', 'Create user' => '建立使用者',
'User has been dropped.' => '已刪除使用者。', 'User has been dropped.' => '已刪除使用者。',
@@ -43,14 +43,14 @@ $translations = array(
'Routine' => '程序', 'Routine' => '程序',
'Grant' => '授權', 'Grant' => '授權',
'Revoke' => '廢除', 'Revoke' => '廢除',
'Process list' => '處理程序列表', 'Process list' => '處理程序列表',
'%d process(es) have been killed.' => '%d 個 Process(es) 被終止', '%d process(es) have been killed.' => '%d 個 Process(es) 被終止',
'Kill' => '終止', 'Kill' => '終止',
'Variables' => '變數', 'Variables' => '變數',
'Status' => '狀態', 'Status' => '狀態',
'SQL command' => 'SQL 命令', 'SQL command' => 'SQL 命令',
'%d query(s) executed OK.' => '已順利執行 %d 個查詢。', '%d query(s) executed OK.' => '已順利執行 %d 個查詢。',
'Query executed OK, %d row(s) affected.' => '執行查詢 OK%d 行受影響。', 'Query executed OK, %d row(s) affected.' => '執行查詢 OK%d 行受影響。',
@@ -67,7 +67,7 @@ $translations = array(
'History' => '紀錄', 'History' => '紀錄',
'Clear' => '清除', 'Clear' => '清除',
'Edit all' => '編輯全部', 'Edit all' => '編輯全部',
'File upload' => '檔案上傳', 'File upload' => '檔案上傳',
'From server' => '從伺服器', 'From server' => '從伺服器',
'Webserver file %s' => '網頁伺服器檔案 %s', 'Webserver file %s' => '網頁伺服器檔案 %s',
@@ -79,7 +79,7 @@ $translations = array(
'Too big POST data. Reduce the data or increase the %s configuration directive.' => 'POST 資料太大。減少資料或者增加 %s 的設定值。', 'Too big POST data. Reduce the data or increase the %s configuration directive.' => 'POST 資料太大。減少資料或者增加 %s 的設定值。',
'You can upload a big SQL file via FTP and import it from server.' => '您可以通過FTP上傳大型SQL檔並從伺服器導入。', 'You can upload a big SQL file via FTP and import it from server.' => '您可以通過FTP上傳大型SQL檔並從伺服器導入。',
'You are offline.' => '您離線了。', 'You are offline.' => '您離線了。',
'Export' => '匯出', 'Export' => '匯出',
'Output' => '輸出', 'Output' => '輸出',
'open' => '打開', 'open' => '打開',
@@ -87,7 +87,7 @@ $translations = array(
'Saving' => '保存中', 'Saving' => '保存中',
'Format' => '格式', 'Format' => '格式',
'Data' => '資料', 'Data' => '資料',
'Database' => '資料庫', 'Database' => '資料庫',
'database' => '資料庫', 'database' => '資料庫',
'DB' => '資料庫', 'DB' => '資料庫',
@@ -102,10 +102,10 @@ $translations = array(
'Alter database' => '修改資料庫', 'Alter database' => '修改資料庫',
'Create database' => '建立資料庫', 'Create database' => '建立資料庫',
'Database schema' => '資料庫結構', 'Database schema' => '資料庫結構',
// link to current database schema layout // link to current database schema layout
'Permanent link' => '永久連結', 'Permanent link' => '永久連結',
// thousands separator - must contain single byte // thousands separator - must contain single byte
',' => ',', ',' => ',',
'0123456789' => '0123456789', '0123456789' => '0123456789',
@@ -129,7 +129,7 @@ $translations = array(
'Copy' => '複製', 'Copy' => '複製',
'Tables have been copied.' => '資料表已經複製', 'Tables have been copied.' => '資料表已經複製',
'overwrite' => '覆蓋', 'overwrite' => '覆蓋',
'Routines' => '程序', 'Routines' => '程序',
'Routine has been called, %d row(s) affected.' => '程序已被執行,%d 行被影響', 'Routine has been called, %d row(s) affected.' => '程序已被執行,%d 行被影響',
'Call' => '呼叫', 'Call' => '呼叫',
@@ -142,7 +142,7 @@ $translations = array(
'Alter function' => '修改函式', 'Alter function' => '修改函式',
'Alter procedure' => '修改預存程序', 'Alter procedure' => '修改預存程序',
'Return type' => '回傳類型', 'Return type' => '回傳類型',
'Events' => '事件', 'Events' => '事件',
'Event has been dropped.' => '已刪除事件。', 'Event has been dropped.' => '已刪除事件。',
'Event has been altered.' => '已修改事件。', 'Event has been altered.' => '已修改事件。',
@@ -155,7 +155,7 @@ $translations = array(
'Start' => '開始', 'Start' => '開始',
'End' => '結束', 'End' => '結束',
'On completion preserve' => '在完成後儲存', 'On completion preserve' => '在完成後儲存',
'Tables' => '資料表', 'Tables' => '資料表',
'Tables and views' => '資料表和檢視表', 'Tables and views' => '資料表和檢視表',
'Table' => '資料表', 'Table' => '資料表',
@@ -188,12 +188,12 @@ $translations = array(
'Move down' => '下移', 'Move down' => '下移',
'Remove' => '移除', 'Remove' => '移除',
'Maximum number of allowed fields exceeded. Please increase %s.' => '超過允許的字段數量的最大值。請增加 %s。', 'Maximum number of allowed fields exceeded. Please increase %s.' => '超過允許的字段數量的最大值。請增加 %s。',
'Partition by' => '分區類型', 'Partition by' => '分區類型',
'Partitions' => '分區', 'Partitions' => '分區',
'Partition name' => '分區名稱', 'Partition name' => '分區名稱',
'Values' => '值', 'Values' => '值',
'View' => '檢視表', 'View' => '檢視表',
'Materialized view' => '物化視圖', 'Materialized view' => '物化視圖',
'View has been dropped.' => '已刪除檢視表。', 'View has been dropped.' => '已刪除檢視表。',
@@ -201,14 +201,14 @@ $translations = array(
'View has been created.' => '已建立檢視表。', 'View has been created.' => '已建立檢視表。',
'Alter view' => '修改檢視表', 'Alter view' => '修改檢視表',
'Create view' => '建立檢視表', 'Create view' => '建立檢視表',
'Indexes' => '索引', 'Indexes' => '索引',
'Indexes have been altered.' => '已修改索引。', 'Indexes have been altered.' => '已修改索引。',
'Alter indexes' => '修改索引', 'Alter indexes' => '修改索引',
'Add next' => '新增下一筆', 'Add next' => '新增下一筆',
'Index Type' => '索引類型', 'Index Type' => '索引類型',
'Column (length)' => '欄位(長度)', 'Column (length)' => '欄位(長度)',
'Foreign keys' => '外來鍵', 'Foreign keys' => '外來鍵',
'Foreign key' => '外來鍵', 'Foreign key' => '外來鍵',
'Foreign key has been dropped.' => '已刪除外來鍵。', 'Foreign key has been dropped.' => '已刪除外來鍵。',
@@ -224,7 +224,7 @@ $translations = array(
'ON DELETE' => 'ON DELETE', 'ON DELETE' => 'ON DELETE',
'ON UPDATE' => 'ON UPDATE', 'ON UPDATE' => 'ON UPDATE',
'Source and target columns must have the same data type, there must be an index on the target columns and referenced data must exist.' => '來源列和目標列必須具有相同的資料類型,在目標列上必須有一個索引並且引用的資料必須存在。', 'Source and target columns must have the same data type, there must be an index on the target columns and referenced data must exist.' => '來源列和目標列必須具有相同的資料類型,在目標列上必須有一個索引並且引用的資料必須存在。',
'Triggers' => '觸發器', 'Triggers' => '觸發器',
'Add trigger' => '建立觸發器', 'Add trigger' => '建立觸發器',
'Trigger has been dropped.' => '已刪除觸發器。', 'Trigger has been dropped.' => '已刪除觸發器。',
@@ -235,7 +235,7 @@ $translations = array(
'Time' => '時間', 'Time' => '時間',
'Event' => '事件', 'Event' => '事件',
'Name' => '名稱', 'Name' => '名稱',
'select' => '選擇', 'select' => '選擇',
'Select' => '選擇', 'Select' => '選擇',
'Select data' => '選擇資料', 'Select data' => '選擇資料',
@@ -261,16 +261,16 @@ $translations = array(
'Loading' => '載入中', 'Loading' => '載入中',
'Whole result' => '所有結果', 'Whole result' => '所有結果',
'%d byte(s)' => '%d byte(s)', '%d byte(s)' => '%d byte(s)',
'Import' => '匯入', 'Import' => '匯入',
'%d row(s) have been imported.' => '已匯入 %d 行。', '%d row(s) have been imported.' => '已匯入 %d 行。',
'File must be in UTF-8 encoding.' => '檔必須使用UTF-8編碼。', 'File must be in UTF-8 encoding.' => '檔必須使用UTF-8編碼。',
// in-place editing in select // in-place editing in select
'Modify' => '修改', 'Modify' => '修改',
'Ctrl+click on a value to modify it.' => '按住Ctrl並按一下某個值進行修改。', 'Ctrl+click on a value to modify it.' => '按住Ctrl並按一下某個值進行修改。',
'Use edit link to modify this value.' => '使用編輯連結來修改。', 'Use edit link to modify this value.' => '使用編輯連結來修改。',
// %s can contain auto-increment value // %s can contain auto-increment value
'Item%s has been inserted.' => '已新增項目 %s。', 'Item%s has been inserted.' => '已新增項目 %s。',
'Item has been deleted.' => '該項目已被刪除', 'Item has been deleted.' => '該項目已被刪除',
@@ -290,14 +290,14 @@ $translations = array(
'Clone' => '複製', 'Clone' => '複製',
'Delete' => '刪除', 'Delete' => '刪除',
'You have no privileges to update this table.' => '您沒有許可權更新這個資料表。', 'You have no privileges to update this table.' => '您沒有許可權更新這個資料表。',
'E-mail' => '電子郵件', 'E-mail' => '電子郵件',
'From' => '來自', 'From' => '來自',
'Subject' => '主旨', 'Subject' => '主旨',
'Attachments' => '附件', 'Attachments' => '附件',
'Send' => '寄出', 'Send' => '寄出',
'%d e-mail(s) have been sent.' => '已寄出 %d 封郵件。', '%d e-mail(s) have been sent.' => '已寄出 %d 封郵件。',
// data type descriptions // data type descriptions
'Numbers' => '數字', 'Numbers' => '數字',
'Date and time' => '日期時間', 'Date and time' => '日期時間',
@@ -307,7 +307,7 @@ $translations = array(
'Network' => '網路', 'Network' => '網路',
'Geometry' => '幾何', 'Geometry' => '幾何',
'Relations' => '關聯', 'Relations' => '關聯',
'Editor' => '編輯器', 'Editor' => '編輯器',
// date format in Editor: $1 yyyy, $2 yy, $3 mm, $4 m, $5 dd, $6 d // date format in Editor: $1 yyyy, $2 yy, $3 mm, $4 m, $5 dd, $6 d
'$1-$3-$5' => '$1.$3.$5', '$1-$3-$5' => '$1.$3.$5',
@@ -318,11 +318,11 @@ $translations = array(
'now' => '現在', 'now' => '現在',
'yes' => '是', 'yes' => '是',
'no' => '否', 'no' => '否',
// general SQLite error in create, drop or rename database // general SQLite error in create, drop or rename database
'File exists.' => '檔案已存在。', 'File exists.' => '檔案已存在。',
'Please use one of the extensions %s.' => '請使用下列其中一個擴充模組 %s。', 'Please use one of the extensions %s.' => '請使用下列其中一個擴充模組 %s。',
// PostgreSQL and MS SQL schema support // PostgreSQL and MS SQL schema support
'Alter schema' => '修改資料表結構', 'Alter schema' => '修改資料表結構',
'Create schema' => '建立資料表結構', 'Create schema' => '建立資料表結構',
@@ -331,7 +331,7 @@ $translations = array(
'Schema has been altered.' => '已修改資料表結構。', 'Schema has been altered.' => '已修改資料表結構。',
'Schema' => '資料表結構', 'Schema' => '資料表結構',
'Invalid schema.' => '無效的資料表結構。', 'Invalid schema.' => '無效的資料表結構。',
// PostgreSQL sequences support // PostgreSQL sequences support
'Sequences' => '序列', 'Sequences' => '序列',
'Create sequence' => '建立序列', 'Create sequence' => '建立序列',
@@ -339,11 +339,20 @@ $translations = array(
'Sequence has been created.' => '已建立序列。', 'Sequence has been created.' => '已建立序列。',
'Sequence has been altered.' => '已修改序列。', 'Sequence has been altered.' => '已修改序列。',
'Alter sequence' => '修改序列', 'Alter sequence' => '修改序列',
// PostgreSQL user types support // PostgreSQL user types support
'User types' => '使用者類型', 'User types' => '使用者類型',
'Create type' => '建立類型', 'Create type' => '建立類型',
'Type has been dropped.' => '已刪除類型。', 'Type has been dropped.' => '已刪除類型。',
'Type has been created.' => '已建立類型。', 'Type has been created.' => '已建立類型。',
'Alter type' => '修改類型', 'Alter type' => '修改類型',
// Plugins
'Columns' => null,
'Nullable' => null,
'Default' => null,
'Yes' => null,
'No' => null,
'One Time Password' => null,
'Invalid OTP code.' => null,
); );

View File

@@ -29,7 +29,7 @@ $translations = array(
'The action will be performed after successful login with the same credentials.' => '此操作将在成功使用相同的凭据登录后执行。', 'The action will be performed after successful login with the same credentials.' => '此操作将在成功使用相同的凭据登录后执行。',
'%s version: %s through PHP extension %s' => '%s 版本:%s 使用PHP扩展 %s', '%s version: %s through PHP extension %s' => '%s 版本:%s 使用PHP扩展 %s',
'Refresh' => '刷新', 'Refresh' => '刷新',
// text direction - 'ltr' or 'rtl' // text direction - 'ltr' or 'rtl'
'ltr' => 'ltr', 'ltr' => 'ltr',
@@ -346,4 +346,12 @@ $translations = array(
'Type has been dropped.' => '已删除类型。', 'Type has been dropped.' => '已删除类型。',
'Type has been created.' => '已创建类型。', 'Type has been created.' => '已创建类型。',
'Alter type' => '修改类型', 'Alter type' => '修改类型',
'Columns' => null,
'Nullable' => null,
'Default' => null,
'Yes' => null,
'No' => null,
'One Time Password' => null,
'Invalid OTP code.' => null,
); );

View File

@@ -123,7 +123,7 @@ if (!$error && $_POST) {
if ($connection->error) { if ($connection->error) {
echo ($_POST["only_errors"] ? $print : ""); echo ($_POST["only_errors"] ? $print : "");
echo "<p class='error'>" . lang('Error in query') . ($connection->errno ? " ($connection->errno)" : "") . ": " . error() . "\n"; echo "<p class='error'>" . lang('Error in query') . (!empty($connection->errno) ? " ($connection->errno)" : "") . ": " . error() . "\n";
$errors[] = " <a href='#sql-$commands'>$commands</a>"; $errors[] = " <a href='#sql-$commands'>$commands</a>";
if ($_POST["error_stops"]) { if ($_POST["error_stops"]) {
break 2; break 2;
@@ -225,7 +225,7 @@ if (!isset($_GET["import"])) {
echo script(($_POST ? "" : "qs('textarea').focus();\n") . "qs('#form').onsubmit = partial(sqlSubmit, qs('#form'), '" . js_escape(remove_from_uri("sql|limit|error_stops|only_errors|history")) . "');"); echo script(($_POST ? "" : "qs('textarea').focus();\n") . "qs('#form').onsubmit = partial(sqlSubmit, qs('#form'), '" . js_escape(remove_from_uri("sql|limit|error_stops|only_errors|history")) . "');");
echo "<p>$execute\n"; echo "<p>$execute\n";
echo lang('Limit rows') . ": <input type='number' name='limit' class='size' value='" . h($_POST ? $_POST["limit"] : $_GET["limit"]) . "'>\n"; echo lang('Limit rows') . ": <input type='number' name='limit' class='size' value='" . h($_POST ? $_POST["limit"] : $_GET["limit"]) . "'>\n";
} else { } else {
echo "<fieldset><legend>" . lang('File upload') . "</legend><div>"; echo "<fieldset><legend>" . lang('File upload') . "</legend><div>";
$gz = (extension_loaded("zlib") ? "[.gz]" : ""); $gz = (extension_loaded("zlib") ? "[.gz]" : "");

View File

@@ -69,7 +69,7 @@ input.wayoff { left: -1000px; position: absolute; }
#menu p, #logins, #tables { padding: .8em 1em; margin: 0; border-bottom: 1px solid #ccc; } #menu p, #logins, #tables { padding: .8em 1em; margin: 0; border-bottom: 1px solid #ccc; }
#logins li, #tables li { list-style: none; } #logins li, #tables li { list-style: none; }
#dbs { overflow: hidden; } #dbs { overflow: hidden; }
#logins, #tables { white-space: nowrap; overflow: auto; } #logins, #tables { white-space: nowrap; overflow: hidden; }
#logins a, #tables a, #tables span { background: #fff; } #logins a, #tables a, #tables span { background: #fff; }
#content { margin: 2em 0 0 21em; padding: 10px 20px 20px 0; } #content { margin: 2em 0 0 21em; padding: 10px 20px 20px 0; }
#lang { position: absolute; top: 0; left: 0; line-height: 1.8em; padding: .3em 1em; } #lang { position: absolute; top: 0; left: 0; line-height: 1.8em; padding: .3em 1em; }

View File

@@ -54,7 +54,7 @@ function bodyLoad(version, maria) {
function formField(form, name) { function formField(form, name) {
// required in IE < 8, form.elements[name] doesn't work // required in IE < 8, form.elements[name] doesn't work
for (var i=0; i < form.length; i++) { for (var i=0; i < form.length; i++) {
if (form[i].name == name) { if (form[i].name === name) {
return form[i]; return form[i];
} }
} }
@@ -83,14 +83,14 @@ function messagesPrint(el) {
/** Hide or show some login rows for selected driver /** Hide or show some login rows for selected driver
* @param HTMLSelectElement * @param HTMLSelectElement
*/ */
function loginDriver(driver) { function loginDriver(driver) {
var trs = parentTag(driver, 'table').rows; var trs = parentTag(driver, 'table').rows;
var disabled = /sqlite/.test(selectValue(driver)); var disabled = /sqlite/.test(selectValue(driver));
alterClass(trs[1], 'hidden', disabled); // 1 - row with server alterClass(trs[1], 'hidden', disabled); // 1 - row with server
trs[1].getElementsByTagName('input')[0].disabled = disabled; trs[1].getElementsByTagName('input')[0].disabled = disabled;
} }
@@ -104,7 +104,7 @@ var dbPrevious = {};
*/ */
function dbMouseDown(event) { function dbMouseDown(event) {
dbCtrl = isCtrl(event); dbCtrl = isCtrl(event);
if (dbPrevious[this.name] == undefined) { if (dbPrevious[this.name] === undefined) {
dbPrevious[this.name] = this.value; dbPrevious[this.name] = this.value;
} }
} }
@@ -118,7 +118,7 @@ function dbChange() {
} }
this.form.submit(); this.form.submit();
this.form.target = ''; this.form.target = '';
if (dbCtrl && dbPrevious[this.name] != undefined) { if (dbCtrl && dbPrevious[this.name] !== undefined) {
this.value = dbPrevious[this.name]; this.value = dbPrevious[this.name];
dbPrevious[this.name] = undefined; dbPrevious[this.name] = undefined;
} }
@@ -145,23 +145,23 @@ function selectFieldChange() {
for (var i=0; i < selects.length; i++) { for (var i=0; i < selects.length; i++) {
var select = selects[i]; var select = selects[i];
var col = selectValue(select); var col = selectValue(select);
var match = /^(where.+)col\]/.exec(select.name); var match = /^(where.+)col]/.exec(select.name);
if (match) { if (match) {
var op = selectValue(form[match[1] + 'op]']); var op = selectValue(form[match[1] + 'op]']);
var val = form[match[1] + 'val]'].value; var val = form[match[1] + 'val]'].value;
if (col in indexColumns && (!/LIKE|REGEXP/.test(op) || (op == 'LIKE' && val.charAt(0) != '%'))) { if (col in indexColumns && (!/LIKE|REGEXP/.test(op) || (op === 'LIKE' && val.charAt(0) !== '%'))) {
return true; return true;
} else if (col || val) { } else if (col || val) {
ok = false; ok = false;
} }
} }
if ((match = /^(columns.+)fun\]/.exec(select.name))) { if ((match = /^(columns.+)fun]/.exec(select.name))) {
if (/^(avg|count|count distinct|group_concat|max|min|sum)$/.test(col)) { if (/^(avg|count|count distinct|group_concat|max|min|sum)$/.test(col)) {
group = true; group = true;
} }
var val = selectValue(form[match[1] + 'col]']); var val = selectValue(form[match[1] + 'col]']);
if (val) { if (val) {
columns[col && col != 'count' ? '' : val] = 1; columns[col && col !== 'count' ? '' : val] = 1;
} }
} }
if (col && /^order/.test(select.name)) { if (col && /^order/.test(select.name)) {
@@ -194,7 +194,7 @@ var added = '.', rowCount;
* @return boolean * @return boolean
*/ */
function delimiterEqual(val, a, b) { function delimiterEqual(val, a, b) {
return (val == a + '_' + b || val == a + b || val == a + b.charAt(0).toUpperCase() + b.substr(1)); return (val === a + '_' + b || val === a + b || val === a + b.charAt(0).toUpperCase() + b.substr(1));
} }
/** Escape string to use as identifier /** Escape string to use as identifier
@@ -255,7 +255,7 @@ function editingClick(event) {
} else if (/^drop_col\[/.test(name)) { } else if (/^drop_col\[/.test(name)) {
editingRemoveRow.call(el, 'fields\$1[field]'); editingRemoveRow.call(el, 'fields\$1[field]');
} else { } else {
if (name == 'auto_increment_col') { if (name === 'auto_increment_col') {
var field = el.form['fields[' + el.value + '][field]']; var field = el.form['fields[' + el.value + '][field]'];
if (!field.value) { if (!field.value) {
field.value = 'id'; field.value = 'id';
@@ -273,7 +273,7 @@ function editingClick(event) {
*/ */
function editingInput(event) { function editingInput(event) {
var el = getTarget(event); var el = getTarget(event);
if (/\[default\]$/.test(el.name)) { if (/\[default]$/.test(el.name)) {
el.previousSibling.checked = true; el.previousSibling.checked = true;
} }
} }
@@ -290,7 +290,7 @@ function editingNameChange() {
for (var i = opts.length; i--; ) { for (var i = opts.length; i--; ) {
var match = /(.+)`(.+)/.exec(opts[i].value); var match = /(.+)`(.+)/.exec(opts[i].value);
if (!match) { // common type if (!match) { // common type
if (candidate && i == opts.length - 2 && val == opts[candidate].value.replace(/.+`/, '') && name == 'fields[1]') { // single target table, link to column, first field - probably `id` if (candidate && i === opts.length - 2 && val === opts[candidate].value.replace(/.+`/, '') && name === 'fields[1]') { // single target table, link to column, first field - probably `id`
return; return;
} }
break; break;
@@ -300,7 +300,7 @@ function editingNameChange() {
var tables = [ table, table.replace(/s$/, ''), table.replace(/es$/, '') ]; var tables = [ table, table.replace(/s$/, ''), table.replace(/es$/, '') ];
for (var j=0; j < tables.length; j++) { for (var j=0; j < tables.length; j++) {
table = tables[j]; table = tables[j];
if (val == column || val == table || delimiterEqual(val, table, column) || delimiterEqual(val, column, table)) { if (val === column || val === table || delimiterEqual(val, table, column) || delimiterEqual(val, column, table)) {
if (candidate) { if (candidate) {
return; return;
} }
@@ -335,7 +335,7 @@ function editingAddRow(focus) {
tags2 = qsa('input', row2); tags2 = qsa('input', row2);
var input = tags2[0]; // IE loose tags2 after insertBefore() var input = tags2[0]; // IE loose tags2 after insertBefore()
for (var i=0; i < tags.length; i++) { for (var i=0; i < tags.length; i++) {
if (tags[i].name == 'auto_increment_col') { if (tags[i].name === 'auto_increment_col') {
tags2[i].value = x; tags2[i].value = x;
tags2[i].checked = false; tags2[i].checked = false;
} }
@@ -397,7 +397,7 @@ function editingTypeChange() {
var text = selectValue(type); var text = selectValue(type);
for (var i=0; i < type.form.elements.length; i++) { for (var i=0; i < type.form.elements.length; i++) {
var el = type.form.elements[i]; var el = type.form.elements[i];
if (el.name == name + '[length]') { if (el.name === name + '[length]') {
if (!( if (!(
(/(char|binary)$/.test(lastType) && /(char|binary)$/.test(text)) (/(char|binary)$/.test(lastType) && /(char|binary)$/.test(text))
|| (/(enum|set)$/.test(lastType) && /(enum|set)$/.test(text)) || (/(enum|set)$/.test(lastType) && /(enum|set)$/.test(text))
@@ -406,19 +406,19 @@ function editingTypeChange() {
} }
el.oninput.apply(el); el.oninput.apply(el);
} }
if (lastType == 'timestamp' && el.name == name + '[has_default]' && /timestamp/i.test(formField(type.form, name + '[default]').value)) { if (lastType === 'timestamp' && el.name == name + '[has_default]' && /timestamp/i.test(formField(type.form, name + '[default]').value)) {
el.checked = false; el.checked = false;
} }
if (el.name == name + '[collation]') { if (el.name === name + '[collation]') {
alterClass(el, 'hidden', !/(char|text|enum|set)$/.test(text)); alterClass(el, 'hidden', !/(char|text|enum|set)$/.test(text));
} }
if (el.name == name + '[unsigned]') { if (el.name === name + '[unsigned]') {
alterClass(el, 'hidden', !/(^|[^o])int(?!er)|numeric|real|float|double|decimal|money/.test(text)); alterClass(el, 'hidden', !/(^|[^o])int(?!er)|numeric|real|float|double|decimal|money/.test(text));
} }
if (el.name == name + '[on_update]') { if (el.name === name + '[on_update]') {
alterClass(el, 'hidden', !/timestamp|datetime/.test(text)); // MySQL supports datetime since 5.6.5 alterClass(el, 'hidden', !/timestamp|datetime/.test(text)); // MySQL supports datetime since 5.6.5
} }
if (el.name == name + '[on_delete]') { if (el.name === name + '[on_delete]') {
alterClass(el, 'hidden', !/`/.test(text)); alterClass(el, 'hidden', !/`/.test(text));
} }
} }
@@ -457,13 +457,13 @@ function enumValues(s) {
var offset = 0; var offset = 0;
var match; var match;
while (match = re.exec(s)) { while (match = re.exec(s)) {
if (offset != match.index) { if (offset !== match.index) {
break; break;
} }
result.push(match[2].replace(/'(')|\\(.)/g, '$1$2')); result.push(match[2].replace(/'(')|\\(.)/g, '$1$2'));
offset += match[0].length; offset += match[0].length;
} }
return (offset == s.length ? result.join('\n') : s); return (offset === s.length ? result.join('\n') : s);
} }
/** Finish editing of enum or set /** Finish editing of enum or set
@@ -531,7 +531,7 @@ function dumpClick(event) {
var el = parentTag(getTarget(event), 'label'); var el = parentTag(getTarget(event), 'label');
if (el) { if (el) {
el = qs('input', el); el = qs('input', el);
var match = /(.+)\[\]$/.exec(el.name); var match = /(.+)\[]$/.exec(el.name);
if (match) { if (match) {
checkboxClick.call(el, event); checkboxClick.call(el, event);
formUncheck('check-' + match[1]); formUncheck('check-' + match[1]);
@@ -549,7 +549,7 @@ function foreignAddRow() {
this.onchange = function () { }; this.onchange = function () { };
var selects = qsa('select', row); var selects = qsa('select', row);
for (var i=0; i < selects.length; i++) { for (var i=0; i < selects.length; i++) {
selects[i].name = selects[i].name.replace(/\]/, '1$&'); selects[i].name = selects[i].name.replace(']', '1]');
selects[i].selectedIndex = 0; selects[i].selectedIndex = 0;
} }
parentTag(this, 'table').appendChild(row); parentTag(this, 'table').appendChild(row);
@@ -585,7 +585,7 @@ function indexesChangeColumn(prefix) {
for (var tag in { 'select': 1, 'input': 1 }) { for (var tag in { 'select': 1, 'input': 1 }) {
var columns = qsa(tag, parentTag(this, 'td')); var columns = qsa(tag, parentTag(this, 'td'));
for (var i=0; i < columns.length; i++) { for (var i=0; i < columns.length; i++) {
if (/\[columns\]/.test(columns[i].name)) { if (/\[columns]/.test(columns[i].name)) {
var value = selectValue(columns[i]); var value = selectValue(columns[i]);
if (value) { if (value) {
names.push(value); names.push(value);
@@ -593,7 +593,7 @@ function indexesChangeColumn(prefix) {
} }
} }
} }
this.form[this.name.replace(/\].*/, '][name]')].value = prefix + names.join('_'); this.form[this.name.replace(/].*/, '][name]')].value = prefix + names.join('_');
} }
/** Add column for index /** Add column for index
@@ -602,9 +602,9 @@ function indexesChangeColumn(prefix) {
*/ */
function indexesAddColumn(prefix) { function indexesAddColumn(prefix) {
var field = this; var field = this;
var select = field.form[field.name.replace(/\].*/, '][type]')]; var select = field.form[field.name.replace(/].*/, '][type]')];
if (!select.selectedIndex) { if (!select.selectedIndex) {
while (selectValue(select) != "INDEX" && select.selectedIndex < select.options.length) { while (selectValue(select) !== "INDEX" && select.selectedIndex < select.options.length) {
select.selectedIndex++; select.selectedIndex++;
} }
select.onchange(); select.onchange();
@@ -613,15 +613,15 @@ function indexesAddColumn(prefix) {
var selects = qsa('select', column); var selects = qsa('select', column);
for (var i = 0; i < selects.length; i++) { for (var i = 0; i < selects.length; i++) {
select = selects[i]; select = selects[i];
select.name = select.name.replace(/\]\[\d+/, '$&1'); select.name = select.name.replace(/]\[\d+/, '$&1');
select.selectedIndex = 0; select.selectedIndex = 0;
} }
field.onchange = partial(indexesChangeColumn, prefix); field.onchange = partial(indexesChangeColumn, prefix);
var inputs = qsa('input', column); var inputs = qsa('input', column);
for (var i = 0; i < inputs.length; i++) { for (var i = 0; i < inputs.length; i++) {
var input = inputs[i]; var input = inputs[i];
input.name = input.name.replace(/\]\[\d+/, '$&1'); input.name = input.name.replace(/]\[\d+/, '$&1');
if (input.type != 'checkbox') { if (input.type !== 'checkbox') {
input.value = ''; input.value = '';
} }
} }
@@ -670,7 +670,7 @@ var that, x, y; // em and tablePos defined in schema.inc.php
* @this HTMLElement * @this HTMLElement
*/ */
function schemaMousedown(event) { function schemaMousedown(event) {
if ((event.which ? event.which : event.button) == 1) { if ((event.which ? event.which : event.button) === 1) {
that = this; that = this;
x = event.clientX - this.offsetLeft; x = event.clientX - this.offsetLeft;
y = event.clientY - this.offsetTop; y = event.clientY - this.offsetTop;
@@ -687,12 +687,12 @@ function schemaMousemove(event) {
var divs = qsa('div', that); var divs = qsa('div', that);
var lineSet = { }; var lineSet = { };
for (var i=0; i < divs.length; i++) { for (var i=0; i < divs.length; i++) {
if (divs[i].className == 'references') { if (divs[i].className === 'references') {
var div2 = qs('[id="' + (/^refs/.test(divs[i].id) ? 'refd' : 'refs') + divs[i].id.substr(4) + '"]'); var div2 = qs('[id="' + (/^refs/.test(divs[i].id) ? 'refd' : 'refs') + divs[i].id.substr(4) + '"]');
var ref = (tablePos[divs[i].title] ? tablePos[divs[i].title] : [ div2.parentNode.offsetTop / em, 0 ]); var ref = (tablePos[divs[i].title] ? tablePos[divs[i].title] : [ div2.parentNode.offsetTop / em, 0 ]);
var left1 = -1; var left1 = -1;
var id = divs[i].id.replace(/^ref.(.+)-.+/, '$1'); var id = divs[i].id.replace(/^ref.(.+)-.+/, '$1');
if (divs[i].parentNode != div2.parentNode) { if (divs[i].parentNode !== div2.parentNode) {
left1 = Math.min(0, ref[1] - left) - 1; left1 = Math.min(0, ref[1] - left) - 1;
divs[i].style.left = left1 + 'em'; divs[i].style.left = left1 + 'em';
divs[i].querySelector('div').style.width = -left1 + 'em'; divs[i].querySelector('div').style.width = -left1 + 'em';
@@ -704,7 +704,7 @@ function schemaMousemove(event) {
var line = qs('[id="' + divs[i].id.replace(/^....(.+)-.+$/, 'refl$1') + '"]'); var line = qs('[id="' + divs[i].id.replace(/^....(.+)-.+$/, 'refl$1') + '"]');
var top1 = top + divs[i].offsetTop / em; var top1 = top + divs[i].offsetTop / em;
var top2 = top + div2.offsetTop / em; var top2 = top + div2.offsetTop / em;
if (divs[i].parentNode != div2.parentNode) { if (divs[i].parentNode !== div2.parentNode) {
top2 += ref[0] - top; top2 += ref[0] - top;
line.querySelector('div').style.height = Math.abs(top1 - top2) + 'em'; line.querySelector('div').style.height = Math.abs(top1 - top2) + 'em';
} }
@@ -752,7 +752,7 @@ function helpMouseover(event, text, side) {
var target = getTarget(event); var target = getTarget(event);
if (!text) { if (!text) {
helpClose(); helpClose();
} else if (window.jush && (!helpIgnore || this != target)) { } else if (window.jush && (!helpIgnore || this !== target)) {
helpOpen = 1; helpOpen = 1;
var help = qs('#help'); var help = qs('#help');
help.innerHTML = text; help.innerHTML = text;
@@ -771,7 +771,7 @@ function helpMouseover(event, text, side) {
*/ */
function helpMouseout(event) { function helpMouseout(event) {
helpOpen = 0; helpOpen = 0;
helpIgnore = (this != getTarget(event)); helpIgnore = (this !== getTarget(event));
setTimeout(function () { setTimeout(function () {
if (!helpOpen) { if (!helpOpen) {
helpClose(); helpClose();

View File

@@ -4,7 +4,7 @@
* @param [HTMLElement] defaults to document * @param [HTMLElement] defaults to document
* @return HTMLElement * @return HTMLElement
*/ */
function qs(selector, context) { function qs(selector, context = null) {
return (context || document).querySelector(selector); return (context || document).querySelector(selector);
} }
@@ -13,7 +13,7 @@ function qs(selector, context) {
* @param [HTMLElement] defaults to document * @param [HTMLElement] defaults to document
* @return HTMLElement * @return HTMLElement
*/ */
function qsl(selector, context) { function qsl(selector, context = null) {
var els = qsa(selector, context); var els = qsa(selector, context);
return els[els.length - 1]; return els[els.length - 1];
} }
@@ -23,7 +23,7 @@ function qsl(selector, context) {
* @param [HTMLElement] defaults to document * @param [HTMLElement] defaults to document
* @return NodeList * @return NodeList
*/ */
function qsa(selector, context) { function qsa(selector, context = null) {
return (context || document).querySelectorAll(selector); return (context || document).querySelectorAll(selector);
} }
@@ -79,7 +79,7 @@ function alterClass(el, className, enable) {
*/ */
function toggle(id) { function toggle(id) {
var el = qs('#' + id); var el = qs('#' + id);
el.className = (el.className == 'hidden' ? '' : 'hidden'); el.className = (el.className === 'hidden' ? '' : 'hidden');
return false; return false;
} }
@@ -111,7 +111,7 @@ function verifyVersion(current, url, token) {
if (window.postMessage && window.addEventListener) { if (window.postMessage && window.addEventListener) {
iframe.style.display = 'none'; iframe.style.display = 'none';
addEventListener('message', function (event) { addEventListener('message', function (event) {
if (event.origin == 'https://www.adminer.org') { if (event.origin === 'https://www.adminer.org') {
var match = /version=(.+)/.exec(event.data); var match = /version=(.+)/.exec(event.data);
if (match) { if (match) {
cookie('adminer_version=' + match[1], 1); cookie('adminer_version=' + match[1], 1);
@@ -139,7 +139,7 @@ function selectValue(select) {
/** Verify if element has a specified tag name /** Verify if element has a specified tag name
* @param HTMLElement * @param HTMLElement
* @param string regular expression * @param string regular expression
* @return bool * @return boolean
*/ */
function isTag(el, tag) { function isTag(el, tag) {
var re = new RegExp('^(' + tag + ')$', 'i'); var re = new RegExp('^(' + tag + ')$', 'i');
@@ -181,8 +181,8 @@ function selectCount(id, count) {
var inputs = qsa('input', el.parentNode.parentNode); var inputs = qsa('input', el.parentNode.parentNode);
for (var i = 0; i < inputs.length; i++) { for (var i = 0; i < inputs.length; i++) {
var input = inputs[i]; var input = inputs[i];
if (input.type == 'submit') { if (input.type === 'submit') {
input.disabled = (count == '0'); input.disabled = (count === '0');
} }
} }
} }
@@ -252,7 +252,7 @@ function tableClick(event, click) {
var el = getTarget(event); var el = getTarget(event);
while (!isTag(el, 'tr')) { while (!isTag(el, 'tr')) {
if (isTag(el, 'table|a|input|textarea')) { if (isTag(el, 'table|a|input|textarea')) {
if (el.type != 'checkbox') { if (el.type !== 'checkbox') {
return; return;
} }
checkboxClick.call(el, event); checkboxClick.call(el, event);
@@ -268,7 +268,7 @@ function tableClick(event, click) {
el.checked = !el.checked; el.checked = !el.checked;
el.onclick && el.onclick(); el.onclick && el.onclick();
} }
if (el.name == 'check[]') { if (el.name === 'check[]') {
el.form['all'].checked = false; el.form['all'].checked = false;
formUncheck('all-page'); formUncheck('all-page');
} }
@@ -288,7 +288,7 @@ function checkboxClick(event) {
if (!this.name) { if (!this.name) {
return; return;
} }
if (event.shiftKey && (!lastChecked || lastChecked.name == this.name)) { if (event.shiftKey && (!lastChecked || lastChecked.name === this.name)) {
var checked = (lastChecked ? lastChecked.checked : true); var checked = (lastChecked ? lastChecked.checked : true);
var inputs = qsa('input', parentTag(this, 'table')); var inputs = qsa('input', parentTag(this, 'table'));
var checking = !lastChecked; var checking = !lastChecked;
@@ -333,7 +333,7 @@ function setHtml(id, html) {
*/ */
function nodePosition(el) { function nodePosition(el) {
var pos = 0; var pos = 0;
while (el = el.previousSibling) { while ((el = el.previousSibling)) {
pos++; pos++;
} }
return pos; return pos;
@@ -345,7 +345,7 @@ function nodePosition(el) {
*/ */
function pageClick(href, page) { function pageClick(href, page) {
if (!isNaN(page) && page) { if (!isNaN(page) && page) {
location.href = href + (page != 1 ? '&page=' + (page - 1) : ''); location.href = href + (page !== 1 ? '&page=' + (page - 1) : '');
} }
} }
@@ -366,7 +366,7 @@ function menuOver(event) {
* @this HTMLElement * @this HTMLElement
*/ */
function menuOut() { function menuOut() {
this.style.overflow = 'auto'; this.style.overflow = 'hidden';
} }
@@ -388,7 +388,7 @@ function selectAddRow() {
for (var i=0; i < inputs.length; i++) { for (var i=0; i < inputs.length; i++) {
inputs[i].name = inputs[i].name.replace(/[a-z]\[\d+/, '$&1'); inputs[i].name = inputs[i].name.replace(/[a-z]\[\d+/, '$&1');
inputs[i].className = ''; inputs[i].className = '';
if (inputs[i].type == 'checkbox') { if (inputs[i].type === 'checkbox') {
inputs[i].checked = false; inputs[i].checked = false;
} else { } else {
inputs[i].value = ''; inputs[i].value = '';
@@ -402,7 +402,7 @@ function selectAddRow() {
* @this HTMLInputElement * @this HTMLInputElement
*/ */
function selectSearchKeydown(event) { function selectSearchKeydown(event) {
if (event.keyCode == 13 || event.keyCode == 10) { if (event.keyCode === 13 || event.keyCode === 10) {
this.onsearch = function () { this.onsearch = function () {
}; };
} }
@@ -445,11 +445,11 @@ function selectSearch(name) {
for (var i=0; i < divs.length; i++) { for (var i=0; i < divs.length; i++) {
var div = divs[i]; var div = divs[i];
var el = qs('[name$="[col]"]', div); var el = qs('[name$="[col]"]', div);
if (el && selectValue(el) == name) { if (el && selectValue(el) === name) {
break; break;
} }
} }
if (i == divs.length) { if (i === divs.length) {
div.firstChild.value = name; div.firstChild.value = name;
div.firstChild.onchange(); div.firstChild.onchange();
} }
@@ -487,7 +487,7 @@ function bodyKeydown(event, button) {
if (target.jushTextarea) { if (target.jushTextarea) {
target = target.jushTextarea; target = target.jushTextarea;
} }
if (isCtrl(event) && (event.keyCode == 13 || event.keyCode == 10) && isTag(target, 'select|textarea|input')) { // 13|10 - Enter if (isCtrl(event) && (event.keyCode === 13 || event.keyCode === 10) && isTag(target, 'select|textarea|input')) { // 13|10 - Enter
target.blur(); target.blur();
if (button) { if (button) {
target.form[button].click(); target.form[button].click();
@@ -508,7 +508,7 @@ function bodyKeydown(event, button) {
*/ */
function bodyClick(event) { function bodyClick(event) {
var target = getTarget(event); var target = getTarget(event);
if ((isCtrl(event) || event.shiftKey) && target.type == 'submit' && isTag(target, 'input')) { if ((isCtrl(event) || event.shiftKey) && target.type === 'submit' && isTag(target, 'input')) {
target.form.target = '_blank'; target.form.target = '_blank';
setTimeout(function () { setTimeout(function () {
// if (isCtrl(event)) { focus(); } doesn't work // if (isCtrl(event)) { focus(); } doesn't work
@@ -524,9 +524,9 @@ function bodyClick(event) {
* @return boolean * @return boolean
*/ */
function editingKeydown(event) { function editingKeydown(event) {
if ((event.keyCode == 40 || event.keyCode == 38) && isCtrl(event)) { // 40 - Down, 38 - Up if ((event.keyCode === 40 || event.keyCode === 38) && isCtrl(event)) { // 40 - Down, 38 - Up
var target = getTarget(event); var target = getTarget(event);
var sibling = (event.keyCode == 40 ? 'nextSibling' : 'previousSibling'); var sibling = (event.keyCode === 40 ? 'nextSibling' : 'previousSibling');
var el = target.parentNode.parentNode[sibling]; var el = target.parentNode.parentNode[sibling];
if (el && (isTag(el, 'tr') || (el = el[sibling])) && isTag(el, 'tr') && (el = el.childNodes[nodePosition(target.parentNode)]) && (el = el.childNodes[nodePosition(target)])) { if (el && (isTag(el, 'tr') || (el = el[sibling])) && isTag(el, 'tr') && (el = el.childNodes[nodePosition(target.parentNode)]) && (el = el.childNodes[nodePosition(target)])) {
el.focus(); el.focus();
@@ -614,7 +614,7 @@ function ajax(url, callback, data, message) {
} }
request.setRequestHeader('X-Requested-With', 'XMLHttpRequest'); request.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
request.onreadystatechange = function () { request.onreadystatechange = function () {
if (request.readyState == 4) { if (request.readyState === 4) {
if (/^2/.test(request.status)) { if (/^2/.test(request.status)) {
callback(request); callback(request);
} else { } else {
@@ -656,13 +656,13 @@ function ajaxForm(form, message, button) {
if (/^file$/i.test(el.type) && el.value) { if (/^file$/i.test(el.type) && el.value) {
return false; return false;
} }
if (!/^(checkbox|radio|submit|file)$/i.test(el.type) || el.checked || el == button) { if (!/^(checkbox|radio|submit|file)$/i.test(el.type) || el.checked || el === button) {
data.push(encodeURIComponent(el.name) + '=' + encodeURIComponent(isTag(el, 'select') ? selectValue(el) : el.value)); data.push(encodeURIComponent(el.name) + '=' + encodeURIComponent(isTag(el, 'select') ? selectValue(el) : el.value));
} }
} }
} }
data = data.join('&'); data = data.join('&');
var url = form.action; var url = form.action;
if (!/post/i.test(form.method)) { if (!/post/i.test(form.method)) {
url = url.replace(/\?.*/, '') + '?' + data; url = url.replace(/\?.*/, '') + '?' + data;
@@ -703,7 +703,7 @@ function selectClick(event, text, warning) {
if (!event) { if (!event) {
event = window.event; event = window.event;
} }
if (event.keyCode == 27 && !event.shiftKey && !event.altKey && !isCtrl(event)) { // 27 - Esc if (event.keyCode === 27 && !event.shiftKey && !event.altKey && !isCtrl(event)) { // 27 - Esc
inputBlur.apply(input); inputBlur.apply(input);
td.innerHTML = original; td.innerHTML = original;
} }
@@ -733,7 +733,7 @@ function selectClick(event, text, warning) {
td.appendChild(input); td.appendChild(input);
setupSubmitHighlight(td); setupSubmitHighlight(td);
input.focus(); input.focus();
if (text == 2) { // long text if (text === 2) { // long text
return ajax(location.href + '&' + encodeURIComponent(td.id) + '=', function (request) { return ajax(location.href + '&' + encodeURIComponent(td.id) + '=', function (request) {
if (request.responseText) { if (request.responseText) {
input.value = request.responseText; input.value = request.responseText;
@@ -855,7 +855,7 @@ function findDefaultSubmit(el) {
var inputs = qsa('input', el.form); var inputs = qsa('input', el.form);
for (var i = 0; i < inputs.length; i++) { for (var i = 0; i < inputs.length; i++) {
var input = inputs[i]; var input = inputs[i];
if (input.type == 'submit' && !input.style.zIndex) { if (input.type === 'submit' && !input.style.zIndex) {
return input; return input;
} }
} }

View File

@@ -1,3 +1,31 @@
Adminer 4.9.2 (released 2024-09-18):
- Fix textarea height for single-line inputs (used typically for SQLite text field).
- Fix undefined property in error message if driver does not support error number (e.g. PostgreSQL).
- PostgreSQL: Fix search fields configuration (regression from 4.9).
- PostgreSQL: Fix search condition for network address types, add macaddr8 type.
- PostgreSQL: Fix exporting CREATE TABLE query with GENERATED default values.
- PostgreSQL: Fix exporting CREATE TABLE query with sequence default value.
- PostgreSQL: Allow to set connection's sslmode with AdminerLoginSsl plugin.
- MySQL: Do not show 'empty' enum value in strict mode.
- Editor: Fix searching in tables.
- Function to retrieve driver name that can be used in plugins.
Adminer 4.9.1 (released 2024-09-09):
- Compatibility with PHP 8.3.
- Fix compiling jush external files.
- Improved displaying of long table names in menu.
- Replace deprecated <acronym> with <abbr>.
- Add support for translations in plugins.
- Add .editorconfig file.
- MySQL: Add unix_timestamp to functions.
- PostgreSQL: Show only accessible databases.
- PostgreSQL: Make data length calculation more accurate.
- PostgreSQL: Fix documentation link for SERIAL type.
- PostgreSQL: Fix undefined properties on PHP 8.
- Elasticsearch: Fix field selection.
- AdminerEditForeign: Refactor and fix the plugin.
- AdminerLoginOtp: Autocomplete hints for OTP input field, code refactoring.
Adminer 4.9 (released 2024-08-19): Adminer 4.9 (released 2024-08-19):
- Validate server input in login form. - Validate server input in login form.
- Validate connection to server in HTTP based drivers. - Validate connection to server in HTTP based drivers.
@@ -116,7 +144,7 @@ SQLite: Handle error in altering table (bug #697)
SQLite: Allow setting auto increment for empty tables SQLite: Allow setting auto increment for empty tables
SQLite: Preserve auto increment when recreating table SQLite: Preserve auto increment when recreating table
MS SQL: Support foreign keys to other DB MS SQL: Support foreign keys to other DB
MongoDB: Allow setting authSource from environment variable MongoDB: Allow setting authSource from environment variable
Adminer 4.7.2 (released 2019-07-18): Adminer 4.7.2 (released 2019-07-18):
Do not attempt logging in without password (bug #676) Do not attempt logging in without password (bug #676)

View File

@@ -196,7 +196,7 @@ function php_shrink($input) {
$short_variables = array(); $short_variables = array();
$shortening = true; $shortening = true;
$tokens = token_get_all($input); $tokens = token_get_all($input);
// remove unnecessary { } // remove unnecessary { }
//! change also `while () { if () {;} }` to `while () if () ;` but be careful about `if () { if () { } } else { } //! change also `while () { if () {;} }` to `while () if () ;` but be careful about `if () { if () { } } else { }
$shorten = 0; $shorten = 0;
@@ -223,13 +223,13 @@ function php_shrink($input) {
} }
} }
$tokens = array_values($tokens); $tokens = array_values($tokens);
foreach ($tokens as $i => $token) { foreach ($tokens as $i => $token) {
if ($token[0] === T_VARIABLE && !isset($special_variables[$token[1]])) { if ($token[0] === T_VARIABLE && !isset($special_variables[$token[1]])) {
$short_variables[$token[1]]++; $short_variables[$token[1]]++;
} }
} }
arsort($short_variables); arsort($short_variables);
$chars = implode(range('a', 'z')) . '_' . implode(range('A', 'Z')); $chars = implode(range('a', 'z')) . '_' . implode(range('A', 'Z'));
// preserve variable names between versions if possible // preserve variable names between versions if possible
@@ -240,7 +240,7 @@ function php_shrink($input) {
foreach (array_keys($short_variables) as $number => $key) { foreach (array_keys($short_variables) as $number => $key) {
$short_variables[$key] = short_identifier($number, $chars); // could use also numbers and \x7f-\xff $short_variables[$key] = short_identifier($number, $chars); // could use also numbers and \x7f-\xff
} }
$set = array_flip(preg_split('//', '!"#$%&\'()*+,-./:;<=>?@[]^`{|}')); $set = array_flip(preg_split('//', '!"#$%&\'()*+,-./:;<=>?@[]^`{|}'));
$space = ''; $space = '';
$output = ''; $output = '';
@@ -418,7 +418,7 @@ if ($driver) {
if (count($drivers) == 1) { if (count($drivers) == 1) {
$file = str_replace('<?php echo html_select("auth[driver]", $drivers, DRIVER) . "\n"; ?>', "<input type='hidden' name='auth[driver]' value='" . ($driver == "mysql" ? "server" : $driver) . "'>" . reset($drivers), $file); $file = str_replace('<?php echo html_select("auth[driver]", $drivers, DRIVER) . "\n"; ?>', "<input type='hidden' name='auth[driver]' value='" . ($driver == "mysql" ? "server" : $driver) . "'>" . reset($drivers), $file);
} }
$file = preg_replace('(;../vendor/vrana/jush/modules/jush-(?!textarea\.|txt\.|js\.|' . preg_quote($driver == "mysql" ? "sql" : $driver) . '\.)[^.]+.js)', '', $file); $file = preg_replace('(;\.\./vendor/vrana/jush/modules/jush-(?!textarea\.|txt\.|js\.|' . preg_quote($driver == "mysql" ? "sql" : $driver) . '\.)[^.]+.js)', '', $file);
$file = preg_replace_callback('~doc_link\(array\((.*)\)\)~sU', function ($match) use ($driver) { $file = preg_replace_callback('~doc_link\(array\((.*)\)\)~sU', function ($match) use ($driver) {
list(, $links) = $match; list(, $links) = $match;
$links = preg_replace("~'(?!(" . ($driver == "mysql" ? "sql|mariadb" : $driver) . ")')[^']*' => [^,]*,?~", '', $links); $links = preg_replace("~'(?!(" . ($driver == "mysql" ? "sql|mariadb" : $driver) . ")')[^']*' => [^,]*,?~", '', $links);
@@ -427,8 +427,8 @@ if ($driver) {
//! strip doc_link() definition //! strip doc_link() definition
} }
if ($project == "editor") { if ($project == "editor") {
$file = preg_replace('~;.\.\/externals/jush/jush\.css~', '', $file); $file = preg_replace('~;\.\./vendor/vrana/jush/jush\.css~', '', $file);
$file = preg_replace('~compile_file\(\'\.\./(externals/jush/modules/jush\.js|adminer/static/[^.]+\.gif)[^)]+\)~', "''", $file); $file = preg_replace('~compile_file\(\'\.\./(vendor/vrana/jush/modules/jush\.js|adminer/static/[^.]+\.gif)[^)]+\)~', "''", $file);
} }
$file = preg_replace_callback("~lang\\('((?:[^\\\\']+|\\\\.)*)'([,)])~s", 'lang_ids', $file); $file = preg_replace_callback("~lang\\('((?:[^\\\\']+|\\\\.)*)'([,)])~s", 'lang_ids', $file);
$file = preg_replace_callback('~\b(include|require) "([^"]*\$LANG.inc.php)";~', 'put_file_lang', $file); $file = preg_replace_callback('~\b(include|require) "([^"]*\$LANG.inc.php)";~', 'put_file_lang', $file);
@@ -440,14 +440,14 @@ if ($_SESSION["lang"]) {
$file = str_replace('<?php echo $LANG; ?>', $_SESSION["lang"], $file); $file = str_replace('<?php echo $LANG; ?>', $_SESSION["lang"], $file);
} }
$file = str_replace('<?php echo script_src("static/editing.js"); ?>' . "\n", "", $file); $file = str_replace('<?php echo script_src("static/editing.js"); ?>' . "\n", "", $file);
$file = preg_replace('~\s+echo script_src\("\.\./externals/jush/modules/jush-(textarea|txt|js|\$jush)\.js"\);~', '', $file); $file = preg_replace('~\s+echo script_src\("\.\./vendor/vrana/jush/modules/jush-(textarea|txt|js|\$jush)\.js"\);~', '', $file);
$file = str_replace('<link rel="stylesheet" type="text/css" href="../vendor/vrana/jush/jush.css">' . "\n", "", $file); $file = str_replace('<link rel="stylesheet" type="text/css" href="../vendor/vrana/jush/jush.css">' . "\n", "", $file);
$file = preg_replace_callback("~compile_file\\('([^']+)'(?:, '([^']*)')?\\)~", 'compile_file', $file); // integrate static files $file = preg_replace_callback("~compile_file\\('([^']+)'(?:, '([^']*)')?\\)~", 'compile_file', $file); // integrate static files
$replace = 'preg_replace("~\\\\\\\\?.*~", "", ME) . "?file=\1&version=' . substr(md5(microtime()), 0, 8) . '"'; $replace = 'preg_replace("~\\\\\\\\?.*~", "", ME) . "?file=\1&version=' . substr(md5(microtime()), 0, 8) . '"';
$file = preg_replace('~\.\./adminer/static/(default\.css|favicon\.ico)~', '<?php echo h(' . $replace . '); ?>', $file); $file = preg_replace('~\.\./adminer/static/(default\.css|favicon\.ico)~', '<?php echo h(' . $replace . '); ?>', $file);
$file = preg_replace('~"\.\./adminer/static/(functions\.js)"~', $replace, $file); $file = preg_replace('~"\.\./adminer/static/(functions\.js)"~', $replace, $file);
$file = preg_replace('~\.\./adminer/static/([^\'"]*)~', '" . h(' . $replace . ') . "', $file); $file = preg_replace('~\.\./adminer/static/([^\'"]*)~', '" . h(' . $replace . ') . "', $file);
$file = preg_replace('~"\.\./externals/jush/modules/(jush\.js)"~', $replace, $file); $file = preg_replace('~"\.\./vendor/vrana/jush/modules/(jush\.js)"~', $replace, $file);
$file = preg_replace("~<\\?php\\s*\\?>\n?|\\?>\n?<\\?php~", '', $file); $file = preg_replace("~<\\?php\\s*\\?>\n?|\\?>\n?<\\?php~", '', $file);
$file = php_shrink($file); $file = php_shrink($file);

View File

@@ -26,7 +26,7 @@
"GPL-2.0-only" "GPL-2.0-only"
], ],
"require": { "require": {
"php": "5.6 - 8.1", "php": "5.6 - 8.3",
"ext-pdo": "*", "ext-pdo": "*",
"ext-json": "*", "ext-json": "*",
"vrana/jush": "@dev", "vrana/jush": "@dev",

View File

@@ -374,7 +374,7 @@ thead td, thead th {
padding: 7px 2px; padding: 7px 2px;
} }
thead td acronym, thead td sup, thead th acronym, thead th sup { thead td abbr, thead td sup, thead th acronym, thead th sup {
color: #cdf color: #cdf
} }

View File

@@ -1,7 +1,7 @@
/* /*
FLAT UI Flavored Adminer Theme by M. Mahbubur Rahman (mahbub@mahbubblog.com) FLAT UI Flavored Adminer Theme by M. Mahbubur Rahman (mahbub@mahbubblog.com)
Screenshot : http://d.pr/i/cznH Screenshot : http://d.pr/i/cznH
Based on work by : Lukáš Brandejs Based on work by : Lukáš Brandejs
https://raw.github.com/vrana/adminer/master/designs/ng9/adminer.css https://raw.github.com/vrana/adminer/master/designs/ng9/adminer.css
*/ */
@@ -119,7 +119,7 @@ code a:hover{background:transparent}
table{ table{
margin:10px 0px; margin:10px 0px;
border:1px solid #E6E6E6; border:1px solid #E6E6E6;
background-color:#FFFFFF; background-color:#FFFFFF;
} }
tbody tr:hover td,tbody tr:hover th{ tbody tr:hover td,tbody tr:hover th{
@@ -133,17 +133,17 @@ thead th, thead td {
white-space:nowrap; white-space:nowrap;
border-right:1px solid #34495e; border-right:1px solid #34495e;
background:#34495e; background:#34495e;
color:#FFFFFF; color:#FFFFFF;
padding-right:10px; padding-right:10px;
} }
thead th acronym, thead td acronym, thead th sup, thead td sup{ thead th abbr, thead td acronym, thead th sup, thead td sup{
color:#CCDDFF; color:#CCDDFF;
} }
th,td{ th,td{
border:1px solid rgba(233,233,233,.3); border:1px solid rgba(233,233,233,.3);
padding:3px 6px; padding:3px 6px;
vertical-align:top; vertical-align:top;
} }
th a { th a {
@@ -269,12 +269,12 @@ input[name=logout]:hover {
background:#ea0202; background:#ea0202;
} }
#logins a, #tables a { #logins a, #tables a {
background:none; background:none;
} }
#logins a:hover, #tables a:hover { #logins a:hover, #tables a:hover {
} }
#logout { #logout {
@@ -283,7 +283,7 @@ input[name=logout]:hover {
} }
#logout:hover { #logout:hover {
color:red; color:red;
} }
.logout { .logout {
@@ -308,14 +308,14 @@ input[name=logout]:hover {
input[type=submit] { input[type=submit] {
font-size:13px; font-size:13px;
font-weight:normal; font-weight:normal;
-moz-border-radius:1px; -moz-border-radius:1px;
-webkit-border-radius:1px; -webkit-border-radius:1px;
border-radius:1px; border-radius:1px;
border:0px solid #469df5; border:0px solid #469df5;
padding:4px 12px; padding:4px 12px;
text-decoration:none; text-decoration:none;
background-color:#65ADC3; background-color:#65ADC3;
color:#ffffff; color:#ffffff;
display:inline-block; display:inline-block;
@@ -324,7 +324,7 @@ input[type=submit] {
-moz-box-shadow:inset 0px 0px 0px 0px #cae3fc; -moz-box-shadow:inset 0px 0px 0px 0px #cae3fc;
box-shadow:inset 0px 0px 0px 0px #cae3fc; box-shadow:inset 0px 0px 0px 0px #cae3fc;
} }
input[type=submit]:hover { input[type=submit]:hover {
background-color:#34495e; background-color:#34495e;
text-shadow:0px 1px 0px #000; text-shadow:0px 1px 0px #000;
} }

View File

@@ -23,7 +23,7 @@ class Adminer {
function bruteForceKey() { function bruteForceKey() {
return $_SERVER["REMOTE_ADDR"]; return $_SERVER["REMOTE_ADDR"];
} }
function serverName($server) { function serverName($server) {
} }
@@ -342,35 +342,44 @@ ORDER BY ORDINAL_POSITION", null, "") as $row) { //! requires MySQL 5
function selectSearchProcess($fields, $indexes) { function selectSearchProcess($fields, $indexes) {
global $driver; global $driver;
$return = array();
$return = [];
foreach ((array) $_GET["where"] as $key => $where) { foreach ((array) $_GET["where"] as $key => $where) {
$col = $where["col"]; $col = $where["col"];
$op = $where["op"]; $op = $where["op"];
$val = $where["val"]; $val = $where["val"];
if (($key < 0 ? "" : $col) . $val != "") { if (($key < 0 ? "" : $col) . $val != "") {
$conds = array(); $conds = array();
foreach (($col != "" ? array($col => $fields[$col]) : $fields) as $name => $field) { foreach (($col != "" ? array($col => $fields[$col]) : $fields) as $name => $field) {
if ($col != "" || is_numeric($val) || !preg_match(number_type(), $field["type"])) { if ($col != "" || is_numeric($val) || !preg_match(number_type(), $field["type"])) {
$name = idf_escape($name); $name = idf_escape($name);
if ($col != "" && $field["type"] == "enum") { if ($col != "" && $field["type"] == "enum") {
$conds[] = (in_array(0, $val) ? "$name IS NULL OR " : "") . "$name IN (" . implode(", ", array_map('intval', $val)) . ")"; $conds[] = (in_array(0, $val) ? "$name IS NULL OR " : "") . "$name IN (" . implode(", ", array_map('intval', $val)) . ")";
} else { } else {
$text_type = preg_match('~char|text|enum|set~', $field["type"]); $text_type = preg_match('~char|text|enum|set~', $field["type"]);
$value = $this->processInput($field, (!$op && $text_type && preg_match('~^[^%]+$~', $val) ? "%$val%" : $val)); $value = $this->processInput($field, (!$op && $text_type && preg_match('~^[^%]+$~', $val) ? "%$val%" : $val));
$conds[] = $driver->convertSearch($name, $val, $field) . ($value == "NULL" ? " IS" . ($op == ">=" ? " NOT" : "") . " $value"
$conds[] = $driver->convertSearch($name, $where, $field) . ($value == "NULL" ? " IS" . ($op == ">=" ? " NOT" : "") . " $value"
: (in_array($op, $this->operators) || $op == "=" ? " $op $value" : (in_array($op, $this->operators) || $op == "=" ? " $op $value"
: ($text_type ? " LIKE $value" : ($text_type ? " LIKE $value"
: " IN (" . str_replace(",", "', '", $value) . ")" : " IN (" . str_replace(",", "', '", $value) . ")"
))); )));
if ($key < 0 && $val == "0") { if ($key < 0 && $val == "0") {
$conds[] = "$name IS NULL"; $conds[] = "$name IS NULL";
} }
} }
} }
} }
$return[] = ($conds ? "(" . implode(" OR ", $conds) . ")" : "1 = 0"); $return[] = ($conds ? "(" . implode(" OR ", $conds) . ")" : "1 = 0");
} }
} }
return $return; return $return;
} }

View File

@@ -2,7 +2,7 @@
<?php <?php
error_reporting(6135); // errors and warnings error_reporting(6135); // errors and warnings
unset($_COOKIE["adminer_lang"]); unset($_COOKIE["adminer_lang"]);
$_SESSION["lang"] = $_SERVER["argv"][1]; // Adminer functions read language from session $_SESSION["lang"] = isset($_SERVER["argv"][1]) ? $_SERVER["argv"][1] : null; // Adminer functions read language from session
if (isset($_SESSION["lang"])) { if (isset($_SESSION["lang"])) {
include dirname(__FILE__) . "/adminer/include/lang.inc.php"; include dirname(__FILE__) . "/adminer/include/lang.inc.php";
if (isset($_SERVER["argv"][2]) || (!isset($langs[$_SESSION["lang"]]) && $_SESSION["lang"] != "xx")) { if (isset($_SERVER["argv"][2]) || (!isset($langs[$_SESSION["lang"]]) && $_SESSION["lang"] != "xx")) {
@@ -17,7 +17,9 @@ foreach (array_merge(
glob(dirname(__FILE__) . "/adminer/include/*.php"), glob(dirname(__FILE__) . "/adminer/include/*.php"),
glob(dirname(__FILE__) . "/adminer/drivers/*.php"), glob(dirname(__FILE__) . "/adminer/drivers/*.php"),
glob(dirname(__FILE__) . "/editor/*.php"), glob(dirname(__FILE__) . "/editor/*.php"),
glob(dirname(__FILE__) . "/editor/include/*.php") glob(dirname(__FILE__) . "/editor/include/*.php"),
glob(dirname(__FILE__) . "/plugins/*.php"),
glob(dirname(__FILE__) . "/plugins/drivers/*.php")
) as $filename) { ) as $filename) {
$file = file_get_contents($filename); $file = file_get_contents($filename);
if (preg_match_all("~lang\\(('(?:[^\\\\']+|\\\\.)*')([),])~", $file, $matches)) { // lang() always uses apostrophes if (preg_match_all("~lang\\(('(?:[^\\\\']+|\\\\.)*')([),])~", $file, $matches)) { // lang() always uses apostrophes

View File

@@ -133,7 +133,7 @@ if (isset($_GET["elastic"])) {
function select($table, $select, $where, $group, $order = array(), $limit = 1, $page = 0, $print = false) { function select($table, $select, $where, $group, $order = array(), $limit = 1, $page = 0, $print = false) {
$data = array(); $data = array();
if ($select != array("*")) { if ($select != array("*")) {
$data["fields"] = $select; $data["fields"] = array_values($select);
} }
if ($order) { if ($order) {

View File

@@ -132,7 +132,7 @@ if (isset($_GET["elastic5"])) {
function select($table, $select, $where, $group, $order = array(), $limit = 1, $page = 0, $print = false) { function select($table, $select, $where, $group, $order = array(), $limit = 1, $page = 0, $print = false) {
$data = array(); $data = array();
if ($select != array("*")) { if ($select != array("*")) {
$data["fields"] = $select; $data["fields"] = array_values($select);
} }
if ($order) { if ($order) {

View File

@@ -1,43 +1,75 @@
<?php <?php
/** Select foreign key in edit form /** Select foreign key in edit form
* @link https://www.adminer.org/plugins/#use * @link https://www.adminer.org/plugins/#use
* @author Jakub Vrana, https://www.vrana.cz/ * @author Jakub Vrana, https://www.vrana.cz/
* @license https://www.apache.org/licenses/LICENSE-2.0 Apache License, Version 2.0 * @license https://www.apache.org/licenses/LICENSE-2.0 Apache License, Version 2.0
* @license https://www.gnu.org/licenses/gpl-2.0.html GNU General Public License, version 2 (one or other) * @license https://www.gnu.org/licenses/gpl-2.0.html GNU General Public License, version 2 (one or other)
*/ */
class AdminerEditForeign { class AdminerEditForeign
var $_limit; {
private $limit;
function __construct($limit = 0) { private $foreignTables = [];
$this->_limit = $limit; private $foreignOptions = [];
/**
* @param int $limit
*/
function __construct($limit = 0)
{
$this->limit = $limit;
} }
function editInput($table, $field, $attrs, $value) { /**
static $foreignTables = array(); * @param string $table
static $values = array(); * @param array $field
$foreignKeys = &$foreignTables[$table]; * @param string $attrs
if ($foreignKeys === null) { * @param string|null $value
$foreignKeys = column_foreign_keys($table); *
* @return string
*/
function editInput($table, array $field, $attrs, $value)
{
if (!isset($this->foreignTables[$table])) {
$this->foreignTables[$table] = column_foreign_keys($table);
} }
foreach ((array) $foreignKeys[$field["field"]] as $foreignKey) { $foreignKeys = $this->foreignTables[$table];
if (count($foreignKey["source"]) == 1) {
$target = $foreignKey["table"]; if (empty($foreignKeys[$field["field"]])) {
$id = $foreignKey["target"][0]; return "";
$options = &$values[$target][$id]; }
if (!$options) {
$column = idf_escape($id); foreach ($foreignKeys[$field["field"]] as $foreignKey) {
if (preg_match('~binary~', $field["type"])) { if (count($foreignKey["source"]) != 1) {
$column = "HEX($column)"; continue;
} }
$options = array("" => "") + get_vals("SELECT $column FROM " . table($target) . " ORDER BY 1" . ($this->_limit ? " LIMIT " . ($this->_limit + 1) : ""));
if ($this->_limit && count($options) - 1 > $this->_limit) { $target = $foreignKey["table"];
return; $id = $foreignKey["target"][0];
}
if (!isset($this->foreignOptions[$target][$id])) {
$column = idf_escape($id);
if (preg_match('~binary~', $field["type"])) {
$column = "HEX($column)";
} }
$values = get_vals("SELECT $column FROM " . table($target) . " ORDER BY 1" .
($this->limit ? " LIMIT " . ($this->limit + 1) : ""));
if ($this->limit && count($values) > $this->limit) {
$this->foreignOptions[$target][$id] = false;
} else {
$this->foreignOptions[$target][$id] = ["" => ""] + $values;
}
}
if ($options = $this->foreignOptions[$target][$id]) {
return "<select$attrs>" . optionlist($options, $value) . "</select>"; return "<select$attrs>" . optionlist($options, $value) . "</select>";
} else {
return "";
} }
} }
return "";
} }
} }

View File

@@ -10,7 +10,7 @@ class AdminerEditTextarea {
function editInput($table, $field, $attrs, $value) { function editInput($table, $field, $attrs, $value) {
if (preg_match('~char~', $field["type"])) { if (preg_match('~char~', $field["type"])) {
return "<textarea cols='30' rows='1' style='height: 1.2em;'$attrs>" . h($value) . '</textarea>'; return "<textarea cols='30' rows='1' $attrs>" . h($value) . '</textarea>';
} }
} }

View File

@@ -7,7 +7,7 @@
* @license https://www.gnu.org/licenses/gpl-2.0.html GNU General Public License, version 2 (one or other) * @license https://www.gnu.org/licenses/gpl-2.0.html GNU General Public License, version 2 (one or other)
*/ */
class AdminerEnumOption { class AdminerEnumOption {
function editInput($table, $field, $attrs, $value) { function editInput($table, $field, $attrs, $value) {
if ($field["type"] == "enum") { if ($field["type"] == "enum") {
$options = array(); $options = array();
@@ -24,7 +24,9 @@ class AdminerEnumOption {
$selected = ""; $selected = "";
} }
} }
$options[0] = lang('empty'); if (!is_strict_mode()) {
$options[0] = lang('empty');
}
preg_match_all("~'((?:[^']|'')*)'~", $field["length"], $matches); preg_match_all("~'((?:[^']|'')*)'~", $field["length"], $matches);
foreach ($matches[1] as $i => $val) { foreach ($matches[1] as $i => $val) {
$val = stripcslashes(str_replace("''", "'", $val)); $val = stripcslashes(str_replace("''", "'", $val));
@@ -36,5 +38,5 @@ class AdminerEnumOption {
return "<select$attrs>" . optionlist($options, (string) $selected, 1) . "</select>"; // 1 - use keys return "<select$attrs>" . optionlist($options, (string) $selected, 1) . "</select>"; // 1 - use keys
} }
} }
} }

View File

@@ -1,54 +1,79 @@
<?php <?php
/** Require One-Time Password at login /** Require One-Time Password at login
* @link https://www.adminer.org/plugins/otp/ * @link https://www.adminer.org/plugins/otp/
* @author Jakub Vrana, https://www.vrana.cz/ * @author Jakub Vrana, https://www.vrana.cz/
* @license https://www.apache.org/licenses/LICENSE-2.0 Apache License, Version 2.0 * @license https://www.apache.org/licenses/LICENSE-2.0 Apache License, Version 2.0
* @license https://www.gnu.org/licenses/gpl-2.0.html GNU General Public License, version 2 (one or other) * @license https://www.gnu.org/licenses/gpl-2.0.html GNU General Public License, version 2 (one or other)
*/ */
class AdminerLoginOtp { class AdminerLoginOtp
/** @access protected */ {
var $secret; /** @var string */
private $secret;
/**
* @param string decoded secret, e.g. base32_decode("SECRET") /**
*/ * @param string $secret Decoded secret, e.g. base64_decode("ENCODED_SECRET").
function __construct($secret) { */
public function __construct($secret) {
$this->secret = $secret; $this->secret = $secret;
if ($_POST["auth"]) {
$_SESSION["otp"] = (string) $_POST["auth"]["otp"]; if (isset($_POST["auth"])) {
} $_SESSION["otp"] = (string)$_POST["auth"]["otp"];
}
function loginFormField($name, $heading, $value) {
if ($name == 'password') {
return $heading . $value
. "<tr><th><acronym title='One Time Password' lang='en'>OTP</acronym>"
. "<td><input type='number' name='auth[otp]' value='" . h($_SESSION["otp"]) . "' size='6' autocomplete='off'>\n"
;
} }
} }
function login($login, $password) { /**
if (isset($_SESSION["otp"])) { * @param string $name
$timeSlot = floor(time() / 30); * @param string $heading
foreach (array(0, -1, 1) as $skew) { * @param string $value
if ($_SESSION["otp"] == $this->getOtp($timeSlot + $skew)) { *
restart_session(); * @return string|null
unset($_SESSION["otp"]); */
stop_session(); public function loginFormField($name, $heading, $value) {
return; if ($name != "password") return null;
}
} return $heading . $value .
return 'Invalid OTP.'; "<tr><th><abbr title='" . lang('One Time Password') . "' lang='en'>OTP</abbr></th>" .
} "<td><input type='text' name='auth[otp]' value='" . h($_SESSION["otp"]) . "' " .
"size='6' autocomplete='one-time-code' inputmode='numeric' maxlength='6' pattern='\d{6}'/></td>" .
"</tr>\n";
} }
function getOtp($timeSlot) { /**
$data = str_pad(pack('N', $timeSlot), 8, "\0", STR_PAD_LEFT); * @param string $login
$hash = hash_hmac('sha1', $data, $this->secret, true); * @param string $password
*
* @return string|null
*/
public function login($login, $password) {
if (!isset($_SESSION["otp"])) return null;
$timeSlot = floor(time() / 30);
foreach (array(0, -1, 1) as $skew) {
if ($_SESSION["otp"] == $this->getOtp($timeSlot + $skew)) {
restart_session();
unset($_SESSION["otp"]);
stop_session();
return null;
}
}
return lang('Invalid OTP code.');
}
/**
* @param int $timeSlot
*
* @return int
*/
private function getOtp($timeSlot) {
$data = str_pad(pack("N", $timeSlot), 8, "\0", STR_PAD_LEFT);
$hash = hash_hmac("sha1", $data, $this->secret, true);
$offset = ord(substr($hash, -1)) & 0xF; $offset = ord(substr($hash, -1)) & 0xF;
$unpacked = unpack('N', substr($hash, $offset, 4)); $unpacked = unpack("N", substr($hash, $offset, 4));
return ($unpacked[1] & 0x7FFFFFFF) % 1e6; return ($unpacked[1] & 0x7FFFFFFF) % 1e6;
} }
} }

View File

@@ -1,24 +1,28 @@
<?php <?php
/** Connect to MySQL using SSL /**
* @link https://www.adminer.org/plugins/#use * Connect to MySQL using SSL
* @author Jakub Vrana, https://www.vrana.cz/ *
* @license https://www.apache.org/licenses/LICENSE-2.0 Apache License, Version 2.0 * @link https://www.adminer.org/plugins/#use
* @license https://www.gnu.org/licenses/gpl-2.0.html GNU General Public License, version 2 (one or other) * @author Jakub Vrana, https://www.vrana.cz/
*/ * @license https://www.apache.org/licenses/LICENSE-2.0 Apache License, Version 2.0
class AdminerLoginSsl { * @license https://www.gnu.org/licenses/gpl-2.0.html GNU General Public License, version 2 (one or other)
/** @access protected */ */
var $ssl; class AdminerLoginSsl
{
/** private var $ssl;
* @param array array("key" => filename, "cert" => filename, "ca" => filename)
*/ /**
function __construct($ssl) { * MySQL: ["key" => filename, "cert" => filename, "ca" => filename]
* PostgresSQL: ["mode" => sslmode] (https://www.postgresql.org/docs/current/libpq-connect.html#LIBPQ-CONNECT-SSLMODE)
*/
function __construct(array $ssl)
{
$this->ssl = $ssl; $this->ssl = $ssl;
} }
function connectSsl() { function connectSsl()
{
return $this->ssl; return $this->ssl;
} }
} }