mirror of
https://github.com/vrana/adminer.git
synced 2026-03-25 05:50:04 +01:00
Compare commits
280 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
7af1ee3702 | ||
|
|
3cbece1ec0 | ||
|
|
0d73372c50 | ||
|
|
fb7bd02713 | ||
|
|
fb71941daa | ||
|
|
504c56216c | ||
|
|
88803c6d0e | ||
|
|
b585ee8261 | ||
|
|
f4817e8568 | ||
|
|
105aca9b04 | ||
|
|
f556f6acb1 | ||
|
|
22d0cf4171 | ||
|
|
fa0963f370 | ||
|
|
ba28845651 | ||
|
|
8fd7ff0187 | ||
|
|
e040b296c5 | ||
|
|
b616c57352 | ||
|
|
50390ea38c | ||
|
|
9d7d30891e | ||
|
|
4cf73abccd | ||
|
|
2d6451b99a | ||
|
|
40d1feec9f | ||
|
|
e40d9692c7 | ||
|
|
770fc9673c | ||
|
|
56b6590a4f | ||
|
|
f8fd4dd6e3 | ||
|
|
d8c28d1c91 | ||
|
|
46f39f3cdb | ||
|
|
8a9df8ede1 | ||
|
|
e4d35f9591 | ||
|
|
346353153d | ||
|
|
9df33e82e6 | ||
|
|
fa09eba15e | ||
|
|
d5b329a1a4 | ||
|
|
0cd02bb98a | ||
|
|
a7cbf66347 | ||
|
|
fa6865da6a | ||
|
|
63b6b99365 | ||
|
|
a0a1476e5b | ||
|
|
8a9d803137 | ||
|
|
4588af77ac | ||
|
|
91bd2e84f5 | ||
|
|
2a534798fa | ||
|
|
a062e9cc58 | ||
|
|
6c84764334 | ||
|
|
a01ca3ade4 | ||
|
|
6ee4692afd | ||
|
|
b8cd3b317d | ||
|
|
64a49e95e8 | ||
|
|
8dd971ca5e | ||
|
|
c9801e2e24 | ||
|
|
4578d47409 | ||
|
|
12aaf506b8 | ||
|
|
4cfe6263d9 | ||
|
|
b8bea7fc56 | ||
|
|
cd8ff96a09 | ||
|
|
4a69059e1b | ||
|
|
842ea0bd46 | ||
|
|
1d0607177d | ||
|
|
9e4d9fda65 | ||
|
|
47c582acb3 | ||
|
|
32334f1106 | ||
|
|
a10238516c | ||
|
|
4801da091b | ||
|
|
76612b1e8a | ||
|
|
eb8c9929d3 | ||
|
|
cf10398104 | ||
|
|
d00927ce66 | ||
|
|
28a84fec18 | ||
|
|
2c8eff9b53 | ||
|
|
5f26d3a1b8 | ||
|
|
3344fae96e | ||
|
|
dedbd01f64 | ||
|
|
4c78976cba | ||
|
|
1a6186648c | ||
|
|
36f42d0fda | ||
|
|
45712a5d4c | ||
|
|
73690164b7 | ||
|
|
3fa1eadf2c | ||
|
|
3a1c251065 | ||
|
|
d0268c69da | ||
|
|
fd3d1c7e2e | ||
|
|
cbd3adc564 | ||
|
|
86e26846a8 | ||
|
|
6860478950 | ||
|
|
dc9ae77e2f | ||
|
|
8f60870d9a | ||
|
|
d6c3430607 | ||
|
|
2cee788ad3 | ||
|
|
647cab7c69 | ||
|
|
9bb75e1230 | ||
|
|
7099560add | ||
|
|
14cb9ca1ef | ||
|
|
31057f0ef2 | ||
|
|
fa09962ab1 | ||
|
|
bad3c6b086 | ||
|
|
0922b312d3 | ||
|
|
949b913d4f | ||
|
|
af25827ff4 | ||
|
|
9872229e11 | ||
|
|
682e86d236 | ||
|
|
f0a5fb56a5 | ||
|
|
53dfafd2ea | ||
|
|
7a33661b72 | ||
|
|
a5b65fba5b | ||
|
|
63f2a041ed | ||
|
|
3289eca040 | ||
|
|
c5a7174a2a | ||
|
|
49e2ac4559 | ||
|
|
e5352cc5ac | ||
|
|
0bb5a52dc4 | ||
|
|
37b9f0ec01 | ||
|
|
73f94e4873 | ||
|
|
a2f0806804 | ||
|
|
b317fe156a | ||
|
|
763d3e9f89 | ||
|
|
f83e3f41d2 | ||
|
|
aa40e803e2 | ||
|
|
4be0b6655e | ||
|
|
6c6bb45d3d | ||
|
|
0a31742ee8 | ||
|
|
1f700ceea0 | ||
|
|
a6ebd4a3e0 | ||
|
|
d1aa3542ae | ||
|
|
b1da3995f6 | ||
|
|
79d438ed80 | ||
|
|
35b71f0472 | ||
|
|
a01b2efc22 | ||
|
|
a248f8b008 | ||
|
|
69ff979ee7 | ||
|
|
1aa7833a90 | ||
|
|
40ce23d5ae | ||
|
|
060e220806 | ||
|
|
1fcdaedb5f | ||
|
|
596f8df373 | ||
|
|
ea0c9d9b5e | ||
|
|
c5ae82ab5b | ||
|
|
0025f2188a | ||
|
|
ea04a7e2c6 | ||
|
|
fc6efa0e12 | ||
|
|
26dafd9320 | ||
|
|
c7f302ca0b | ||
|
|
b6c7708f32 | ||
|
|
ced05d8a44 | ||
|
|
8dde91b2a1 | ||
|
|
8aa420d160 | ||
|
|
6bbc8bc3ea | ||
|
|
c990de3b3e | ||
|
|
411d198d0d | ||
|
|
060c006875 | ||
|
|
42fd6dea8b | ||
|
|
5b38a5b6f1 | ||
|
|
65f8a87629 | ||
|
|
2e4b8c1d36 | ||
|
|
2a5aca0038 | ||
|
|
8cb8a75658 | ||
|
|
647e8d5cc1 | ||
|
|
25329cebf3 | ||
|
|
f839d5ac25 | ||
|
|
406889d7c3 | ||
|
|
8bd53120df | ||
|
|
4a4e58179f | ||
|
|
0b0c0c7e89 | ||
|
|
594c626665 | ||
|
|
001bf042b4 | ||
|
|
fe5a81fd08 | ||
|
|
fe76c6b887 | ||
|
|
3ff5930d18 | ||
|
|
f782af67e2 | ||
|
|
536e9a58ad | ||
|
|
5dc5bfe7ff | ||
|
|
8fc70327fb | ||
|
|
0fb7260fd4 | ||
|
|
0ed7b6b058 | ||
|
|
00eb35b4f5 | ||
|
|
4f7ff182b1 | ||
|
|
9c534a0a80 | ||
|
|
8871fffb7c | ||
|
|
d029cadd60 | ||
|
|
45bc098262 | ||
|
|
3052952733 | ||
|
|
f9d76cea9a | ||
|
|
da61118303 | ||
|
|
37c8a3a123 | ||
|
|
a987a2a4de | ||
|
|
1c56b3b206 | ||
|
|
594085c6f5 | ||
|
|
7a370e7885 | ||
|
|
933f041f4d | ||
|
|
abc8be3317 | ||
|
|
51986426b7 | ||
|
|
a3e1cd7bb6 | ||
|
|
3e769815bf | ||
|
|
9e28e9f7ae | ||
|
|
0e78996fdb | ||
|
|
8d432beb3d | ||
|
|
02e574c8e9 | ||
|
|
c38f25b5d6 | ||
|
|
024d73934f | ||
|
|
9315954f3e | ||
|
|
fe57642b6c | ||
|
|
7066325e41 | ||
|
|
b08631dab3 | ||
|
|
767af152f9 | ||
|
|
4ee84efa3e | ||
|
|
04356ca0b0 | ||
|
|
f80b296a1a | ||
|
|
52eee61247 | ||
|
|
7e3f2d9b1d | ||
|
|
8bd3dca2f7 | ||
|
|
b87d43fdcd | ||
|
|
06a2d87e55 | ||
|
|
50b33db7e2 | ||
|
|
3e4c6d67e5 | ||
|
|
4fe6bad829 | ||
|
|
13f08f7255 | ||
|
|
8c985124f2 | ||
|
|
1127082dd2 | ||
|
|
9b34f7906f | ||
|
|
b9bc67d331 | ||
|
|
033b967505 | ||
|
|
5308e7171b | ||
|
|
cbce3f1395 | ||
|
|
e62fc3a07b | ||
|
|
03e31ed154 | ||
|
|
ad96c516ac | ||
|
|
0c8cd8e5f7 | ||
|
|
6aed2f510a | ||
|
|
c7f444049d | ||
|
|
2e9ac3ba75 | ||
|
|
bc466f7f85 | ||
|
|
15ea9bba81 | ||
|
|
c2ae381aaf | ||
|
|
96c8e6fb71 | ||
|
|
ba7af8e31c | ||
|
|
794ba74be4 | ||
|
|
3ac662c755 | ||
|
|
ee124dadb1 | ||
|
|
06f4346cfe | ||
|
|
619b49c3d4 | ||
|
|
cd64b707bd | ||
|
|
6980d1a1d2 | ||
|
|
00da70626d | ||
|
|
4d491d704e | ||
|
|
73629178d8 | ||
|
|
8670cfc31b | ||
|
|
bbcc8f141d | ||
|
|
2f881b2674 | ||
|
|
46bb56cab9 | ||
|
|
fc668ea326 | ||
|
|
95b0237061 | ||
|
|
fa01efa059 | ||
|
|
6a3ede75f6 | ||
|
|
d9fe03e1b4 | ||
|
|
67a29ff495 | ||
|
|
828a54deba | ||
|
|
fd4344c866 | ||
|
|
c369236333 | ||
|
|
a710c28d38 | ||
|
|
8ea900534f | ||
|
|
4c5667b93f | ||
|
|
7da82a12a6 | ||
|
|
9567e5cb1a | ||
|
|
052b019210 | ||
|
|
4d8667db7b | ||
|
|
0fdedcbaa5 | ||
|
|
7639ff8b95 | ||
|
|
990b3b8ccc | ||
|
|
2b78d06646 | ||
|
|
1088cc5dca | ||
|
|
8e4882b801 | ||
|
|
d53ffc2158 | ||
|
|
ef81b5c1b2 | ||
|
|
849f9259b8 | ||
|
|
1602db304a | ||
|
|
822f3f2498 | ||
|
|
150301ed5f | ||
|
|
3e2288eee5 | ||
|
|
f4592e3603 | ||
|
|
cbb612aaaa |
1
.gitignore
vendored
1
.gitignore
vendored
@@ -1,3 +1,4 @@
|
||||
/adminer/adminer.css
|
||||
/adminer*.php
|
||||
/editor*.php
|
||||
/vendor/
|
||||
|
||||
9
.gitmodules
vendored
9
.gitmodules
vendored
@@ -1,15 +1,6 @@
|
||||
[submodule "jush"]
|
||||
path = externals/jush
|
||||
url = git://git.code.sf.net/p/jush/git
|
||||
[submodule "tinymce"]
|
||||
path = externals/tinymce
|
||||
url = git://github.com/tinymce/tinymce.git
|
||||
[submodule "jquery-ui"]
|
||||
path = externals/jquery-ui
|
||||
url = git://github.com/jquery/jquery-ui.git
|
||||
[submodule "jquery-timepicker"]
|
||||
path = externals/jquery-timepicker
|
||||
url = git://github.com/trentrichardson/jQuery-Timepicker-Addon.git
|
||||
[submodule "wymeditor"]
|
||||
path = externals/wymeditor
|
||||
url = git://github.com/wymeditor/wymeditor.git
|
||||
|
||||
5
.travis.yml
Normal file
5
.travis.yml
Normal file
@@ -0,0 +1,5 @@
|
||||
language: php
|
||||
php:
|
||||
- '5.3'
|
||||
- '7.1'
|
||||
script: git diff --name-only $TRAVIS_COMMIT_RANGE | grep '\.php$' | xargs -n1 -P8 php -l | grep -v 'No syntax errors'; test $? -eq 1
|
||||
@@ -29,7 +29,7 @@ if (!$error && $_POST) {
|
||||
$call[] = (isset($out[$key]) ? "@" . idf_escape($field["field"]) : $val);
|
||||
}
|
||||
|
||||
$query = (isset($_GET["callf"]) ? "SELECT" : "CALL") . " " . idf_escape($PROCEDURE) . "(" . implode(", ", $call) . ")";
|
||||
$query = (isset($_GET["callf"]) ? "SELECT" : "CALL") . " " . table($PROCEDURE) . "(" . implode(", ", $call) . ")";
|
||||
echo "<p><code class='jush-$jush'>" . h($query) . "</code> <a href='" . h(ME) . "sql=" . urlencode($query) . "'>" . lang('Edit') . "</a>\n";
|
||||
|
||||
if (!$connection->multi_query($query)) {
|
||||
|
||||
@@ -35,7 +35,6 @@ if ($_POST && !process_fields($row["fields"]) && !$error) {
|
||||
$all_fields = array();
|
||||
$use_all_fields = false;
|
||||
$foreign = array();
|
||||
ksort($row["fields"]);
|
||||
$orig_field = reset($orig_fields);
|
||||
$after = " FIRST";
|
||||
|
||||
@@ -107,10 +106,10 @@ if ($_POST && !process_fields($row["fields"]) && !$error) {
|
||||
$name,
|
||||
($jush == "sqlite" && ($use_all_fields || $foreign) ? $all_fields : $fields),
|
||||
$foreign,
|
||||
$row["Comment"],
|
||||
($row["Comment"] != $table_status["Comment"] ? $row["Comment"] : null),
|
||||
($row["Engine"] && $row["Engine"] != $table_status["Engine"] ? $row["Engine"] : ""),
|
||||
($row["Collation"] && $row["Collation"] != $table_status["Collation"] ? $row["Collation"] : ""),
|
||||
($row["Auto_increment"] != "" ? +$row["Auto_increment"] : ""),
|
||||
($row["Auto_increment"] != "" ? number($row["Auto_increment"]) : ""),
|
||||
$partitioning
|
||||
));
|
||||
}
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
$row = $_POST;
|
||||
|
||||
if ($_POST && !$error && !isset($_POST["add_x"])) { // add is an image and PHP changes add.x to add_x
|
||||
restart_session();
|
||||
$name = trim($row["name"]);
|
||||
if ($_POST["drop"]) {
|
||||
$_GET["db"] = ""; // to save in global history
|
||||
@@ -24,6 +23,8 @@ if ($_POST && !$error && !isset($_POST["add_x"])) { // add is an image and PHP c
|
||||
$last = $db;
|
||||
}
|
||||
}
|
||||
restart_session();
|
||||
set_session("dbs", null);
|
||||
queries_redirect(ME . "db=" . urlencode($last), lang('Database has been created.'), $success);
|
||||
}
|
||||
} else {
|
||||
|
||||
@@ -62,27 +62,28 @@ if ($adminer->homepage()) {
|
||||
search_tables();
|
||||
}
|
||||
}
|
||||
$doc_link = doc_link(array('sql' => 'show-table-status.html'));
|
||||
echo "<table cellspacing='0' class='nowrap checkable' onclick='tableClick(event);' ondblclick='tableClick(event, true);'>\n";
|
||||
|
||||
echo '<thead><tr class="wrap"><td><input id="check-all" type="checkbox" onclick="formCheck(this, /^(tables|views)\[/);">';
|
||||
echo '<thead><tr class="wrap"><td><input id="check-all" type="checkbox" onclick="formCheck(this, /^(tables|views)\[/);" class="jsonly">';
|
||||
echo '<th>' . lang('Table');
|
||||
echo '<td>' . lang('Engine');
|
||||
echo '<td>' . lang('Collation');
|
||||
echo '<td>' . lang('Data Length');
|
||||
echo '<td>' . lang('Index Length');
|
||||
echo '<td>' . lang('Data Free');
|
||||
echo '<td>' . lang('Auto Increment');
|
||||
echo '<td>' . lang('Rows');
|
||||
echo (support("comment") ? '<td>' . lang('Comment') : '');
|
||||
echo '<td>' . lang('Engine') . doc_link(array('sql' => 'storage-engines.html'));
|
||||
echo '<td>' . lang('Collation') . doc_link(array('sql' => 'charset-mysql.html'));
|
||||
echo '<td>' . lang('Data Length') . $doc_link;
|
||||
echo '<td>' . lang('Index Length') . $doc_link;
|
||||
echo '<td>' . lang('Data Free') . $doc_link;
|
||||
echo '<td>' . lang('Auto Increment') . doc_link(array('sql' => 'example-auto-increment.html'));
|
||||
echo '<td>' . lang('Rows') . $doc_link;
|
||||
echo (support("comment") ? '<td>' . lang('Comment') . $doc_link : '');
|
||||
echo "</thead>\n";
|
||||
|
||||
$tables = 0;
|
||||
foreach ($tables_list as $name => $type) {
|
||||
$view = ($type !== null && !preg_match('~table~i', $type));
|
||||
echo '<tr' . odd() . '><td>' . checkbox(($view ? "views[]" : "tables[]"), $name, in_array($name, $tables_views, true), "", "formUncheck('check-all');");
|
||||
echo '<th>' . (support("table") || support("indexes") ? '<a href="' . h(ME) . 'table=' . urlencode($name) . '" title="' . lang('Show structure') . '">' . h($name) . '</a>' : h($name));
|
||||
$id = h("Table-" . $name);
|
||||
echo '<tr' . odd() . '><td>' . checkbox(($view ? "views[]" : "tables[]"), $name, in_array($name, $tables_views, true), "", "formUncheck('check-all');", "", $id);
|
||||
echo '<th>' . (support("table") || support("indexes") ? "<a href='" . h(ME) . "table=" . urlencode($name) . "' title='" . lang('Show structure') . "' id='$id'>" . h($name) . '</a>' : h($name));
|
||||
if ($view) {
|
||||
echo '<td colspan="6"><a href="' . h(ME) . "view=" . urlencode($name) . '" title="' . lang('Alter view') . '">' . lang('View') . '</a>';
|
||||
echo '<td colspan="6"><a href="' . h(ME) . "view=" . urlencode($name) . '" title="' . lang('Alter view') . '">' . (preg_match('~materialized~i', $type) ? lang('Materialized view') : lang('View')) . '</a>';
|
||||
echo '<td align="right"><a href="' . h(ME) . "select=" . urlencode($name) . '" title="' . lang('Select data') . '">?</a>';
|
||||
} else {
|
||||
foreach (array(
|
||||
@@ -169,7 +170,7 @@ if ($adminer->homepage()) {
|
||||
|
||||
if (support("sequence")) {
|
||||
echo "<h3 id='sequences'>" . lang('Sequences') . "</h3>\n";
|
||||
$sequences = get_vals("SELECT sequence_name FROM information_schema.sequences WHERE sequence_schema = current_schema()");
|
||||
$sequences = get_vals("SELECT sequence_name FROM information_schema.sequences WHERE sequence_schema = current_schema() ORDER BY sequence_name");
|
||||
if ($sequences) {
|
||||
echo "<table cellspacing='0'>\n";
|
||||
echo "<thead><tr><th>" . lang('Name') . "</thead>\n";
|
||||
|
||||
@@ -31,7 +31,7 @@ if (isset($_GET["elastic"])) {
|
||||
return false;
|
||||
}
|
||||
$return = json_decode($file, true);
|
||||
if (!$return) {
|
||||
if ($return === null) {
|
||||
$this->errno = json_last_error();
|
||||
if (function_exists('json_last_error_msg')) {
|
||||
$this->error = json_last_error_msg();
|
||||
@@ -59,7 +59,8 @@ if (isset($_GET["elastic"])) {
|
||||
}
|
||||
|
||||
function connect($server, $username, $password) {
|
||||
$this->_url = "http://$username:$password@$server/";
|
||||
preg_match('~^(https?://)?(.*)~', $server, $match);
|
||||
$this->_url = ($match[1] ? $match[1] : "http://") . "$username:$password@$match[2]/";
|
||||
$return = $this->query('');
|
||||
if ($return) {
|
||||
$this->server_info = $return['version']['number'];
|
||||
@@ -81,7 +82,7 @@ if (isset($_GET["elastic"])) {
|
||||
class Min_Result {
|
||||
var $num_rows, $_rows;
|
||||
|
||||
function Min_Result($rows) {
|
||||
function __construct($rows) {
|
||||
$this->num_rows = count($this->_rows);
|
||||
$this->_rows = $rows;
|
||||
reset($this->_rows);
|
||||
@@ -126,29 +127,37 @@ if (isset($_GET["elastic"])) {
|
||||
$data["from"] = ($page * $limit);
|
||||
}
|
||||
}
|
||||
foreach ((array) $_GET["where"] as $val) {
|
||||
if ("$val[col]$val[val]" != "") {
|
||||
$term = array("match" => array(($val["col"] != "" ? $val["col"] : "_all") => $val["val"]));
|
||||
if ($val["op"] == "=") {
|
||||
foreach ($where as $val) {
|
||||
list($col,$op,$val) = explode(" ",$val,3);
|
||||
if ($col == "_id") {
|
||||
$data["query"]["ids"]["values"][] = $val;
|
||||
}
|
||||
elseif ($col . $val != "") {
|
||||
$term = array("term" => array(($col != "" ? $col : "_all") => $val));
|
||||
if ($op == "=") {
|
||||
$data["query"]["filtered"]["filter"]["and"][] = $term;
|
||||
} else {
|
||||
$data["query"]["filtered"]["query"]["bool"]["must"][] = $term;
|
||||
}
|
||||
}
|
||||
}
|
||||
if ($data["query"] && !$data["query"]["filtered"]["query"]) {
|
||||
if ($data["query"] && !$data["query"]["filtered"]["query"] && !$data["query"]["ids"]) {
|
||||
$data["query"]["filtered"]["query"] = array("match_all" => array());
|
||||
}
|
||||
if ($print) {
|
||||
echo $adminer->selectQuery("$query: " . print_r($data, true));
|
||||
}
|
||||
$start = microtime(true);
|
||||
$search = $this->_conn->query($query, $data);
|
||||
if ($print) {
|
||||
echo $adminer->selectQuery("$query: " . print_r($data, true), format_time($start));
|
||||
}
|
||||
if (!$search) {
|
||||
return false;
|
||||
}
|
||||
$return = array();
|
||||
foreach ($search['hits']['hits'] as $hit) {
|
||||
$row = array();
|
||||
if ($select == array("*")) {
|
||||
$row["_id"] = $hit["_id"];
|
||||
}
|
||||
$fields = $hit['_source'];
|
||||
if ($select != array("*")) {
|
||||
$fields = array();
|
||||
@@ -157,6 +166,9 @@ if (isset($_GET["elastic"])) {
|
||||
}
|
||||
}
|
||||
foreach ($fields as $key => $val) {
|
||||
if ($data["fields"]) {
|
||||
$val = $val[0];
|
||||
}
|
||||
$row[$key] = (is_array($val) ? json_encode($val) : $val); //! display JSON and others differently
|
||||
}
|
||||
$return[] = $row;
|
||||
@@ -193,6 +205,7 @@ if (isset($_GET["elastic"])) {
|
||||
$return = $connection->rootQuery('_aliases');
|
||||
if ($return) {
|
||||
$return = array_keys($return);
|
||||
sort($return, SORT_STRING);
|
||||
}
|
||||
return $return;
|
||||
}
|
||||
@@ -203,6 +216,10 @@ if (isset($_GET["elastic"])) {
|
||||
|
||||
function db_collation($db, $collations) {
|
||||
}
|
||||
|
||||
function engines() {
|
||||
return array();
|
||||
}
|
||||
|
||||
function count_tables($databases) {
|
||||
global $connection;
|
||||
@@ -217,19 +234,33 @@ if (isset($_GET["elastic"])) {
|
||||
global $connection;
|
||||
$return = $connection->query('_mapping');
|
||||
if ($return) {
|
||||
$return = array_fill_keys(array_keys(reset($return)), 'table');
|
||||
$return = array_fill_keys(array_keys($return[$connection->_db]["mappings"]), 'table');
|
||||
}
|
||||
return $return;
|
||||
}
|
||||
|
||||
function table_status($name = "", $fast = false) {
|
||||
$return = tables_list();
|
||||
if ($return) {
|
||||
foreach ($return as $key => $type) { // _stats have just info about database
|
||||
$return[$key] = array("Name" => $key, "Engine" => $type);
|
||||
}
|
||||
if ($name != "") {
|
||||
return $return[$name];
|
||||
global $connection;
|
||||
$search = $connection->query("_search?search_type=count", array(
|
||||
"facets" => array(
|
||||
"count_by_type" => array(
|
||||
"terms" => array(
|
||||
"field" => "_type",
|
||||
)
|
||||
)
|
||||
)
|
||||
), "POST");
|
||||
$return = array();
|
||||
if ($search) {
|
||||
foreach ($search["facets"]["count_by_type"]["terms"] as $table) {
|
||||
$return[$table["term"]] = array(
|
||||
"Name" => $table["term"],
|
||||
"Engine" => "table",
|
||||
"Rows" => $table["count"],
|
||||
);
|
||||
if ($name != "" && $name == $table["term"]) {
|
||||
return $return[$name];
|
||||
}
|
||||
}
|
||||
}
|
||||
return $return;
|
||||
@@ -254,16 +285,26 @@ if (isset($_GET["elastic"])) {
|
||||
|
||||
function fields($table) {
|
||||
global $connection;
|
||||
$mapping = $connection->query("$table/_mapping");
|
||||
$result = $connection->query("$table/_mapping");
|
||||
$return = array();
|
||||
if ($mapping) {
|
||||
foreach ($mapping[$table]['properties'] as $name => $field) {
|
||||
$return[$name] = array(
|
||||
"field" => $name,
|
||||
"full_type" => $field["type"],
|
||||
"type" => $field["type"],
|
||||
"privileges" => array("insert" => 1, "select" => 1, "update" => 1),
|
||||
);
|
||||
if ($result) {
|
||||
$mappings = $result[$table]['properties'];
|
||||
if (!$mappings) {
|
||||
$mappings = $result[$connection->_db]['mappings'][$table]['properties'];
|
||||
}
|
||||
if ($mappings) {
|
||||
foreach ($mappings as $name => $field) {
|
||||
$return[$name] = array(
|
||||
"field" => $name,
|
||||
"full_type" => $field["type"],
|
||||
"type" => $field["type"],
|
||||
"privileges" => array("insert" => 1, "select" => 1, "update" => 1),
|
||||
);
|
||||
if ($field["properties"]) { // only leaf fields can be edited
|
||||
unset($return[$name]["privileges"]["insert"]);
|
||||
unset($return[$name]["privileges"]["update"]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return $return;
|
||||
|
||||
320
adminer/drivers/firebird.inc.php
Normal file
320
adminer/drivers/firebird.inc.php
Normal file
@@ -0,0 +1,320 @@
|
||||
<?php
|
||||
/**
|
||||
* @author Steve Krämer
|
||||
*/
|
||||
|
||||
$drivers['firebird'] = 'Firebird (alpha)';
|
||||
|
||||
if (isset($_GET["firebird"])) {
|
||||
$possible_drivers = array("interbase");
|
||||
define("DRIVER", "firebird");
|
||||
|
||||
if (extension_loaded("interbase") ) {
|
||||
class Min_DB {
|
||||
var
|
||||
$extension = "Firebird",
|
||||
$server_info,
|
||||
$affected_rows,
|
||||
$errno,
|
||||
$error,
|
||||
$_link, $_result
|
||||
;
|
||||
|
||||
function connect($server, $username, $password) {
|
||||
$this->_link = ibase_connect($server, $username, $password);
|
||||
if ($this->_link) {
|
||||
$url_parts = explode(':', $server);
|
||||
$this->service_link = ibase_service_attach($url_parts[0], $username, $password);
|
||||
$this->server_info = ibase_server_info($this->service_link, IBASE_SVC_SERVER_VERSION);
|
||||
} else {
|
||||
$this->errno = ibase_errcode();
|
||||
$this->error = ibase_errmsg();
|
||||
}
|
||||
return (bool) $this->_link;
|
||||
}
|
||||
|
||||
function quote($string) {
|
||||
return "'" . str_replace("'", "''", $string) . "'";
|
||||
}
|
||||
|
||||
function select_db($database) {
|
||||
return ($database == "domain");
|
||||
}
|
||||
|
||||
function query($query, $unbuffered = false) {
|
||||
$result = ibase_query($query, $this->_link);
|
||||
if (!$result) {
|
||||
$this->errno = ibase_errcode();
|
||||
$this->error = ibase_errmsg();
|
||||
return false;
|
||||
}
|
||||
$this->error = "";
|
||||
if ($result === true) {
|
||||
$this->affected_rows = ibase_affected_rows($this->_link);
|
||||
return true;
|
||||
}
|
||||
return new Min_Result($result);
|
||||
}
|
||||
|
||||
function multi_query($query) {
|
||||
return $this->_result = $this->query($query);
|
||||
}
|
||||
|
||||
function store_result() {
|
||||
return $this->_result;
|
||||
}
|
||||
|
||||
function next_result() {
|
||||
return false;
|
||||
}
|
||||
|
||||
function result($query, $field = 0) {
|
||||
$result = $this->query($query);
|
||||
if (!$result || !$result->num_rows) {
|
||||
return false;
|
||||
}
|
||||
$row = $result->fetch_row();
|
||||
return $row[$field];
|
||||
}
|
||||
}
|
||||
|
||||
class Min_Result {
|
||||
var $num_rows, $_result, $_offset = 0;
|
||||
|
||||
function __construct($result) {
|
||||
$this->_result = $result;
|
||||
// $this->num_rows = ibase_num_rows($result);
|
||||
}
|
||||
|
||||
function fetch_assoc() {
|
||||
return ibase_fetch_assoc($this->_result);
|
||||
}
|
||||
|
||||
function fetch_row() {
|
||||
return ibase_fetch_row($this->_result);
|
||||
}
|
||||
|
||||
function fetch_field() {
|
||||
$field = ibase_field_info($this->_result, $this->_offset++);
|
||||
return (object) array(
|
||||
'name' => $field['name'],
|
||||
'orgname' => $field['name'],
|
||||
'type' => $field['type'],
|
||||
'charsetnr' => $field['length'],
|
||||
);
|
||||
}
|
||||
|
||||
function __destruct() {
|
||||
ibase_free_result($this->_result);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
class Min_Driver extends Min_SQL {
|
||||
}
|
||||
|
||||
|
||||
|
||||
function idf_escape($idf) {
|
||||
return '"' . str_replace('"', '""', $idf) . '"';
|
||||
}
|
||||
|
||||
function table($idf) {
|
||||
return idf_escape($idf);
|
||||
}
|
||||
|
||||
function connect() {
|
||||
global $adminer;
|
||||
$connection = new Min_DB;
|
||||
$credentials = $adminer->credentials();
|
||||
if ($connection->connect($credentials[0], $credentials[1], $credentials[2])) {
|
||||
return $connection;
|
||||
}
|
||||
return $connection->error;
|
||||
}
|
||||
|
||||
function get_databases($flush) {
|
||||
return array("domain");
|
||||
}
|
||||
|
||||
function limit($query, $where, $limit, $offset = 0, $separator = " ") {
|
||||
$return = '';
|
||||
$return .= ($limit !== null ? $separator . "FIRST $limit" . ($offset ? " SKIP $offset" : "") : "");
|
||||
$return .= " $query$where";
|
||||
return $return;
|
||||
}
|
||||
|
||||
function limit1($query, $where) {
|
||||
return limit($query, $where, 1);
|
||||
}
|
||||
|
||||
function db_collation($db, $collations) {
|
||||
}
|
||||
|
||||
function engines() {
|
||||
return array();
|
||||
}
|
||||
|
||||
function logged_user() {
|
||||
global $adminer;
|
||||
$credentials = $adminer->credentials();
|
||||
return $credentials[1];
|
||||
}
|
||||
|
||||
function tables_list() {
|
||||
global $connection;
|
||||
$query = 'SELECT RDB$RELATION_NAME FROM rdb$relations WHERE rdb$system_flag = 0';
|
||||
$result = ibase_query($connection->_link, $query);
|
||||
$return = array();
|
||||
while ($row = ibase_fetch_assoc($result)) {
|
||||
$return[$row['RDB$RELATION_NAME']] = 'table';
|
||||
}
|
||||
ksort($return);
|
||||
return $return;
|
||||
}
|
||||
|
||||
function count_tables($databases) {
|
||||
return array();
|
||||
}
|
||||
|
||||
function table_status($name = "", $fast = false) {
|
||||
global $connection;
|
||||
$return = array();
|
||||
$data = tables_list();
|
||||
foreach ($data as $index => $val) {
|
||||
$index = trim($index);
|
||||
$return[$index] = array(
|
||||
'Name' => $index,
|
||||
'Engine' => 'standard',
|
||||
);
|
||||
if ($name == $index) {
|
||||
return $return[$index];
|
||||
}
|
||||
}
|
||||
return $return;
|
||||
}
|
||||
|
||||
function is_view($table_status) {
|
||||
return false;
|
||||
}
|
||||
|
||||
function fk_support($table_status) {
|
||||
return preg_match('~InnoDB|IBMDB2I~i', $table_status["Engine"]);
|
||||
}
|
||||
|
||||
function fields($table) {
|
||||
global $connection;
|
||||
$return = array();
|
||||
$query = 'SELECT r.RDB$FIELD_NAME AS field_name,
|
||||
r.RDB$DESCRIPTION AS field_description,
|
||||
r.RDB$DEFAULT_VALUE AS field_default_value,
|
||||
r.RDB$NULL_FLAG AS field_not_null_constraint,
|
||||
f.RDB$FIELD_LENGTH AS field_length,
|
||||
f.RDB$FIELD_PRECISION AS field_precision,
|
||||
f.RDB$FIELD_SCALE AS field_scale,
|
||||
CASE f.RDB$FIELD_TYPE
|
||||
WHEN 261 THEN \'BLOB\'
|
||||
WHEN 14 THEN \'CHAR\'
|
||||
WHEN 40 THEN \'CSTRING\'
|
||||
WHEN 11 THEN \'D_FLOAT\'
|
||||
WHEN 27 THEN \'DOUBLE\'
|
||||
WHEN 10 THEN \'FLOAT\'
|
||||
WHEN 16 THEN \'INT64\'
|
||||
WHEN 8 THEN \'INTEGER\'
|
||||
WHEN 9 THEN \'QUAD\'
|
||||
WHEN 7 THEN \'SMALLINT\'
|
||||
WHEN 12 THEN \'DATE\'
|
||||
WHEN 13 THEN \'TIME\'
|
||||
WHEN 35 THEN \'TIMESTAMP\'
|
||||
WHEN 37 THEN \'VARCHAR\'
|
||||
ELSE \'UNKNOWN\'
|
||||
END AS field_type,
|
||||
f.RDB$FIELD_SUB_TYPE AS field_subtype,
|
||||
coll.RDB$COLLATION_NAME AS field_collation,
|
||||
cset.RDB$CHARACTER_SET_NAME AS field_charset
|
||||
FROM RDB$RELATION_FIELDS r
|
||||
LEFT JOIN RDB$FIELDS f ON r.RDB$FIELD_SOURCE = f.RDB$FIELD_NAME
|
||||
LEFT JOIN RDB$COLLATIONS coll ON f.RDB$COLLATION_ID = coll.RDB$COLLATION_ID
|
||||
LEFT JOIN RDB$CHARACTER_SETS cset ON f.RDB$CHARACTER_SET_ID = cset.RDB$CHARACTER_SET_ID
|
||||
WHERE r.RDB$RELATION_NAME = ' . q($table) . '
|
||||
ORDER BY r.RDB$FIELD_POSITION';
|
||||
$result = ibase_query($connection->_link, $query);
|
||||
while ($row = ibase_fetch_assoc($result)) {
|
||||
$return[trim($row['FIELD_NAME'])] = array(
|
||||
"field" => trim($row["FIELD_NAME"]),
|
||||
"full_type" => trim($row["FIELD_TYPE"]),
|
||||
"type" => trim($row["FIELD_SUB_TYPE"]),
|
||||
"default" => trim($row['FIELD_DEFAULT_VALUE']),
|
||||
"null" => (trim($row["FIELD_NOT_NULL_CONSTRAINT"]) == "YES"),
|
||||
"auto_increment" => '0',
|
||||
"collation" => trim($row["FIELD_COLLATION"]),
|
||||
"privileges" => array("insert" => 1, "select" => 1, "update" => 1),
|
||||
"comment" => trim($row["FIELD_DESCRIPTION"]),
|
||||
);
|
||||
}
|
||||
return $return;
|
||||
}
|
||||
|
||||
function indexes($table, $connection2 = null) {
|
||||
$return = array();
|
||||
/*
|
||||
$query = 'SELECT RDB$INDEX_SEGMENTS.RDB$FIELD_NAME AS field_name,
|
||||
RDB$INDICES.RDB$DESCRIPTION AS description,
|
||||
(RDB$INDEX_SEGMENTS.RDB$FIELD_POSITION + 1) AS field_position
|
||||
FROM RDB$INDEX_SEGMENTS
|
||||
LEFT JOIN RDB$INDICES ON RDB$INDICES.RDB$INDEX_NAME = RDB$INDEX_SEGMENTS.RDB$INDEX_NAME
|
||||
LEFT JOIN RDB$RELATION_CONSTRAINTS ON RDB$RELATION_CONSTRAINTS.RDB$INDEX_NAME = RDB$INDEX_SEGMENTS.RDB$INDEX_NAME
|
||||
WHERE UPPER(RDB$INDICES.RDB$RELATION_NAME) = ' . q($table) . '
|
||||
// AND UPPER(RDB$INDICES.RDB$INDEX_NAME) = \'TEST2_FIELD5_IDX\'
|
||||
AND RDB$RELATION_CONSTRAINTS.RDB$CONSTRAINT_TYPE IS NULL
|
||||
ORDER BY RDB$INDEX_SEGMENTS.RDB$FIELD_POSITION';
|
||||
*/
|
||||
return $return;
|
||||
}
|
||||
|
||||
function foreign_keys($table) {
|
||||
return array();
|
||||
}
|
||||
|
||||
function collations() {
|
||||
return array();
|
||||
}
|
||||
|
||||
function information_schema($db) {
|
||||
return false;
|
||||
}
|
||||
|
||||
function error() {
|
||||
global $connection;
|
||||
return h($connection->error);
|
||||
}
|
||||
|
||||
function types() {
|
||||
return array();
|
||||
}
|
||||
|
||||
function schemas() {
|
||||
return array();
|
||||
}
|
||||
|
||||
function get_schema() {
|
||||
return "";
|
||||
}
|
||||
|
||||
function set_schema($schema) {
|
||||
return true;
|
||||
}
|
||||
|
||||
function support($feature) {
|
||||
return preg_match("~^(columns|sql|status|table)$~", $feature);
|
||||
}
|
||||
|
||||
$jush = "firebird";
|
||||
$operators = array("=");
|
||||
$functions = array();
|
||||
$grouping = array();
|
||||
$edit_functions = array();
|
||||
}
|
||||
@@ -52,7 +52,7 @@ if (isset($_GET["mongo"])) {
|
||||
class Min_Result {
|
||||
var $num_rows, $_rows = array(), $_offset = 0, $_charset = array();
|
||||
|
||||
function Min_Result($result) {
|
||||
function __construct($result) {
|
||||
foreach ($result as $item) {
|
||||
$row = array();
|
||||
foreach ($item as $key => $val) {
|
||||
@@ -116,10 +116,6 @@ if (isset($_GET["mongo"])) {
|
||||
class Min_Driver extends Min_SQL {
|
||||
public $primary = "_id";
|
||||
|
||||
function quote($value) {
|
||||
return ($value === null ? $value : parent::quote($value));
|
||||
}
|
||||
|
||||
function select($table, $select, $where, $group, $order = array(), $limit = 1, $page = 0, $print = false) {
|
||||
$select = ($select == array("*")
|
||||
? array()
|
||||
@@ -130,12 +126,12 @@ if (isset($_GET["mongo"])) {
|
||||
$val = preg_replace('~ DESC$~', '', $val, 1, $count);
|
||||
$sort[$val] = ($count ? -1 : 1);
|
||||
}
|
||||
return new Min_Result(iterator_to_array($this->_conn->_db->selectCollection($table)
|
||||
return new Min_Result($this->_conn->_db->selectCollection($table)
|
||||
->find(array(), $select)
|
||||
->sort($sort)
|
||||
->limit(+$limit)
|
||||
->skip($page * $limit)
|
||||
));
|
||||
);
|
||||
}
|
||||
|
||||
function insert($table, $set) {
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
$drivers["mssql"] = "MS SQL";
|
||||
|
||||
if (isset($_GET["mssql"])) {
|
||||
$possible_drivers = array("SQLSRV", "MSSQL");
|
||||
$possible_drivers = array("SQLSRV", "MSSQL", "PDO_DBLIB");
|
||||
define("DRIVER", "mssql");
|
||||
if (extension_loaded("sqlsrv")) {
|
||||
class Min_DB {
|
||||
@@ -66,6 +66,9 @@ if (isset($_GET["mssql"])) {
|
||||
if (!$result) {
|
||||
$result = $this->_result;
|
||||
}
|
||||
if (!$result) {
|
||||
return false;
|
||||
}
|
||||
if (sqlsrv_field_metadata($result)) {
|
||||
return new Min_Result($result);
|
||||
}
|
||||
@@ -74,7 +77,7 @@ if (isset($_GET["mssql"])) {
|
||||
}
|
||||
|
||||
function next_result() {
|
||||
return sqlsrv_next_result($this->_result);
|
||||
return $this->_result ? sqlsrv_next_result($this->_result) : null;
|
||||
}
|
||||
|
||||
function result($query, $field = 0) {
|
||||
@@ -90,7 +93,7 @@ if (isset($_GET["mssql"])) {
|
||||
class Min_Result {
|
||||
var $_result, $_offset = 0, $_fields, $num_rows;
|
||||
|
||||
function Min_Result($result) {
|
||||
function __construct($result) {
|
||||
$this->_result = $result;
|
||||
// $this->num_rows = sqlsrv_num_rows($result); // available only in scrollable results
|
||||
}
|
||||
@@ -106,11 +109,11 @@ if (isset($_GET["mssql"])) {
|
||||
}
|
||||
|
||||
function fetch_assoc() {
|
||||
return $this->_convert(sqlsrv_fetch_array($this->_result, SQLSRV_FETCH_ASSOC, SQLSRV_SCROLL_NEXT));
|
||||
return $this->_convert(sqlsrv_fetch_array($this->_result, SQLSRV_FETCH_ASSOC));
|
||||
}
|
||||
|
||||
function fetch_row() {
|
||||
return $this->_convert(sqlsrv_fetch_array($this->_result, SQLSRV_FETCH_NUMERIC, SQLSRV_SCROLL_NEXT));
|
||||
return $this->_convert(sqlsrv_fetch_array($this->_result, SQLSRV_FETCH_NUMERIC));
|
||||
}
|
||||
|
||||
function fetch_field() {
|
||||
@@ -161,7 +164,7 @@ if (isset($_GET["mssql"])) {
|
||||
}
|
||||
|
||||
function query($query, $unbuffered = false) {
|
||||
$result = mssql_query($query, $this->_link); //! $unbuffered
|
||||
$result = @mssql_query($query, $this->_link); //! $unbuffered
|
||||
$this->error = "";
|
||||
if (!$result) {
|
||||
$this->error = mssql_get_last_message();
|
||||
@@ -183,7 +186,7 @@ if (isset($_GET["mssql"])) {
|
||||
}
|
||||
|
||||
function next_result() {
|
||||
return mssql_next_result($this->_result);
|
||||
return mssql_next_result($this->_result->_result);
|
||||
}
|
||||
|
||||
function result($query, $field = 0) {
|
||||
@@ -198,7 +201,7 @@ if (isset($_GET["mssql"])) {
|
||||
class Min_Result {
|
||||
var $_result, $_offset = 0, $_fields, $num_rows;
|
||||
|
||||
function Min_Result($result) {
|
||||
function __construct($result) {
|
||||
$this->_result = $result;
|
||||
$this->num_rows = mssql_num_rows($result);
|
||||
}
|
||||
@@ -231,8 +234,21 @@ if (isset($_GET["mssql"])) {
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
} elseif (extension_loaded("pdo_dblib")) {
|
||||
class Min_DB extends Min_PDO {
|
||||
var $extension = "PDO_DBLIB";
|
||||
|
||||
function connect($server, $username, $password) {
|
||||
$this->dsn("dblib:charset=utf8;host=" . str_replace(":", ";unix_socket=", preg_replace('~:(\\d)~', ';port=\\1', $server)), $username, $password);
|
||||
return true;
|
||||
}
|
||||
|
||||
function select_db($database) {
|
||||
// database selection is separated from the connection so dbname in DSN can't be used
|
||||
return $this->query("USE " . idf_escape($database));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
class Min_Driver extends Min_SQL {
|
||||
@@ -285,7 +301,7 @@ if (isset($_GET["mssql"])) {
|
||||
}
|
||||
|
||||
function get_databases() {
|
||||
return get_vals("EXEC sp_databases");
|
||||
return get_vals("SELECT name FROM sys.databases WHERE name NOT IN ('master', 'tempdb', 'model', 'msdb')");
|
||||
}
|
||||
|
||||
function limit($query, $where, $limit, $offset = 0, $separator = " ") {
|
||||
@@ -427,7 +443,7 @@ WHERE OBJECT_NAME(i.object_id) = " . q($table)
|
||||
}
|
||||
|
||||
function auto_increment() {
|
||||
return " IDENTITY" . ($_POST["Auto_increment"] != "" ? "(" . (+$_POST["Auto_increment"]) . ",1)" : "") . " PRIMARY KEY";
|
||||
return " IDENTITY" . ($_POST["Auto_increment"] != "" ? "(" . number($_POST["Auto_increment"]) . ",1)" : "") . " PRIMARY KEY";
|
||||
}
|
||||
|
||||
function alter_table($table, $name, $fields, $foreign, $comment, $engine, $collation, $auto_increment, $partitioning) {
|
||||
@@ -567,6 +583,7 @@ WHERE sys1.xtype = 'TR' AND sys2.name = " . q($table)
|
||||
function trigger_options() {
|
||||
return array(
|
||||
"Timing" => array("AFTER", "INSTEAD OF"),
|
||||
"Event" => array("INSERT", "UPDATE", "DELETE"),
|
||||
"Type" => array("AS"),
|
||||
);
|
||||
}
|
||||
|
||||
@@ -9,31 +9,33 @@ if (!defined("DRIVER")) {
|
||||
class Min_DB extends MySQLi {
|
||||
var $extension = "MySQLi";
|
||||
|
||||
function Min_DB() {
|
||||
function __construct() {
|
||||
parent::init();
|
||||
}
|
||||
|
||||
function connect($server, $username, $password) {
|
||||
function connect($server = "", $username = "", $password = "", $database = null, $port = null, $socket = null) {
|
||||
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
|
||||
$return = @$this->real_connect(
|
||||
($server != "" ? $host : ini_get("mysqli.default_host")),
|
||||
($server . $username != "" ? $username : ini_get("mysqli.default_user")),
|
||||
($server . $username . $password != "" ? $password : ini_get("mysqli.default_pw")),
|
||||
null,
|
||||
$database,
|
||||
(is_numeric($port) ? $port : ini_get("mysqli.default_port")),
|
||||
(!is_numeric($port) ? $port : null)
|
||||
(!is_numeric($port) ? $port : $socket)
|
||||
);
|
||||
if ($return) {
|
||||
if (method_exists($this, 'set_charset')) {
|
||||
$this->set_charset("utf8");
|
||||
} else {
|
||||
$this->query("SET NAMES utf8");
|
||||
}
|
||||
}
|
||||
return $return;
|
||||
}
|
||||
|
||||
function set_charset($charset) {
|
||||
if (parent::set_charset($charset)) {
|
||||
return true;
|
||||
}
|
||||
// the client library may not support utf8mb4
|
||||
parent::set_charset('utf8');
|
||||
return $this->query("SET NAMES $charset");
|
||||
}
|
||||
|
||||
function result($query, $field = 0) {
|
||||
$result = $this->query($query);
|
||||
if (!$result) {
|
||||
@@ -42,7 +44,7 @@ if (!defined("DRIVER")) {
|
||||
$row = $result->fetch_array();
|
||||
return $row[$field];
|
||||
}
|
||||
|
||||
|
||||
function quote($string) {
|
||||
return "'" . $this->escape_string($string) . "'";
|
||||
}
|
||||
@@ -75,17 +77,27 @@ if (!defined("DRIVER")) {
|
||||
);
|
||||
if ($this->_link) {
|
||||
$this->server_info = mysql_get_server_info($this->_link);
|
||||
if (function_exists('mysql_set_charset')) {
|
||||
mysql_set_charset("utf8", $this->_link);
|
||||
} else {
|
||||
$this->query("SET NAMES utf8");
|
||||
}
|
||||
} else {
|
||||
$this->error = mysql_error();
|
||||
}
|
||||
return (bool) $this->_link;
|
||||
}
|
||||
|
||||
/** Sets the client character set
|
||||
* @param string
|
||||
* @return bool
|
||||
*/
|
||||
function set_charset($charset) {
|
||||
if (function_exists('mysql_set_charset')) {
|
||||
if (mysql_set_charset($charset, $this->_link)) {
|
||||
return true;
|
||||
}
|
||||
// the client library may not support utf8mb4
|
||||
mysql_set_charset('utf8', $this->_link);
|
||||
}
|
||||
return $this->query("SET NAMES $charset");
|
||||
}
|
||||
|
||||
/** Quote string to use in SQL
|
||||
* @param string
|
||||
* @return string escaped string enclosed in '
|
||||
@@ -169,7 +181,7 @@ if (!defined("DRIVER")) {
|
||||
/** Constructor
|
||||
* @param resource
|
||||
*/
|
||||
function Min_Result($result) {
|
||||
function __construct($result) {
|
||||
$this->_result = $result;
|
||||
$this->num_rows = mysql_num_rows($result);
|
||||
}
|
||||
@@ -212,10 +224,13 @@ if (!defined("DRIVER")) {
|
||||
|
||||
function connect($server, $username, $password) {
|
||||
$this->dsn("mysql:charset=utf8;host=" . str_replace(":", ";unix_socket=", preg_replace('~:(\\d)~', ';port=\\1', $server)), $username, $password);
|
||||
$this->query("SET NAMES utf8"); // charset in DSN is ignored before PHP 5.3.6
|
||||
return true;
|
||||
}
|
||||
|
||||
function set_charset($charset) {
|
||||
$this->query("SET NAMES $charset"); // charset in DSN is ignored before PHP 5.3.6
|
||||
}
|
||||
|
||||
function select_db($database) {
|
||||
// database selection is separated from the connection so dbname in DSN can't be used
|
||||
return $this->query("USE " . idf_escape($database));
|
||||
@@ -286,11 +301,16 @@ if (!defined("DRIVER")) {
|
||||
* @return mixed Min_DB or string for error
|
||||
*/
|
||||
function connect() {
|
||||
global $adminer;
|
||||
global $adminer, $types, $structured_types;
|
||||
$connection = new Min_DB;
|
||||
$credentials = $adminer->credentials();
|
||||
if ($connection->connect($credentials[0], $credentials[1], $credentials[2])) {
|
||||
$connection->set_charset(charset($connection)); // available in MySQLi since PHP 5.0.5
|
||||
$connection->query("SET sql_quote_show_create = 1, autocommit = 1");
|
||||
if (version_compare($connection->server_info, '5.7.8') >= 0) {
|
||||
$structured_types[lang('Strings')][] = "json";
|
||||
$types["json"] = 4294967295;
|
||||
}
|
||||
return $connection;
|
||||
}
|
||||
$return = $connection->error;
|
||||
@@ -413,7 +433,7 @@ if (!defined("DRIVER")) {
|
||||
global $connection;
|
||||
$return = array();
|
||||
foreach (get_rows($fast && $connection->server_info >= 5
|
||||
? "SELECT TABLE_NAME AS Name, Engine, TABLE_COMMENT AS Comment FROM information_schema.TABLES WHERE TABLE_SCHEMA = DATABASE() " . ($name != "" ? "AND TABLE_NAME = " . q($name) : "ORDER BY Name")
|
||||
? "SELECT TABLE_NAME AS Name, ENGINE AS Engine, TABLE_COMMENT AS Comment FROM information_schema.TABLES WHERE TABLE_SCHEMA = DATABASE() " . ($name != "" ? "AND TABLE_NAME = " . q($name) : "ORDER BY Name")
|
||||
: "SHOW TABLE STATUS" . ($name != "" ? " LIKE " . q(addcslashes($name, "%_\\")) : "")
|
||||
) as $row) {
|
||||
if ($row["Engine"] == "InnoDB") {
|
||||
@@ -444,7 +464,9 @@ if (!defined("DRIVER")) {
|
||||
* @return bool
|
||||
*/
|
||||
function fk_support($table_status) {
|
||||
return preg_match('~InnoDB|IBMDB2I~i', $table_status["Engine"]);
|
||||
global $connection;
|
||||
return preg_match('~InnoDB|IBMDB2I~i', $table_status["Engine"])
|
||||
|| (preg_match('~NDB~i', $table_status["Engine"]) && version_compare($connection->server_info, '5.6') >= 0);
|
||||
}
|
||||
|
||||
/** Get information about fields
|
||||
@@ -482,10 +504,11 @@ if (!defined("DRIVER")) {
|
||||
function indexes($table, $connection2 = null) {
|
||||
$return = array();
|
||||
foreach (get_rows("SHOW INDEX FROM " . table($table), $connection2) as $row) {
|
||||
$return[$row["Key_name"]]["type"] = ($row["Key_name"] == "PRIMARY" ? "PRIMARY" : ($row["Index_type"] == "FULLTEXT" ? "FULLTEXT" : ($row["Non_unique"] ? "INDEX" : "UNIQUE")));
|
||||
$return[$row["Key_name"]]["columns"][] = $row["Column_name"];
|
||||
$return[$row["Key_name"]]["lengths"][] = $row["Sub_part"];
|
||||
$return[$row["Key_name"]]["descs"][] = null;
|
||||
$name = $row["Key_name"];
|
||||
$return[$name]["type"] = ($name == "PRIMARY" ? "PRIMARY" : ($row["Index_type"] == "FULLTEXT" ? "FULLTEXT" : ($row["Non_unique"] ? ($row["Index_type"] == "SPATIAL" ? "SPATIAL" : "INDEX") : "UNIQUE")));
|
||||
$return[$name]["columns"][] = $row["Column_name"];
|
||||
$return[$name]["lengths"][] = ($row["Index_type"] == "SPATIAL" ? null : $row["Sub_part"]);
|
||||
$return[$name]["descs"][] = null;
|
||||
}
|
||||
return $return;
|
||||
}
|
||||
@@ -500,7 +523,7 @@ if (!defined("DRIVER")) {
|
||||
$return = array();
|
||||
$create_table = $connection->result("SHOW CREATE TABLE " . table($table), 1);
|
||||
if ($create_table) {
|
||||
preg_match_all("~CONSTRAINT ($pattern) FOREIGN KEY \\(((?:$pattern,? ?)+)\\) REFERENCES ($pattern)(?:\\.($pattern))? \\(((?:$pattern,? ?)+)\\)(?: ON DELETE ($on_actions))?(?: ON UPDATE ($on_actions))?~", $create_table, $matches, PREG_SET_ORDER);
|
||||
preg_match_all("~CONSTRAINT ($pattern) FOREIGN KEY ?\\(((?:$pattern,? ?)+)\\) REFERENCES ($pattern)(?:\\.($pattern))? \\(((?:$pattern,? ?)+)\\)(?: ON DELETE ($on_actions))?(?: ON UPDATE ($on_actions))?~", $create_table, $matches, PREG_SET_ORDER);
|
||||
foreach ($matches as $match) {
|
||||
preg_match_all("~$pattern~", $match[2], $source);
|
||||
preg_match_all("~$pattern~", $match[5], $target);
|
||||
@@ -563,23 +586,12 @@ if (!defined("DRIVER")) {
|
||||
return h(preg_replace('~^You have an error.*syntax to use~U', "Syntax error", $connection->error));
|
||||
}
|
||||
|
||||
/** Get line of error
|
||||
* @return int 0 for first line
|
||||
*/
|
||||
function error_line() {
|
||||
global $connection;
|
||||
if (preg_match('~ at line ([0-9]+)$~', $connection->error, $regs)) {
|
||||
return $regs[1] - 1;
|
||||
}
|
||||
}
|
||||
|
||||
/** Create database
|
||||
* @param string
|
||||
* @param string
|
||||
* @return string
|
||||
*/
|
||||
function create_database($db, $collation) {
|
||||
set_session("dbs", null);
|
||||
return queries("CREATE DATABASE " . idf_escape($db) . ($collation ? " COLLATE " . q($collation) : ""));
|
||||
}
|
||||
|
||||
@@ -588,9 +600,10 @@ if (!defined("DRIVER")) {
|
||||
* @return bool
|
||||
*/
|
||||
function drop_databases($databases) {
|
||||
$return = apply_queries("DROP DATABASE", $databases, 'idf_escape');
|
||||
restart_session();
|
||||
set_session("dbs", null);
|
||||
return apply_queries("DROP DATABASE", $databases, 'idf_escape');
|
||||
return $return;
|
||||
}
|
||||
|
||||
/** Rename database from DB
|
||||
@@ -599,18 +612,21 @@ if (!defined("DRIVER")) {
|
||||
* @return bool
|
||||
*/
|
||||
function rename_database($name, $collation) {
|
||||
$return = false;
|
||||
if (create_database($name, $collation)) {
|
||||
//! move triggers
|
||||
$rename = array();
|
||||
foreach (tables_list() as $table => $type) {
|
||||
$rename[] = table($table) . " TO " . idf_escape($name) . "." . table($table);
|
||||
}
|
||||
if (!$rename || queries("RENAME TABLE " . implode(", ", $rename))) {
|
||||
$return = (!$rename || queries("RENAME TABLE " . implode(", ", $rename)));
|
||||
if ($return) {
|
||||
queries("DROP DATABASE " . idf_escape(DB));
|
||||
return true;
|
||||
}
|
||||
restart_session();
|
||||
set_session("dbs", null);
|
||||
}
|
||||
return false;
|
||||
return $return;
|
||||
}
|
||||
|
||||
/** Generate modifier for auto increment column
|
||||
@@ -641,7 +657,7 @@ if (!defined("DRIVER")) {
|
||||
* @param string
|
||||
* @param string
|
||||
* @param string
|
||||
* @param int
|
||||
* @param string number
|
||||
* @param string
|
||||
* @return bool
|
||||
*/
|
||||
@@ -654,20 +670,21 @@ if (!defined("DRIVER")) {
|
||||
);
|
||||
}
|
||||
$alter = array_merge($alter, $foreign);
|
||||
$status = "COMMENT=" . q($comment)
|
||||
$status = ($comment !== null ? " COMMENT=" . q($comment) : "")
|
||||
. ($engine ? " ENGINE=" . q($engine) : "")
|
||||
. ($collation ? " COLLATE " . q($collation) : "")
|
||||
. ($auto_increment != "" ? " AUTO_INCREMENT=$auto_increment" : "")
|
||||
. $partitioning
|
||||
;
|
||||
if ($table == "") {
|
||||
return queries("CREATE TABLE " . table($name) . " (\n" . implode(",\n", $alter) . "\n) $status");
|
||||
return queries("CREATE TABLE " . table($name) . " (\n" . implode(",\n", $alter) . "\n)$status$partitioning");
|
||||
}
|
||||
if ($table != $name) {
|
||||
$alter[] = "RENAME TO " . table($name);
|
||||
}
|
||||
$alter[] = $status;
|
||||
return queries("ALTER TABLE " . table($table) . "\n" . implode(",\n", $alter));
|
||||
if ($status) {
|
||||
$alter[] = ltrim($status);
|
||||
}
|
||||
return ($alter || $partitioning ? queries("ALTER TABLE " . table($table) . "\n" . implode(",\n", $alter) . $partitioning) : true);
|
||||
}
|
||||
|
||||
/** Run commands to alter indexes
|
||||
@@ -734,7 +751,7 @@ if (!defined("DRIVER")) {
|
||||
queries("SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO'");
|
||||
foreach ($tables as $table) {
|
||||
$name = ($target == DB ? table("copy_$table") : idf_escape($target) . "." . table($table));
|
||||
if (!queries("DROP TABLE IF EXISTS $name")
|
||||
if (!queries("\nDROP TABLE IF EXISTS $name")
|
||||
|| !queries("CREATE TABLE $name LIKE " . table($table))
|
||||
|| !queries("INSERT INTO $name SELECT * FROM " . table($table))
|
||||
) {
|
||||
@@ -755,7 +772,7 @@ if (!defined("DRIVER")) {
|
||||
|
||||
/** Get information about trigger
|
||||
* @param string trigger name
|
||||
* @return array array("Trigger" => , "Timing" => , "Event" => , "Type" => , "Statement" => )
|
||||
* @return array array("Trigger" => , "Timing" => , "Event" => , "Of" => , "Type" => , "Statement" => )
|
||||
*/
|
||||
function trigger($name) {
|
||||
if ($name == "") {
|
||||
@@ -778,12 +795,12 @@ if (!defined("DRIVER")) {
|
||||
}
|
||||
|
||||
/** Get trigger options
|
||||
* @return array ("Timing" => array(), "Type" => array())
|
||||
* @return array ("Timing" => array(), "Event" => array(), "Type" => array())
|
||||
*/
|
||||
function trigger_options() {
|
||||
return array(
|
||||
"Timing" => array("BEFORE", "AFTER"),
|
||||
// Event is always INSERT, UPDATE, DELETE
|
||||
"Event" => array("INSERT", "UPDATE", "DELETE"),
|
||||
"Type" => array("FOR EACH ROW"),
|
||||
);
|
||||
}
|
||||
@@ -796,7 +813,7 @@ if (!defined("DRIVER")) {
|
||||
function routine($name, $type) {
|
||||
global $connection, $enum_length, $inout, $types;
|
||||
$aliases = array("bool", "boolean", "integer", "double precision", "real", "dec", "numeric", "fixed", "national char", "national varchar");
|
||||
$type_pattern = "((" . implode("|", array_merge(array_keys($types), $aliases)) . ")\\b(?:\\s*\\(((?:[^'\")]*|$enum_length)++)\\))?\\s*(zerofill\\s*)?(unsigned(?:\\s+zerofill)?)?)(?:\\s*(?:CHARSET|CHARACTER\\s+SET)\\s*['\"]?([^'\"\\s]+)['\"]?)?";
|
||||
$type_pattern = "((" . implode("|", array_merge(array_keys($types), $aliases)) . ")\\b(?:\\s*\\(((?:[^'\")]|$enum_length)++)\\))?\\s*(zerofill\\s*)?(unsigned(?:\\s+zerofill)?)?)(?:\\s*(?:CHARSET|CHARACTER\\s+SET)\\s*['\"]?([^'\"\\s,]+)['\"]?)?";
|
||||
$pattern = "\\s*(" . ($type == "FUNCTION" ? "" : $inout) . ")?\\s*(?:`((?:[^`]|``)*)`\\s*|\\b(\\S+)\\s+)$type_pattern";
|
||||
$create = $connection->result("SHOW CREATE $type " . idf_escape($name), 2);
|
||||
preg_match("~\\(((?:$pattern\\s*,?)*)\\)\\s*" . ($type == "FUNCTION" ? "RETURNS\\s+$type_pattern\\s+" : "") . "(.*)~is", $create, $match);
|
||||
@@ -960,6 +977,14 @@ if (!defined("DRIVER")) {
|
||||
return get_key_vals("SHOW STATUS");
|
||||
}
|
||||
|
||||
/** Get replication status of master or slave
|
||||
* @param string
|
||||
* @return array ($name => $value)
|
||||
*/
|
||||
function replication_status($type) {
|
||||
return get_rows("SHOW $type STATUS");
|
||||
}
|
||||
|
||||
/** Convert field in select and edit
|
||||
* @param array one element from fields()
|
||||
* @return string
|
||||
@@ -995,12 +1020,25 @@ if (!defined("DRIVER")) {
|
||||
}
|
||||
|
||||
/** Check whether a feature is supported
|
||||
* @param string "comment", "copy", "database", "drop_col", "dump", "event", "kill", "partitioning", "privileges", "procedure", "processlist", "routine", "scheme", "sequence", "status", "table", "trigger", "type", "variables", "view", "view_trigger"
|
||||
* @param string "comment", "copy", "database", "drop_col", "dump", "event", "kill", "materializedview", "partitioning", "privileges", "procedure", "processlist", "routine", "scheme", "sequence", "status", "table", "trigger", "type", "variables", "view", "view_trigger"
|
||||
* @return bool
|
||||
*/
|
||||
function support($feature) {
|
||||
global $connection;
|
||||
return !preg_match("~scheme|sequence|type|view_trigger" . ($connection->server_info < 5.1 ? "|event|partitioning" . ($connection->server_info < 5 ? "|routine|trigger|view" : "") : "") . "~", $feature);
|
||||
return !preg_match("~scheme|sequence|type|view_trigger|materializedview" . ($connection->server_info < 5.1 ? "|event|partitioning" . ($connection->server_info < 5 ? "|routine|trigger|view" : "") : "") . "~", $feature);
|
||||
}
|
||||
|
||||
function kill_process($val) {
|
||||
return queries("KILL " . number($val));
|
||||
}
|
||||
|
||||
function connection_id(){
|
||||
return "SELECT CONNECTION_ID()";
|
||||
}
|
||||
|
||||
function max_connections() {
|
||||
global $connection;
|
||||
return $connection->result("SELECT @@max_connections");
|
||||
}
|
||||
|
||||
$jush = "sql"; ///< @var string JUSH identifier
|
||||
|
||||
@@ -80,7 +80,7 @@ if (isset($_GET["oracle"])) {
|
||||
class Min_Result {
|
||||
var $_result, $_offset = 1, $num_rows;
|
||||
|
||||
function Min_Result($result) {
|
||||
function __construct($result) {
|
||||
$this->_result = $result;
|
||||
}
|
||||
|
||||
@@ -317,7 +317,29 @@ ORDER BY uc.constraint_type, uic.column_position", $connection2) as $row) {
|
||||
}
|
||||
|
||||
function foreign_keys($table) {
|
||||
return array(); //!
|
||||
$return = array();
|
||||
$query = "SELECT c_list.CONSTRAINT_NAME as NAME,
|
||||
c_src.COLUMN_NAME as SRC_COLUMN,
|
||||
c_dest.OWNER as DEST_DB,
|
||||
c_dest.TABLE_NAME as DEST_TABLE,
|
||||
c_dest.COLUMN_NAME as DEST_COLUMN,
|
||||
c_list.DELETE_RULE as ON_DELETE
|
||||
FROM ALL_CONSTRAINTS c_list, ALL_CONS_COLUMNS c_src, ALL_CONS_COLUMNS c_dest
|
||||
WHERE c_list.CONSTRAINT_NAME = c_src.CONSTRAINT_NAME
|
||||
AND c_list.R_CONSTRAINT_NAME = c_dest.CONSTRAINT_NAME
|
||||
AND c_list.CONSTRAINT_TYPE = 'R'
|
||||
AND c_src.TABLE_NAME = " . q($table);
|
||||
foreach (get_rows($query) as $row) {
|
||||
$return[$row['NAME']] = array(
|
||||
"db" => $row['DEST_DB'],
|
||||
"table" => $row['DEST_TABLE'],
|
||||
"source" => array($row['SRC_COLUMN']),
|
||||
"target" => array($row['DEST_COLUMN']),
|
||||
"on_delete" => $row['ON_DELETE'],
|
||||
"on_update" => null,
|
||||
);
|
||||
}
|
||||
return $return;
|
||||
}
|
||||
|
||||
function truncate_tables($tables) {
|
||||
|
||||
@@ -94,7 +94,7 @@ if (isset($_GET["pgsql"])) {
|
||||
class Min_Result {
|
||||
var $_result, $_offset = 0, $num_rows;
|
||||
|
||||
function Min_Result($result) {
|
||||
function __construct($result) {
|
||||
$this->_result = $result;
|
||||
$this->num_rows = pg_num_rows($result);
|
||||
}
|
||||
@@ -186,12 +186,20 @@ if (isset($_GET["pgsql"])) {
|
||||
}
|
||||
|
||||
function connect() {
|
||||
global $adminer;
|
||||
global $adminer, $types, $structured_types;
|
||||
$connection = new Min_DB;
|
||||
$credentials = $adminer->credentials();
|
||||
if ($connection->connect($credentials[0], $credentials[1], $credentials[2])) {
|
||||
if ($connection->server_info >= 9) {
|
||||
$connection->query("SET application_name = 'Adminer'");
|
||||
if ($connection->server_info >= 9.2) {
|
||||
$structured_types[lang('Strings')][] = "json";
|
||||
$types["json"] = 4294967295;
|
||||
if ($connection->server_info >= 9.4) {
|
||||
$structured_types[lang('Strings')][] = "jsonb";
|
||||
$types["jsonb"] = 4294967295;
|
||||
}
|
||||
}
|
||||
}
|
||||
return $connection;
|
||||
}
|
||||
@@ -199,7 +207,7 @@ if (isset($_GET["pgsql"])) {
|
||||
}
|
||||
|
||||
function get_databases() {
|
||||
return get_vals("SELECT datname FROM pg_database ORDER BY datname");
|
||||
return get_vals("SELECT datname FROM pg_database WHERE has_database_privilege(datname, 'CONNECT') ORDER BY datname");
|
||||
}
|
||||
|
||||
function limit($query, $where, $limit, $offset = 0, $separator = " ") {
|
||||
@@ -225,7 +233,17 @@ if (isset($_GET["pgsql"])) {
|
||||
}
|
||||
|
||||
function tables_list() {
|
||||
return get_key_vals("SELECT table_name, table_type FROM information_schema.tables WHERE table_schema = current_schema() ORDER BY table_name");
|
||||
$query = "SELECT table_name, table_type FROM information_schema.tables WHERE table_schema = current_schema()";
|
||||
if (support('materializedview')) {
|
||||
$query .= "
|
||||
UNION ALL
|
||||
SELECT matviewname, 'MATERIALIZED VIEW'
|
||||
FROM pg_matviews
|
||||
WHERE schemaname = current_schema()";
|
||||
}
|
||||
$query .= "
|
||||
ORDER BY 1";
|
||||
return get_key_vals($query);
|
||||
}
|
||||
|
||||
function count_tables($databases) {
|
||||
@@ -234,11 +252,11 @@ if (isset($_GET["pgsql"])) {
|
||||
|
||||
function table_status($name = "") {
|
||||
$return = array();
|
||||
foreach (get_rows("SELECT relname AS \"Name\", CASE relkind WHEN 'r' THEN 'table' ELSE 'view' END AS \"Engine\", pg_relation_size(oid) AS \"Data_length\", pg_total_relation_size(oid) - pg_relation_size(oid) AS \"Index_length\", obj_description(oid, 'pg_class') AS \"Comment\", relhasoids::int AS \"Oid\", reltuples as \"Rows\"
|
||||
FROM pg_class
|
||||
WHERE relkind IN ('r','v')
|
||||
AND relnamespace = (SELECT oid FROM pg_namespace WHERE nspname = current_schema())
|
||||
" . ($name != "" ? "AND relname = " . q($name) : "ORDER BY relname")
|
||||
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\", c.relhasoids::int AS \"Oid\", c.reltuples as \"Rows\", n.nspname
|
||||
FROM pg_class c
|
||||
JOIN pg_namespace n ON(n.nspname = current_schema() AND n.oid = c.relnamespace)
|
||||
WHERE relkind IN ('r', 'm', 'v')
|
||||
" . ($name != "" ? "AND relname = " . q($name) : "ORDER BY c.oid")
|
||||
) as $row) { //! Index_length, Auto_increment
|
||||
$return[$row["Name"]] = $row;
|
||||
}
|
||||
@@ -246,7 +264,7 @@ AND relnamespace = (SELECT oid FROM pg_namespace WHERE nspname = current_schema(
|
||||
}
|
||||
|
||||
function is_view($table_status) {
|
||||
return $table_status["Engine"] == "view";
|
||||
return in_array($table_status["Engine"], array("view", "materialized view"));
|
||||
}
|
||||
|
||||
function fk_support($table_status) {
|
||||
@@ -271,11 +289,17 @@ AND a.attnum > 0
|
||||
ORDER BY a.attnum"
|
||||
) as $row) {
|
||||
//! collation, primary
|
||||
preg_match('~([^([]+)(\((.*)\))?((\[[0-9]*])*)$~', $row["full_type"], $match);
|
||||
list(, $type, $length, $row["length"], $array) = $match;
|
||||
preg_match('~([^([]+)(\((.*)\))?([a-z ]+)?((\[[0-9]*])*)$~', $row["full_type"], $match);
|
||||
list(, $type, $length, $row["length"], $addon, $array) = $match;
|
||||
$row["length"] .= $array;
|
||||
$row["type"] = ($aliases[$type] ? $aliases[$type] : $type);
|
||||
$row["full_type"] = $row["type"] . $length . $array;
|
||||
$check_type = $type . $addon;
|
||||
if (isset($aliases[$check_type])) {
|
||||
$row["type"] = $aliases[$check_type];
|
||||
$row["full_type"] = $row["type"] . $length . $array;
|
||||
} else {
|
||||
$row["type"] = $type;
|
||||
$row["full_type"] = $row["type"] . $length . $addon . $array;
|
||||
}
|
||||
$row["null"] = !$row["attnotnull"];
|
||||
$row["auto_increment"] = preg_match('~^nextval\\(~i', $row["default"]);
|
||||
$row["privileges"] = array("insert" => 1, "select" => 1, "update" => 1);
|
||||
@@ -295,9 +319,9 @@ ORDER BY a.attnum"
|
||||
$return = array();
|
||||
$table_oid = $connection2->result("SELECT oid FROM pg_class WHERE relnamespace = (SELECT oid FROM pg_namespace WHERE nspname = current_schema()) AND relname = " . q($table));
|
||||
$columns = get_key_vals("SELECT attnum, attname FROM pg_attribute WHERE attrelid = $table_oid AND attnum > 0", $connection2);
|
||||
foreach (get_rows("SELECT relname, indisunique::int, indisprimary::int, indkey, indoption FROM pg_index i, pg_class ci WHERE i.indrelid = $table_oid AND ci.oid = i.indexrelid", $connection2) as $row) {
|
||||
foreach (get_rows("SELECT relname, indisunique::int, indisprimary::int, indkey, indoption , (indpred IS NOT NULL)::int as indispartial FROM pg_index i, pg_class ci WHERE i.indrelid = $table_oid AND ci.oid = i.indexrelid", $connection2) as $row) {
|
||||
$relname = $row["relname"];
|
||||
$return[$relname]["type"] = ($row["indisprimary"] ? "PRIMARY" : ($row["indisunique"] ? "UNIQUE" : "INDEX"));
|
||||
$return[$relname]["type"] = ($row["indispartial"] ? "INDEX" : ($row["indisprimary"] ? "PRIMARY" : ($row["indisunique"] ? "UNIQUE" : "INDEX")));
|
||||
$return[$relname]["columns"] = array();
|
||||
foreach (explode(" ", $row["indkey"]) as $indkey) {
|
||||
$return[$relname]["columns"][] = $columns[$indkey];
|
||||
@@ -314,7 +338,7 @@ ORDER BY a.attnum"
|
||||
function foreign_keys($table) {
|
||||
global $on_actions;
|
||||
$return = array();
|
||||
foreach (get_rows("SELECT conname, pg_get_constraintdef(oid) AS definition
|
||||
foreach (get_rows("SELECT conname, condeferrable::int AS deferrable, pg_get_constraintdef(oid) AS definition
|
||||
FROM pg_constraint
|
||||
WHERE conrelid = (SELECT pc.oid FROM pg_class AS pc INNER JOIN pg_namespace AS pn ON (pn.oid = pc.relnamespace) WHERE pc.relname = " . q($table) . " AND pn.nspname = current_schema())
|
||||
AND contype = 'f'::char
|
||||
@@ -336,7 +360,7 @@ ORDER BY conkey, conname") as $row) {
|
||||
|
||||
function view($name) {
|
||||
global $connection;
|
||||
return array("select" => $connection->result("SELECT pg_get_viewdef(" . q($name) . ")"));
|
||||
return array("select" => trim($connection->result("SELECT pg_get_viewdef(" . q($name) . ")")));
|
||||
}
|
||||
|
||||
function collations() {
|
||||
@@ -467,39 +491,44 @@ ORDER BY conkey, conname") as $row) {
|
||||
}
|
||||
|
||||
function drop_views($views) {
|
||||
return queries("DROP VIEW " . implode(", ", array_map('table', $views)));
|
||||
return drop_tables($views);
|
||||
}
|
||||
|
||||
function drop_tables($tables) {
|
||||
return queries("DROP TABLE " . implode(", ", array_map('table', $tables)));
|
||||
foreach ($tables as $table) {
|
||||
$status = table_status($table);
|
||||
if (!queries("DROP " . strtoupper($status["Engine"]) . " " . table($table))) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
function move_tables($tables, $views, $target) {
|
||||
foreach ($tables as $table) {
|
||||
if (!queries("ALTER TABLE " . table($table) . " SET SCHEMA " . idf_escape($target))) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
foreach ($views as $table) {
|
||||
if (!queries("ALTER VIEW " . table($table) . " SET SCHEMA " . idf_escape($target))) {
|
||||
foreach (array_merge($tables, $views) as $table) {
|
||||
$status = table_status($table);
|
||||
if (!queries("ALTER " . strtoupper($status["Engine"]) . " " . table($table) . " SET SCHEMA " . idf_escape($target))) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
function trigger($name) {
|
||||
function trigger($name, $table = null) {
|
||||
if ($name == "") {
|
||||
return array("Statement" => "EXECUTE PROCEDURE ()");
|
||||
}
|
||||
$rows = get_rows('SELECT trigger_name AS "Trigger", condition_timing AS "Timing", event_manipulation AS "Event", \'FOR EACH \' || action_orientation AS "Type", action_statement AS "Statement" FROM information_schema.triggers WHERE event_object_table = ' . q($_GET["trigger"]) . ' AND trigger_name = ' . q($name));
|
||||
if ($table === null) {
|
||||
$table = $_GET['trigger'];
|
||||
}
|
||||
$rows = get_rows('SELECT t.trigger_name AS "Trigger", t.action_timing AS "Timing", (SELECT STRING_AGG(event_manipulation, \' OR \') FROM information_schema.triggers WHERE event_object_table = t.event_object_table AND trigger_name = t.trigger_name ) AS "Events", t.event_manipulation AS "Event", \'FOR EACH \' || t.action_orientation AS "Type", t.action_statement AS "Statement" FROM information_schema.triggers t WHERE t.event_object_table = ' . q($table) . ' AND t.trigger_name = ' . q($name));
|
||||
return reset($rows);
|
||||
}
|
||||
|
||||
function triggers($table) {
|
||||
$return = array();
|
||||
foreach (get_rows("SELECT * FROM information_schema.triggers WHERE event_object_table = " . q($table)) as $row) {
|
||||
$return[$row["trigger_name"]] = array($row["condition_timing"], $row["event_manipulation"]);
|
||||
$return[$row["trigger_name"]] = array($row["action_timing"], $row["event_manipulation"]);
|
||||
}
|
||||
return $return;
|
||||
}
|
||||
@@ -507,6 +536,7 @@ ORDER BY conkey, conname") as $row) {
|
||||
function trigger_options() {
|
||||
return array(
|
||||
"Timing" => array("BEFORE", "AFTER"),
|
||||
"Event" => array("INSERT", "UPDATE", "DELETE"),
|
||||
"Type" => array("FOR EACH ROW", "FOR EACH STATEMENT"),
|
||||
);
|
||||
}
|
||||
@@ -587,6 +617,111 @@ AND typelem = 0"
|
||||
return $return;
|
||||
}
|
||||
|
||||
/** Get SQL command to create table
|
||||
* @param string
|
||||
* @param bool
|
||||
* @return string
|
||||
*/
|
||||
function create_sql($table, $auto_increment) {
|
||||
global $connection;
|
||||
$return = '';
|
||||
$return_parts = array();
|
||||
$sequences = array();
|
||||
|
||||
$status = table_status($table);
|
||||
$fields = fields($table);
|
||||
$indexes = indexes($table);
|
||||
ksort($indexes);
|
||||
$fkeys = foreign_keys($table);
|
||||
ksort($fkeys);
|
||||
$triggers = triggers($table);
|
||||
|
||||
if (!$status || empty($fields)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$return = "CREATE TABLE " . idf_escape($status['nspname']) . "." . idf_escape($status['Name']) . " (\n ";
|
||||
|
||||
// fields' definitions
|
||||
foreach ($fields as $field_name => $field) {
|
||||
$part = idf_escape($field['field']) . ' ' . $field['full_type']
|
||||
. (is_null($field['default']) ? "" : " DEFAULT $field[default]")
|
||||
. ($field['attnotnull'] ? " NOT NULL" : "");
|
||||
$return_parts[] = $part;
|
||||
|
||||
// sequences for fields
|
||||
if (preg_match('~nextval\(\'([^\']+)\'\)~', $field['default'], $matches)) {
|
||||
$sequence_name = $matches[1];
|
||||
$sq = reset(get_rows("SELECT * FROM $sequence_name"));
|
||||
$sequences[] = "CREATE SEQUENCE $sequence_name INCREMENT $sq[increment_by] MINVALUE $sq[min_value] MAXVALUE $sq[max_value] START " . ($auto_increment ? $sq['last_value'] : 1) . " CACHE $sq[cache_value];";
|
||||
}
|
||||
}
|
||||
|
||||
// adding sequences before table definition
|
||||
if (!empty($sequences)) {
|
||||
$return = implode("\n\n", $sequences) . "\n\n$return";
|
||||
}
|
||||
|
||||
// primary + unique keys
|
||||
foreach ($indexes as $index_name => $index) {
|
||||
switch($index['type']) {
|
||||
case 'UNIQUE': $return_parts[] = "CONSTRAINT " . idf_escape($index_name) . " UNIQUE (" . implode(', ', array_map('idf_escape', $index['columns'])) . ")"; break;
|
||||
case 'PRIMARY': $return_parts[] = "CONSTRAINT " . idf_escape($index_name) . " PRIMARY KEY (" . implode(', ', array_map('idf_escape', $index['columns'])) . ")"; break;
|
||||
}
|
||||
}
|
||||
|
||||
// foreign keys
|
||||
foreach ($fkeys as $fkey_name => $fkey) {
|
||||
$return_parts[] = "CONSTRAINT " . idf_escape($fkey_name) . " $fkey[definition] " . ($fkey['deferrable'] ? 'DEFERRABLE' : 'NOT DEFERRABLE');
|
||||
}
|
||||
|
||||
$return .= implode(",\n ", $return_parts) . "\n) WITH (oids = " . ($status['Oid'] ? 'true' : 'false') . ");";
|
||||
|
||||
// "basic" indexes after table definition
|
||||
foreach ($indexes as $index_name => $index) {
|
||||
if ($index['type'] == 'INDEX') {
|
||||
$return .= "\n\nCREATE INDEX " . idf_escape($index_name) . " ON " . idf_escape($status['nspname']) . "." . idf_escape($status['Name']) . " USING btree (" . implode(', ', array_map('idf_escape', $index['columns'])) . ");";
|
||||
}
|
||||
}
|
||||
|
||||
// coments for table & fields
|
||||
if ($status['Comment']) {
|
||||
$return .= "\n\nCOMMENT ON TABLE " . idf_escape($status['nspname']) . "." . idf_escape($status['Name']) . " IS " . q($status['Comment']) . ";";
|
||||
}
|
||||
|
||||
foreach ($fields as $field_name => $field) {
|
||||
if ($field['comment']) {
|
||||
$return .= "\n\nCOMMENT ON COLUMN " . idf_escape($status['nspname']) . "." . idf_escape($status['Name']) . "." . idf_escape($field_name) . " IS " . q($field['comment']) . ";";
|
||||
}
|
||||
}
|
||||
|
||||
// triggers
|
||||
foreach ($triggers as $trg_id => $trg) {
|
||||
$trigger = trigger($trg_id, $status['Name']);
|
||||
$return .= "\n\nCREATE TRIGGER " . idf_escape($trigger['Trigger']) . " $trigger[Timing] $trigger[Events] ON " . idf_escape($status["nspname"]) . "." . idf_escape($status['Name']) . " $trigger[Type] $trigger[Statement];";
|
||||
}
|
||||
|
||||
return rtrim($return, ';');
|
||||
}
|
||||
|
||||
/** Get SQL commands to create triggers
|
||||
* @param string
|
||||
* @param string
|
||||
* @return string
|
||||
*/
|
||||
//@TODO
|
||||
function trigger_sql($table, $style) {
|
||||
$return = "";
|
||||
//foreach (get_rows("SHOW TRIGGERS LIKE " . q(addcslashes($table, "%_\\")), null, "-- ") as $row) {
|
||||
// $return .= "\n" . ($style == 'CREATE+ALTER' ? "DROP TRIGGER IF EXISTS " . idf_escape($row["Trigger"]) . ";;\n" : "")
|
||||
// . "CREATE TRIGGER " . idf_escape($row["Trigger"]) . " $row[Timing] $row[Event] ON " . table($row["Table"]) . " FOR EACH ROW\n$row[Statement];;\n";
|
||||
//}
|
||||
//return $return;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
function use_sql($database) {
|
||||
return "\connect " . idf_escape($database);
|
||||
}
|
||||
@@ -611,7 +746,21 @@ AND typelem = 0"
|
||||
}
|
||||
|
||||
function support($feature) {
|
||||
return preg_match('~^(database|table|columns|sql|indexes|comment|view|scheme|processlist|sequence|trigger|type|variables|drop_col)$~', $feature); //! routine|
|
||||
global $connection;
|
||||
return preg_match('~^(database|table|columns|sql|indexes|comment|view|' . ($connection->server_info >= 9.3 ? 'materializedview|' : '') . 'scheme|processlist|sequence|trigger|type|variables|drop_col|kill|dump)$~', $feature); //! routine|
|
||||
}
|
||||
|
||||
function kill_process($val) {
|
||||
return queries("SELECT pg_terminate_backend(" . number($val) . ")");
|
||||
}
|
||||
|
||||
function connection_id(){
|
||||
return "SELECT pg_backend_pid()";
|
||||
}
|
||||
|
||||
function max_connections() {
|
||||
global $connection;
|
||||
return $connection->result("SHOW max_connections");
|
||||
}
|
||||
|
||||
$jush = "pgsql";
|
||||
@@ -629,7 +778,7 @@ AND typelem = 0"
|
||||
$structured_types[$key] = array_keys($val);
|
||||
}
|
||||
$unsigned = array();
|
||||
$operators = array("=", "<", ">", "<=", ">=", "!=", "~", "!~", "LIKE", "LIKE %%", "IN", "IS NULL", "NOT LIKE", "NOT IN", "IS NOT NULL"); // no "SQL" to avoid SQL injection
|
||||
$operators = array("=", "<", ">", "<=", ">=", "!=", "~", "!~", "LIKE", "LIKE %%", "ILIKE", "ILIKE %%", "IN", "IS NULL", "NOT LIKE", "NOT IN", "IS NOT NULL"); // no "SQL" to avoid SQL injection
|
||||
$functions = array("char_length", "lower", "round", "to_hex", "to_timestamp", "upper");
|
||||
$grouping = array("avg", "count", "count distinct", "max", "min", "sum");
|
||||
$edit_functions = array(
|
||||
|
||||
@@ -56,7 +56,7 @@ if (isset($_GET["simpledb"])) {
|
||||
class Min_Result {
|
||||
var $num_rows, $_rows = array(), $_offset = 0;
|
||||
|
||||
function Min_Result($result) {
|
||||
function __construct($result) {
|
||||
foreach ($result as $item) {
|
||||
$row = array();
|
||||
if ($item->Name != '') { // SELECT COUNT(*)
|
||||
|
||||
@@ -11,7 +11,7 @@ if (isset($_GET["sqlite"]) || isset($_GET["sqlite2"])) {
|
||||
class Min_SQLite {
|
||||
var $extension = "SQLite3", $server_info, $affected_rows, $errno, $error, $_link;
|
||||
|
||||
function Min_SQLite($filename) {
|
||||
function __construct($filename) {
|
||||
$this->_link = new SQLite3($filename);
|
||||
$version = $this->_link->version();
|
||||
$this->server_info = $version["versionString"];
|
||||
@@ -55,7 +55,7 @@ if (isset($_GET["sqlite"]) || isset($_GET["sqlite2"])) {
|
||||
class Min_Result {
|
||||
var $_result, $_offset = 0, $num_rows;
|
||||
|
||||
function Min_Result($result) {
|
||||
function __construct($result) {
|
||||
$this->_result = $result;
|
||||
}
|
||||
|
||||
@@ -87,7 +87,7 @@ if (isset($_GET["sqlite"]) || isset($_GET["sqlite2"])) {
|
||||
class Min_SQLite {
|
||||
var $extension = "SQLite", $server_info, $affected_rows, $error, $_link;
|
||||
|
||||
function Min_SQLite($filename) {
|
||||
function __construct($filename) {
|
||||
$this->server_info = sqlite_libversion();
|
||||
$this->_link = new SQLiteDatabase($filename);
|
||||
}
|
||||
@@ -127,7 +127,7 @@ if (isset($_GET["sqlite"]) || isset($_GET["sqlite2"])) {
|
||||
class Min_Result {
|
||||
var $_result, $_offset = 0, $num_rows;
|
||||
|
||||
function Min_Result($result) {
|
||||
function __construct($result) {
|
||||
$this->_result = $result;
|
||||
if (method_exists($result, 'numRows')) { // not available in unbuffered query
|
||||
$this->num_rows = $result->numRows();
|
||||
@@ -172,7 +172,7 @@ if (isset($_GET["sqlite"]) || isset($_GET["sqlite2"])) {
|
||||
class Min_SQLite extends Min_PDO {
|
||||
var $extension = "PDO_SQLite";
|
||||
|
||||
function Min_SQLite($filename) {
|
||||
function __construct($filename) {
|
||||
$this->dsn(DRIVER . ":$filename", "", "");
|
||||
}
|
||||
}
|
||||
@@ -182,13 +182,13 @@ if (isset($_GET["sqlite"]) || isset($_GET["sqlite2"])) {
|
||||
if (class_exists("Min_SQLite")) {
|
||||
class Min_DB extends Min_SQLite {
|
||||
|
||||
function Min_DB() {
|
||||
$this->Min_SQLite(":memory:");
|
||||
function __construct() {
|
||||
parent::__construct(":memory:");
|
||||
}
|
||||
|
||||
function select_db($filename) {
|
||||
if (is_readable($filename) && $this->query("ATTACH " . $this->quote(preg_match("~(^[/\\\\]|:)~", $filename) ? $filename : dirname($_SERVER["SCRIPT_FILENAME"]) . "/$filename") . " AS a")) { // is_readable - SQLite 3
|
||||
$this->Min_SQLite($filename);
|
||||
parent::__construct($filename);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
@@ -352,20 +352,24 @@ if (isset($_GET["sqlite"]) || isset($_GET["sqlite2"])) {
|
||||
$sqls = get_key_vals("SELECT name, sql FROM sqlite_master WHERE type = 'index' AND tbl_name = " . q($table), $connection2);
|
||||
foreach (get_rows("PRAGMA index_list(" . table($table) . ")", $connection2) as $row) {
|
||||
$name = $row["name"];
|
||||
if (!preg_match("~^sqlite_~", $name)) {
|
||||
$return[$name]["type"] = ($row["unique"] ? "UNIQUE" : "INDEX");
|
||||
$return[$name]["lengths"] = array();
|
||||
foreach (get_rows("PRAGMA index_info(" . idf_escape($name) . ")", $connection2) as $row1) {
|
||||
$return[$name]["columns"][] = $row1["name"];
|
||||
}
|
||||
$return[$name]["descs"] = array();
|
||||
if (preg_match('~^CREATE( UNIQUE)? INDEX ' . preg_quote(idf_escape($name) . ' ON ' . idf_escape($table), '~') . ' \((.*)\)$~i', $sqls[$name], $regs)) {
|
||||
preg_match_all('/("[^"]*+")+( DESC)?/', $regs[2], $matches);
|
||||
foreach ($matches[2] as $val) {
|
||||
$return[$name]["descs"][] = ($val ? '1' : null);
|
||||
$index = array("type" => ($row["unique"] ? "UNIQUE" : "INDEX"));
|
||||
$index["lengths"] = array();
|
||||
$index["descs"] = array();
|
||||
foreach (get_rows("PRAGMA index_info(" . idf_escape($name) . ")", $connection2) as $row1) {
|
||||
$index["columns"][] = $row1["name"];
|
||||
$index["descs"][] = null;
|
||||
}
|
||||
if (preg_match('~^CREATE( UNIQUE)? INDEX ' . preg_quote(idf_escape($name) . ' ON ' . idf_escape($table), '~') . ' \((.*)\)$~i', $sqls[$name], $regs)) {
|
||||
preg_match_all('/("[^"]*+")+( DESC)?/', $regs[2], $matches);
|
||||
foreach ($matches[2] as $key => $val) {
|
||||
if ($val) {
|
||||
$index["descs"][$key] = '1';
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!$return[""] || $index["type"] != "UNIQUE" || $index["columns"] != $return[""]["columns"] || $index["descs"] != $return[""]["descs"] || !preg_match("~^sqlite_~", $name)) {
|
||||
$return[$name] = $index;
|
||||
}
|
||||
}
|
||||
return $return;
|
||||
}
|
||||
@@ -436,7 +440,7 @@ if (isset($_GET["sqlite"]) || isset($_GET["sqlite2"])) {
|
||||
|
||||
function drop_databases($databases) {
|
||||
global $connection;
|
||||
$connection->Min_SQLite(":memory:"); // to unlock file, doesn't work in PDO on Windows
|
||||
$connection->__construct(":memory:"); // to unlock file, doesn't work in PDO on Windows
|
||||
foreach ($databases as $db) {
|
||||
if (!@unlink($db)) {
|
||||
$connection->error = lang('File exists.');
|
||||
@@ -451,7 +455,7 @@ if (isset($_GET["sqlite"]) || isset($_GET["sqlite2"])) {
|
||||
if (!check_sqlite_name($name)) {
|
||||
return false;
|
||||
}
|
||||
$connection->Min_SQLite(":memory:");
|
||||
$connection->__construct(":memory:");
|
||||
$connection->error = lang('File exists.');
|
||||
return @rename(DB, $name);
|
||||
}
|
||||
@@ -630,18 +634,28 @@ if (isset($_GET["sqlite"]) || isset($_GET["sqlite2"])) {
|
||||
if ($name == "") {
|
||||
return array("Statement" => "BEGIN\n\t;\nEND");
|
||||
}
|
||||
$idf = '(?:[^`"\\s]+|`[^`]*`|"[^"]*")+';
|
||||
$trigger_options = trigger_options();
|
||||
preg_match(
|
||||
'~^CREATE\\s+TRIGGER\\s*(?:[^`"\\s]+|`[^`]*`|"[^"]*")+\\s*(BEFORE|AFTER|INSTEAD\\s+OF)\\s+([a-z]+)\\s+ON\\s*(?:[^`"\\s]+|`[^`]*`|"[^"]*")+\\s*(?:FOR\\s*EACH\\s*ROW\\s)?(.*)~is',
|
||||
"~^CREATE\\s+TRIGGER\\s*$idf\\s*(" . implode("|", $trigger_options["Timing"]) . ")\\s+([a-z]+)(?:\\s+OF\\s+($idf))?\\s+ON\\s*$idf\\s*(?:FOR\\s+EACH\\s+ROW\\s)?(.*)~is",
|
||||
$connection->result("SELECT sql FROM sqlite_master WHERE type = 'trigger' AND name = " . q($name)),
|
||||
$match
|
||||
);
|
||||
return array("Timing" => strtoupper($match[1]), "Event" => strtoupper($match[2]), "Trigger" => $name, "Statement" => $match[3]);
|
||||
$of = $match[3];
|
||||
return array(
|
||||
"Timing" => strtoupper($match[1]),
|
||||
"Event" => strtoupper($match[2]) . ($of ? " OF" : ""),
|
||||
"Of" => ($of[0] == '`' || $of[0] == '"' ? idf_unescape($of) : $of),
|
||||
"Trigger" => $name,
|
||||
"Statement" => $match[4],
|
||||
);
|
||||
}
|
||||
|
||||
function triggers($table) {
|
||||
$return = array();
|
||||
$trigger_options = trigger_options();
|
||||
foreach (get_rows("SELECT * FROM sqlite_master WHERE type = 'trigger' AND tbl_name = " . q($table)) as $row) {
|
||||
preg_match('~^CREATE\\s+TRIGGER\\s*(?:[^`"\\s]+|`[^`]*`|"[^"]*")+\\s*([a-z]+)\\s*([a-z]+)~i', $row["sql"], $match);
|
||||
preg_match('~^CREATE\\s+TRIGGER\\s*(?:[^`"\\s]+|`[^`]*`|"[^"]*")+\\s*(' . implode("|", $trigger_options["Timing"]) . ')\\s*(.*)\\s+ON\\b~iU', $row["sql"], $match);
|
||||
$return[$row["name"]] = array($match[1], $match[2]);
|
||||
}
|
||||
return $return;
|
||||
@@ -650,6 +664,7 @@ if (isset($_GET["sqlite"]) || isset($_GET["sqlite2"])) {
|
||||
function trigger_options() {
|
||||
return array(
|
||||
"Timing" => array("BEFORE", "AFTER", "INSTEAD OF"),
|
||||
"Event" => array("INSERT", "UPDATE", "UPDATE OF", "DELETE"),
|
||||
"Type" => array("FOR EACH ROW"),
|
||||
);
|
||||
}
|
||||
@@ -676,7 +691,7 @@ if (isset($_GET["sqlite"]) || isset($_GET["sqlite2"])) {
|
||||
}
|
||||
|
||||
function explain($connection, $query) {
|
||||
return $connection->query("EXPLAIN $query");
|
||||
return $connection->query("EXPLAIN QUERY PLAN $query");
|
||||
}
|
||||
|
||||
function found_rows($table_status, $where) {
|
||||
|
||||
@@ -14,14 +14,16 @@ if ($_POST && !$error) {
|
||||
$is_sql = preg_match('~sql~', $_POST["format"]);
|
||||
|
||||
if ($is_sql) {
|
||||
echo "-- Adminer $VERSION " . $drivers[DRIVER] . " dump
|
||||
|
||||
" . ($jush != "sql" ? "" : "SET NAMES utf8;
|
||||
echo "-- Adminer $VERSION " . $drivers[DRIVER] . " dump\n\n";
|
||||
if ($jush == "sql") {
|
||||
echo "SET NAMES utf8;
|
||||
SET time_zone = '+00:00';
|
||||
" . ($_POST["data_style"] ? "SET foreign_key_checks = 0;
|
||||
SET time_zone = " . q(substr(preg_replace('~^[^-]~', '+\0', $connection->result("SELECT TIMEDIFF(NOW(), UTC_TIMESTAMP)")), 0, 6)) . ";
|
||||
SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO';
|
||||
" : "") . "
|
||||
");
|
||||
";
|
||||
$connection->query("SET time_zone = '+00:00';");
|
||||
}
|
||||
}
|
||||
|
||||
$style = $_POST["db_style"];
|
||||
@@ -37,6 +39,7 @@ SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO';
|
||||
$adminer->dumpDatabase($db);
|
||||
if ($connection->select_db($db)) {
|
||||
if ($is_sql && preg_match('~CREATE~', $style) && ($create = $connection->result("SHOW CREATE DATABASE " . idf_escape($db), 1))) {
|
||||
set_utf8mb4($create);
|
||||
if ($style == "DROP+CREATE") {
|
||||
echo "DROP DATABASE IF EXISTS " . idf_escape($db) . ";\n";
|
||||
}
|
||||
@@ -51,16 +54,18 @@ SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO';
|
||||
if ($_POST["routines"]) {
|
||||
foreach (array("FUNCTION", "PROCEDURE") as $routine) {
|
||||
foreach (get_rows("SHOW $routine STATUS WHERE Db = " . q($db), null, "-- ") as $row) {
|
||||
$out .= ($style != 'DROP+CREATE' ? "DROP $routine IF EXISTS " . idf_escape($row["Name"]) . ";;\n" : "")
|
||||
. remove_definer($connection->result("SHOW CREATE $routine " . idf_escape($row["Name"]), 2)) . ";;\n\n";
|
||||
$create = remove_definer($connection->result("SHOW CREATE $routine " . idf_escape($row["Name"]), 2));
|
||||
set_utf8mb4($create);
|
||||
$out .= ($style != 'DROP+CREATE' ? "DROP $routine IF EXISTS " . idf_escape($row["Name"]) . ";;\n" : "") . "$create;;\n\n";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ($_POST["events"]) {
|
||||
foreach (get_rows("SHOW EVENTS", null, "-- ") as $row) {
|
||||
$out .= ($style != 'DROP+CREATE' ? "DROP EVENT IF EXISTS " . idf_escape($row["Name"]) . ";;\n" : "")
|
||||
. remove_definer($connection->result("SHOW CREATE EVENT " . idf_escape($row["Name"]), 3)) . ";;\n\n";
|
||||
$create = remove_definer($connection->result("SHOW CREATE EVENT " . idf_escape($row["Name"]), 3));
|
||||
set_utf8mb4($create);
|
||||
$out .= ($style != 'DROP+CREATE' ? "DROP EVENT IF EXISTS " . idf_escape($row["Name"]) . ";;\n" : "") . "$create;;\n\n";
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -59,14 +59,6 @@ if ($_POST && !$error && !isset($_GET["select"])) {
|
||||
}
|
||||
}
|
||||
|
||||
$table_name = $adminer->tableName(table_status1($TABLE, true));
|
||||
page_header(
|
||||
($update ? lang('Edit') : lang('Insert')),
|
||||
$error,
|
||||
array("select" => array($TABLE, $table_name)),
|
||||
$table_name
|
||||
);
|
||||
|
||||
$row = null;
|
||||
if ($_POST["save"]) {
|
||||
$row = (array) $_POST["fields"];
|
||||
@@ -118,82 +110,4 @@ if (!support("table") && !$fields) {
|
||||
}
|
||||
}
|
||||
|
||||
if ($row === false) {
|
||||
echo "<p class='error'>" . lang('No rows.') . "\n";
|
||||
}
|
||||
?>
|
||||
|
||||
<div id="message"></div>
|
||||
|
||||
<form action="" method="post" enctype="multipart/form-data" id="form">
|
||||
<?php
|
||||
if (!$fields) {
|
||||
echo "<p class='error'>" . lang('You have no privileges to update this table.') . "\n";
|
||||
} else {
|
||||
echo "<table cellspacing='0' onkeydown='return editingKeydown(event);'>\n";
|
||||
|
||||
foreach ($fields as $name => $field) {
|
||||
echo "<tr><th>" . $adminer->fieldName($field);
|
||||
$default = $_GET["set"][bracket_escape($name)];
|
||||
if ($default === null) {
|
||||
$default = $field["default"];
|
||||
if ($field["type"] == "bit" && preg_match("~^b'([01]*)'\$~", $default, $regs)) {
|
||||
$default = $regs[1];
|
||||
}
|
||||
}
|
||||
$value = ($row !== null
|
||||
? ($row[$name] != "" && $jush == "sql" && preg_match("~enum|set~", $field["type"])
|
||||
? (is_array($row[$name]) ? array_sum($row[$name]) : +$row[$name])
|
||||
: $row[$name]
|
||||
)
|
||||
: (!$update && $field["auto_increment"]
|
||||
? ""
|
||||
: (isset($_GET["select"]) ? false : $default)
|
||||
)
|
||||
);
|
||||
if (!$_POST["save"] && is_string($value)) {
|
||||
$value = $adminer->editVal($value, $field);
|
||||
}
|
||||
$function = ($_POST["save"] ? (string) $_POST["function"][$name] : ($update && $field["on_update"] == "CURRENT_TIMESTAMP" ? "now" : ($value === false ? null : ($value !== null ? '' : 'NULL'))));
|
||||
if (preg_match("~time~", $field["type"]) && $value == "CURRENT_TIMESTAMP") {
|
||||
$value = "";
|
||||
$function = "now";
|
||||
}
|
||||
input($field, $value, $function);
|
||||
echo "\n";
|
||||
}
|
||||
|
||||
if (!support("table")) {
|
||||
echo "<tr>"
|
||||
. "<th><input name='field_keys[]' onkeyup='keyupChange.call(this);' onchange='fieldChange(this);' value=''>" // needs empty value for keyupChange()
|
||||
. "<td class='function'>" . html_select("field_funs[]", $adminer->editFunctions(array("null" => isset($_GET["select"]))))
|
||||
. "<td><input name='field_vals[]'>"
|
||||
. "\n"
|
||||
;
|
||||
}
|
||||
|
||||
echo "</table>\n";
|
||||
}
|
||||
?>
|
||||
<p>
|
||||
<?php
|
||||
if ($fields) {
|
||||
echo "<input type='submit' value='" . lang('Save') . "'>\n";
|
||||
if (!isset($_GET["select"])) {
|
||||
echo "<input type='submit' name='insert' value='" . ($update
|
||||
? lang('Save and continue edit') . "' onclick='return !ajaxForm(this.form, \"" . lang('Saving') . '...", this)'
|
||||
: lang('Save and insert next')
|
||||
) . "' title='Ctrl+Shift+Enter'>\n";
|
||||
}
|
||||
}
|
||||
echo ($update ? "<input type='submit' name='delete' value='" . lang('Delete') . "'" . confirm() . ">\n"
|
||||
: ($_POST || !$fields ? "" : "<script type='text/javascript'>focus(document.getElementById('form').getElementsByTagName('td')[1].firstChild);</script>\n")
|
||||
);
|
||||
if (isset($_GET["select"])) {
|
||||
hidden_fields(array("check" => (array) $_POST["check"], "clone" => $_POST["clone"], "all" => $_POST["all"]));
|
||||
}
|
||||
?>
|
||||
<input type="hidden" name="referer" value="<?php echo h(isset($_POST["referer"]) ? $_POST["referer"] : $_SERVER["HTTP_REFERER"]); ?>">
|
||||
<input type="hidden" name="save" value="1">
|
||||
<input type="hidden" name="token" value="<?php echo $token; ?>">
|
||||
</form>
|
||||
edit_form($TABLE, $fields, $row, $update);
|
||||
|
||||
@@ -6,6 +6,7 @@ if ($_SERVER["HTTP_IF_MODIFIED_SINCE"]) {
|
||||
|
||||
header("Expires: " . gmdate("D, d M Y H:i:s", time() + 365*24*60*60) . " GMT");
|
||||
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
|
||||
header("Cache-Control: immutable");
|
||||
|
||||
if ($_GET["file"] == "favicon.ico") {
|
||||
header("Content-Type: image/x-icon");
|
||||
@@ -18,7 +19,7 @@ if ($_GET["file"] == "favicon.ico") {
|
||||
echo lzw_decompress(compile_file('../adminer/static/functions.js;static/editing.js', 'minify_js'));
|
||||
} elseif ($_GET["file"] == "jush.js") {
|
||||
header("Content-Type: text/javascript; charset=utf-8");
|
||||
echo lzw_decompress(compile_file('../externals/jush/modules/jush.js;../externals/jush/modules/jush-textarea.js;../externals/jush/modules/jush-txt.js;../externals/jush/modules/jush-sql.js;../externals/jush/modules/jush-pgsql.js;../externals/jush/modules/jush-sqlite.js;../externals/jush/modules/jush-mssql.js;../externals/jush/modules/jush-oracle.js;../externals/jush/modules/jush-simpledb.js', 'minify_js'));
|
||||
echo lzw_decompress(compile_file('../externals/jush/modules/jush.js;../externals/jush/modules/jush-textarea.js;../externals/jush/modules/jush-txt.js;../externals/jush/modules/jush-js.js;../externals/jush/modules/jush-sql.js;../externals/jush/modules/jush-pgsql.js;../externals/jush/modules/jush-sqlite.js;../externals/jush/modules/jush-mssql.js;../externals/jush/modules/jush-oracle.js;../externals/jush/modules/jush-simpledb.js', 'minify_js'));
|
||||
} else {
|
||||
header("Content-Type: image/gif");
|
||||
switch ($_GET["file"]) {
|
||||
|
||||
@@ -7,13 +7,15 @@ if ($_POST && !$error && !$_POST["add"] && !$_POST["change"] && !$_POST["change-
|
||||
$message = ($_POST["drop"] ? lang('Foreign key has been dropped.') : ($name != "" ? lang('Foreign key has been altered.') : lang('Foreign key has been created.')));
|
||||
$location = ME . "table=" . urlencode($TABLE);
|
||||
|
||||
$row["source"] = array_filter($row["source"], 'strlen');
|
||||
ksort($row["source"]); // enforce input order
|
||||
$target = array();
|
||||
foreach ($row["source"] as $key => $val) {
|
||||
$target[$key] = $row["target"][$key];
|
||||
if (!$_POST["drop"]) {
|
||||
$row["source"] = array_filter($row["source"], 'strlen');
|
||||
ksort($row["source"]); // enforce input order
|
||||
$target = array();
|
||||
foreach ($row["source"] as $key => $val) {
|
||||
$target[$key] = $row["target"][$key];
|
||||
}
|
||||
$row["target"] = $target;
|
||||
}
|
||||
$row["target"] = $target;
|
||||
|
||||
if ($jush == "sqlite") {
|
||||
queries_redirect($location, $message, recreate_table($TABLE, $TABLE, array(), array(), array(" $name" => ($_POST["drop"] ? "" : " " . format_foreign_key($row)))));
|
||||
@@ -60,13 +62,13 @@ $referencable = array_keys(array_filter(table_status('', true), 'fk_support'));
|
||||
<input type="hidden" name="change-js" value="">
|
||||
<noscript><p><input type="submit" name="change" value="<?php echo lang('Change'); ?>"></noscript>
|
||||
<table cellspacing="0">
|
||||
<thead><tr><th><?php echo lang('Source'); ?><th><?php echo lang('Target'); ?></thead>
|
||||
<thead><tr><th id="label-source"><?php echo lang('Source'); ?><th id="label-target"><?php echo lang('Target'); ?></thead>
|
||||
<?php
|
||||
$j = 0;
|
||||
foreach ($row["source"] as $key => $val) {
|
||||
echo "<tr>";
|
||||
echo "<td>" . html_select("source[" . (+$key) . "]", array(-1 => "") + $source, $val, ($j == count($row["source"]) - 1 ? "foreignAddRow(this);" : 1));
|
||||
echo "<td>" . html_select("target[" . (+$key) . "]", $target, $row["target"][$key]);
|
||||
echo "<td>" . html_select("source[" . (+$key) . "]", array(-1 => "") + $source, $val, ($j == count($row["source"]) - 1 ? "foreignAddRow(this);" : 1), "label-source");
|
||||
echo "<td>" . html_select("target[" . (+$key) . "]", $target, $row["target"][$key], 1, "label-target");
|
||||
$j++;
|
||||
}
|
||||
?>
|
||||
|
||||
@@ -9,7 +9,7 @@ class Adminer {
|
||||
* @return string HTML code
|
||||
*/
|
||||
function name() {
|
||||
return "<a href='http://www.adminer.org/' target='_blank' id='h1'>Adminer</a>";
|
||||
return "<a href='https://www.adminer.org/' target='_blank' id='h1'>Adminer</a>";
|
||||
}
|
||||
|
||||
/** Connection parameters
|
||||
@@ -27,6 +27,13 @@ class Adminer {
|
||||
return password_file($create);
|
||||
}
|
||||
|
||||
/** Return key used to group brute force attacks; behind a reverse proxy, you want to return the last part of X-Forwarded-For
|
||||
* @return string
|
||||
*/
|
||||
function bruteForceKey() {
|
||||
return $_SERVER["REMOTE_ADDR"];
|
||||
}
|
||||
|
||||
/** Identifier of selected database
|
||||
* @return string
|
||||
*/
|
||||
@@ -81,16 +88,14 @@ class Adminer {
|
||||
global $drivers;
|
||||
?>
|
||||
<table cellspacing="0">
|
||||
<tr><th><?php echo lang('System'); ?><td><?php echo html_select("auth[driver]", $drivers, DRIVER, "loginDriver(this);"); ?>
|
||||
<tr><th><?php echo lang('System'); ?><td><?php echo html_select("auth[driver]", $drivers, DRIVER); ?>
|
||||
<tr><th><?php echo lang('Server'); ?><td><input name="auth[server]" value="<?php echo h(SERVER); ?>" title="hostname[:port]" placeholder="localhost" autocapitalize="off">
|
||||
<tr><th><?php echo lang('Username'); ?><td><input name="auth[username]" id="username" value="<?php echo h($_GET["username"]); ?>" autocapitalize="off">
|
||||
<tr><th><?php echo lang('Password'); ?><td><input type="password" name="auth[password]">
|
||||
<tr><th><?php echo lang('Database'); ?><td><input name="auth[db]" value="<?php echo h($_GET["db"]); ?>" autocapitalize="off">
|
||||
</table>
|
||||
<script type="text/javascript">
|
||||
var username = document.getElementById('username');
|
||||
focus(username);
|
||||
username.form['auth[driver]'].onchange();
|
||||
focus(document.getElementById('username'));
|
||||
</script>
|
||||
<?php
|
||||
echo "<p><input type='submit' value='" . lang('Login') . "'>\n";
|
||||
@@ -100,9 +105,13 @@ username.form['auth[driver]'].onchange();
|
||||
/** Authorize the user
|
||||
* @param string
|
||||
* @param string
|
||||
* @return bool
|
||||
* @return mixed true for success, string for error message, false for unknown error
|
||||
*/
|
||||
function login($login, $password) {
|
||||
global $jush;
|
||||
if ($jush == "sqlite") {
|
||||
return lang('<a href="https://www.adminer.org/en/extension/" target="_blank">Implement</a> %s method to use SQLite.', '<code>login()</code>');
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -177,16 +186,26 @@ username.form['auth[driver]'].onchange();
|
||||
|
||||
/** Query printed in select before execution
|
||||
* @param string query to be executed
|
||||
* @param string elapsed time
|
||||
* @return string
|
||||
*/
|
||||
function selectQuery($query) {
|
||||
function selectQuery($query, $time) {
|
||||
global $jush;
|
||||
return "<p><code class='jush-$jush'>" . h(str_replace("\n", " ", $query)) . "</code>"
|
||||
return "<p><code class='jush-$jush'>" . h(str_replace("\n", " ", $query)) . "</code> <span class='time'>($time)</span>"
|
||||
. (support("sql") ? " <a href='" . h(ME) . "sql=" . urlencode($query) . "'>" . lang('Edit') . "</a>" : "")
|
||||
. "</p>" // </p> - required for IE9 inline edit
|
||||
;
|
||||
}
|
||||
|
||||
/** Query printed in SQL command before execution
|
||||
* @param string query to be executed
|
||||
* @return string escaped query to be printed
|
||||
*/
|
||||
function sqlCommandQuery($query)
|
||||
{
|
||||
return shorten_utf8(trim($query), 1000);
|
||||
}
|
||||
|
||||
/** Description of a row in a table
|
||||
* @param string
|
||||
* @return string SQL expression, empty string for no description
|
||||
@@ -222,9 +241,12 @@ username.form['auth[driver]'].onchange();
|
||||
function selectVal($val, $link, $field, $original) {
|
||||
$return = ($val === null ? "<i>NULL</i>" : (preg_match("~char|binary~", $field["type"]) && !preg_match("~var~", $field["type"]) ? "<code>$val</code>" : $val));
|
||||
if (preg_match('~blob|bytea|raw|file~', $field["type"]) && !is_utf8($val)) {
|
||||
$return = lang('%d byte(s)', strlen($original));
|
||||
$return = "<i>" . lang('%d byte(s)', strlen($original)) . "</i>";
|
||||
}
|
||||
return ($link ? "<a href='" . h($link) . "'>$return</a>" : $return);
|
||||
if (preg_match('~json~', $field["type"])) {
|
||||
$return = "<code class='jush-js'>$return</code>";
|
||||
}
|
||||
return ($link ? "<a href='" . h($link) . "'" . (is_url($link) ? " rel='noreferrer'" : "") . ">$return</a>" : $return);
|
||||
}
|
||||
|
||||
/** Value conversion used in select and edit
|
||||
@@ -236,6 +258,45 @@ username.form['auth[driver]'].onchange();
|
||||
return $val;
|
||||
}
|
||||
|
||||
/** Print table structure in tabular format
|
||||
* @param array data about individual fields
|
||||
* @return null
|
||||
*/
|
||||
function tableStructurePrint($fields) {
|
||||
echo "<table cellspacing='0'>\n";
|
||||
echo "<thead><tr><th>" . lang('Column') . "<td>" . lang('Type') . (support("comment") ? "<td>" . lang('Comment') : "") . "</thead>\n";
|
||||
foreach ($fields as $field) {
|
||||
echo "<tr" . odd() . "><th>" . h($field["field"]);
|
||||
echo "<td><span title='" . h($field["collation"]) . "'>" . h($field["full_type"]) . "</span>";
|
||||
echo ($field["null"] ? " <i>NULL</i>" : "");
|
||||
echo ($field["auto_increment"] ? " <i>" . lang('Auto Increment') . "</i>" : "");
|
||||
echo (isset($field["default"]) ? " <span title='" . lang('Default value') . "'>[<b>" . h($field["default"]) . "</b>]</span>" : "");
|
||||
echo (support("comment") ? "<td>" . nbsp($field["comment"]) : "");
|
||||
echo "\n";
|
||||
}
|
||||
echo "</table>\n";
|
||||
}
|
||||
|
||||
/** Print list of indexes on table in tabular format
|
||||
* @param array data about all indexes on a table
|
||||
* @return null
|
||||
*/
|
||||
function tableIndexesPrint($indexes) {
|
||||
echo "<table cellspacing='0'>\n";
|
||||
foreach ($indexes as $name => $index) {
|
||||
ksort($index["columns"]); // enforce correct columns order
|
||||
$print = array();
|
||||
foreach ($index["columns"] as $key => $val) {
|
||||
$print[] = "<i>" . h($val) . "</i>"
|
||||
. ($index["lengths"][$key] ? "(" . $index["lengths"][$key] . ")" : "")
|
||||
. ($index["descs"][$key] ? " DESC" : "")
|
||||
;
|
||||
}
|
||||
echo "<tr title='" . h($name) . "'><th>$index[type]<td>" . implode(", ", $print) . "\n";
|
||||
}
|
||||
echo "</table>\n";
|
||||
}
|
||||
|
||||
/** Print columns box in select
|
||||
* @param array result of selectColumnsProcess()[0]
|
||||
* @param array selectable columns
|
||||
@@ -342,8 +403,9 @@ username.form['auth[driver]'].onchange();
|
||||
echo "var indexColumns = ";
|
||||
$columns = array();
|
||||
foreach ($indexes as $index) {
|
||||
if ($index["type"] != "FULLTEXT") {
|
||||
$columns[reset($index["columns"])] = 1;
|
||||
$current_key = reset($index["columns"]);
|
||||
if ($index["type"] != "FULLTEXT" && $current_key) {
|
||||
$columns[$current_key] = 1;
|
||||
}
|
||||
}
|
||||
$columns[""] = 1;
|
||||
@@ -404,7 +466,7 @@ username.form['auth[driver]'].onchange();
|
||||
* @return array expressions to join by AND
|
||||
*/
|
||||
function selectSearchProcess($fields, $indexes) {
|
||||
global $jush;
|
||||
global $connection, $jush;
|
||||
$return = array();
|
||||
foreach ($indexes as $i => $index) {
|
||||
if ($index["type"] == "FULLTEXT" && $_GET["fulltext"][$i] != "") {
|
||||
@@ -421,6 +483,8 @@ username.form['auth[driver]'].onchange();
|
||||
$cond = " $val[val]"; // SQL injection
|
||||
} elseif ($val["op"] == "LIKE %%") {
|
||||
$cond = " LIKE " . $this->processInput($fields[$val["col"]], "%$val[val]%");
|
||||
} elseif ($val["op"] == "ILIKE %%") {
|
||||
$cond = " ILIKE " . $this->processInput($fields[$val["col"]], "%$val[val]%");
|
||||
} elseif (!preg_match('~NULL$~', $val["op"])) {
|
||||
$cond .= " " . $this->processInput($fields[$val["col"]], $val["val"]);
|
||||
}
|
||||
@@ -435,7 +499,7 @@ username.form['auth[driver]'].onchange();
|
||||
&& (!preg_match("~[\x80-\xFF]~", $val["val"]) || $is_text)
|
||||
) {
|
||||
$name = idf_escape($name);
|
||||
$cols[] = ($jush == "sql" && $is_text && !preg_match('~^utf8~', $field["collation"]) ? "CONVERT($name USING utf8)" : $name);
|
||||
$cols[] = ($jush == "sql" && $is_text && !preg_match("~^utf8_~", $field["collation"]) ? "CONVERT($name USING " . charset($connection) . ")" : $name);
|
||||
}
|
||||
}
|
||||
$return[] = ($cols ? "(" . implode("$cond OR ", $cols) . "$cond)" : "0");
|
||||
@@ -500,9 +564,10 @@ username.form['auth[driver]'].onchange();
|
||||
|
||||
/** Query printed after execution in the message
|
||||
* @param string executed query
|
||||
* @param string elapsed time
|
||||
* @return string
|
||||
*/
|
||||
function messageQuery($query) {
|
||||
function messageQuery($query, $time) {
|
||||
global $jush;
|
||||
restart_session();
|
||||
$history = &get_session("queries");
|
||||
@@ -510,9 +575,10 @@ username.form['auth[driver]'].onchange();
|
||||
if (strlen($query) > 1e6) {
|
||||
$query = preg_replace('~[\x80-\xFF]+$~', '', substr($query, 0, 1e6)) . "\n..."; // [\x80-\xFF] - valid UTF-8, \n - can end by one-line comment
|
||||
}
|
||||
$history[$_GET["db"]][] = array($query, time()); // not DB - $_GET["db"] is changed in database.inc.php //! respect $_GET["ns"]
|
||||
$history[$_GET["db"]][] = array($query, time(), $time); // not DB - $_GET["db"] is changed in database.inc.php //! respect $_GET["ns"]
|
||||
return " <span class='time'>" . @date("H:i:s") . "</span> <a href='#$id' onclick=\"return !toggle('$id');\">" . lang('SQL command') . "</a>" // @ - time zone may be not set
|
||||
. "<div id='$id' class='hidden'><pre><code class='jush-$jush'>" . shorten_utf8($query, 1000) . '</code></pre>'
|
||||
. ($time ? " <span class='time'>($time)</span>" : '')
|
||||
. (support("sql") ? '<p><a href="' . h(str_replace("db=" . urlencode(DB), "db=" . urlencode($_GET["db"]), ME) . 'sql=&history=' . (count($history[$_GET["db"]]) - 1)) . '">' . lang('Edit') . '</a>' : '')
|
||||
. '</div>'
|
||||
;
|
||||
@@ -625,7 +691,7 @@ username.form['auth[driver]'].onchange();
|
||||
if ($style) {
|
||||
dump_csv(array_keys(fields($table)));
|
||||
}
|
||||
} elseif ($style) {
|
||||
} else {
|
||||
if ($is_view == 2) {
|
||||
$fields = array();
|
||||
foreach (fields($table) as $name => $field) {
|
||||
@@ -635,7 +701,8 @@ username.form['auth[driver]'].onchange();
|
||||
} else {
|
||||
$create = create_sql($table, $_POST["auto_increment"]);
|
||||
}
|
||||
if ($create) {
|
||||
set_utf8mb4($create);
|
||||
if ($style && $create) {
|
||||
if ($style == "DROP+CREATE" || $is_view == 1) {
|
||||
echo "DROP " . ($is_view == 2 ? "VIEW" : "TABLE") . " IF EXISTS " . table($table) . ";\n";
|
||||
}
|
||||
@@ -740,7 +807,7 @@ username.form['auth[driver]'].onchange();
|
||||
($ext == "sql" || $output != "file" ? "text/plain" : "text/csv") . "; charset=utf-8"
|
||||
)));
|
||||
if ($output == "gz") {
|
||||
ob_start('gzencode', 1e6);
|
||||
ob_start('ob_gzencode', 1e6);
|
||||
}
|
||||
return $ext;
|
||||
}
|
||||
@@ -765,7 +832,7 @@ username.form['auth[driver]'].onchange();
|
||||
?>
|
||||
<h1>
|
||||
<?php echo $this->name(); ?> <span class="version"><?php echo $VERSION; ?></span>
|
||||
<a href="http://www.adminer.org/#download" target="_blank" id="version"><?php echo (version_compare($VERSION, $_COOKIE["adminer_version"]) < 0 ? h($_COOKIE["adminer_version"]) : ""); ?></a>
|
||||
<a href="https://www.adminer.org/#download" target="_blank" id="version"><?php echo (version_compare($VERSION, $_COOKIE["adminer_version"]) < 0 ? h($_COOKIE["adminer_version"]) : ""); ?></a>
|
||||
</h1>
|
||||
<?php
|
||||
if ($missing == "auth") {
|
||||
@@ -791,11 +858,14 @@ username.form['auth[driver]'].onchange();
|
||||
$connection->select_db(DB);
|
||||
$tables = table_status('', true);
|
||||
}
|
||||
if (support("sql")) {
|
||||
?>
|
||||
?>
|
||||
<script type="text/javascript" src="../externals/jush/modules/jush.js"></script>
|
||||
<script type="text/javascript" src="../externals/jush/modules/jush-textarea.js"></script>
|
||||
<script type="text/javascript" src="../externals/jush/modules/jush-txt.js"></script>
|
||||
<script type="text/javascript" src="../externals/jush/modules/jush-js.js"></script>
|
||||
<?php
|
||||
if (support("sql")) {
|
||||
?>
|
||||
<script type="text/javascript" src="../externals/jush/modules/jush-<?php echo $jush; ?>.js"></script>
|
||||
<script type="text/javascript">
|
||||
<?php
|
||||
@@ -818,7 +888,7 @@ bodyLoad('<?php echo (is_object($connection) ? substr($connection->server_info,
|
||||
if (DB == "" || !$missing) {
|
||||
echo "<p class='links'>" . (support("sql") ? "<a href='" . h(ME) . "sql='" . bold(isset($_GET["sql"]) && !isset($_GET["import"])) . ">" . lang('SQL command') . "</a>\n<a href='" . h(ME) . "import='" . bold(isset($_GET["import"])) . ">" . lang('Import') . "</a>\n" : "") . "";
|
||||
if (support("dump")) {
|
||||
echo "<a href='" . h(ME) . "dump=" . urlencode(isset($_GET["table"]) ? $_GET["table"] : $_GET["select"]) . "' id='dump'" . bold(isset($_GET["dump"])) . ">" . lang('Dump') . "</a>\n";
|
||||
echo "<a href='" . h(ME) . "dump=" . urlencode(isset($_GET["table"]) ? $_GET["table"] : $_GET["select"]) . "' id='dump'" . bold(isset($_GET["dump"])) . ">" . lang('Export') . "</a>\n";
|
||||
}
|
||||
}
|
||||
if ($_GET["ns"] !== "" && !$missing && DB != "") {
|
||||
@@ -852,7 +922,7 @@ bodyLoad('<?php echo (is_object($connection) ? substr($connection->server_info,
|
||||
echo "<input type='submit' value='" . lang('Use') . "'" . ($databases ? " class='hidden'" : "") . ">\n";
|
||||
if ($missing != "db" && DB != "" && $connection->select_db(DB)) {
|
||||
if (support("scheme")) {
|
||||
echo "<br><select name='ns'$db_events>" . optionlist(array("" => "(" . lang('schema') . ")") + $adminer->schemas(), $_GET["ns"]) . "</select>";
|
||||
echo "<br>" . lang('Schema') . ": <select name='ns'$db_events>" . optionlist(array("" => "") + $adminer->schemas(), $_GET["ns"]) . "</select>";
|
||||
if ($_GET["ns"] != "") {
|
||||
set_schema($_GET["ns"]);
|
||||
}
|
||||
@@ -871,15 +941,18 @@ bodyLoad('<?php echo (is_object($connection) ? substr($connection->server_info,
|
||||
* @return null
|
||||
*/
|
||||
function tablesPrint($tables) {
|
||||
echo "<p id='tables' onmouseover='menuOver(this, event);' onmouseout='menuOut(this);'>\n";
|
||||
echo "<ul id='tables' onmouseover='menuOver(this, event);' onmouseout='menuOut(this);'>\n";
|
||||
foreach ($tables as $table => $status) {
|
||||
echo '<a href="' . h(ME) . 'select=' . urlencode($table) . '"' . bold($_GET["select"] == $table || $_GET["edit"] == $table) . ">" . lang('select') . "</a> ";
|
||||
echo '<li><a href="' . h(ME) . 'select=' . urlencode($table) . '"' . bold($_GET["select"] == $table || $_GET["edit"] == $table, "select") . ">" . lang('select') . "</a> ";
|
||||
$name = $this->tableName($status);
|
||||
echo (support("table") || support("indexes")
|
||||
? '<a href="' . h(ME) . 'table=' . urlencode($table) . '"' . bold(in_array($table, array($_GET["table"], $_GET["create"], $_GET["indexes"], $_GET["foreign"], $_GET["trigger"])), (is_view($status) ? "view" : "")) . " title='" . lang('Show structure') . "'>$name</a>"
|
||||
? '<a href="' . h(ME) . 'table=' . urlencode($table) . '"'
|
||||
. bold(in_array($table, array($_GET["table"], $_GET["create"], $_GET["indexes"], $_GET["foreign"], $_GET["trigger"])), (is_view($status) ? "view" : "structure"))
|
||||
. " title='" . lang('Show structure') . "'>$name</a>"
|
||||
: "<span>$name</span>"
|
||||
) . "<br>\n";
|
||||
) . "\n";
|
||||
}
|
||||
echo "</ul>\n";
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -15,29 +15,68 @@ if ($_COOKIE["adminer_permanent"]) {
|
||||
}
|
||||
}
|
||||
|
||||
function add_invalid_login() {
|
||||
global $adminer;
|
||||
$filename = get_temp_dir() . "/adminer.invalid";
|
||||
$fp = @fopen($filename, "r+"); // @ - may not exist
|
||||
if (!$fp) { // c+ is available since PHP 5.2.6
|
||||
$fp = @fopen($filename, "w"); // @ - may not be writable
|
||||
if (!$fp) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
flock($fp, LOCK_EX);
|
||||
$invalids = unserialize(stream_get_contents($fp));
|
||||
$time = time();
|
||||
if ($invalids) {
|
||||
foreach ($invalids as $ip => $val) {
|
||||
if ($val[0] < $time) {
|
||||
unset($invalids[$ip]);
|
||||
}
|
||||
}
|
||||
}
|
||||
$invalid = &$invalids[$adminer->bruteForceKey()];
|
||||
if (!$invalid) {
|
||||
$invalid = array($time + 30*60, 0); // active for 30 minutes
|
||||
}
|
||||
$invalid[1]++;
|
||||
$serialized = serialize($invalids);
|
||||
rewind($fp);
|
||||
fwrite($fp, $serialized);
|
||||
ftruncate($fp, strlen($serialized));
|
||||
flock($fp, LOCK_UN);
|
||||
fclose($fp);
|
||||
}
|
||||
|
||||
$auth = $_POST["auth"];
|
||||
if ($auth) {
|
||||
$invalids = unserialize(@file_get_contents(get_temp_dir() . "/adminer.invalid")); // @ - may not exist
|
||||
$invalid = $invalids[$adminer->bruteForceKey()];
|
||||
$next_attempt = ($invalid[1] > 30 ? $invalid[0] - time() : 0); // allow 30 invalid attempts
|
||||
if ($next_attempt > 0) { //! do the same with permanent login
|
||||
auth_error(lang('Too many unsuccessful logins, try again in %d minute(s).', ceil($next_attempt / 60)));
|
||||
}
|
||||
session_regenerate_id(); // defense against session fixation
|
||||
$driver = $auth["driver"];
|
||||
$vendor = $auth["driver"];
|
||||
$server = $auth["server"];
|
||||
$username = $auth["username"];
|
||||
$password = $auth["password"];
|
||||
$password = (string) $auth["password"];
|
||||
$db = $auth["db"];
|
||||
set_password($driver, $server, $username, $password);
|
||||
$_SESSION["db"][$driver][$server][$username][$db] = true;
|
||||
set_password($vendor, $server, $username, $password);
|
||||
$_SESSION["db"][$vendor][$server][$username][$db] = true;
|
||||
if ($auth["permanent"]) {
|
||||
$key = base64_encode($driver) . "-" . base64_encode($server) . "-" . base64_encode($username) . "-" . base64_encode($db);
|
||||
$key = base64_encode($vendor) . "-" . base64_encode($server) . "-" . base64_encode($username) . "-" . base64_encode($db);
|
||||
$private = $adminer->permanentLogin(true);
|
||||
$permanent[$key] = "$key:" . base64_encode($private ? encrypt_string($password, $private) : "");
|
||||
cookie("adminer_permanent", implode(" ", $permanent));
|
||||
}
|
||||
if (count($_POST) == 1 // 1 - auth
|
||||
|| DRIVER != $driver
|
||||
|| DRIVER != $vendor
|
||||
|| SERVER != $server
|
||||
|| $_GET["username"] !== $username // "0" == "00"
|
||||
|| DB != $db
|
||||
) {
|
||||
redirect(auth_url($driver, $server, $username, $db));
|
||||
redirect(auth_url($vendor, $server, $username, $db));
|
||||
}
|
||||
|
||||
} elseif ($_POST["logout"]) {
|
||||
@@ -75,27 +114,32 @@ function unset_permanent() {
|
||||
cookie("adminer_permanent", implode(" ", $permanent));
|
||||
}
|
||||
|
||||
function auth_error($exception = null) {
|
||||
global $connection, $adminer, $has_token;
|
||||
/** Renders an error message and a login form
|
||||
* @param string plain text
|
||||
* @return null exits
|
||||
*/
|
||||
function auth_error($error) {
|
||||
global $adminer, $has_token;
|
||||
$session_name = session_name();
|
||||
$error = "";
|
||||
if (!$_COOKIE[$session_name] && $_GET[$session_name] && ini_bool("session.use_only_cookies")) {
|
||||
$error = lang('Session support must be enabled.');
|
||||
} elseif (isset($_GET["username"])) {
|
||||
if (isset($_GET["username"])) {
|
||||
header("HTTP/1.1 403 Forbidden"); // 401 requires sending WWW-Authenticate header
|
||||
if (($_COOKIE[$session_name] || $_GET[$session_name]) && !$has_token) {
|
||||
$error = lang('Session expired, please login again.');
|
||||
} else {
|
||||
add_invalid_login();
|
||||
$password = get_password();
|
||||
if ($password !== null) {
|
||||
$error = h($exception ? $exception->getMessage() : (is_string($connection) ? $connection : lang('Invalid credentials.')));
|
||||
if ($password === false) {
|
||||
$error .= '<br>' . lang('Master password expired. <a href="http://www.adminer.org/en/extension/" target="_blank">Implement</a> %s method to make it permanent.', '<code>permanentLogin()</code>');
|
||||
$error .= '<br>' . lang('Master password expired. <a href="https://www.adminer.org/en/extension/" target="_blank">Implement</a> %s method to make it permanent.', '<code>permanentLogin()</code>');
|
||||
}
|
||||
set_password(DRIVER, SERVER, $_GET["username"], null);
|
||||
}
|
||||
unset_permanent();
|
||||
}
|
||||
}
|
||||
if (!$_COOKIE[$session_name] && $_GET[$session_name] && ini_bool("session.use_only_cookies")) {
|
||||
$error = lang('Session support must be enabled.');
|
||||
}
|
||||
$params = session_get_cookie_params();
|
||||
cookie("adminer_key", ($_COOKIE["adminer_key"] ? $_COOKIE["adminer_key"] : rand_string()), $params["lifetime"]);
|
||||
page_header(lang('Login'), $error, null);
|
||||
@@ -106,24 +150,7 @@ function auth_error($exception = null) {
|
||||
echo "</div>\n";
|
||||
echo "</form>\n";
|
||||
page_footer("auth");
|
||||
}
|
||||
|
||||
function set_password($vendor, $server, $username, $password) {
|
||||
$_SESSION["pwds"][$vendor][$server][$username] = ($_COOKIE["adminer_key"] && is_string($password)
|
||||
? array(encrypt_string($password, $_COOKIE["adminer_key"]))
|
||||
: $password
|
||||
);
|
||||
}
|
||||
|
||||
function get_password() {
|
||||
$return = get_session("pwds");
|
||||
if (is_array($return)) {
|
||||
$return = ($_COOKIE["adminer_key"]
|
||||
? decrypt_string($return[0], $_COOKIE["adminer_key"])
|
||||
: false
|
||||
);
|
||||
}
|
||||
return $return;
|
||||
exit;
|
||||
}
|
||||
|
||||
if (isset($_GET["username"])) {
|
||||
@@ -137,13 +164,12 @@ if (isset($_GET["username"])) {
|
||||
$connection = connect();
|
||||
}
|
||||
|
||||
if (!is_object($connection) || !$adminer->login($_GET["username"], get_password())) {
|
||||
auth_error();
|
||||
exit;
|
||||
}
|
||||
|
||||
$driver = new Min_Driver($connection);
|
||||
|
||||
if (!is_object($connection) || ($login = $adminer->login($_GET["username"], get_password())) !== true) {
|
||||
auth_error((is_string($connection) ? h($connection) : (is_string($login) ? $login : lang('Invalid credentials.'))));
|
||||
}
|
||||
|
||||
if ($auth && $_POST["token"]) {
|
||||
$_POST["token"] = $token; // reset token after explicit login
|
||||
}
|
||||
@@ -164,7 +190,7 @@ if ($_POST) {
|
||||
}
|
||||
$error = (!$_POST["token"] && $max_vars
|
||||
? lang('Maximum number of allowed fields exceeded. Please increase %s.', "'$ini'")
|
||||
: lang('Invalid CSRF token. Send the form again.')
|
||||
: lang('Invalid CSRF token. Send the form again.') . ' ' . lang('If you did not send this request from Adminer then close this page.')
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
@@ -64,6 +64,7 @@ include "../adminer/drivers/sqlite.inc.php";
|
||||
include "../adminer/drivers/pgsql.inc.php";
|
||||
include "../adminer/drivers/oracle.inc.php";
|
||||
include "../adminer/drivers/mssql.inc.php";
|
||||
include "../adminer/drivers/firebird.inc.php";
|
||||
include "../adminer/drivers/simpledb.inc.php";
|
||||
include "../adminer/drivers/mongo.inc.php";
|
||||
include "../adminer/drivers/elastic.inc.php";
|
||||
@@ -88,7 +89,7 @@ if (!ini_bool("session.use_cookies") || @ini_set("session.use_cookies", false) !
|
||||
session_write_close(); // improves concurrency if a user opens several pages at once, may be restarted later
|
||||
}
|
||||
|
||||
include "./include/connect.inc.php";
|
||||
include "./include/editing.inc.php";
|
||||
include "./include/connect.inc.php";
|
||||
|
||||
$on_actions = "RESTRICT|NO ACTION|CASCADE|SET NULL|SET DEFAULT"; ///< @var string used in foreign_keys()
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
<?php
|
||||
function connect_error() {
|
||||
global $adminer, $connection, $token, $error, $drivers;
|
||||
$databases = array();
|
||||
if (DB != "") {
|
||||
header("HTTP/1.1 404 Not Found");
|
||||
page_header(lang('Database') . ": " . h(DB), lang('Invalid database.'), true);
|
||||
@@ -13,17 +12,18 @@ function connect_error() {
|
||||
page_header(lang('Select database'), $error, false);
|
||||
echo "<p class='links'>\n";
|
||||
foreach (array(
|
||||
'database' => lang('Create new database'),
|
||||
'database' => lang('Create database'),
|
||||
'privileges' => lang('Privileges'),
|
||||
'processlist' => lang('Process list'),
|
||||
'variables' => lang('Variables'),
|
||||
'status' => lang('Status'),
|
||||
'replication' => lang('Replication'),
|
||||
) as $key => $val) {
|
||||
if (support($key)) {
|
||||
echo "<a href='" . h(ME) . "$key='>$val</a>\n";
|
||||
}
|
||||
}
|
||||
echo "<p>" . lang('%s version: %s through PHP extension %s', $drivers[DRIVER], "<b>$connection->server_info</b>", "<b>$connection->extension</b>") . "\n";
|
||||
echo "<p>" . lang('%s version: %s through PHP extension %s', $drivers[DRIVER], "<b>" . h($connection->server_info) . "</b>", "<b>$connection->extension</b>") . "\n";
|
||||
echo "<p>" . lang('Logged as: %s', "<b>" . h(logged_user()) . "</b>") . "\n";
|
||||
$databases = $adminer->databases();
|
||||
if ($databases) {
|
||||
@@ -31,15 +31,26 @@ function connect_error() {
|
||||
$collations = collations();
|
||||
echo "<form action='' method='post'>\n";
|
||||
echo "<table cellspacing='0' class='checkable' onclick='tableClick(event);' ondblclick='tableClick(event, true);'>\n";
|
||||
echo "<thead><tr>" . (support("database") ? "<td> " : "") . "<th>" . lang('Database') . "<td>" . lang('Collation') . "<td>" . lang('Tables') . "</thead>\n";
|
||||
echo "<thead><tr>"
|
||||
. (support("database") ? "<td> " : "")
|
||||
. "<th>" . lang('Database') . " - <a href='" . h(ME) . "refresh=1'>" . lang('Refresh') . "</a>"
|
||||
. "<td>" . lang('Collation')
|
||||
. "<td>" . lang('Tables')
|
||||
. "<td>" . lang('Size') . " - <a href='" . h(ME) . "dbsize=1' onclick=\"return !ajaxSetHtml('" . h(js_escape(ME)) . "script=connect');\">" . lang('Compute') . "</a>"
|
||||
. "</thead>\n"
|
||||
;
|
||||
|
||||
foreach ($databases as $db) {
|
||||
$databases = ($_GET["dbsize"] ? count_tables($databases) : array_flip($databases));
|
||||
|
||||
foreach ($databases as $db => $tables) {
|
||||
$root = h(ME) . "db=" . urlencode($db);
|
||||
echo "<tr" . odd() . ">" . (support("database") ? "<td>" . checkbox("db[]", $db, in_array($db, (array) $_POST["db"])) : "");
|
||||
echo "<th><a href='$root'>" . h($db) . "</a>";
|
||||
$id = h("Db-" . $db);
|
||||
echo "<tr" . odd() . ">" . (support("database") ? "<td>" . checkbox("db[]", $db, in_array($db, (array) $_POST["db"]), "", "", "", $id) : "");
|
||||
echo "<th><a href='$root' id='$db'>" . h($db) . "</a>";
|
||||
$collation = nbsp(db_collation($db, $collations));
|
||||
echo "<td>" . (support("database") ? "<a href='$root" . ($scheme ? "&ns=" : "") . "&database=' title='" . lang('Alter database') . "'>$collation</a>" : $collation);
|
||||
echo "<td align='right'><a href='$root&schema=' id='tables-" . h($db) . "' title='" . lang('Database schema') . "'>?</a>";
|
||||
echo "<td align='right'><a href='$root&schema=' id='tables-" . h($db) . "' title='" . lang('Database schema') . "'>" . ($_GET["dbsize"] ? $tables : "?") . "</a>";
|
||||
echo "<td align='right' id='size-" . h($db) . "'>" . ($_GET["dbsize"] ? db_size($db) : "?");
|
||||
echo "\n";
|
||||
}
|
||||
|
||||
@@ -55,13 +66,9 @@ function connect_error() {
|
||||
echo "<input type='hidden' name='token' value='$token'>\n";
|
||||
echo "</form>\n";
|
||||
}
|
||||
echo "<p><a href='" . h(ME) . "refresh=1'>" . lang('Refresh') . "</a>\n";
|
||||
}
|
||||
|
||||
page_footer("db");
|
||||
if ($databases) {
|
||||
echo "<script type='text/javascript'>ajaxSetHtml('" . js_escape(ME) . "script=connect');</script>\n";
|
||||
}
|
||||
}
|
||||
|
||||
if (isset($_GET["status"])) {
|
||||
@@ -71,7 +78,7 @@ if (isset($_GET["import"])) {
|
||||
$_GET["sql"] = $_GET["import"];
|
||||
}
|
||||
|
||||
if (!(DB != "" ? $connection->select_db(DB) : isset($_GET["sql"]) || isset($_GET["dump"]) || isset($_GET["database"]) || isset($_GET["processlist"]) || isset($_GET["privileges"]) || isset($_GET["user"]) || isset($_GET["variables"]) || $_GET["script"] == "connect" || $_GET["script"] == "kill")) {
|
||||
if (!(DB != "" ? $connection->select_db(DB) : isset($_GET["sql"]) || isset($_GET["dump"]) || isset($_GET["database"]) || isset($_GET["processlist"]) || isset($_GET["privileges"]) || isset($_GET["user"]) || isset($_GET["replication"]) || isset($_GET["variables"]) || $_GET["script"] == "connect" || $_GET["script"] == "kill")) {
|
||||
if (DB != "" || $_GET["refresh"]) {
|
||||
restart_session();
|
||||
set_session("dbs", null);
|
||||
|
||||
@@ -9,6 +9,10 @@
|
||||
function page_header($title, $error = "", $breadcrumb = array(), $title2 = "") {
|
||||
global $LANG, $VERSION, $adminer, $drivers, $jush;
|
||||
page_headers();
|
||||
if (is_ajax() && $error) {
|
||||
page_messages($error);
|
||||
exit;
|
||||
}
|
||||
$title_all = $title . ($title2 != "" ? ": $title2" : "");
|
||||
$title_page = strip_tags($title_all . (SERVER != "" && SERVER != "localhost" ? h(" - " . SERVER) : "") . " - " . $adminer->name());
|
||||
?>
|
||||
@@ -17,6 +21,7 @@ function page_header($title, $error = "", $breadcrumb = array(), $title2 = "") {
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta http-equiv="Content-Script-Type" content="text/javascript">
|
||||
<meta name="robots" content="noindex">
|
||||
<meta name="referrer" content="origin-when-crossorigin">
|
||||
<title><?php echo $title_page; ?></title>
|
||||
<link rel="stylesheet" type="text/css" href="../adminer/static/default.css">
|
||||
<script type="text/javascript" src="../adminer/static/functions.js"></script>
|
||||
@@ -32,6 +37,7 @@ function page_header($title, $error = "", $breadcrumb = array(), $title2 = "") {
|
||||
<body class="<?php echo lang('ltr'); ?> nojs" onkeydown="bodyKeydown(event);" onclick="bodyClick(event);"<?php echo (isset($_COOKIE["adminer_version"]) ? "" : " onload=\"verifyVersion('$VERSION');\""); ?>>
|
||||
<script type="text/javascript">
|
||||
document.body.className = document.body.className.replace(/ nojs/, ' js');
|
||||
var offlineMessage = '<?php echo js_escape(lang('You are offline.')); ?>';
|
||||
</script>
|
||||
|
||||
<div id="help" class="jush-<?php echo $jush; ?> jsonly hidden" onmouseover="helpOpen = 1;" onmouseout="helpMouseout(this, event);"></div>
|
||||
@@ -65,6 +71,7 @@ document.body.className = document.body.className.replace(/ nojs/, ' js');
|
||||
}
|
||||
}
|
||||
echo "<h2>$title_all</h2>\n";
|
||||
echo "<div id='ajaxstatus' class='jsonly hidden'></div>\n";
|
||||
restart_session();
|
||||
page_messages($error);
|
||||
$databases = &get_session("dbs");
|
||||
|
||||
@@ -6,18 +6,10 @@
|
||||
/** Create object for performing database operations
|
||||
* @param Min_DB
|
||||
*/
|
||||
function Min_SQL($connection) {
|
||||
function __construct($connection) {
|
||||
$this->_conn = $connection;
|
||||
}
|
||||
|
||||
/** Quote a SQL string or null value
|
||||
* @param string
|
||||
* @return string
|
||||
*/
|
||||
function quote($value) {
|
||||
return ($value === null ? "NULL" : $this->_conn->quote($value));
|
||||
}
|
||||
|
||||
/** Select data from table
|
||||
* @param string
|
||||
* @param array result of $adminer->selectColumnsProcess()[0]
|
||||
@@ -42,10 +34,12 @@
|
||||
"\n"
|
||||
);
|
||||
}
|
||||
$start = microtime(true);
|
||||
$return = $this->_conn->query($query);
|
||||
if ($print) {
|
||||
echo $adminer->selectQuery($query);
|
||||
echo $adminer->selectQuery($query, format_time($start));
|
||||
}
|
||||
return $this->_conn->query($query);
|
||||
return $return;
|
||||
}
|
||||
|
||||
/** Delete data from table
|
||||
|
||||
@@ -3,9 +3,10 @@
|
||||
* @param Min_Result
|
||||
* @param Min_DB connection to examine indexes
|
||||
* @param array
|
||||
* @param int
|
||||
* @return array $orgtables
|
||||
*/
|
||||
function select($result, $connection2 = null, $orgtables = array()) {
|
||||
function select($result, $connection2 = null, $orgtables = array(), $limit = 0) {
|
||||
global $jush;
|
||||
$links = array(); // colno => orgtable - create links from these columns
|
||||
$indexes = array(); // orgtable => array(column => colno) - primary keys
|
||||
@@ -14,7 +15,7 @@ function select($result, $connection2 = null, $orgtables = array()) {
|
||||
$types = array(); // colno => type - display char in <code>
|
||||
$return = array(); // table => orgtable - mapping to use in EXPLAIN
|
||||
odd(''); // reset odd for each result
|
||||
for ($i=0; $row = $result->fetch_row(); $i++) {
|
||||
for ($i=0; (!$limit || $i < $limit) && ($row = $result->fetch_row()); $i++) {
|
||||
if (!$i) {
|
||||
echo "<table cellspacing='0' class='nowrap'>\n";
|
||||
echo "<thead><tr>";
|
||||
@@ -111,9 +112,9 @@ function referencable_primary($self) {
|
||||
|
||||
/** Print SQL <textarea> tag
|
||||
* @param string
|
||||
* @param string or array in which case [0] of every element is used
|
||||
* @param int
|
||||
* @param int
|
||||
* @param string
|
||||
* @return null
|
||||
*/
|
||||
function textarea($name, $value, $rows = 10, $cols = 80) {
|
||||
@@ -121,7 +122,7 @@ function textarea($name, $value, $rows = 10, $cols = 80) {
|
||||
echo "<textarea name='$name' rows='$rows' cols='$cols' class='sqlarea jush-$jush' spellcheck='false' wrap='off'>";
|
||||
if (is_array($value)) {
|
||||
foreach ($value as $val) { // not implode() to save memory
|
||||
echo h($val[0]) . "\n\n\n"; // $val == array($query, $time)
|
||||
echo h($val[0]) . "\n\n\n"; // $val == array($query, $time, $elapsed)
|
||||
}
|
||||
} else {
|
||||
echo h($value);
|
||||
@@ -140,7 +141,7 @@ function edit_type($key, $field, $collations, $foreign_keys = array()) {
|
||||
global $structured_types, $types, $unsigned, $on_actions;
|
||||
$type = $field["type"];
|
||||
?>
|
||||
<td><select name="<?php echo $key; ?>[type]" class="type" onfocus="lastType = selectValue(this);" onchange="editingTypeChange(this);"<?php echo on_help("getTarget(event).value", 1); ?>><?php
|
||||
<td><select name="<?php echo h($key); ?>[type]" class="type" onfocus="lastType = selectValue(this);" onchange="editingTypeChange(this);"<?php echo on_help("getTarget(event).value", 1); ?> aria-labelledby="label-type"><?php
|
||||
if ($type && !isset($types[$type]) && !isset($foreign_keys[$type])) {
|
||||
array_unshift($structured_types, $type);
|
||||
}
|
||||
@@ -149,11 +150,11 @@ if ($foreign_keys) {
|
||||
}
|
||||
echo optionlist($structured_types, $type);
|
||||
?></select>
|
||||
<td><input name="<?php echo $key; ?>[length]" value="<?php echo h($field["length"]); ?>" size="3" onfocus="editingLengthFocus(this);"<?php echo (!$field["length"] && preg_match('~var(char|binary)$~', $type) ? " class='required'" : ""); ?> onchange="editingLengthChange(this);" onkeyup="this.onchange();"><td class="options"><?php //! type="number" with enabled JavaScript
|
||||
echo "<select name='$key" . "[collation]'" . (preg_match('~(char|text|enum|set)$~', $type) ? "" : " class='hidden'") . '><option value="">(' . lang('collation') . ')' . optionlist($collations, $field["collation"]) . '</select>';
|
||||
echo ($unsigned ? "<select name='$key" . "[unsigned]'" . (!$type || preg_match('~((^|[^o])int|float|double|decimal)$~', $type) ? "" : " class='hidden'") . '><option>' . optionlist($unsigned, $field["unsigned"]) . '</select>' : '');
|
||||
echo (isset($field['on_update']) ? "<select name='$key" . "[on_update]'" . ($type == "timestamp" ? "" : " class='hidden'") . '>' . optionlist(array("" => "(" . lang('ON UPDATE') . ")", "CURRENT_TIMESTAMP"), $field["on_update"]) . '</select>' : '');
|
||||
echo ($foreign_keys ? "<select name='$key" . "[on_delete]'" . (preg_match("~`~", $type) ? "" : " class='hidden'") . "><option value=''>(" . lang('ON DELETE') . ")" . optionlist(explode("|", $on_actions), $field["on_delete"]) . "</select> " : " "); // space for IE
|
||||
<td><input name="<?php echo h($key); ?>[length]" value="<?php echo h($field["length"]); ?>" size="3" onfocus="editingLengthFocus(this);"<?php echo (!$field["length"] && preg_match('~var(char|binary)$~', $type) ? " class='required'" : ""); ?> onchange="editingLengthChange(this);" onkeyup="this.onchange();" aria-labelledby="label-length"><td class="options"><?php //! type="number" with enabled JavaScript
|
||||
echo "<select name='" . h($key) . "[collation]'" . (preg_match('~(char|text|enum|set)$~', $type) ? "" : " class='hidden'") . '><option value="">(' . lang('collation') . ')' . optionlist($collations, $field["collation"]) . '</select>';
|
||||
echo ($unsigned ? "<select name='" . h($key) . "[unsigned]'" . (!$type || preg_match('~((^|[^o])int|float|double|decimal)$~', $type) ? "" : " class='hidden'") . '><option>' . optionlist($unsigned, $field["unsigned"]) . '</select>' : '');
|
||||
echo (isset($field['on_update']) ? "<select name='" . h($key) . "[on_update]'" . (preg_match('~timestamp|datetime~', $type) ? "" : " class='hidden'") . '>' . optionlist(array("" => "(" . lang('ON UPDATE') . ")", "CURRENT_TIMESTAMP"), $field["on_update"]) . '</select>' : '');
|
||||
echo ($foreign_keys ? "<select name='" . h($key) . "[on_delete]'" . (preg_match("~`~", $type) ? "" : " class='hidden'") . "><option value=''>(" . lang('ON DELETE') . ")" . optionlist(explode("|", $on_actions), $field["on_delete"]) . "</select> " : " "); // space for IE
|
||||
}
|
||||
|
||||
/** Filter length value including enums
|
||||
@@ -196,10 +197,11 @@ function process_field($field, $type_field) {
|
||||
($field["null"] ? " NULL" : " NOT NULL"), // NULL for timestamp
|
||||
(isset($default) ? " DEFAULT " . (
|
||||
(preg_match('~time~', $field["type"]) && preg_match('~^CURRENT_TIMESTAMP$~i', $default))
|
||||
|| ($jush == "sqlite" && preg_match('~^CURRENT_(TIME|TIMESTAMP|DATE)$~i', $default))
|
||||
|| ($field["type"] == "bit" && preg_match("~^([0-9]+|b'[0-1]+')\$~", $default))
|
||||
|| ($jush == "pgsql" && preg_match("~^[a-z]+\\(('[^']*')+\\)\$~", $default))
|
||||
? $default : q($default)) : ""),
|
||||
($field["type"] == "timestamp" && $field["on_update"] ? " ON UPDATE $field[on_update]" : ""),
|
||||
(preg_match('~timestamp|datetime~', $field["type"]) && $field["on_update"] ? " ON UPDATE $field[on_update]" : ""),
|
||||
(support("comment") && $field["comment"] != "" ? " COMMENT " . q($field["comment"]) : ""),
|
||||
($field["auto_increment"] ? auto_increment() : null),
|
||||
);
|
||||
@@ -232,23 +234,24 @@ function type_class($type) {
|
||||
*/
|
||||
function edit_fields($fields, $collations, $type = "TABLE", $foreign_keys = array(), $comments = false) {
|
||||
global $connection, $inout;
|
||||
$fields = array_values($fields);
|
||||
?>
|
||||
<thead><tr class="wrap">
|
||||
<?php if ($type == "PROCEDURE") { ?><td> <?php } ?>
|
||||
<th><?php echo ($type == "TABLE" ? lang('Column name') : lang('Parameter name')); ?>
|
||||
<td><?php echo lang('Type'); ?><textarea id="enum-edit" rows="4" cols="12" wrap="off" style="display: none;" onblur="editingLengthBlur(this);"></textarea>
|
||||
<td><?php echo lang('Length'); ?>
|
||||
<td><?php echo lang('Options'); ?>
|
||||
<th id="label-name"><?php echo ($type == "TABLE" ? lang('Column name') : lang('Parameter name')); ?>
|
||||
<td id="label-type"><?php echo lang('Type'); ?><textarea id="enum-edit" rows="4" cols="12" wrap="off" style="display: none;" onblur="editingLengthBlur(this);"></textarea>
|
||||
<td id="label-length"><?php echo lang('Length'); ?>
|
||||
<td><?php echo lang('Options'); /* no label required, options have their own label */ ?>
|
||||
<?php if ($type == "TABLE") { ?>
|
||||
<td>NULL
|
||||
<td><input type="radio" name="auto_increment_col" value=""><acronym title="<?php echo lang('Auto Increment'); ?>">AI</acronym><?php echo doc_link(array(
|
||||
<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(
|
||||
'sql' => "example-auto-increment.html",
|
||||
'sqlite' => "autoinc.html",
|
||||
'pgsql' => "datatype.html#DATATYPE-SERIAL",
|
||||
'mssql' => "ms186775.aspx",
|
||||
)); ?>
|
||||
<td><?php echo lang('Default values'); ?>
|
||||
<?php echo (support("comment") ? "<td" . ($comments ? "" : " class='hidden'") . ">" . lang('Comment') : ""); ?>
|
||||
<td id="label-default"><?php echo lang('Default value'); ?>
|
||||
<?php echo (support("comment") ? "<td id='label-comment'" . ($comments ? "" : " class='hidden'") . ">" . lang('Comment') : ""); ?>
|
||||
<?php } ?>
|
||||
<td><?php echo "<input type='image' class='icon' name='add[" . (support("move_col") ? 0 : count($fields)) . "]' src='../adminer/static/plus.gif' alt='+' title='" . lang('Add next') . "'>"; ?><script type="text/javascript">row_count = <?php echo count($fields); ?>;</script>
|
||||
</thead>
|
||||
@@ -261,21 +264,21 @@ function edit_fields($fields, $collations, $type = "TABLE", $foreign_keys = arra
|
||||
?>
|
||||
<tr<?php echo ($display ? "" : " style='display: none;'"); ?>>
|
||||
<?php echo ($type == "PROCEDURE" ? "<td>" . html_select("fields[$i][inout]", explode("|", $inout), $field["inout"]) : ""); ?>
|
||||
<th><?php if ($display) { ?><input name="fields[<?php echo $i; ?>][field]" value="<?php echo h($field["field"]); ?>" onchange="editingNameChange(this);<?php echo ($field["field"] != "" || count($fields) > 1 ? '' : ' editingAddRow(this);" onkeyup="if (this.value) editingAddRow(this);'); ?>" maxlength="64" autocapitalize="off"><?php } ?>
|
||||
<th><?php if ($display) { ?><input name="fields[<?php echo $i; ?>][field]" value="<?php echo h($field["field"]); ?>" onchange="editingNameChange(this);<?php echo ($field["field"] != "" || count($fields) > 1 ? '' : ' editingAddRow(this);" onkeyup="if (this.value) editingAddRow(this);'); ?>" maxlength="64" autocapitalize="off" aria-labelledby="label-name"><?php } ?>
|
||||
<input type="hidden" name="fields[<?php echo $i; ?>][orig]" value="<?php echo h($orig); ?>">
|
||||
<?php edit_type("fields[$i]", $field, $collations, $foreign_keys); ?>
|
||||
<?php if ($type == "TABLE") { ?>
|
||||
<td><?php echo checkbox("fields[$i][null]", 1, $field["null"], "", "", "block"); ?>
|
||||
<td><label class="block"><input type="radio" name="auto_increment_col" value="<?php echo $i; ?>"<?php if ($field["auto_increment"]) { ?> checked<?php } ?> onclick="var field = this.form['fields[' + this.value + '][field]']; if (!field.value) { field.value = 'id'; field.onchange(); }"></label><td><?php
|
||||
echo checkbox("fields[$i][has_default]", 1, $field["has_default"]); ?><input name="fields[<?php echo $i; ?>][default]" value="<?php echo h($field["default"]); ?>" onkeyup="keyupChange.call(this);" onchange="this.previousSibling.checked = true;">
|
||||
<?php echo (support("comment") ? "<td" . ($comments ? "" : " class='hidden'") . "><input name='fields[$i][comment]' value='" . h($field["comment"]) . "' maxlength='" . ($connection->server_info >= 5.5 ? 1024 : 255) . "'>" : ""); ?>
|
||||
<td><?php echo checkbox("fields[$i][null]", 1, $field["null"], "", "", "block", "label-null"); ?>
|
||||
<td><label class="block"><input type="radio" name="auto_increment_col" value="<?php echo $i; ?>"<?php if ($field["auto_increment"]) { ?> checked<?php } ?> onclick="var field = this.form['fields[' + this.value + '][field]']; if (!field.value) { field.value = 'id'; field.onchange(); }" aria-labelledby="label-ai"></label><td><?php
|
||||
echo checkbox("fields[$i][has_default]", 1, $field["has_default"], "", "", "", "label-default"); ?><input name="fields[<?php echo $i; ?>][default]" value="<?php echo h($field["default"]); ?>" onkeyup="keyupChange.call(this);" onchange="this.previousSibling.checked = true;" aria-labelledby="label-default">
|
||||
<?php echo (support("comment") ? "<td" . ($comments ? "" : " class='hidden'") . "><input name='fields[$i][comment]' value='" . h($field["comment"]) . "' maxlength='" . ($connection->server_info >= 5.5 ? 1024 : 255) . "' aria-labelledby='label-comment'>" : ""); ?>
|
||||
<?php } ?>
|
||||
<?php
|
||||
echo "<td>";
|
||||
echo (support("move_col") ?
|
||||
"<input type='image' class='icon' name='add[$i]' src='../adminer/static/plus.gif' alt='+' title='" . lang('Add next') . "' onclick='return !editingAddRow(this, 1);'> "
|
||||
. "<input type='image' class='icon' name='up[$i]' src='../adminer/static/up.gif' alt='^' title='" . lang('Move up') . "'> "
|
||||
. "<input type='image' class='icon' name='down[$i]' src='../adminer/static/down.gif' alt='v' title='" . lang('Move down') . "'> "
|
||||
. "<input type='image' class='icon' name='up[$i]' src='../adminer/static/up.gif' alt='^' title='" . lang('Move up') . "' onclick='return !editingMoveRow(this, 1);'> "
|
||||
. "<input type='image' class='icon' name='down[$i]' src='../adminer/static/down.gif' alt='v' title='" . lang('Move down') . "' onclick='return !editingMoveRow(this, 0);'> "
|
||||
: "");
|
||||
echo ($orig == "" || support("drop_col") ? "<input type='image' class='icon' name='drop_col[$i]' src='../adminer/static/cross.gif' alt='x' title='" . lang('Remove') . "' onclick=\"return !editingRemoveRow(this, 'fields\$1[field]');\">" : "");
|
||||
echo "\n";
|
||||
@@ -287,7 +290,6 @@ echo checkbox("fields[$i][has_default]", 1, $field["has_default"]); ?><input nam
|
||||
* @return bool
|
||||
*/
|
||||
function process_fields(&$fields) {
|
||||
ksort($fields);
|
||||
$offset = 0;
|
||||
if ($_POST["up"]) {
|
||||
$last = 0;
|
||||
@@ -394,7 +396,7 @@ function drop_create($drop, $create, $drop_created, $test, $drop_test, $location
|
||||
*/
|
||||
function create_trigger($on, $row) {
|
||||
global $jush;
|
||||
$timing_event = " $row[Timing] $row[Event]";
|
||||
$timing_event = " $row[Timing] $row[Event]" . ($row["Event"] == "UPDATE OF" ? " " . idf_escape($row["Of"]) : "");
|
||||
return "CREATE TRIGGER "
|
||||
. idf_escape($row["Trigger"])
|
||||
. ($jush == "mssql" ? $on . $timing_event : $timing_event . $on)
|
||||
@@ -429,9 +431,9 @@ function create_routine($routine, $row) {
|
||||
}
|
||||
|
||||
/** Remove current user definer from SQL command
|
||||
* @param string
|
||||
* @return string
|
||||
*/
|
||||
* @param string
|
||||
* @return string
|
||||
*/
|
||||
function remove_definer($query) {
|
||||
return preg_replace('~^([A-Z =]+) DEFINER=`' . preg_replace('~@(.*)~', '`@`(%|\\1)', logged_user()) . '`~', '\\1', $query); //! proper escaping of user
|
||||
}
|
||||
@@ -496,3 +498,41 @@ function doc_link($paths) {
|
||||
);
|
||||
return ($paths[$jush] ? "<a href='$urls[$jush]$paths[$jush]' target='_blank' rel='noreferrer'><sup>?</sup></a>" : "");
|
||||
}
|
||||
|
||||
/** Wrap gzencode() for usage in ob_start()
|
||||
* @param string
|
||||
* @return string
|
||||
*/
|
||||
function ob_gzencode($string) {
|
||||
// ob_start() callback recieves an optional parameter $phase but gzencode() accepts optional parameter $level
|
||||
return gzencode($string);
|
||||
}
|
||||
|
||||
/** Compute size of database
|
||||
* @param string
|
||||
* @return string formatted
|
||||
*/
|
||||
function db_size($db) {
|
||||
global $connection;
|
||||
if (!$connection->select_db($db)) {
|
||||
return "?";
|
||||
}
|
||||
$return = 0;
|
||||
foreach (table_status() as $table_status) {
|
||||
$return += $table_status["Data_length"] + $table_status["Index_length"];
|
||||
}
|
||||
return format_number($return);
|
||||
}
|
||||
|
||||
/** Print SET NAMES if utf8mb4 might be needed
|
||||
* @param string
|
||||
* @return null
|
||||
*/
|
||||
function set_utf8mb4($create) {
|
||||
global $connection;
|
||||
static $set = false;
|
||||
if (!$set && preg_match('~\butf8mb4~i', $create)) { // possible false positive
|
||||
$set = true;
|
||||
echo "SET NAMES " . charset($connection) . ";\n\n";
|
||||
}
|
||||
}
|
||||
|
||||
@@ -33,6 +33,14 @@ function escape_string($val) {
|
||||
return substr(q($val), 1, -1);
|
||||
}
|
||||
|
||||
/** Remove non-digits from a string
|
||||
* @param string
|
||||
* @return string
|
||||
*/
|
||||
function number($val) {
|
||||
return preg_replace('~[^0-9]+~', '', $val);
|
||||
}
|
||||
|
||||
/** Disable magic_quotes_gpc
|
||||
* @param array e.g. (&$_GET, &$_POST, &$_COOKIE)
|
||||
* @param bool whether to leave values as is
|
||||
@@ -61,16 +69,24 @@ function remove_slashes($process, $filter = false) {
|
||||
*/
|
||||
function bracket_escape($idf, $back = false) {
|
||||
// escape brackets inside name="x[]"
|
||||
static $trans = array(':' => ':1', ']' => ':2', '[' => ':3');
|
||||
static $trans = array(':' => ':1', ']' => ':2', '[' => ':3', '"' => ':4');
|
||||
return strtr($idf, ($back ? array_flip($trans) : $trans));
|
||||
}
|
||||
|
||||
/** Get connection charset
|
||||
* @param Min_DB
|
||||
* @return string
|
||||
*/
|
||||
function charset($connection) {
|
||||
return (version_compare($connection->server_info, "5.5.3") >= 0 ? "utf8mb4" : "utf8"); // SHOW CHARSET would require an extra query
|
||||
}
|
||||
|
||||
/** Escape for HTML
|
||||
* @param string
|
||||
* @return string
|
||||
*/
|
||||
function h($string) {
|
||||
return htmlspecialchars(str_replace("\0", "", $string), ENT_QUOTES);
|
||||
return str_replace("\0", "�", htmlspecialchars($string, ENT_QUOTES, 'utf-8'));
|
||||
}
|
||||
|
||||
/** Escape for TD
|
||||
@@ -96,11 +112,13 @@ function nl_br($string) {
|
||||
* @param string
|
||||
* @param string
|
||||
* @param string
|
||||
* @param string
|
||||
* @return string
|
||||
*/
|
||||
function checkbox($name, $value, $checked, $label = "", $onclick = "", $class = "") {
|
||||
function checkbox($name, $value, $checked, $label = "", $onclick = "", $class = "", $labelled_by = "") {
|
||||
$return = "<input type='checkbox' name='$name' value='" . h($value) . "'"
|
||||
. ($checked ? " checked" : "")
|
||||
. ($labelled_by ? " aria-labelledby='$labelled_by'" : "")
|
||||
. ($onclick ? ' onclick="' . h($onclick) . '"' : '')
|
||||
. ">"
|
||||
;
|
||||
@@ -136,11 +154,15 @@ function optionlist($options, $selected = null, $use_keys = false) {
|
||||
* @param array
|
||||
* @param string
|
||||
* @param string true for no onchange, false for radio
|
||||
* @param string
|
||||
* @return string
|
||||
*/
|
||||
function html_select($name, $options, $value = "", $onchange = true) {
|
||||
function html_select($name, $options, $value = "", $onchange = true, $labelled_by = "") {
|
||||
if ($onchange) {
|
||||
return "<select name='" . h($name) . "'" . (is_string($onchange) ? ' onchange="' . h($onchange) . '"' : "") . ">" . optionlist($options, $value) . "</select>";
|
||||
return "<select name='" . h($name) . "'"
|
||||
. (is_string($onchange) ? ' onchange="' . h($onchange) . '"' : "")
|
||||
. ($labelled_by ? " aria-labelledby='$labelled_by'" : "")
|
||||
. ">" . optionlist($options, $value) . "</select>";
|
||||
}
|
||||
$return = "";
|
||||
foreach ($options as $key => $val) {
|
||||
@@ -221,7 +243,7 @@ function json_row($key, $val = null) {
|
||||
echo "{";
|
||||
}
|
||||
if ($key != "") {
|
||||
echo ($first ? "" : ",") . "\n\t\"" . addcslashes($key, "\r\n\"\\/") . '": ' . ($val !== null ? '"' . addcslashes($val, "\r\n\"\\/") . '"' : 'undefined');
|
||||
echo ($first ? "" : ",") . "\n\t\"" . addcslashes($key, "\r\n\t\"\\/") . '": ' . ($val !== null ? '"' . addcslashes($val, "\r\n\"\\/") . '"' : 'null');
|
||||
$first = false;
|
||||
} else {
|
||||
echo "\n}\n";
|
||||
@@ -249,13 +271,41 @@ function sid() {
|
||||
return $return;
|
||||
}
|
||||
|
||||
/** Shortcut for $driver->quote($string)
|
||||
/** Set password to session
|
||||
* @param string
|
||||
* @param string
|
||||
* @param string
|
||||
* @param string
|
||||
* @return null
|
||||
*/
|
||||
function set_password($vendor, $server, $username, $password) {
|
||||
$_SESSION["pwds"][$vendor][$server][$username] = ($_COOKIE["adminer_key"] && is_string($password)
|
||||
? array(encrypt_string($password, $_COOKIE["adminer_key"]))
|
||||
: $password
|
||||
);
|
||||
}
|
||||
|
||||
/** Get password from session
|
||||
* @return string
|
||||
*/
|
||||
function get_password() {
|
||||
$return = get_session("pwds");
|
||||
if (is_array($return)) {
|
||||
$return = ($_COOKIE["adminer_key"]
|
||||
? decrypt_string($return[0], $_COOKIE["adminer_key"])
|
||||
: false
|
||||
);
|
||||
}
|
||||
return $return;
|
||||
}
|
||||
|
||||
/** Shortcut for $connection->quote($string)
|
||||
* @param string
|
||||
* @return string
|
||||
*/
|
||||
function q($string) {
|
||||
global $driver;
|
||||
return $driver->quote($string);
|
||||
global $connection;
|
||||
return $connection->quote($string);
|
||||
}
|
||||
|
||||
/** Get list of values from database
|
||||
@@ -339,30 +389,40 @@ function unique_array($row, $indexes) {
|
||||
}
|
||||
}
|
||||
|
||||
/** Escape column key used in where()
|
||||
* @param string
|
||||
* @return string
|
||||
*/
|
||||
function escape_key($key) {
|
||||
if (preg_match('(^([\w(]+)(' . str_replace("_", ".*", preg_quote(idf_escape("_"))) . ')([ \w)]+)$)', $key, $match)) { //! columns looking like functions
|
||||
return $match[1] . idf_escape(idf_unescape($match[2])) . $match[3]; //! SQL injection
|
||||
}
|
||||
return idf_escape($key);
|
||||
}
|
||||
|
||||
/** Create SQL condition from parsed query string
|
||||
* @param array parsed query string
|
||||
* @param array
|
||||
* @return string
|
||||
*/
|
||||
function where($where, $fields = array()) {
|
||||
global $jush;
|
||||
global $connection, $jush;
|
||||
$return = array();
|
||||
$function_pattern = '(^[\w\(]+(' . str_replace("_", ".*", preg_quote(idf_escape("_"))) . ')?\)+$)'; //! columns looking like functions
|
||||
foreach ((array) $where["where"] as $key => $val) {
|
||||
$key = bracket_escape($key, 1); // 1 - back
|
||||
$column = (preg_match($function_pattern, $key) ? $key : idf_escape($key)); //! SQL injection
|
||||
$column = escape_key($key);
|
||||
$return[] = $column
|
||||
. (($jush == "sql" && preg_match('~^[0-9]*\\.[0-9]*$~', $val)) || $jush == "mssql"
|
||||
? " LIKE " . q(addcslashes($val, "%_\\"))
|
||||
. ($jush == "sql" && preg_match('~^[0-9]*\\.[0-9]*$~', $val) ? " LIKE " . q(addcslashes($val, "%_\\"))
|
||||
: ($jush == "mssql" ? " LIKE " . q(preg_replace('~[_%[]~', '[\0]', $val))
|
||||
: " = " . unconvert_field($fields[$key], q($val))
|
||||
) // LIKE because of floats but slow with ints, in MS SQL because of text
|
||||
)) // LIKE because of floats but slow with ints, in MS SQL because of text
|
||||
; //! enum and set
|
||||
if ($jush == "sql" && preg_match("~[^ -@]~", $val)) { // not just [a-z] to catch non-ASCII characters
|
||||
$return[] = "$column = " . q($val) . " COLLATE utf8_bin";
|
||||
if ($jush == "sql" && preg_match('~char|text~', $fields[$key]["type"]) && preg_match("~[^ -@]~", $val)) { // not just [a-z] to catch non-ASCII characters
|
||||
$return[] = "$column = " . q($val) . " COLLATE " . charset($connection) . "_bin";
|
||||
}
|
||||
}
|
||||
foreach ((array) $where["null"] as $key) {
|
||||
$return[] = (preg_match($function_pattern, $key) ? $key : idf_escape($key)) . " IS NULL";
|
||||
$return[] = escape_key($key) . " IS NULL";
|
||||
}
|
||||
return implode(" AND ", $return);
|
||||
}
|
||||
@@ -417,18 +477,12 @@ function convert_fields($columns, $fields, $select = array()) {
|
||||
*/
|
||||
function cookie($name, $value, $lifetime = 2592000) { // 2592000 - 30 days
|
||||
global $HTTPS;
|
||||
$params = array(
|
||||
$name,
|
||||
(preg_match("~\n~", $value) ? "" : $value), // HTTP Response Splitting protection in PHP < 5.1.2
|
||||
($lifetime ? time() + $lifetime : 0),
|
||||
preg_replace('~\\?.*~', '', $_SERVER["REQUEST_URI"]),
|
||||
"",
|
||||
$HTTPS
|
||||
);
|
||||
if (version_compare(PHP_VERSION, '5.2.0') >= 0) {
|
||||
$params[] = true; // HttpOnly
|
||||
}
|
||||
return call_user_func_array('setcookie', $params);
|
||||
return header("Set-Cookie: $name=" . urlencode($value)
|
||||
. ($lifetime ? "; expires=" . gmdate("D, d M Y H:i:s", time() + $lifetime) . " GMT" : "")
|
||||
. "; path=" . preg_replace('~\\?.*~', '', $_SERVER["REQUEST_URI"])
|
||||
. ($HTTPS ? "; secure" : "")
|
||||
. "; HttpOnly; SameSite=lax",
|
||||
false);
|
||||
}
|
||||
|
||||
/** Restart stopped session
|
||||
@@ -518,19 +572,19 @@ function redirect($location, $message = null) {
|
||||
* @param bool
|
||||
* @param bool
|
||||
* @param bool
|
||||
* @param string
|
||||
* @return bool
|
||||
*/
|
||||
function query_redirect($query, $location, $message, $redirect = true, $execute = true, $failed = false) {
|
||||
function query_redirect($query, $location, $message, $redirect = true, $execute = true, $failed = false, $time = "") {
|
||||
global $connection, $error, $adminer;
|
||||
$time = "";
|
||||
if ($execute) {
|
||||
$start = microtime(true);
|
||||
$failed = !$connection->query($query);
|
||||
$time = "; -- " . format_time($start, microtime(true));
|
||||
$time = format_time($start);
|
||||
}
|
||||
$sql = "";
|
||||
if ($query) {
|
||||
$sql = $adminer->messageQuery($query . $time);
|
||||
$sql = $adminer->messageQuery($query, $time);
|
||||
}
|
||||
if ($failed) {
|
||||
$error = error() . $sql;
|
||||
@@ -543,21 +597,22 @@ function query_redirect($query, $location, $message, $redirect = true, $execute
|
||||
}
|
||||
|
||||
/** Execute and remember query
|
||||
* @param string null to return remembered queries, end with ';' to use DELIMITER
|
||||
* @return Min_Result
|
||||
* @param string or null to return remembered queries, end with ';' to use DELIMITER
|
||||
* @return Min_Result or array($queries, $time) if $query = null
|
||||
*/
|
||||
function queries($query = null) {
|
||||
function queries($query) {
|
||||
global $connection;
|
||||
static $queries = array();
|
||||
if ($query === null) {
|
||||
// return executed queries without parameter
|
||||
return implode("\n", $queries);
|
||||
static $start;
|
||||
if (!$start) {
|
||||
$start = microtime(true);
|
||||
}
|
||||
$start = microtime(true);
|
||||
$return = $connection->query($query);
|
||||
$queries[] = (preg_match('~;$~', $query) ? "DELIMITER ;;\n$query;\nDELIMITER " : $query)
|
||||
. "; -- " . format_time($start, microtime(true));
|
||||
return $return;
|
||||
if ($query === null) {
|
||||
// return executed queries
|
||||
return array(implode("\n", $queries), format_time($start));
|
||||
}
|
||||
$queries[] = (preg_match('~;$~', $query) ? "DELIMITER ;;\n$query;\nDELIMITER " : $query) . ";";
|
||||
return $connection->query($query);
|
||||
}
|
||||
|
||||
/** Apply command to all array items
|
||||
@@ -582,16 +637,16 @@ function apply_queries($query, $tables, $escape = 'table') {
|
||||
* @return bool
|
||||
*/
|
||||
function queries_redirect($location, $message, $redirect) {
|
||||
return query_redirect(queries(), $location, $message, $redirect, false, !$redirect);
|
||||
list($queries, $time) = queries(null);
|
||||
return query_redirect($queries, $location, $message, $redirect, false, !$redirect, $time);
|
||||
}
|
||||
|
||||
/** Format time difference
|
||||
* @param string output of microtime(true)
|
||||
* @param string output of microtime(true)
|
||||
/** Format elapsed time
|
||||
* @param float output of microtime(true)
|
||||
* @return string HTML code
|
||||
*/
|
||||
function format_time($start, $end) {
|
||||
return lang('%.3f s', max(0, $end - $start));
|
||||
function format_time($start) {
|
||||
return lang('%.3f s', max(0, microtime(true) - $start));
|
||||
}
|
||||
|
||||
/** Remove parameter from query string
|
||||
@@ -689,12 +744,20 @@ function is_utf8($val) {
|
||||
* @return string escaped string with appended ...
|
||||
*/
|
||||
function shorten_utf8($string, $length = 80, $suffix = "") {
|
||||
if (!preg_match("(^(" . repeat_pattern("[\t\r\n -\x{FFFF}]", $length) . ")($)?)u", $string, $match)) { // ~s causes trash in $match[2] under some PHP versions, (.|\n) is slow
|
||||
if (!preg_match("(^(" . repeat_pattern("[\t\r\n -\x{10FFFF}]", $length) . ")($)?)u", $string, $match)) { // ~s causes trash in $match[2] under some PHP versions, (.|\n) is slow
|
||||
preg_match("(^(" . repeat_pattern("[\t\r\n -~]", $length) . ")($)?)", $string, $match);
|
||||
}
|
||||
return h($match[1]) . $suffix . (isset($match[2]) ? "" : "<i>...</i>");
|
||||
}
|
||||
|
||||
/** Format decimal number
|
||||
* @param int
|
||||
* @return string
|
||||
*/
|
||||
function format_number($val) {
|
||||
return strtr(number_format($val, 0, ".", lang(',')), preg_split('~~u', lang('0123456789'), -1, PREG_SPLIT_NO_EMPTY));
|
||||
}
|
||||
|
||||
/** Generate friendly URL
|
||||
* @param string
|
||||
* @return string
|
||||
@@ -711,12 +774,14 @@ function friendly_url($val) {
|
||||
*/
|
||||
function hidden_fields($process, $ignore = array()) {
|
||||
while (list($key, $val) = each($process)) {
|
||||
if (is_array($val)) {
|
||||
foreach ($val as $k => $v) {
|
||||
$process[$key . "[$k]"] = $v;
|
||||
if (!in_array($key, $ignore)) {
|
||||
if (is_array($val)) {
|
||||
foreach ($val as $k => $v) {
|
||||
$process[$key . "[$k]"] = $v;
|
||||
}
|
||||
} else {
|
||||
echo '<input type="hidden" name="' . h($key) . '" value="' . h($val) . '">';
|
||||
}
|
||||
} elseif (!in_array($key, $ignore)) {
|
||||
echo '<input type="hidden" name="' . h($key) . '" value="' . h($val) . '">';
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -819,6 +884,9 @@ function input($field, $value, $function) {
|
||||
$input = $adminer->editInput($_GET["edit"], $field, $attrs, $value); // usage in call is without a table
|
||||
if ($input != "") {
|
||||
echo $input;
|
||||
} elseif (preg_match('~bool~', $field["type"])) {
|
||||
echo "<input type='hidden'$attrs value='0'>" .
|
||||
"<input type='checkbox'" . (in_array(strtolower($value), array('1', 't', 'true', 'y', 'yes', 'on')) ? " checked='checked'" : "") . "$attrs value='1'>";
|
||||
} elseif ($field["type"] == "set") { //! 64 bits
|
||||
preg_match_all("~'((?:[^']|'')*)'~", $field["length"], $matches);
|
||||
foreach ($matches[1] as $i => $val) {
|
||||
@@ -836,7 +904,7 @@ function input($field, $value, $function) {
|
||||
$attrs .= " cols='30' rows='$rows'" . ($rows == 1 ? " style='height: 1.2em;'" : ""); // 1.2em - line-height
|
||||
}
|
||||
echo "<textarea$attrs>" . h($value) . '</textarea>';
|
||||
} elseif ($function == "json") {
|
||||
} elseif ($function == "json" || preg_match('~^jsonb?$~', $field["type"])) {
|
||||
echo "<textarea$attrs cols='50' rows='12' class='jush-js'>" . h($value) . '</textarea>';
|
||||
} else {
|
||||
// int(3) is only a display hint
|
||||
@@ -846,8 +914,8 @@ function input($field, $value, $function) {
|
||||
}
|
||||
// type='date' and type='time' display localized value which may be confusing, type='datetime' uses 'T' as date and time separator
|
||||
echo "<input"
|
||||
. ((!$has_function || $function === "") && preg_match('~(?<!o)int~', $field["type"]) ? " type='number'" : "")
|
||||
. " value='" . h($value) . "'" . ($maxlength ? " maxlength='$maxlength'" : "")
|
||||
. ((!$has_function || $function === "") && preg_match('~(?<!o)int~', $field["type"]) && !preg_match('~\[\]~', $field["full_type"]) ? " type='number'" : "")
|
||||
. " value='" . h($value) . "'" . ($maxlength ? " data-maxlength='$maxlength'" : "")
|
||||
. (preg_match('~char|binary~', $field["type"]) && $maxlength > 20 ? " size='40'" : "")
|
||||
. "$attrs>"
|
||||
;
|
||||
@@ -880,7 +948,7 @@ function process_input($field) {
|
||||
return ($field["on_update"] == "CURRENT_TIMESTAMP" ? idf_escape($field["field"]) : false);
|
||||
}
|
||||
if ($function == "NULL") {
|
||||
$value = null;
|
||||
return "NULL";
|
||||
}
|
||||
if ($field["type"] == "set") {
|
||||
return array_sum((array) $value);
|
||||
@@ -996,31 +1064,39 @@ function apply_sql_function($function, $column) {
|
||||
return ($function ? ($function == "unixepoch" ? "DATETIME($column, '$function')" : ($function == "count distinct" ? "COUNT(DISTINCT " : strtoupper("$function(")) . "$column)") : $column);
|
||||
}
|
||||
|
||||
/** Read password from file adminer.key in temporary directory or create one
|
||||
* @param bool
|
||||
* @return string or false if the file can not be created
|
||||
/** Get path of the temporary directory
|
||||
* @return string
|
||||
*/
|
||||
function password_file($create) {
|
||||
$dir = ini_get("upload_tmp_dir"); // session_save_path() may contain other storage path
|
||||
if (!$dir) {
|
||||
function get_temp_dir() {
|
||||
$return = ini_get("upload_tmp_dir"); // session_save_path() may contain other storage path
|
||||
if (!$return) {
|
||||
if (function_exists('sys_get_temp_dir')) {
|
||||
$dir = sys_get_temp_dir();
|
||||
$return = sys_get_temp_dir();
|
||||
} else {
|
||||
$filename = @tempnam("", ""); // @ - temp directory can be disabled by open_basedir
|
||||
if (!$filename) {
|
||||
return false;
|
||||
}
|
||||
$dir = dirname($filename);
|
||||
$return = dirname($filename);
|
||||
unlink($filename);
|
||||
}
|
||||
}
|
||||
$filename = "$dir/adminer.key";
|
||||
$return = @file_get_contents($filename); // @ - can not exist
|
||||
return $return;
|
||||
}
|
||||
|
||||
/** Read password from file adminer.key in temporary directory or create one
|
||||
* @param bool
|
||||
* @return string or false if the file can not be created
|
||||
*/
|
||||
function password_file($create) {
|
||||
$filename = get_temp_dir() . "/adminer.key";
|
||||
$return = @file_get_contents($filename); // @ - may not exist
|
||||
if ($return || !$create) {
|
||||
return $return;
|
||||
}
|
||||
$fp = @fopen($filename, "w"); // @ - can have insufficient rights //! is not atomic
|
||||
if ($fp) {
|
||||
chmod($filename, 0660);
|
||||
$return = rand_string();
|
||||
fwrite($fp, $return);
|
||||
fclose($fp);
|
||||
@@ -1062,9 +1138,9 @@ function select_value($val, $link, $field, $text_length) {
|
||||
$link = "mailto:$val";
|
||||
}
|
||||
if ($protocol = is_url($val)) {
|
||||
$link = ($protocol == "http" && $HTTPS
|
||||
$link = (($protocol == "http" && $HTTPS) || preg_match('~WebKit|Firefox~i', $_SERVER["HTTP_USER_AGENT"]) // WebKit supports noreferrer since 2009, Firefox since version 38
|
||||
? $val // HTTP links from HTTPS pages don't receive Referer automatically
|
||||
: "$protocol://www.adminer.org/redirect/?url=" . urlencode($val) // intermediate page to hide Referer, may be changed to rel="noreferrer" in HTML5
|
||||
: "https://www.adminer.org/redirect/?url=" . urlencode($val) // intermediate page to hide Referer
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -1072,7 +1148,9 @@ function select_value($val, $link, $field, $text_length) {
|
||||
if ($return !== null) {
|
||||
if ($return === "") { // === - may be int
|
||||
$return = " ";
|
||||
} elseif ($text_length != "" && is_shortable($field) && is_utf8($return)) {
|
||||
} elseif (!is_utf8($return)) {
|
||||
$return = "\0"; // htmlspecialchars of binary data returns an empty string
|
||||
} elseif ($text_length != "" && is_shortable($field)) {
|
||||
$return = shorten_utf8($return, max(0, +$text_length)); // usage of LEFT() would reduce traffic but complicate query - expected average speedup: .001 s VS .01 s on local network
|
||||
} else {
|
||||
$return = h($return);
|
||||
@@ -1106,7 +1184,7 @@ function is_url($string) {
|
||||
* @return bool
|
||||
*/
|
||||
function is_shortable($field) {
|
||||
return preg_match('~char|text|lob|geometry|point|linestring|polygon|string~', $field["type"]);
|
||||
return preg_match('~char|text|lob|geometry|point|linestring|polygon|string|bytea~', $field["type"]);
|
||||
}
|
||||
|
||||
/** Get query to compute number of found rows
|
||||
@@ -1134,7 +1212,7 @@ function slow_query($query) {
|
||||
$db = $adminer->database();
|
||||
$timeout = $adminer->queryTimeout();
|
||||
if (support("kill") && is_object($connection2 = connect()) && ($db == "" || $connection2->select_db($db))) {
|
||||
$kill = $connection2->result("SELECT CONNECTION_ID()"); // MySQL and MySQLi can use thread_id but it's not in PDO_MySQL
|
||||
$kill = $connection2->result(connection_id()); // MySQL and MySQLi can use thread_id but it's not in PDO_MySQL
|
||||
?>
|
||||
<script type="text/javascript">
|
||||
var timeout = setTimeout(function () {
|
||||
@@ -1219,3 +1297,100 @@ function lzw_decompress($binary) {
|
||||
function on_help($command, $side = 0) {
|
||||
return " onmouseover='helpMouseover(this, event, " . h($command) . ", $side);' onmouseout='helpMouseout(this, event);'";
|
||||
}
|
||||
|
||||
/** Print edit data form
|
||||
* @param string
|
||||
* @param array
|
||||
* @param mixed
|
||||
* @param bool
|
||||
* @return null
|
||||
*/
|
||||
function edit_form($TABLE, $fields, $row, $update) {
|
||||
global $adminer, $jush, $token, $error;
|
||||
$table_name = $adminer->tableName(table_status1($TABLE, true));
|
||||
page_header(
|
||||
($update ? lang('Edit') : lang('Insert')),
|
||||
$error,
|
||||
array("select" => array($TABLE, $table_name)),
|
||||
$table_name
|
||||
);
|
||||
if ($row === false) {
|
||||
echo "<p class='error'>" . lang('No rows.') . "\n";
|
||||
}
|
||||
?>
|
||||
<form action="" method="post" enctype="multipart/form-data" id="form">
|
||||
<?php
|
||||
if (!$fields) {
|
||||
echo "<p class='error'>" . lang('You have no privileges to update this table.') . "\n";
|
||||
} else {
|
||||
echo "<table cellspacing='0' onkeydown='return editingKeydown(event);'>\n";
|
||||
|
||||
foreach ($fields as $name => $field) {
|
||||
echo "<tr><th>" . $adminer->fieldName($field);
|
||||
$default = $_GET["set"][bracket_escape($name)];
|
||||
if ($default === null) {
|
||||
$default = $field["default"];
|
||||
if ($field["type"] == "bit" && preg_match("~^b'([01]*)'\$~", $default, $regs)) {
|
||||
$default = $regs[1];
|
||||
}
|
||||
}
|
||||
$value = ($row !== null
|
||||
? ($row[$name] != "" && $jush == "sql" && preg_match("~enum|set~", $field["type"])
|
||||
? (is_array($row[$name]) ? array_sum($row[$name]) : +$row[$name])
|
||||
: $row[$name]
|
||||
)
|
||||
: (!$update && $field["auto_increment"]
|
||||
? ""
|
||||
: (isset($_GET["select"]) ? false : $default)
|
||||
)
|
||||
);
|
||||
if (!$_POST["save"] && is_string($value)) {
|
||||
$value = $adminer->editVal($value, $field);
|
||||
}
|
||||
$function = ($_POST["save"]
|
||||
? (string) $_POST["function"][$name]
|
||||
: ($update && $field["on_update"] == "CURRENT_TIMESTAMP"
|
||||
? "now"
|
||||
: ($value === false ? null : ($value !== null ? '' : 'NULL'))
|
||||
)
|
||||
);
|
||||
if (preg_match("~time~", $field["type"]) && $value == "CURRENT_TIMESTAMP") {
|
||||
$value = "";
|
||||
$function = "now";
|
||||
}
|
||||
input($field, $value, $function);
|
||||
echo "\n";
|
||||
}
|
||||
if (!support("table")) {
|
||||
echo "<tr>"
|
||||
. "<th><input name='field_keys[]' onkeyup='keyupChange.call(this);' onchange='fieldChange(this);' value=''>" // needs empty value for keyupChange()
|
||||
. "<td class='function'>" . html_select("field_funs[]", $adminer->editFunctions(array("null" => isset($_GET["select"]))))
|
||||
. "<td><input name='field_vals[]'>"
|
||||
. "\n"
|
||||
;
|
||||
}
|
||||
echo "</table>\n";
|
||||
}
|
||||
echo "<p>\n";
|
||||
if ($fields) {
|
||||
echo "<input type='submit' value='" . lang('Save') . "'>\n";
|
||||
if (!isset($_GET["select"])) {
|
||||
echo "<input type='submit' name='insert' value='" . ($update
|
||||
? lang('Save and continue edit') . "' onclick='return !ajaxForm(this.form, \"" . lang('Saving') . '...", this)'
|
||||
: lang('Save and insert next')
|
||||
) . "' title='Ctrl+Shift+Enter'>\n";
|
||||
}
|
||||
}
|
||||
echo ($update ? "<input type='submit' name='delete' value='" . lang('Delete') . "'" . confirm() . ">\n"
|
||||
: ($_POST || !$fields ? "" : "<script type='text/javascript'>focus(document.getElementById('form').getElementsByTagName('td')[1].firstChild);</script>\n")
|
||||
);
|
||||
if (isset($_GET["select"])) {
|
||||
hidden_fields(array("check" => (array) $_POST["check"], "clone" => $_POST["clone"], "all" => $_POST["all"]));
|
||||
}
|
||||
?>
|
||||
<input type="hidden" name="referer" value="<?php echo h(isset($_POST["referer"]) ? $_POST["referer"] : $_SERVER["HTTP_REFERER"]); ?>">
|
||||
<input type="hidden" name="save" value="1">
|
||||
<input type="hidden" name="token" value="<?php echo $token; ?>">
|
||||
</form>
|
||||
<?php
|
||||
}
|
||||
|
||||
@@ -4,14 +4,20 @@
|
||||
$langs = array(
|
||||
'en' => 'English', // Jakub Vrána - http://www.vrana.cz
|
||||
'ar' => 'العربية', // Y.M Amine - Algeria - nbr7@live.fr
|
||||
'bg' => 'Български', // Deyan Delchev
|
||||
'bn' => 'বাংলা', // Dipak Kumar - dipak.ndc@gmail.com
|
||||
'bs' => 'Bosanski', // Emir Kurtovic
|
||||
'ca' => 'Català', // Joan Llosas
|
||||
'cs' => 'Čeština', // Jakub Vrána - http://www.vrana.cz
|
||||
'da' => 'Dansk', // Jarne W. Beutnagel - jarne@beutnagel.dk
|
||||
'de' => 'Deutsch', // Klemens Häckel - http://clickdimension.wordpress.com
|
||||
'el' => 'Ελληνικά', // Dimitrios T. Tanis - jtanis@tanisfood.gr
|
||||
'es' => 'Español', // Klemens Häckel - http://clickdimension.wordpress.com
|
||||
'et' => 'Eesti', // Priit Kallas
|
||||
'fa' => 'فارسی', // mojtaba barghbani - Iran - mbarghbani@gmail.com
|
||||
'fa' => 'فارسی', // mojtaba barghbani - Iran - mbarghbani@gmail.com, Nima Amini - http://nimlog.com
|
||||
'fi' => 'Suomi', // Finnish - Kari Eveli - http://www.lexitec.fi/
|
||||
'fr' => 'Français', // Francis Gagné, Aurélien Royer
|
||||
'gl' => 'Galego', // Eduardo Penabad Ramos
|
||||
'hu' => 'Magyar', // Borsos Szilárd (Borsosfi) - http://www.borsosfi.hu, info@borsosfi.hu
|
||||
'id' => 'Bahasa Indonesia', // Ivan Lanin - http://ivan.lanin.org
|
||||
'it' => 'Italiano', // Alessandro Fiorotto, Paolo Asperti
|
||||
@@ -19,11 +25,12 @@ $langs = array(
|
||||
'ko' => '한국어', // dalli - skcha67@gmail.com
|
||||
'lt' => 'Lietuvių', // Paulius Leščinskas - http://www.lescinskas.lt
|
||||
'nl' => 'Nederlands', // Maarten Balliauw - http://blog.maartenballiauw.be
|
||||
'no' => 'Norsk', // Iver Odin Kvello, mupublishing.com
|
||||
'pl' => 'Polski', // Radosław Kowalewski - http://srsbiz.pl/
|
||||
'pt' => 'Português', // André Dias
|
||||
'pt-br' => 'Português (Brazil)', // Gian Live - gian@live.com, Davi Alexandre davi@davialexandre.com.br
|
||||
'pt-br' => 'Português (Brazil)', // Gian Live - gian@live.com, Davi Alexandre davi@davialexandre.com.br, RobertoPC - http://www.robertopc.com.br
|
||||
'ro' => 'Limba Română', // .nick .messing - dot.nick.dot.messing@gmail.com
|
||||
'ru' => 'Русский язык', // Maksim Izmaylov
|
||||
'ru' => 'Русский', // Maksim Izmaylov; Andre Polykanine - https://github.com/Oire/
|
||||
'sk' => 'Slovenčina', // Ivan Suchy - http://www.ivansuchy.com, Juraj Krivda - http://www.jstudio.cz
|
||||
'sl' => 'Slovenski', // Matej Ferlan - www.itdinamik.com, matej.ferlan@itdinamik.com
|
||||
'sr' => 'Српски', // Nikola Radovanović - cobisimo@gmail.com
|
||||
@@ -31,9 +38,9 @@ $langs = array(
|
||||
'th' => 'ภาษาไทย', // Panya Saraphi, elect.tu@gmail.com - http://www.opencart2u.com/
|
||||
'tr' => 'Türkçe', // Bilgehan Korkmaz - turktron.com
|
||||
'uk' => 'Українська', // Valerii Kryzhov
|
||||
'vi' => 'Tiếng Việt', // Giang Manh @ manhgd google mail
|
||||
'zh' => '简体中文', // Mr. Lodar, vea - urn2.net - vea.urn2@gmail.com
|
||||
'zh-tw' => '繁體中文', // http://tzangms.com
|
||||
'no' => 'Norsk', // Iver Odin Kvello, mupublishing.com
|
||||
);
|
||||
|
||||
/** Get current language
|
||||
@@ -56,11 +63,11 @@ function lang($idf, $number = null) {
|
||||
$pos = ($number == 1 ? 0
|
||||
: ($LANG == 'cs' || $LANG == 'sk' ? ($number && $number < 5 ? 1 : 2) // different forms for 1, 2-4, other
|
||||
: ($LANG == 'fr' ? (!$number ? 0 : 1) // different forms for 0-1, other
|
||||
: ($LANG == 'pl' ? ($number % 10 > 1 && $number % 10 < 5 && $number / 10 % 10 != 1 ? 1 : 2) // different forms for 1, 2-4, other
|
||||
: ($LANG == 'pl' ? ($number % 10 > 1 && $number % 10 < 5 && $number / 10 % 10 != 1 ? 1 : 2) // different forms for 1, 2-4 except 12-14, other
|
||||
: ($LANG == 'sl' ? ($number % 100 == 1 ? 0 : ($number % 100 == 2 ? 1 : ($number % 100 == 3 || $number % 100 == 4 ? 2 : 3))) // different forms for 1, 2, 3-4, other
|
||||
: ($LANG == 'lt' ? ($number % 10 == 1 && $number % 100 != 11 ? 0 : ($number % 10 > 1 && $number / 10 % 10 != 1 ? 1 : 2)) // different forms for 1, 12-19, other
|
||||
: ($LANG == 'ru' || $LANG == 'sr' || $LANG == 'uk' ? ($number % 10 == 1 && $number % 100 != 11 ? 0 : ($number % 10 > 1 && $number % 10 < 5 && $number / 10 % 10 != 1 ? 1 : 2)) // different forms for 1, 2-4, other
|
||||
: 1
|
||||
: ($LANG == 'bs' || $LANG == 'ru' || $LANG == 'sr' || $LANG == 'uk' ? ($number % 10 == 1 && $number % 100 != 11 ? 0 : ($number % 10 > 1 && $number % 10 < 5 && $number / 10 % 10 != 1 ? 1 : 2)) // different forms for 1 except 11, 2-4 except 12-14, other
|
||||
: 1 // different forms for 1, other
|
||||
))))))); // http://www.gnu.org/software/gettext/manual/html_node/Plural-forms.html
|
||||
$translation = $translation[$pos];
|
||||
}
|
||||
@@ -68,7 +75,7 @@ function lang($idf, $number = null) {
|
||||
array_shift($args);
|
||||
$format = str_replace("%d", "%s", $translation);
|
||||
if ($format != $translation) {
|
||||
$args[0] = number_format($number, 0, ".", lang(','));
|
||||
$args[0] = format_number($number);
|
||||
}
|
||||
return vsprintf($format, $args);
|
||||
}
|
||||
|
||||
@@ -16,11 +16,10 @@ if (extension_loaded('pdo')) {
|
||||
try {
|
||||
parent::__construct($dsn, $username, $password);
|
||||
} catch (Exception $ex) {
|
||||
auth_error($ex);
|
||||
exit;
|
||||
auth_error(h($ex->getMessage()));
|
||||
}
|
||||
$this->setAttribute(13, array('Min_PDOStatement')); // 13 - PDO::ATTR_STATEMENT_CLASS
|
||||
$this->server_info = $this->getAttribute(4); // 4 - PDO::ATTR_SERVER_VERSION
|
||||
$this->server_info = @$this->getAttribute(4); // 4 - PDO::ATTR_SERVER_VERSION
|
||||
}
|
||||
|
||||
/*abstract function select_db($database);*/
|
||||
|
||||
@@ -4,7 +4,7 @@ class TmpFile {
|
||||
var $handler;
|
||||
var $size;
|
||||
|
||||
function TmpFile() {
|
||||
function __construct() {
|
||||
$this->handler = tmpfile();
|
||||
}
|
||||
|
||||
|
||||
@@ -1,2 +1,2 @@
|
||||
<?php
|
||||
$VERSION = "4.0.3";
|
||||
$VERSION = "4.3.1";
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<?php
|
||||
/** Adminer - Compact database management
|
||||
* @link http://www.adminer.org/
|
||||
* @author Jakub Vrana, http://www.vrana.cz/
|
||||
* @link https://www.adminer.org/
|
||||
* @author Jakub Vrana, https://www.vrana.cz/
|
||||
* @copyright 2007 Jakub Vrana
|
||||
* @license http://www.apache.org/licenses/LICENSE-2.0 Apache License, Version 2.0
|
||||
* @license http://www.gnu.org/licenses/gpl-2.0.html GNU General Public License, version 2 (one or other)
|
||||
@@ -10,7 +10,7 @@
|
||||
include "./include/bootstrap.inc.php";
|
||||
include "./include/tmpfile.inc.php";
|
||||
|
||||
$enum_length = "'(?:''|[^'\\\\]|\\\\.)*+'";
|
||||
$enum_length = "'(?:''|[^'\\\\]|\\\\.)*'";
|
||||
$inout = "IN|OUT|INOUT";
|
||||
|
||||
if (isset($_GET["select"]) && ($_POST["edit"] || $_POST["clone"]) && !$_POST["save"]) {
|
||||
@@ -65,6 +65,8 @@ if (isset($_GET["download"])) {
|
||||
include "./user.inc.php";
|
||||
} elseif (isset($_GET["processlist"])) {
|
||||
include "./processlist.inc.php";
|
||||
} elseif (isset($_GET["replication"])) {
|
||||
include "./replication.inc.php";
|
||||
} elseif (isset($_GET["select"])) {
|
||||
include "./select.inc.php";
|
||||
} elseif (isset($_GET["variables"])) {
|
||||
|
||||
@@ -5,6 +5,9 @@ $table_status = table_status($TABLE, true);
|
||||
if (preg_match('~MyISAM|M?aria' . ($connection->server_info >= 5.6 ? '|InnoDB' : '') . '~i', $table_status["Engine"])) {
|
||||
$index_types[] = "FULLTEXT";
|
||||
}
|
||||
if (preg_match('~MyISAM|M?aria' . ($connection->server_info >= 5.7 ? '|InnoDB' : '') . '~i', $table_status["Engine"])) {
|
||||
$index_types[] = "SPATIAL";
|
||||
}
|
||||
$indexes = indexes($TABLE);
|
||||
$primary = array();
|
||||
if ($jush == "mongo") { // doesn't support primary key
|
||||
@@ -93,9 +96,9 @@ if (!$row) {
|
||||
<form action="" method="post">
|
||||
<table cellspacing="0" class="nowrap">
|
||||
<thead><tr>
|
||||
<th><?php echo lang('Index Type'); ?>
|
||||
<th><input type="submit" style="left: -1000px; position: absolute;"><?php echo lang('Column (length)'); ?>
|
||||
<th><?php echo lang('Name'); ?>
|
||||
<th id="label-type"><?php echo lang('Index Type'); ?>
|
||||
<th><input type="submit" class="wayoff"><?php echo lang('Column (length)'); ?>
|
||||
<th id="label-name"><?php echo lang('Name'); ?>
|
||||
<th><noscript><input type='image' class='icon' name='add[0]' src='../adminer/static/plus.gif' alt='+' title='<?php echo lang('Add next'); ?>'></noscript>
|
||||
</thead>
|
||||
<?php
|
||||
@@ -110,24 +113,24 @@ if ($primary) {
|
||||
$j = 1;
|
||||
foreach ($row["indexes"] as $index) {
|
||||
if (!$_POST["drop_col"] || $j != key($_POST["drop_col"])) {
|
||||
echo "<tr><td>" . html_select("indexes[$j][type]", array(-1 => "") + $index_types, $index["type"], ($j == count($row["indexes"]) ? "indexesAddRow(this);" : 1));
|
||||
echo "<tr><td>" . html_select("indexes[$j][type]", array(-1 => "") + $index_types, $index["type"], ($j == count($row["indexes"]) ? "indexesAddRow(this);" : 1), "label-type");
|
||||
|
||||
echo "<td>";
|
||||
ksort($index["columns"]);
|
||||
$i = 1;
|
||||
foreach ($index["columns"] as $key => $column) {
|
||||
echo "<span>" . select_input(
|
||||
" name='indexes[$j][columns][$i]' onchange=\"" . ($i == count($index["columns"]) ? "indexesAddColumn" : "indexesChangeColumn") . "(this, '" . js_escape($jush == "sql" ? "" : $_GET["indexes"] . "_") . "');\"",
|
||||
" name='indexes[$j][columns][$i]' onchange=\"" . ($i == count($index["columns"]) ? "indexesAddColumn" : "indexesChangeColumn") . "(this, '" . h(js_escape($jush == "sql" ? "" : $_GET["indexes"] . "_")) . "');\" title='" . lang('Column') . "'",
|
||||
($fields ? array_combine($fields, $fields) : $fields),
|
||||
$column
|
||||
);
|
||||
echo ($jush == "sql" || $jush == "mssql" ? "<input type='number' name='indexes[$j][lengths][$i]' class='size' value='" . h($index["lengths"][$key]) . "'>" : "");
|
||||
echo ($jush == "sql" || $jush == "mssql" ? "<input type='number' name='indexes[$j][lengths][$i]' class='size' value='" . h($index["lengths"][$key]) . "' title='" . lang('Length') . "'>" : "");
|
||||
echo ($jush != "sql" ? checkbox("indexes[$j][descs][$i]", 1, $index["descs"][$key], lang('descending')) : "");
|
||||
echo " </span>";
|
||||
$i++;
|
||||
}
|
||||
|
||||
echo "<td><input name='indexes[$j][name]' value='" . h($index["name"]) . "' autocapitalize='off'>\n";
|
||||
echo "<td><input name='indexes[$j][name]' value='" . h($index["name"]) . "' autocapitalize='off' aria-labelledby='label-name'>\n";
|
||||
echo "<td><input type='image' class='icon' name='drop_col[$j]' src='../adminer/static/cross.gif' alt='x' title='" . lang('Remove') . "' onclick=\"return !editingRemoveRow(this, 'indexes\$1[type]');\">\n";
|
||||
}
|
||||
$j++;
|
||||
|
||||
@@ -1,23 +1,22 @@
|
||||
<?php
|
||||
$translations = array(
|
||||
'Login' => 'تسجيل الدخول',
|
||||
'Logout successful.' => 'مع السلامة.',
|
||||
'Invalid credentials.' => 'فشل في تسجيل الدخول.',
|
||||
'Logout successful.' => 'تم تسجيل الخروج بنجاح.',
|
||||
'Invalid credentials.' => 'بيانات الدخول غير صالحة.',
|
||||
'Server' => 'الخادم',
|
||||
'Username' => 'المستعمل',
|
||||
'Username' => 'اسم المستخدم',
|
||||
'Password' => 'كلمة المرور',
|
||||
'Select database' => 'إختر قاعدة البيانات',
|
||||
'Invalid database.' => 'قاعدة بيانات خاطئة.',
|
||||
'Create new database' => 'أنشئ فاعدة بيانات',
|
||||
'Select database' => 'اختر قاعدة البيانات',
|
||||
'Invalid database.' => 'قاعدة البيانات غير صالحة.',
|
||||
'Table has been dropped.' => 'تم حذف الجدول.',
|
||||
'Table has been altered.' => 'تم تعديل الجدول.',
|
||||
'Table has been created.' => 'تم إنشاء الجدول.',
|
||||
'Alter table' => 'تعديل الجدول',
|
||||
'Create table' => 'إنشاء جدول',
|
||||
'Table name' => 'إسم الجدول',
|
||||
'Table name' => 'اسم الجدول',
|
||||
'engine' => 'المحرك',
|
||||
'collation' => 'الترتيب',
|
||||
'Column name' => 'إسم العمود',
|
||||
'Column name' => 'اسم العمود',
|
||||
'Type' => 'النوع',
|
||||
'Length' => 'الطول',
|
||||
'Auto Increment' => 'تزايد تلقائي',
|
||||
@@ -29,11 +28,10 @@ $translations = array(
|
||||
'Database has been altered.' => 'تم تعديل قاعدة البيانات.',
|
||||
'Alter database' => 'تعديل قاعدة البيانات',
|
||||
'Create database' => 'إنشاء قاعدة بيانات',
|
||||
'SQL command' => 'إستعلام SQL',
|
||||
'Dump' => 'تصدير',
|
||||
'SQL command' => 'استعلام SQL',
|
||||
'Logout' => 'تسجيل الخروج',
|
||||
'database' => 'قاعدة بيانات',
|
||||
'Use' => 'المستعمل',
|
||||
'Use' => 'استعمال',
|
||||
'No tables.' => 'لا توجد جداول.',
|
||||
'select' => 'تحديد',
|
||||
'Item has been deleted.' => 'تم حذف العنصر.',
|
||||
@@ -49,48 +47,48 @@ $translations = array(
|
||||
'Alter indexes' => 'تعديل المؤشرات',
|
||||
'Add next' => 'إضافة التالي',
|
||||
'Language' => 'اللغة',
|
||||
'Select' => 'إختيار',
|
||||
'Select' => 'اختيار',
|
||||
'New item' => 'عنصر جديد',
|
||||
'Search' => 'بحث',
|
||||
'Sort' => 'ترتيب',
|
||||
'descending' => 'تنازلي',
|
||||
'Limit' => 'حد',
|
||||
'No rows.' => 'لا توجد نتائج.',
|
||||
'Action' => 'حركة',
|
||||
'Action' => 'الإجراء',
|
||||
'edit' => 'تعديل',
|
||||
'Page' => 'صفحة',
|
||||
'Query executed OK, %d row(s) affected.' => 'تم تنفسذ الإستعلام, %d عدد الأسطر المعدلة.',
|
||||
'Error in query' => 'هناك خطأ في الإستعلام',
|
||||
'Query executed OK, %d row(s) affected.' => 'تم تنفسذ الاستعلام, %d عدد الأسطر المعدلة.',
|
||||
'Error in query' => 'هناك خطأ في الاستعلام',
|
||||
'Execute' => 'تنفيذ',
|
||||
'Table' => 'جدول',
|
||||
'Foreign keys' => 'مفاتيح أجنبية',
|
||||
'Triggers' => 'الزنادات',
|
||||
'View' => 'عرض',
|
||||
'Unable to select the table' => 'من غير الممكن إختيار الجدول',
|
||||
'Invalid CSRF token. Send the form again.' => 'CSRF Token خاطئ. من فضلك أعد إرسال الإستمارة.',
|
||||
'Unable to select the table' => 'يتعذر اختيار الجدول',
|
||||
'Invalid CSRF token. Send the form again.' => 'رمز CSRF غير صالح. المرجو إرسال الاستمارة مرة أخرى.',
|
||||
'Comment' => 'تعليق',
|
||||
'Default values' => 'القيمة الإفتراضية',
|
||||
'Default values' => 'القيم الافتراضية',
|
||||
'%d byte(s)' => '%d بايت',
|
||||
'No commands to execute.' => 'لا توجد أوامر للتنفيذ.',
|
||||
'Unable to upload a file.' => 'من غير الممكن رفع الملف.',
|
||||
'Unable to upload a file.' => 'يتعذر رفع ملف ما.',
|
||||
'File upload' => 'رفع ملف',
|
||||
'File uploads are disabled.' => 'تم إلغاء رفع الملفات.',
|
||||
'Routine has been called, %d row(s) affected.' => 'تم إستدعاء الروتين, عدد الأسطر المعدلة %d.',
|
||||
'Call' => 'إستدعاء',
|
||||
'No extension' => 'إمتداد غير موجود',
|
||||
'File uploads are disabled.' => 'رفع الملفات غير مشغل.',
|
||||
'Routine has been called, %d row(s) affected.' => 'تم استدعاء الروتين, عدد الأسطر المعدلة %d.',
|
||||
'Call' => 'استدعاء',
|
||||
'No extension' => 'امتداد غير موجود',
|
||||
'None of the supported PHP extensions (%s) are available.' => 'إمتدادات php المدعومة غير موجودة.',
|
||||
'Session support must be enabled.' => 'عليك تفعيل نظام الجلسات.',
|
||||
'Session expired, please login again.' => 'إنتهت الجلسة، من فضلك أعد تسجيل الدخول.',
|
||||
'Text length' => 'طول النص',
|
||||
'Foreign key has been dropped.' => 'المفتاح الأجنبي تم مسحه.',
|
||||
'Foreign key has been altered.' => 'المفتاح الأجنبي تم تعديله.',
|
||||
'Foreign key has been created.' => 'المفتاح الأجنبي تم إنشاؤه.',
|
||||
'Foreign key has been dropped.' => 'تم مسح المفتاح الأجنبي.',
|
||||
'Foreign key has been altered.' => 'تم تعديل المفتاح الأجنبي.',
|
||||
'Foreign key has been created.' => 'تم إنشاء المفتاح الأجنبي.',
|
||||
'Foreign key' => 'مفتاح أجنبي',
|
||||
'Target table' => 'الجدول المستهدف',
|
||||
'Change' => 'تعديل',
|
||||
'Source' => 'المصدر',
|
||||
'Target' => 'الهدف',
|
||||
'Add column' => 'أضف عمود',
|
||||
'Add column' => 'إضافة عمودا',
|
||||
'Alter' => 'تعديل',
|
||||
'Add foreign key' => 'إضافة مفتاح أجنبي',
|
||||
'ON DELETE' => 'ON DELETE',
|
||||
@@ -102,11 +100,11 @@ $translations = array(
|
||||
'View has been created.' => 'تم إنشاء العرض.',
|
||||
'Alter view' => 'تعديل عرض',
|
||||
'Create view' => 'إنشاء عرض',
|
||||
'Name' => 'الإسم',
|
||||
'Name' => 'الاسم',
|
||||
'Process list' => 'قائمة الإجراءات',
|
||||
'%d process(es) have been killed.' => 'عدد الإجراءات التي تم إيقافها %d.',
|
||||
'Kill' => 'إيقاف',
|
||||
'Parameter name' => 'إسم المتغير',
|
||||
'Parameter name' => 'اسم المتغير',
|
||||
'Database schema' => 'مخطط فاعدة البيانات',
|
||||
'Create procedure' => 'إنشاء إجراء',
|
||||
'Create function' => 'إنشاء دالة',
|
||||
@@ -138,7 +136,7 @@ $translations = array(
|
||||
'Grant' => 'موافق',
|
||||
'Revoke' => 'إلغاء',
|
||||
'%s version: %s through PHP extension %s' => 'النسخة %s : %s عن طريق إمتداد ال PHP %s',
|
||||
'Logged as: %s' => 'تم تسجيل الدخول بإسم %s',
|
||||
'Logged as: %s' => 'تم تسجيل الدخول باسم %s',
|
||||
'Too big POST data. Reduce the data or increase the %s configuration directive.' => 'معلومات POST كبيرة جدا. قم بتقليص حجم المعلومات أو قم بزيادة قيمة %s في خيارات ال PHP.',
|
||||
'Move up' => 'نقل للأعلى',
|
||||
'Move down' => 'نقل للأسفل',
|
||||
@@ -177,6 +175,7 @@ $translations = array(
|
||||
'Data Free' => 'المساحة الحرة',
|
||||
'Rows' => 'الأسطر',
|
||||
',' => ',',
|
||||
'0123456789' => '0123456789',
|
||||
'Analyze' => 'تحليل',
|
||||
'Optimize' => 'تحسين',
|
||||
'Check' => 'فحص',
|
||||
@@ -190,11 +189,11 @@ $translations = array(
|
||||
'Maximum number of allowed fields exceeded. Please increase %s.' => 'لقد تجاوزت العدد الأقصى للحقول. يرجى الرفع من %s.',
|
||||
'Partition by' => 'مقسم بواسطة',
|
||||
'Partitions' => 'التقسيمات',
|
||||
'Partition name' => 'إسم التقسيم',
|
||||
'Partition name' => 'اسم التقسيم',
|
||||
'Values' => 'القيم',
|
||||
'%d row(s) have been imported.' => 'عدد الأسطر المستوردة هو %d.',
|
||||
'%d row(s) have been imported.' => 'تم استيراد %d سطرا',
|
||||
'anywhere' => 'في اي مكان',
|
||||
'Import' => 'إستيراد',
|
||||
'Import' => 'استيراد',
|
||||
'Stop on error' => 'أوقف في حالة حدوث خطأ',
|
||||
'%.3f s' => '%.3f s',
|
||||
'$1-$3-$5' => '$5/$3/$1',
|
||||
@@ -224,7 +223,6 @@ $translations = array(
|
||||
'Databases have been dropped.' => 'تم حذف قواعد البيانات.',
|
||||
'Database has been dropped.' => 'تم حذف قاعدة البيانات.',
|
||||
'Search data in tables' => 'بحث في الجداول',
|
||||
'schema' => 'المخطط',
|
||||
'Schema' => 'المخطط',
|
||||
'Alter schema' => 'تعديل المخطط',
|
||||
'Create schema' => 'إنشاء مخطط',
|
||||
@@ -242,7 +240,7 @@ $translations = array(
|
||||
'Alter type' => 'تعديل نوع',
|
||||
'Type has been dropped.' => 'تم حذف النوع.',
|
||||
'Type has been created.' => 'تم إنشاء النوع.',
|
||||
'Use edit link to modify this value.' => 'إستعمل الرابط "تعديل" لتعديل هذه القيمة.',
|
||||
'Use edit link to modify this value.' => 'استعمل الرابط "تعديل" لتعديل هذه القيمة.',
|
||||
'last' => 'الأخيرة',
|
||||
'From server' => 'من الخادم',
|
||||
'System' => 'النظام',
|
||||
@@ -255,15 +253,15 @@ $translations = array(
|
||||
'Attachments' => 'ملفات مرفقة.',
|
||||
'Item%s has been inserted.' => 'تم إدراج العنصر.',
|
||||
'now' => 'الآن',
|
||||
'%d query(s) executed OK.' => array('تم تنفيذ الإستعلام %d بنجاح.', 'تم تنفيذ الإستعلامات %d بنجاح.'),
|
||||
'Show only errors' => 'إعرض الأخطاء فقط',
|
||||
'%d query(s) executed OK.' => array('تم تنفيذ الاستعلام %d بنجاح.', 'تم تنفيذ الاستعلامات %d بنجاح.'),
|
||||
'Show only errors' => 'إظهار الأخطاء فقط',
|
||||
'Refresh' => 'تحديث',
|
||||
'Invalid schema.' => 'مخطط خاطئ.',
|
||||
'Please use one of the extensions %s.' => 'من فضلك إستعمل إحدى الإمتدادات: %s.',
|
||||
'Invalid schema.' => 'مخطط غير صالح.',
|
||||
'Please use one of the extensions %s.' => 'المرجو استخدام إحدى الامتدادات %s.',
|
||||
'ltr' => 'rtl',
|
||||
'Tables have been copied.' => 'تم نسخ الجداول.',
|
||||
'Copy' => 'نسخ',
|
||||
'Permanent link' => 'وصلة دائمة',
|
||||
'Permanent link' => 'رابط دائم',
|
||||
'Edit all' => 'تعديل الكل',
|
||||
'HH:MM:SS' => 'HH:MM:SS',
|
||||
);
|
||||
|
||||
336
adminer/lang/bg.inc.php
Normal file
336
adminer/lang/bg.inc.php
Normal file
@@ -0,0 +1,336 @@
|
||||
<?php
|
||||
$translations = array(
|
||||
// label for database system selection (MySQL, SQLite, ...)
|
||||
'System' => 'Система',
|
||||
'Server' => 'Сървър',
|
||||
'Username' => 'Потребител',
|
||||
'Password' => 'Парола',
|
||||
'Permanent login' => 'Запаметяване',
|
||||
'Login' => 'Вход',
|
||||
'Logout' => 'Изход',
|
||||
'Logged as: %s' => 'Текущ потребител: %s',
|
||||
'Logout successful.' => 'Излизането е успешно.',
|
||||
'Invalid credentials.' => 'Невалидни потребителски данни.',
|
||||
'Too many unsuccessful logins, try again in %d minute(s).' => array('Прекалено много неуспешни опити за вход, опитайте пак след %d минута.', 'Прекалено много неуспешни опити за вход, опитайте пак след %d минути.'),
|
||||
'Master password expired. <a href="https://www.adminer.org/en/extension/" target="_blank">Implement</a> %s method to make it permanent.' => 'Главната парола вече е невалидна. <a href="https://www.adminer.org/en/extension/" target="_blank">Изберете</a> %s метод, за да я направите постоянна.',
|
||||
'Language' => 'Език',
|
||||
'Invalid CSRF token. Send the form again.' => 'Невалиден шифроващ ключ. Попълнете и изпратете формуляра отново.',
|
||||
'If you did not send this request from Adminer then close this page.' => 'Ако не сте изпратили тази заявка през Adminer, затворете тази страница.',
|
||||
'No extension' => 'Няма разширение',
|
||||
'None of the supported PHP extensions (%s) are available.' => 'Никое от поддържаните PHP разширения (%s) не е налично.',
|
||||
'Session support must be enabled.' => 'Поддръжката на сесии трябва да е разрешена.',
|
||||
'Session expired, please login again.' => 'Сесията е изтекла; моля, влезте отново.',
|
||||
'%s version: %s through PHP extension %s' => '%s версия: %s през PHP разширение %s',
|
||||
'Refresh' => 'Обновяване',
|
||||
|
||||
// text direction - 'ltr' or 'rtl'
|
||||
'ltr' => 'ltr',
|
||||
|
||||
'Privileges' => 'Права',
|
||||
'Create user' => 'Създаване на потребител',
|
||||
'User has been dropped.' => 'Потребителя беше премахнат.',
|
||||
'User has been altered.' => 'Потребителя беше променен.',
|
||||
'User has been created.' => 'Потребителя беше създаден.',
|
||||
'Hashed' => 'Хеширан',
|
||||
'Column' => 'Колона',
|
||||
'Routine' => 'Процедура',
|
||||
'Grant' => 'Осигуряване',
|
||||
'Revoke' => 'Отнемане',
|
||||
|
||||
'Process list' => 'Списък с процеси',
|
||||
'%d process(es) have been killed.' => array('%d процес беше прекъснат.', '%d процеса бяха прекъснати.'),
|
||||
'Kill' => 'Прекъсване',
|
||||
|
||||
'Variables' => 'Променливи',
|
||||
'Status' => 'Състояние',
|
||||
|
||||
'SQL command' => 'SQL команда',
|
||||
'%d query(s) executed OK.' => array('%d заявка е изпълнена.', '%d заявки са изпълнени.'),
|
||||
'Query executed OK, %d row(s) affected.' => array('Заявката е изпълнена, %d ред е засегнат.', 'Заявката е изпълнена, %d редове са засегнати.'),
|
||||
'No commands to execute.' => 'Няма команди за изпълнение.',
|
||||
'Error in query' => 'Грешка в заявката',
|
||||
'Execute' => 'Изпълнение',
|
||||
'Stop on error' => 'Спиране при грешка',
|
||||
'Show only errors' => 'Показване само на грешките',
|
||||
// sprintf() format for time of the command
|
||||
'%.3f s' => '%.3f s',
|
||||
'History' => 'Хронология',
|
||||
'Clear' => 'Изчистване',
|
||||
'Edit all' => 'Редактиране на всички',
|
||||
|
||||
'File upload' => 'Прикачване на файл',
|
||||
'From server' => 'От сървър',
|
||||
'Webserver file %s' => 'Сървърен файл %s',
|
||||
'Run file' => 'Изпълнение на файл',
|
||||
'File does not exist.' => 'Файлът не съществува.',
|
||||
'File uploads are disabled.' => 'Прикачването на файлове е забранено.',
|
||||
'Unable to upload a file.' => 'Неуспешно прикачване на файл.',
|
||||
'Maximum allowed file size is %sB.' => 'Максимално разрешената големина на файл е %sB.',
|
||||
'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 are offline.' => 'Вие сте офлайн.',
|
||||
|
||||
'Export' => 'Експорт',
|
||||
'Output' => 'Резултат',
|
||||
'open' => 'показване',
|
||||
'save' => 'запис',
|
||||
'Format' => 'Формат',
|
||||
'Data' => 'Данни',
|
||||
|
||||
'Database' => 'База данни',
|
||||
'database' => 'база данни',
|
||||
'Use' => 'Избор',
|
||||
'Select database' => 'Избор на база данни',
|
||||
'Invalid database.' => 'Невалидна база данни.',
|
||||
'Database has been dropped.' => 'Базата данни беше премахната.',
|
||||
'Databases have been dropped.' => 'Базите данни бяха премехнати.',
|
||||
'Database has been created.' => 'Базата данни беше създадена.',
|
||||
'Database has been renamed.' => 'Базата данни беше преименувана.',
|
||||
'Database has been altered.' => 'Базата данни беше променена.',
|
||||
'Alter database' => 'Промяна на база данни',
|
||||
'Create database' => 'Създаване на база данни',
|
||||
'Database schema' => 'Схема на базата данни',
|
||||
|
||||
// link to current database schema layout
|
||||
'Permanent link' => 'Постоянна препратка',
|
||||
|
||||
// thousands separator - must contain single byte
|
||||
',' => ',',
|
||||
'0123456789' => '0123456789',
|
||||
'Engine' => 'Система',
|
||||
'Collation' => 'Кодировка',
|
||||
'Data Length' => 'Големина на данните',
|
||||
'Index Length' => 'Големина на индекса',
|
||||
'Data Free' => 'Свободно място',
|
||||
'Rows' => 'Редове',
|
||||
'%d in total' => '%d всичко',
|
||||
'Analyze' => 'Анализиране',
|
||||
'Optimize' => 'Оптимизиране',
|
||||
'Vacuum' => 'Консолидиране',
|
||||
'Check' => 'Проверка',
|
||||
'Repair' => 'Поправка',
|
||||
'Truncate' => 'Изрязване',
|
||||
'Tables have been truncated.' => 'Таблиците бяха изрязани.',
|
||||
'Move to other database' => 'Преместване в друга база данни',
|
||||
'Move' => 'Преместване',
|
||||
'Tables have been moved.' => 'Таблиците бяха преместени.',
|
||||
'Copy' => 'Копиране',
|
||||
'Tables have been copied.' => 'Таблиците бяха копирани.',
|
||||
|
||||
'Routines' => 'Процедури',
|
||||
'Routine has been called, %d row(s) affected.' => array('Беше приложена процедура, %d ред е засегнат.', 'Беше приложена процедура, %d редове са засегнати.'),
|
||||
'Call' => 'Прилагане',
|
||||
'Parameter name' => 'Име на параметъра',
|
||||
'Create procedure' => 'Създаване на процедура',
|
||||
'Create function' => 'Създаване на функция',
|
||||
'Routine has been dropped.' => 'Процедурата беше премахната.',
|
||||
'Routine has been altered.' => 'Процедурата беше променена.',
|
||||
'Routine has been created.' => 'Процедурата беше създадена.',
|
||||
'Alter function' => 'Промяна на функция',
|
||||
'Alter procedure' => 'Промяна на процедура',
|
||||
'Return type' => 'Резултат',
|
||||
|
||||
'Events' => 'Събития',
|
||||
'Event has been dropped.' => 'Събитието беше премахнато.',
|
||||
'Event has been altered.' => 'Събитието беше променено.',
|
||||
'Event has been created.' => 'Събитието беше създадено.',
|
||||
'Alter event' => 'Промяна на събитие',
|
||||
'Create event' => 'Създаване на събитие',
|
||||
'At given time' => 'В зададено време',
|
||||
'Every' => 'Всеки',
|
||||
'Schedule' => 'Насрочване',
|
||||
'Start' => 'Начало',
|
||||
'End' => 'Край',
|
||||
'On completion preserve' => 'Запазване след завършване',
|
||||
|
||||
'Tables' => 'Таблици',
|
||||
'Tables and views' => 'Таблици и изгледи',
|
||||
'Table' => 'Таблица',
|
||||
'No tables.' => 'Няма таблици.',
|
||||
'Alter table' => 'Промяна на таблица',
|
||||
'Create table' => 'Създаване на таблица',
|
||||
'Table has been dropped.' => 'Таблицата беше премахната.',
|
||||
'Tables have been dropped.' => 'Таблиците бяха премахнати.',
|
||||
'Tables have been optimized.' => 'Таблиците бяха оптимизирани.',
|
||||
'Table has been altered.' => 'Таблицата беше променена.',
|
||||
'Table has been created.' => 'Таблицата беше създадена.',
|
||||
'Table name' => 'Име на таблица',
|
||||
'Show structure' => 'Структура',
|
||||
'engine' => 'система',
|
||||
'collation' => 'кодировка',
|
||||
'Column name' => 'Име на колоната',
|
||||
'Type' => 'Вид',
|
||||
'Length' => 'Големина',
|
||||
'Auto Increment' => 'Автоматично увеличаване',
|
||||
'Options' => 'Опции',
|
||||
'Comment' => 'Коментар',
|
||||
'Default value' => 'Стойност по подразбиране',
|
||||
'Default values' => 'Стойности по подразбиране',
|
||||
'Drop' => 'Премахване',
|
||||
'Are you sure?' => 'Сигурни ли сте?',
|
||||
'Size' => 'Големина',
|
||||
'Compute' => 'Изчисляване',
|
||||
'Move up' => 'Преместване нагоре',
|
||||
'Move down' => 'Преместване надолу',
|
||||
'Remove' => 'Премахване',
|
||||
'Maximum number of allowed fields exceeded. Please increase %s.' => 'Максималния брой полета е превишен. Моля, увеличете %s.',
|
||||
|
||||
'Partition by' => 'Разделяне на',
|
||||
'Partitions' => 'Раздели',
|
||||
'Partition name' => 'Име на раздела',
|
||||
'Values' => 'Стойности',
|
||||
|
||||
'View' => 'Изглед',
|
||||
'Materialized view' => 'Запаметен изглед',
|
||||
'View has been dropped.' => 'Изгледа беше премахнат.',
|
||||
'View has been altered.' => 'Изгледа беше променен.',
|
||||
'View has been created.' => 'Изгледа беше създаден.',
|
||||
'Alter view' => 'Промяна на изглед',
|
||||
'Create view' => 'Създаване на изглед',
|
||||
|
||||
'Indexes' => 'Индекси',
|
||||
'Indexes have been altered.' => 'Индексите бяха променени.',
|
||||
'Alter indexes' => 'Промяна на индекси',
|
||||
'Add next' => 'Добавяне на следващ',
|
||||
'Index Type' => 'Вид на индекса',
|
||||
'Column (length)' => 'Колона (дължина)',
|
||||
|
||||
'Foreign keys' => 'Препратки',
|
||||
'Foreign key' => 'Препратка',
|
||||
'Foreign key has been dropped.' => 'Препратката беше премахната.',
|
||||
'Foreign key has been altered.' => 'Препратката беше променена.',
|
||||
'Foreign key has been created.' => 'Препратката беше създадена.',
|
||||
'Target table' => 'Таблица приемник',
|
||||
'Change' => 'Промяна',
|
||||
'Source' => 'Източник',
|
||||
'Target' => 'Цел',
|
||||
'Add column' => 'Добавяне на колона',
|
||||
'Alter' => 'Промяна',
|
||||
'Add foreign key' => 'Добавяне на препратка',
|
||||
'ON DELETE' => 'При изтриване',
|
||||
'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.' => 'Колоните източник и цел трябва да са от еднакъв вид, трябва да има индекс на колоните приемник и да има въведени данни.',
|
||||
|
||||
'Triggers' => 'Тригери',
|
||||
'Add trigger' => 'Добавяне на тригер',
|
||||
'Trigger has been dropped.' => 'Тригера беше премахнат.',
|
||||
'Trigger has been altered.' => 'Тригера беше променен.',
|
||||
'Trigger has been created.' => 'Тригера беше създаден.',
|
||||
'Alter trigger' => 'Промяна на тригер',
|
||||
'Create trigger' => 'Създаване на тригер',
|
||||
'Time' => 'Време',
|
||||
'Event' => 'Събитие',
|
||||
'Name' => 'Име',
|
||||
|
||||
'select' => 'показване',
|
||||
'Select' => 'Показване',
|
||||
'Select data' => 'Показване на данни',
|
||||
'Functions' => 'Функции',
|
||||
'Aggregation' => 'Съвкупност',
|
||||
'Search' => 'Търсене',
|
||||
'anywhere' => 'навсякъде',
|
||||
'Search data in tables' => 'Търсене на данни в таблиците',
|
||||
'Sort' => 'Сортиране',
|
||||
'descending' => 'низходящо',
|
||||
'Limit' => 'Редове',
|
||||
'Limit rows' => 'Лимит на редовете',
|
||||
'Text length' => 'Текст',
|
||||
'Action' => 'Действие',
|
||||
'Full table scan' => 'Пълно сканиране на таблицата',
|
||||
'Unable to select the table' => 'Неуспешно показване на таблицата',
|
||||
'No rows.' => 'Няма редове.',
|
||||
'%d / ' => '%d / ',
|
||||
'%d row(s)' => array('%d ред', '%d реда'),
|
||||
'Page' => 'Страница',
|
||||
'last' => 'последен',
|
||||
'Load more data' => 'Зареждане на повече данни',
|
||||
'Loading' => 'Зареждане',
|
||||
'whole result' => 'пълен резултат',
|
||||
'%d byte(s)' => array('%d байт', '%d байта'),
|
||||
|
||||
'Import' => 'Импорт',
|
||||
'%d row(s) have been imported.' => array('%d ред беше импортиран.', '%d реда бяха импортирани.'),
|
||||
'File must be in UTF-8 encoding.' => 'Файла трябва да е с UTF-8 кодировка.',
|
||||
|
||||
// in-place editing in select
|
||||
'Modify' => 'Промяна',
|
||||
'Ctrl+click on a value to modify it.' => 'Ctrl+щракване в стойността, за да я промените.',
|
||||
'Use edit link to modify this value.' => 'Използвайте "редакция" за промяна на данните.',
|
||||
|
||||
// %s can contain auto-increment value
|
||||
'Item%s has been inserted.' => 'Елементи%s бяха вмъкнати.',
|
||||
'Item has been deleted.' => 'Елемента беше изтрит.',
|
||||
'Item has been updated.' => 'Елемента беше обновен.',
|
||||
'%d item(s) have been affected.' => array('%d елемент беше засегнат.', '%d елемента бяха засегнати.'),
|
||||
'New item' => 'Нов елемент',
|
||||
'original' => 'оригинал',
|
||||
// label for value '' in enum data type
|
||||
'empty' => 'празно',
|
||||
'edit' => 'редакция',
|
||||
'Edit' => 'Редактиране',
|
||||
'Insert' => 'Вмъкване',
|
||||
'Save' => 'Запис',
|
||||
'Saving' => 'Записване',
|
||||
'Save and continue edit' => 'Запис и редакция',
|
||||
'Save and insert next' => 'Запис и нов',
|
||||
'Selected' => 'Избран',
|
||||
'Clone' => 'Клониране',
|
||||
'Delete' => 'Изтриване',
|
||||
'You have no privileges to update this table.' => 'Нямате праве за обновяване на таблицата.',
|
||||
|
||||
'E-mail' => 'E-mail',
|
||||
'From' => 'От',
|
||||
'Subject' => 'Тема',
|
||||
'Attachments' => 'Прикачени',
|
||||
'Send' => 'Изпращане',
|
||||
'%d e-mail(s) have been sent.' => array('%d писмо беше изпратено.', '%d писма бяха изпратени.'),
|
||||
|
||||
// data type descriptions
|
||||
'Numbers' => 'Числа',
|
||||
'Date and time' => 'Дата и час',
|
||||
'Strings' => 'Низове',
|
||||
'Binary' => 'Двоични',
|
||||
'Lists' => 'Списъци',
|
||||
'Network' => 'Мрежа',
|
||||
'Geometry' => 'Геометрия',
|
||||
'Relations' => 'Зависимости',
|
||||
|
||||
'Editor' => 'Редактор',
|
||||
// date format in Editor: $1 yyyy, $2 yy, $3 mm, $4 m, $5 dd, $6 d
|
||||
'$1-$3-$5' => '$1-$3-$5',
|
||||
// hint for date format - use language equivalents for day, month and year shortcuts
|
||||
'[yyyy]-mm-dd' => '[гггг]-мм-дд',
|
||||
// hint for time format - use language equivalents for hour, minute and second shortcuts
|
||||
'HH:MM:SS' => 'ЧЧ:ММ:СС',
|
||||
'now' => 'сега',
|
||||
'yes' => 'да',
|
||||
'no' => 'не',
|
||||
|
||||
// general SQLite error in create, drop or rename database
|
||||
'File exists.' => 'Файла вече съществува.',
|
||||
'Please use one of the extensions %s.' => 'Моля, използвайте някое от разширенията %s.',
|
||||
|
||||
// PostgreSQL and MS SQL schema support
|
||||
'Alter schema' => 'Промяна на схемата',
|
||||
'Create schema' => 'Създаване на схема',
|
||||
'Schema has been dropped.' => 'Схемата беше премахната.',
|
||||
'Schema has been created.' => 'Схемата беше създадена.',
|
||||
'Schema has been altered.' => 'Схемата беше променена.',
|
||||
'Schema' => 'Схема',
|
||||
'Invalid schema.' => 'Невалидна схема.',
|
||||
|
||||
// PostgreSQL sequences support
|
||||
'Sequences' => 'Последователности',
|
||||
'Create sequence' => 'Създаване на последователност',
|
||||
'Sequence has been dropped.' => 'Последователността беше премахната.',
|
||||
'Sequence has been created.' => 'Последователността беше създадена.',
|
||||
'Sequence has been altered.' => 'Последователността беше променена.',
|
||||
'Alter sequence' => 'Промяна на последователност',
|
||||
|
||||
// PostgreSQL user types support
|
||||
'User types' => 'Видове потребители',
|
||||
'Create type' => 'Създаване на вид',
|
||||
'Type has been dropped.' => 'Вида беше пермахнат.',
|
||||
'Type has been created.' => 'Вида беше създаден.',
|
||||
'Alter type' => 'Промяна на вид',
|
||||
);
|
||||
@@ -8,7 +8,6 @@ $translations = array(
|
||||
'Password' => 'পাসওয়ার্ড',
|
||||
'Select database' => 'ডাটাবেজ নির্বাচন করো',
|
||||
'Invalid database.' => 'ভুল ডাটাবেজ।',
|
||||
'Create new database' => 'নতুন ডাটাবেজ তৈরী করো',
|
||||
'Table has been dropped.' => 'টেবিল মুছে ফেলা হয়েছে।',
|
||||
'Table has been altered.' => 'টেবিল সম্পাদনা করা হয়েছে।',
|
||||
'Table has been created.' => 'টেবিল তৈরী করা হয়েছে।',
|
||||
@@ -31,7 +30,6 @@ $translations = array(
|
||||
'Alter database' => 'ডাটাবেজ সম্পাদনা',
|
||||
'Create database' => 'ডাটাবেজ তৈরী',
|
||||
'SQL command' => 'SQL-কোয়্যারী',
|
||||
'Dump' => 'এক্সপোর্ট',
|
||||
'Logout' => 'লগআউট',
|
||||
'database' => 'ডাটাবেজ',
|
||||
'Use' => 'ব্যবহার',
|
||||
@@ -179,6 +177,7 @@ $translations = array(
|
||||
'Tables have been truncated.' => 'টেবিল ছাঁটাই করা হয়েছে',
|
||||
'Rows' => 'সারি',
|
||||
',' => ',',
|
||||
'0123456789' => '০১২৩৪৫৬৭৮৯',
|
||||
'Tables have been moved.' => 'টেবিল স্থানান্তর করা হয়েছে।',
|
||||
'Move to other database' => 'অন্য ডাটাবেজে স্থানান্তর করো',
|
||||
'Move' => 'স্থানান্তর করো',
|
||||
@@ -225,7 +224,6 @@ $translations = array(
|
||||
'Permanent login' => 'স্থায়ী লগইন',
|
||||
'Databases have been dropped.' => 'ডাটাবেজসমূহ মুছে ফেলা হয়েছে।',
|
||||
'Search data in tables' => 'টেবিলে খোঁজ করো',
|
||||
'schema' => 'স্কিমা',
|
||||
'Schema' => 'স্কিমা',
|
||||
'Alter schema' => 'স্কিমা পরিবর্তন করো',
|
||||
'Create schema' => 'স্কিমা তৈরী করো',
|
||||
|
||||
321
adminer/lang/bs.inc.php
Normal file
321
adminer/lang/bs.inc.php
Normal file
@@ -0,0 +1,321 @@
|
||||
<?php
|
||||
$translations = array(
|
||||
// label for database system selection (MySQL, SQLite, ...)
|
||||
'System' => 'Sistem',
|
||||
'Server' => 'Server',
|
||||
'Username' => 'Korisničko ime',
|
||||
'Password' => 'Lozinka',
|
||||
'Permanent login' => 'Trajna prijava',
|
||||
'Login' => 'Prijava',
|
||||
'Logout' => 'Odjava',
|
||||
'Logged as: %s' => 'Prijavi se kao: %s',
|
||||
'Logout successful.' => 'Uspešna odjava.',
|
||||
'Invalid credentials.' => 'Nevažeće dozvole.',
|
||||
'Language' => 'Jezik',
|
||||
'Invalid CSRF token. Send the form again.' => 'Nevažeći CSRF kod. Proslijedite ponovo formu.',
|
||||
'No extension' => 'Bez dodataka',
|
||||
'None of the supported PHP extensions (%s) are available.' => 'Nijedan od podržanih PHP dodataka nije dostupan.',
|
||||
'Session support must be enabled.' => 'Morate omogućiti podršku za sesije.',
|
||||
'Session expired, please login again.' => 'Vaša sesija je istekla, prijavite se ponovo.',
|
||||
'%s version: %s through PHP extension %s' => '%s verzija: %s pomoću PHP dodatka je %s',
|
||||
'Refresh' => 'Osveži',
|
||||
|
||||
// text direction - 'ltr' or 'rtl'
|
||||
'ltr' => 'ltr',
|
||||
|
||||
'Privileges' => 'Dozvole',
|
||||
'Create user' => 'Novi korisnik',
|
||||
'User has been dropped.' => 'Korisnik je izbrisan.',
|
||||
'User has been altered.' => 'Korisnik je izmijenjen.',
|
||||
'User has been created.' => 'korisnik je spašen.',
|
||||
'Hashed' => 'Heširano',
|
||||
'Column' => 'kolumna',
|
||||
'Routine' => 'Rutina',
|
||||
'Grant' => 'Dozvoli',
|
||||
'Revoke' => 'Opozovi',
|
||||
|
||||
'Process list' => 'Spisak procesa',
|
||||
'%d process(es) have been killed.' => array('%d proces je ukinut.', '%d procesa su ukinuta.', '%d procesa je ukinuto.'),
|
||||
'Kill' => 'Ubij',
|
||||
|
||||
'Variables' => 'Promijenljive',
|
||||
'Status' => 'Status',
|
||||
|
||||
'SQL command' => 'SQL komanda',
|
||||
'%d query(s) executed OK.' => array('%d upit je uspiješno izvršen.', '%d upita su uspiješno izvršena.', '%d upita je uspiješno izvršeno.'),
|
||||
'Query executed OK, %d row(s) affected.' => array('Upit je uspiješno izvršen, %d red je ažuriran.', 'Upit je uspiješno izvršen, %d reda su ažurirana.', 'Upit je uspiješno izvršen, %d redova je ažurirano.'),
|
||||
'No commands to execute.' => 'Bez komandi za izvršavanje.',
|
||||
'Error in query' => 'Greška u upitu',
|
||||
'Execute' => 'Izvrši',
|
||||
'Stop on error' => 'Zaustavi prilikom greške',
|
||||
'Show only errors' => 'Prikazuj samo greške',
|
||||
// sprintf() format for time of the command
|
||||
'%.3f s' => '%.3f s',
|
||||
'History' => 'Historijat',
|
||||
'Clear' => 'Očisti',
|
||||
'Edit all' => 'Izmijeni sve',
|
||||
|
||||
'File upload' => 'Slanje datoteka',
|
||||
'From server' => 'Sa servera',
|
||||
'Webserver file %s' => 'Datoteka %s sa veb servera',
|
||||
'Run file' => 'Pokreni datoteku',
|
||||
'File does not exist.' => 'Datoteka ne postoji.',
|
||||
'File uploads are disabled.' => 'Onemogućeno je slanje datoteka.',
|
||||
'Unable to upload a file.' => 'Slanje datoteke nije uspelo.',
|
||||
'Maximum allowed file size is %sB.' => 'Najveća dozvoljena veličina datoteke je %sB.',
|
||||
'Too big POST data. Reduce the data or increase the %s configuration directive.' => 'Preveliki POST podatak. Morate da smanjite podatak ili povećajte vrijednost konfiguracione direktive %s.',
|
||||
|
||||
'Export' => 'Izvoz',
|
||||
'Output' => 'Ispis',
|
||||
'open' => 'otvori',
|
||||
'save' => 'spasi',
|
||||
'Format' => 'Format',
|
||||
'Data' => 'Podaci',
|
||||
|
||||
'Database' => 'Baza podataka',
|
||||
'database' => 'baza podataka',
|
||||
'Use' => 'Koristi',
|
||||
'Select database' => 'Izaberite bazu',
|
||||
'Invalid database.' => 'Neispravna baza podataka.',
|
||||
'Database has been dropped.' => 'Baza podataka je izbrisana.',
|
||||
'Databases have been dropped.' => 'Baze podataka su izbrisane.',
|
||||
'Database has been created.' => 'Baza podataka je spašena.',
|
||||
'Database has been renamed.' => 'Baza podataka je preimenovana.',
|
||||
'Database has been altered.' => 'Baza podataka je izmijenjena.',
|
||||
'Alter database' => 'Ažuriraj bazu podataka',
|
||||
'Create database' => 'Formiraj bazu podataka',
|
||||
'Database schema' => 'Šema baze podataka',
|
||||
|
||||
// link to current database schema layout
|
||||
'Permanent link' => 'Trajna veza',
|
||||
|
||||
// thousands separator - must contain single byte
|
||||
',' => ',',
|
||||
'0123456789' => '0123456789',
|
||||
'Engine' => 'Stroj',
|
||||
'Collation' => 'Sravnjivanje',
|
||||
'Data Length' => 'Dužina podataka',
|
||||
'Index Length' => 'Dužina indeksa',
|
||||
'Data Free' => 'Slobodno podataka',
|
||||
'Rows' => 'Redova',
|
||||
'%d in total' => 'ukupno %d',
|
||||
'Analyze' => 'Analiziraj',
|
||||
'Optimize' => 'Optimizuj',
|
||||
'Check' => 'Provjeri',
|
||||
'Repair' => 'Popravi',
|
||||
'Truncate' => 'Isprazni',
|
||||
'Tables have been truncated.' => 'Tabele su ispražnjene.',
|
||||
'Move to other database' => 'Premijesti u drugu bazu podataka',
|
||||
'Move' => 'Premijesti',
|
||||
'Tables have been moved.' => 'Tabele su premješćene.',
|
||||
'Copy' => 'Umnoži',
|
||||
'Tables have been copied.' => 'Tabele su umnožene.',
|
||||
|
||||
'Routines' => 'Rutine',
|
||||
'Routine has been called, %d row(s) affected.' => array('Pozvana je rutina, %d red je ažuriran.', 'Pozvana je rutina, %d reda su ažurirani.', 'Pozvana je rutina, %d redova je ažurirano.'),
|
||||
'Call' => 'Pozovi',
|
||||
'Parameter name' => 'Naziv parametra',
|
||||
'Create procedure' => 'Formiraj proceduru',
|
||||
'Create function' => 'Formiraj funkciju',
|
||||
'Routine has been dropped.' => 'Rutina je izbrisana.',
|
||||
'Routine has been altered.' => 'Rutina je izmijenjena.',
|
||||
'Routine has been created.' => 'Rutina je spašena.',
|
||||
'Alter function' => 'Ažuriraj funkciju',
|
||||
'Alter procedure' => 'Ažuriraj proceduru',
|
||||
'Return type' => 'Povratni tip',
|
||||
|
||||
'Events' => 'Događaji',
|
||||
'Event has been dropped.' => 'Događaj je izbrisan.',
|
||||
'Event has been altered.' => 'Događaj je izmijenjen.',
|
||||
'Event has been created.' => 'Događaj je spašen.',
|
||||
'Alter event' => 'Ažuriraj događaj',
|
||||
'Create event' => 'Napravi događaj',
|
||||
'At given time' => 'U zadato vrijeme',
|
||||
'Every' => 'Svaki',
|
||||
'Schedule' => 'Raspored',
|
||||
'Start' => 'Početak',
|
||||
'End' => 'Kraj',
|
||||
'On completion preserve' => 'Zadrži po završetku',
|
||||
|
||||
'Tables' => 'Tabele',
|
||||
'Tables and views' => 'Tabele i pogledi',
|
||||
'Table' => 'Tabela',
|
||||
'No tables.' => 'Bez tabela.',
|
||||
'Alter table' => 'Ažuriraj tabelu',
|
||||
'Create table' => 'Napravi tabelu',
|
||||
'Table has been dropped.' => 'Tabela je izbrisana.',
|
||||
'Tables have been dropped.' => 'Tabele su izbrisane.',
|
||||
'Tables have been optimized.' => 'Tabele su optimizovane.',
|
||||
'Table has been altered.' => 'Tabela je izmijenjena.',
|
||||
'Table has been created.' => 'Tabela je spašena.',
|
||||
'Table name' => 'Naziv tabele',
|
||||
'Show structure' => 'Prikaži strukturu',
|
||||
'engine' => 'stroj',
|
||||
'collation' => 'Sravnjivanje',
|
||||
'Column name' => 'Naziv kolumne',
|
||||
'Type' => 'Tip',
|
||||
'Length' => 'Dužina',
|
||||
'Auto Increment' => 'Auto-priraštaj',
|
||||
'Options' => 'Opcije',
|
||||
'Comment' => 'Komentar',
|
||||
'Default values' => 'Podrazumijevane vrijednosti',
|
||||
'Drop' => 'Izbriši',
|
||||
'Are you sure?' => 'Da li ste sigurni?',
|
||||
'Move up' => 'Pomijeri na gore',
|
||||
'Move down' => 'Pomijeri na dole',
|
||||
'Remove' => 'Ukloni',
|
||||
'Maximum number of allowed fields exceeded. Please increase %s.' => 'Premašen je maksimalni broj dozvoljenih polja. Molim uvećajte %s.',
|
||||
|
||||
'Partition by' => 'Podijeli po',
|
||||
'Partitions' => 'Podijele',
|
||||
'Partition name' => 'Ime podijele',
|
||||
'Values' => 'Vrijednosti',
|
||||
|
||||
'View' => 'Pogled',
|
||||
'View has been dropped.' => 'Pogled je izbrisan.',
|
||||
'View has been altered.' => 'Pogled je izmijenjen.',
|
||||
'View has been created.' => 'Pogled je spašen.',
|
||||
'Alter view' => 'Ažuriraj pogled',
|
||||
'Create view' => 'Napravi pogled',
|
||||
|
||||
'Indexes' => 'Indeksi',
|
||||
'Indexes have been altered.' => 'Indeksi su izmijenjeni.',
|
||||
'Alter indexes' => 'Ažuriraj indekse',
|
||||
'Add next' => 'Dodaj slijedeći',
|
||||
'Index Type' => 'Tip indeksa',
|
||||
'Column (length)' => 'kolumna (dužina)',
|
||||
|
||||
'Foreign keys' => 'Strani ključevi',
|
||||
'Foreign key' => 'Strani ključ',
|
||||
'Foreign key has been dropped.' => 'Strani ključ je izbrisan.',
|
||||
'Foreign key has been altered.' => 'Strani ključ je izmijenjen.',
|
||||
'Foreign key has been created.' => 'Strani ključ je spašen.',
|
||||
'Target table' => 'Ciljna tabela',
|
||||
'Change' => 'izmijeni',
|
||||
'Source' => 'Izvor',
|
||||
'Target' => 'Cilj',
|
||||
'Add column' => 'Dodaj kolumnu',
|
||||
'Alter' => 'Ažuriraj',
|
||||
'Add foreign key' => 'Dodaj strani ključ',
|
||||
'ON DELETE' => 'ON DELETE (prilikom brisanja)',
|
||||
'ON UPDATE' => 'ON UPDATE (prilikom osvežavanja)',
|
||||
'Source and target columns must have the same data type, there must be an index on the target columns and referenced data must exist.' => 'Izvorne i ciljne kolumne moraju biti istog tipa, ciljna kolumna mora biti indeksirana i izvorna tabela mora sadržati podatke iz ciljne.',
|
||||
|
||||
'Triggers' => 'Okidači',
|
||||
'Add trigger' => 'Dodaj okidač',
|
||||
'Trigger has been dropped.' => 'Okidač je izbrisan.',
|
||||
'Trigger has been altered.' => 'Okidač je izmijenjen.',
|
||||
'Trigger has been created.' => 'Okidač je spašen.',
|
||||
'Alter trigger' => 'Ažuriraj okidač',
|
||||
'Create trigger' => 'Formiraj okidač',
|
||||
'Time' => 'Vrijeme',
|
||||
'Event' => 'Događaj',
|
||||
'Name' => 'Ime',
|
||||
|
||||
'select' => 'izaberi',
|
||||
'Select' => 'Izaberi',
|
||||
'Selected' => 'Izabrano',
|
||||
'Select data' => 'Izaberi podatke',
|
||||
'Functions' => 'Funkcije',
|
||||
'Aggregation' => 'Sakupljanje',
|
||||
'Search' => 'Pretraga',
|
||||
'anywhere' => 'bilo gdje',
|
||||
'Search data in tables' => 'Pretraži podatke u tabelama',
|
||||
'Sort' => 'Poređaj',
|
||||
'descending' => 'opadajuće',
|
||||
'Limit' => 'Granica',
|
||||
'Text length' => 'Dužina teksta',
|
||||
'Action' => 'Akcija',
|
||||
'Full table scan' => 'Skreniranje kompletne tabele',
|
||||
'Unable to select the table' => 'Ne mogu da izaberem tabelu',
|
||||
'No rows.' => 'Bez redova.',
|
||||
'%d row(s)' => array('%d red', '%d reda', '%d redova'),
|
||||
'Page' => 'Strana',
|
||||
'last' => 'poslijednja',
|
||||
'Loading' => 'Učitavam',
|
||||
'Load more data' => 'Učitavam još podataka',
|
||||
'whole result' => 'ceo rezultat',
|
||||
'%d byte(s)' => array('%d bajt', '%d bajta', '%d bajtova'),
|
||||
|
||||
'Import' => 'Uvoz',
|
||||
'%d row(s) have been imported.' => array('%d red je uvežen.', '%d reda su uvežena.', '%d redova je uveženo.'),
|
||||
|
||||
// in-place editing in select
|
||||
'Ctrl+click on a value to modify it.' => 'Ctrl+klik na vrijednost za izmijenu.',
|
||||
'Use edit link to modify this value.' => 'Koristi vezu za izmijenu ove vrijednosti.',
|
||||
|
||||
// %s can contain auto-increment value
|
||||
'Item%s has been inserted.' => 'Stavka %s je spašena.',
|
||||
'Item has been deleted.' => 'Stavka je izbrisana.',
|
||||
'Item has been updated.' => 'Stavka je izmijenjena.',
|
||||
'%d item(s) have been affected.' => array('%d stavka je ažurirana.', '%d stavke su ažurirane.', '%d stavki je ažurirano.'),
|
||||
'New item' => 'Nova stavka',
|
||||
'original' => 'original',
|
||||
// label for value '' in enum data type
|
||||
'empty' => 'prazno',
|
||||
'edit' => 'izmijeni',
|
||||
'Edit' => 'Izmijeni',
|
||||
'Insert' => 'Umetni',
|
||||
'Save' => 'Sačuvaj',
|
||||
'Save and continue edit' => 'Sačuvaj i nastavi uređenje',
|
||||
'Save and insert next' => 'Sačuvaj i umijetni slijedeće',
|
||||
'Clone' => 'Dupliraj',
|
||||
'Delete' => 'Izbriši',
|
||||
'Modify' => 'Izmjene',
|
||||
|
||||
'E-mail' => 'El. pošta',
|
||||
'From' => 'Od',
|
||||
'Subject' => 'Naslov',
|
||||
'Attachments' => 'Prilozi',
|
||||
'Send' => 'Pošalji',
|
||||
'%d e-mail(s) have been sent.' => array('%d poruka el. pošte je poslata.', '%d poruke el. pošte su poslate.', '%d poruka el. pošte je poslato.'),
|
||||
|
||||
// data type descriptions
|
||||
'Numbers' => 'Broj',
|
||||
'Date and time' => 'Datum i vrijeme',
|
||||
'Strings' => 'Tekst',
|
||||
'Binary' => 'Binarno',
|
||||
'Lists' => 'Liste',
|
||||
'Network' => 'Mreža',
|
||||
'Geometry' => 'Geometrija',
|
||||
'Relations' => 'Odnosi',
|
||||
|
||||
'Editor' => 'Uređivač',
|
||||
// date format in Editor: $1 yyyy, $2 yy, $3 mm, $4 m, $5 dd, $6 d
|
||||
'$1-$3-$5' => '$5.$3.$1.',
|
||||
// hint for date format - use language equivalents for day, month and year shortcuts
|
||||
'[yyyy]-mm-dd' => 'dd.mm.[yyyy].',
|
||||
// hint for time format - use language equivalents for hour, minute and second shortcuts
|
||||
'HH:MM:SS' => 'HH:MM:SS',
|
||||
'now' => 'sad',
|
||||
'yes' => 'da',
|
||||
'no' => 'ne',
|
||||
|
||||
// general SQLite error in create, drop or rename database
|
||||
'File exists.' => 'Datoteka već postoji.',
|
||||
'Please use one of the extensions %s.' => 'Molim koristite jedan od nastavaka %s.',
|
||||
|
||||
// PostgreSQL and MS SQL schema support
|
||||
'Alter schema' => 'Ažuriraj šemu',
|
||||
'Create schema' => 'Formiraj šemu',
|
||||
'Schema has been dropped.' => 'Šema je izbrisana.',
|
||||
'Schema has been created.' => 'Šema je spašena.',
|
||||
'Schema has been altered.' => 'Šema je izmijenjena.',
|
||||
'Schema' => 'Šema',
|
||||
'Invalid schema.' => 'Šema nije ispravna.',
|
||||
|
||||
// PostgreSQL sequences support
|
||||
'Sequences' => 'Nizovi',
|
||||
'Create sequence' => 'Napravi niz',
|
||||
'Sequence has been dropped.' => 'Niz je izbrisan.',
|
||||
'Sequence has been created.' => 'Niz je formiran.',
|
||||
'Sequence has been altered.' => 'Niz je izmijenjen.',
|
||||
'Alter sequence' => 'Ažuriraj niz',
|
||||
|
||||
// PostgreSQL user types support
|
||||
'User types' => 'Korisnički tipovi',
|
||||
'Create type' => 'Definiši tip',
|
||||
'Type has been dropped.' => 'Tip je izbrisan.',
|
||||
'Type has been created.' => 'tip je spašen.',
|
||||
'Alter type' => 'Ažuriraj tip',
|
||||
);
|
||||
@@ -8,7 +8,6 @@ $translations = array(
|
||||
'Password' => 'Contrasenya',
|
||||
'Select database' => 'Selecciona base de dades',
|
||||
'Invalid database.' => 'Base de dades invàlida.',
|
||||
'Create new database' => 'Crea una nova base de dades',
|
||||
'Table has been dropped.' => 'S\'ha suprimit la taula.',
|
||||
'Table has been altered.' => 'S\'ha modificat la taula.',
|
||||
'Table has been created.' => 'S\'ha creat la taula.',
|
||||
@@ -31,7 +30,6 @@ $translations = array(
|
||||
'Alter database' => 'Modifica la base de dades',
|
||||
'Create database' => 'Crea una base de dades',
|
||||
'SQL command' => 'Ordre SQL',
|
||||
'Dump' => 'Exporta',
|
||||
'Logout' => 'Desconnecta',
|
||||
'database' => 'base de dades',
|
||||
'Use' => 'Utilitza',
|
||||
@@ -179,6 +177,7 @@ $translations = array(
|
||||
'Tables have been truncated.' => 'S\'han escapçat les taules.',
|
||||
'Rows' => 'Files',
|
||||
',' => ',',
|
||||
'0123456789' => '0123456789',
|
||||
'Tables have been moved.' => 'S\'han desplaçat les taules.',
|
||||
'Move to other database' => 'Desplaça a una altra base de dades',
|
||||
'Move' => 'Desplaça',
|
||||
@@ -239,7 +238,6 @@ $translations = array(
|
||||
'Schema has been dropped.' => 'S\'ha suprimit l\'esquema.',
|
||||
'Schema has been created.' => 'S\'ha creat l\'esquema.',
|
||||
'Schema has been altered.' => 'S\'ha modificat l\'esquema.',
|
||||
'schema' => 'esquema',
|
||||
'Schema' => 'Esquema',
|
||||
'Sequences' => 'Seqüències',
|
||||
'Create sequence' => 'Crea una seqüència',
|
||||
|
||||
@@ -11,9 +11,12 @@ $translations = array(
|
||||
'Logged as: %s' => 'Přihlášen jako: %s',
|
||||
'Logout successful.' => 'Odhlášení proběhlo v pořádku.',
|
||||
'Invalid credentials.' => 'Neplatné přihlašovací údaje.',
|
||||
'Master password expired. <a href="http://www.adminer.org/en/extension/" target="_blank">Implement</a> %s method to make it permanent.' => 'Platnost hlavního hesla vypršela. <a href="http://www.adminer.org/cs/extension/" target="_blank">Implementujte</a> metodu %s, aby platilo stále.',
|
||||
'<a href="https://www.adminer.org/en/extension/" target="_blank">Implement</a> %s method to use SQLite.' => 'Pro přihlášení k SQLite <a href="https://www.adminer.org/cs/extension/" target="_blank">implementujte</a> metodu %s.',
|
||||
'Too many unsuccessful logins, try again in %d minute(s).' => array('Příliš mnoho pokusů o přihlášení, zkuste to znovu za %d minutu.', 'Příliš mnoho pokusů o přihlášení, zkuste to znovu za %d minuty.', 'Příliš mnoho pokusů o přihlášení, zkuste to znovu za %d minut.'),
|
||||
'Master password expired. <a href="https://www.adminer.org/en/extension/" target="_blank">Implement</a> %s method to make it permanent.' => 'Platnost hlavního hesla vypršela. <a href="https://www.adminer.org/cs/extension/" target="_blank">Implementujte</a> metodu %s, aby platilo stále.',
|
||||
'Language' => 'Jazyk',
|
||||
'Invalid CSRF token. Send the form again.' => 'Neplatný token CSRF. Odešlete formulář znovu.',
|
||||
'If you did not send this request from Adminer then close this page.' => 'Pokud jste tento požadavek neposlali z Adminera, tak tuto stránku zavřete.',
|
||||
'No extension' => 'Žádné rozšíření',
|
||||
'None of the supported PHP extensions (%s) are available.' => 'Není dostupné žádné z podporovaných PHP rozšíření (%s).',
|
||||
'Session support must be enabled.' => 'Session proměnné musí být povolené.',
|
||||
@@ -42,11 +45,16 @@ $translations = array(
|
||||
'Variables' => 'Proměnné',
|
||||
'Status' => 'Stav',
|
||||
|
||||
'Replication' => 'Replikace',
|
||||
'Master status' => 'Master status',
|
||||
'Slave status' => 'Slave status',
|
||||
|
||||
'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.'),
|
||||
'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ů.'),
|
||||
'No commands to execute.' => 'Žádné příkazy k vykonání.',
|
||||
'Error in query' => 'Chyba v dotazu',
|
||||
'ATTACH queries are not supported.' => 'Dotazy ATTACH nejsou podporované.',
|
||||
'Execute' => 'Provést',
|
||||
'Stop on error' => 'Zastavit při chybě',
|
||||
'Show only errors' => 'Zobrazit pouze chyby',
|
||||
@@ -66,9 +74,9 @@ $translations = array(
|
||||
'Maximum allowed file size is %sB.' => 'Maximální povolená velikost souboru je %sB.',
|
||||
'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 are offline.' => 'Jste offline.',
|
||||
|
||||
'Export' => 'Export',
|
||||
'Dump' => 'Export',
|
||||
'Output' => 'Výstup',
|
||||
'open' => 'otevřít',
|
||||
'save' => 'uložit',
|
||||
@@ -80,7 +88,6 @@ $translations = array(
|
||||
'Use' => 'Vybrat',
|
||||
'Select database' => 'Vybrat databázi',
|
||||
'Invalid database.' => 'Nesprávná databáze.',
|
||||
'Create new database' => 'Vytvořit novou databázi',
|
||||
'Database has been dropped.' => 'Databáze byla odstraněna.',
|
||||
'Databases have been dropped.' => 'Databáze byly odstraněny.',
|
||||
'Database has been created.' => 'Databáze byla vytvořena.',
|
||||
@@ -95,6 +102,7 @@ $translations = array(
|
||||
|
||||
// thousands separator - must contain single byte
|
||||
',' => ' ',
|
||||
'0123456789' => '0123456789',
|
||||
'Engine' => 'Úložiště',
|
||||
'Collation' => 'Porovnávání',
|
||||
'Data Length' => 'Velikost dat',
|
||||
@@ -162,9 +170,12 @@ $translations = array(
|
||||
'Auto Increment' => 'Auto Increment',
|
||||
'Options' => 'Volby',
|
||||
'Comment' => 'Komentář',
|
||||
'Default value' => 'Výchozí hodnota',
|
||||
'Default values' => 'Výchozí hodnoty',
|
||||
'Drop' => 'Odstranit',
|
||||
'Are you sure?' => 'Opravdu?',
|
||||
'Size' => 'Velikost',
|
||||
'Compute' => 'Spočítat',
|
||||
'Move up' => 'Přesunout nahoru',
|
||||
'Move down' => 'Přesunout dolů',
|
||||
'Remove' => 'Odebrat',
|
||||
@@ -176,6 +187,7 @@ $translations = array(
|
||||
'Values' => 'Hodnoty',
|
||||
|
||||
'View' => 'Pohled',
|
||||
'Materialized view' => 'Materializovaný pohled',
|
||||
'View has been dropped.' => 'Pohled byl odstraněn.',
|
||||
'View has been altered.' => 'Pohled byl změněn.',
|
||||
'View has been created.' => 'Pohled byl vytvořen.',
|
||||
@@ -227,11 +239,13 @@ $translations = array(
|
||||
'Sort' => 'Seřadit',
|
||||
'descending' => 'sestupně',
|
||||
'Limit' => 'Limit',
|
||||
'Limit rows' => 'Limit řádek',
|
||||
'Text length' => 'Délka textů',
|
||||
'Action' => 'Akce',
|
||||
'Full table scan' => 'Průchod celé tabulky',
|
||||
'Unable to select the table' => 'Nepodařilo se vypsat tabulku',
|
||||
'No rows.' => 'Žádné řádky.',
|
||||
'%d / ' => '%d / ',
|
||||
'%d row(s)' => array('%d řádek', '%d řádky', '%d řádků'),
|
||||
'Page' => 'Stránka',
|
||||
'last' => 'poslední',
|
||||
@@ -308,7 +322,6 @@ $translations = array(
|
||||
'Schema has been dropped.' => 'Schéma bylo odstraněno.',
|
||||
'Schema has been created.' => 'Schéma bylo vytvořeno.',
|
||||
'Schema has been altered.' => 'Schéma bylo změněno.',
|
||||
'schema' => 'schéma',
|
||||
'Schema' => 'Schéma',
|
||||
'Invalid schema.' => 'Nesprávné schéma.',
|
||||
|
||||
@@ -326,4 +339,8 @@ $translations = array(
|
||||
'Type has been dropped.' => 'Typ byl odstraněn.',
|
||||
'Type has been created.' => 'Typ byl vytvořen.',
|
||||
'Alter type' => 'Pozměnit typ',
|
||||
|
||||
'Replication' => null,
|
||||
'Master status' => null,
|
||||
'Slave status' => null,
|
||||
);
|
||||
|
||||
282
adminer/lang/da.inc.php
Normal file
282
adminer/lang/da.inc.php
Normal file
@@ -0,0 +1,282 @@
|
||||
<?php
|
||||
$translations = array(
|
||||
'System' => 'System',
|
||||
'Server' => 'Server',
|
||||
'Username' => 'Brugernavn',
|
||||
'Password' => 'Kodeord',
|
||||
'Permanent login' => 'Permanent login',
|
||||
'Login' => 'Log ind',
|
||||
'Logout' => 'Log ud',
|
||||
'Logged as: %s' => 'Logget ind som: %s',
|
||||
'Logout successful.' => 'Log af vellykket.',
|
||||
'Invalid credentials.' => 'Ugyldige log ind oplysninger.',
|
||||
'Master password expired. <a href="https://www.adminer.org/en/extension/" target="_blank">Implement</a> %s method to make it permanent.' => 'Master-kodeordet er udløbet. <a href="https://www.adminer.org/en/extension/" target="_blank">Implementer</a> en metode for %s for at gøre det permanent.',
|
||||
'Language' => 'Sprog',
|
||||
'Invalid CSRF token. Send the form again.' => 'Ugyldigt CSRF-token - Genindsend formen.',
|
||||
'No extension' => 'Ingen udvidelse',
|
||||
'None of the supported PHP extensions (%s) are available.' => 'Ingen af de understøttede PHP-udvidelser (%s) er tilgængelige.',
|
||||
'Session support must be enabled.' => 'Session support skal være slået til.',
|
||||
'Session expired, please login again.' => 'Sessionen er udløbet - Log venligst ind igen.',
|
||||
'%s version: %s through PHP extension %s' => '%s version: %s via PHP-udvidelse %s',
|
||||
'Refresh' => 'Genindlæs',
|
||||
'ltr' => 'ltr',
|
||||
'Privileges' => 'Privilegier',
|
||||
'Create user' => 'Opret bruger',
|
||||
'User has been dropped.' => 'Brugeren slettet.',
|
||||
'User has been altered.' => 'Brugeren ændret.',
|
||||
'User has been created.' => 'Brugeren oprettet.',
|
||||
'Hashed' => 'Hashet',
|
||||
'Column' => 'Kolonne',
|
||||
'Routine' => 'Rutine',
|
||||
'Grant' => 'Giv privilegier',
|
||||
'Revoke' => 'Træk tilbage',
|
||||
'Process list' => 'Procesliste',
|
||||
'%d process(es) have been killed.' => array('%d proces afsluttet.', '%d processer afsluttet.'),
|
||||
'Kill' => 'Afslut',
|
||||
'Variables' => 'Variabler',
|
||||
'Status' => 'Status',
|
||||
'SQL command' => 'SQL-kommando',
|
||||
'%d query(s) executed OK.' => array('%d kald udført OK.', '%d kald udført OK.'),
|
||||
'Query executed OK, %d row(s) affected.' => array('Kald udført OK, %d række påvirket.', 'Kald udført OK, %d rækker påvirket.'),
|
||||
'No commands to execute.' => 'Ingen kommandoer at udføre.',
|
||||
'Error in query' => 'Fejl i forespørgelse',
|
||||
'Execute' => 'Kør',
|
||||
'Stop on error' => 'Stop ved fejl',
|
||||
'Show only errors' => 'Vis kun fejl',
|
||||
'%.3f s' => '%.3f s',
|
||||
'History' => 'Historik',
|
||||
'Clear' => 'Tøm',
|
||||
'Edit all' => 'Rediger alle',
|
||||
'File upload' => 'Fil upload',
|
||||
'From server' => 'Fra server',
|
||||
'Webserver file %s' => 'Webserver-fil %s',
|
||||
'Run file' => 'Kør fil',
|
||||
'File does not exist.' => 'Filen eksisterer ikke.',
|
||||
'File uploads are disabled.' => 'Fil upload er slået fra.',
|
||||
'Unable to upload a file.' => 'Kunne ikke uploade fil.',
|
||||
'Maximum allowed file size is %sB.' => 'Maksimum tilladte filstørrelse er %sB.',
|
||||
'Too big POST data. Reduce the data or increase the %s configuration directive.' => 'Maks POST data er overskredet. Reducer mængden af data eller øg størrelsen i %s-konfigurationen.',
|
||||
'You can upload a big SQL file via FTP and import it from server.' => 'Du kan uploade en stor SQL-fil via FTP og importere den fra serveren.',
|
||||
'Export' => 'Eksport',
|
||||
'Output' => 'Resultat',
|
||||
'open' => 'Åben',
|
||||
'save' => 'Gem',
|
||||
'Format' => 'Format',
|
||||
'Data' => 'Data',
|
||||
'Database' => 'Database',
|
||||
'database' => 'database',
|
||||
'Use' => 'Brug',
|
||||
'Select database' => 'Vælg database',
|
||||
'Invalid database.' => 'Ugyldig database.',
|
||||
'Database has been dropped.' => 'Databasen er blevet slettet.',
|
||||
'Databases have been dropped.' => 'Databasene er blevet slettet.',
|
||||
'Database has been created.' => 'Databasen er oprettet.',
|
||||
'Database has been renamed.' => 'Databasen har fået nyt navn.',
|
||||
'Database has been altered.' => 'Databasen er ændret.',
|
||||
'Alter database' => 'Ændre database',
|
||||
'Create database' => 'Opret database',
|
||||
'Database schema' => 'Databaseskema',
|
||||
'Permanent link' => 'Permanent link',
|
||||
',' => ' ',
|
||||
'0123456789' => '0123456789',
|
||||
'Engine' => 'Motor',
|
||||
'Collation' => 'Tekstsortering',
|
||||
'Data Length' => 'Datalængde',
|
||||
'Index Length' => 'Indekslængde',
|
||||
'Data Free' => 'Fri data',
|
||||
'Rows' => 'Rader',
|
||||
'%d in total' => '%d total',
|
||||
'Analyze' => 'Analyser',
|
||||
'Optimize' => 'Optimaliser',
|
||||
'Vacuum' => 'Støvsug',
|
||||
'Check' => 'Tjek',
|
||||
'Repair' => 'Reparer',
|
||||
'Truncate' => 'Afkort',
|
||||
'Tables have been truncated.' => 'Tabellerne er blevet afkortet.',
|
||||
'Move to other database' => 'Flyt til anden database',
|
||||
'Move' => 'Flyt',
|
||||
'Tables have been moved.' => 'Tabellerne er blevet flyttet.',
|
||||
'Copy' => 'Kopier',
|
||||
'Tables have been copied.' => 'Tabellerne er blevet kopiert.',
|
||||
'Routines' => 'Rutiner',
|
||||
'Routine has been called, %d row(s) affected.' => array('Rutinen er udført, %d række påvirket.', 'Rutinen er udført, %d rækker påvirket.'),
|
||||
'Call' => 'Kald',
|
||||
'Parameter name' => 'Parameternavn',
|
||||
'Create procedure' => 'Opret procedure',
|
||||
'Create function' => 'Opret funktion',
|
||||
'Routine has been dropped.' => 'Rutinen er slettet.',
|
||||
'Routine has been altered.' => 'Rutinen er ændret.',
|
||||
'Routine has been created.' => 'Rutinen er oprettet.',
|
||||
'Alter function' => 'Ændre funktion',
|
||||
'Alter procedure' => 'Ændre procedure',
|
||||
'Return type' => 'Returtype',
|
||||
'Events' => 'Hændelser',
|
||||
'Event has been dropped.' => 'Hændelsen er slettet.',
|
||||
'Event has been altered.' => 'Hændelsen er ændret.',
|
||||
'Event has been created.' => 'Hændelsen er oprettet.',
|
||||
'Alter event' => 'Ændre hændelse',
|
||||
'Create event' => 'Opret hændelse',
|
||||
'At given time' => 'På givne tid',
|
||||
'Every' => 'Hver',
|
||||
'Schedule' => 'Tidsplan',
|
||||
'Start' => 'Start',
|
||||
'End' => 'Slut',
|
||||
'On completion preserve' => 'Ved fuldførelse bevar',
|
||||
'Tables' => 'Tabeller',
|
||||
'Tables and views' => 'Tabeller og views',
|
||||
'Table' => 'Tabel',
|
||||
'No tables.' => 'Ingen tabeller.',
|
||||
'Alter table' => 'Ændre tabel',
|
||||
'Create table' => 'Opret tabel',
|
||||
'Table has been dropped.' => 'Tabellen er slettet.',
|
||||
'Tables have been dropped.' => 'Tabellerne er slettet.',
|
||||
'Tables have been optimized.' => 'Tabellerne er blevet optimaliseret.',
|
||||
'Table has been altered.' => 'Tabellen er ændret.',
|
||||
'Table has been created.' => 'Tabellen er oprettet.',
|
||||
'Table name' => 'Tabelnavn',
|
||||
'Show structure' => 'Vis struktur',
|
||||
'engine' => 'motor',
|
||||
'collation' => 'sortering',
|
||||
'Column name' => 'Kolonnenavn',
|
||||
'Type' => 'Type',
|
||||
'Length' => 'Længde',
|
||||
'Auto Increment' => 'Auto Increment',
|
||||
'Options' => 'Valg',
|
||||
'Comment' => 'Kommentarer',
|
||||
'Default values' => 'Standardværdier',
|
||||
'Drop' => 'Drop',
|
||||
'Are you sure?' => 'Er du sikker?',
|
||||
'Move up' => 'Flyt op',
|
||||
'Move down' => 'Flyt ned',
|
||||
'Remove' => 'Fjern',
|
||||
'Maximum number of allowed fields exceeded. Please increase %s.' => 'Maksimum antal feltnavne overskredet - øg venligst %s.',
|
||||
'Partition by' => 'Partition ved',
|
||||
'Partitions' => 'Partitioner',
|
||||
'Partition name' => 'Partitionsnavn',
|
||||
'Values' => 'Værdier',
|
||||
'View' => 'View',
|
||||
'View has been dropped.' => 'Viewet er slettet.',
|
||||
'View has been altered.' => 'Viewet er ændret.',
|
||||
'View has been created.' => 'Viewet er oprettet.',
|
||||
'Alter view' => 'Ændre view',
|
||||
'Create view' => 'Nyt view',
|
||||
'Indexes' => 'Indekser',
|
||||
'Indexes have been altered.' => 'Indekserne er ændret.',
|
||||
'Alter indexes' => 'Ændre indekser',
|
||||
'Add next' => 'Læg til næste',
|
||||
'Index Type' => 'Indekstype',
|
||||
'Column (length)' => 'Kolonne (længde)',
|
||||
'Foreign keys' => 'Fremmednøgler',
|
||||
'Foreign key' => 'Fremmednøgle',
|
||||
'Foreign key has been dropped.' => 'Fremmednøglen er slettet.',
|
||||
'Foreign key has been altered.' => 'Fremmednøglen er ændret.',
|
||||
'Foreign key has been created.' => 'Fremmednøglen er oprettet.',
|
||||
'Target table' => 'Måltabel',
|
||||
'Change' => 'Ændre',
|
||||
'Source' => 'Kilde',
|
||||
'Target' => 'Mål',
|
||||
'Add column' => 'Tilføj kolonne',
|
||||
'Alter' => 'Ændre',
|
||||
'Add foreign key' => 'Tilføj fremmednøgle',
|
||||
'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.' => 'Kilde- og målkolonner skal have samme datatype, der skal være en indeks på mål-kolonnen, og data som refereres til skal eksistere.',
|
||||
'Triggers' => 'Triggere',
|
||||
'Add trigger' => 'Tilføj trigger',
|
||||
'Trigger has been dropped.' => 'Triggeren er slettet.',
|
||||
'Trigger has been altered.' => 'Triggeren er ændret.',
|
||||
'Trigger has been created.' => 'Triggeren er oprettet.',
|
||||
'Alter trigger' => 'Ændre trigger',
|
||||
'Create trigger' => 'Opret trigger',
|
||||
'Time' => 'Tid',
|
||||
'Event' => 'Hændelse',
|
||||
'Name' => 'Navn',
|
||||
'select' => 'Vis',
|
||||
'Select' => 'Vælg',
|
||||
'Select data' => 'Vælg data',
|
||||
'Functions' => 'Funktioner',
|
||||
'Aggregation' => 'Sammenfatning',
|
||||
'Search' => 'Søg',
|
||||
'anywhere' => 'hvorsomhelst',
|
||||
'Search data in tables' => 'Søg data i tabeller',
|
||||
'Sort' => 'Sorter',
|
||||
'descending' => 'faldende',
|
||||
'Limit' => 'Limit',
|
||||
'Text length' => 'Tekstlængde',
|
||||
'Action' => 'Handling',
|
||||
'Full table scan' => 'Fuld tabel-scan',
|
||||
'Unable to select the table' => 'Kan ikke vælge tabellen',
|
||||
'No rows.' => 'Ingen rækker.',
|
||||
'%d row(s)' => array('%d række', '%d rækker'),
|
||||
'Page' => 'Side',
|
||||
'last' => 'sidste',
|
||||
'Load more data' => 'Indlæs mere data',
|
||||
'Loading' => 'Indlæser',
|
||||
'whole result' => 'hele resultatet',
|
||||
'%d byte(s)' => array('%d byte', '%d bytes'),
|
||||
'Import' => 'Importer',
|
||||
'%d row(s) have been imported.' => array('%d række er importeret.', '%d rækker er importeret.'),
|
||||
'File must be in UTF-8 encoding.' => 'Filen skal være i UTF8-tegnkoding.',
|
||||
'Modify' => 'Ændre',
|
||||
'Ctrl+click on a value to modify it.' => 'Ctrl+klik på en værdi for at ændre den.',
|
||||
'Use edit link to modify this value.' => 'Brug rediger-link for at ændre dennne værdi.',
|
||||
'Item%s has been inserted.' => 'Emne%s er sat ind.',
|
||||
'Item has been deleted.' => 'Emnet er slettet.',
|
||||
'Item has been updated.' => 'Emnet er opdateret.',
|
||||
'%d item(s) have been affected.' => array('%d emne påvirket.', '%d emner påvirket.'),
|
||||
'New item' => 'Nyt emne',
|
||||
'original' => 'original',
|
||||
'empty' => 'tom',
|
||||
'edit' => 'rediger',
|
||||
'Edit' => 'Rediger',
|
||||
'Insert' => 'Indsæt',
|
||||
'Save' => 'Gem',
|
||||
'Save and continue edit' => 'Gem og fortsæt redigering',
|
||||
'Save and insert next' => 'Gem og indsæt næste',
|
||||
'Selected' => 'Valgt',
|
||||
'Clone' => 'Klon',
|
||||
'Delete' => 'Slet',
|
||||
'You have no privileges to update this table.' => 'Du mangler rettigheder til at ændre denne tabellen.',
|
||||
'E-mail' => 'E-mail',
|
||||
'From' => 'Fra',
|
||||
'Subject' => 'Titel',
|
||||
'Attachments' => 'Vedhæft',
|
||||
'Send' => 'Send',
|
||||
'%d e-mail(s) have been sent.' => array('%d email sendt.', '%d emails sendt.'),
|
||||
'Numbers' => 'Nummer',
|
||||
'Date and time' => 'Dato og tid',
|
||||
'Strings' => 'Strenge',
|
||||
'Binary' => 'Binær',
|
||||
'Lists' => 'Lister',
|
||||
'Network' => 'Netværk',
|
||||
'Geometry' => 'Geometri',
|
||||
'Relations' => 'Relationer',
|
||||
'Editor' => 'Redigering',
|
||||
'$1-$3-$5' => '$6/$4 $1',
|
||||
'[yyyy]-mm-dd' => 'd/m [åååå]',
|
||||
'HH:MM:SS' => 'HH:MM:SS',
|
||||
'now' => 'nu',
|
||||
'yes' => 'ja',
|
||||
'no' => 'nej',
|
||||
'File exists.' => 'Filen findes.',
|
||||
'Please use one of the extensions %s.' => 'Brug venligst en af filendelserne %s.',
|
||||
'Alter schema' => 'Ændre skema',
|
||||
'Create schema' => 'Opret skema',
|
||||
'Schema has been dropped.' => 'Skemaet er slettet.',
|
||||
'Schema has been created.' => 'Skemaet er oprettet.',
|
||||
'Schema has been altered.' => 'Skemaet er ændret.',
|
||||
'Schema' => 'Skema',
|
||||
'Invalid schema.' => 'Ugyldigt skema.',
|
||||
'Sequences' => 'Sekvenser',
|
||||
'Create sequence' => 'Opret sekvens',
|
||||
'Sequence has been dropped.' => 'Sekvensen er slettet.',
|
||||
'Sequence has been created.' => 'Sekvensen er oprettet.',
|
||||
'Sequence has been altered.' => 'Sekvensen er ændret.',
|
||||
'Alter sequence' => 'Ændre sekvens',
|
||||
'User types' => 'Brugertyper',
|
||||
'Create type' => 'Opret type',
|
||||
'Type has been dropped.' => 'Typen er slettet.',
|
||||
'Type has been created.' => 'Typen er oprettet.',
|
||||
'Alter type' => 'Ændre type',
|
||||
'Saving' => 'Gemmer',
|
||||
);
|
||||
@@ -8,12 +8,11 @@ $translations = array(
|
||||
'Password' => 'Passwort',
|
||||
'Select database' => 'Datenbank auswählen',
|
||||
'Invalid database.' => 'Datenbank ungültig.',
|
||||
'Create new database' => 'Neue Datenbank',
|
||||
'Table has been dropped.' => 'Tabelle entfernt.',
|
||||
'Table has been altered.' => 'Tabelle geändert.',
|
||||
'Table has been created.' => 'Tabelle erstellt.',
|
||||
'Table has been dropped.' => 'Tabelle wurde entfernt.',
|
||||
'Table has been altered.' => 'Tabelle wurde geändert.',
|
||||
'Table has been created.' => 'Tabelle wurde erstellt.',
|
||||
'Alter table' => 'Tabelle ändern',
|
||||
'Create table' => 'Neue Tabelle erstellen',
|
||||
'Create table' => 'Tabelle erstellen',
|
||||
'Table name' => 'Name der Tabelle',
|
||||
'engine' => 'Speicher-Engine',
|
||||
'collation' => 'Kollation',
|
||||
@@ -24,28 +23,27 @@ $translations = array(
|
||||
'Options' => 'Optionen',
|
||||
'Save' => 'Speichern',
|
||||
'Drop' => 'Entfernen',
|
||||
'Database has been dropped.' => 'Datenbank entfernt.',
|
||||
'Database has been created.' => 'Datenbank erstellt.',
|
||||
'Database has been renamed.' => 'Datenbank umbenannt.',
|
||||
'Database has been altered.' => 'Datenbank geändert.',
|
||||
'Database has been dropped.' => 'Datenbank wurde entfernt.',
|
||||
'Database has been created.' => 'Datenbank wurde erstellt.',
|
||||
'Database has been renamed.' => 'Datenbank wurde umbenannt.',
|
||||
'Database has been altered.' => 'Datenbank wurde geändert.',
|
||||
'Alter database' => 'Datenbank ändern',
|
||||
'Create database' => 'Neue Datenbank',
|
||||
'SQL command' => 'SQL-Query',
|
||||
'Dump' => 'Export',
|
||||
'Create database' => 'Datenbank erstellen',
|
||||
'SQL command' => 'SQL-Kommando',
|
||||
'Logout' => 'Abmelden',
|
||||
'database' => 'Datenbank',
|
||||
'Use' => 'Benutzung',
|
||||
'No tables.' => 'Keine Tabellen.',
|
||||
'select' => 'zeigen',
|
||||
'Item has been deleted.' => 'Datensatz gelöscht.',
|
||||
'Item has been updated.' => 'Datensatz geändert.',
|
||||
'Item%s has been inserted.' => 'Datensatz%s hinzugefügt.',
|
||||
'Edit' => 'Ändern',
|
||||
'Insert' => 'Hinzufügen',
|
||||
'Save and insert next' => 'Speichern und nächsten hinzufügen',
|
||||
'Item has been deleted.' => 'Datensatz wurde gelöscht.',
|
||||
'Item has been updated.' => 'Datensatz wurde geändert.',
|
||||
'Item%s has been inserted.' => 'Datensatz%s wurde eingefügt.',
|
||||
'Edit' => 'Bearbeiten',
|
||||
'Insert' => 'Einfügen',
|
||||
'Save and insert next' => 'Speichern und nächsten einfügen',
|
||||
'Delete' => 'Entfernen',
|
||||
'Database' => 'Datenbank',
|
||||
'Routines' => 'Prozeduren',
|
||||
'Routines' => 'Routinen',
|
||||
'Indexes have been altered.' => 'Indizes geändert.',
|
||||
'Indexes' => 'Indizes',
|
||||
'Alter indexes' => 'Indizes ändern',
|
||||
@@ -57,9 +55,9 @@ $translations = array(
|
||||
'Sort' => 'Ordnen',
|
||||
'descending' => 'absteigend',
|
||||
'Limit' => 'Begrenzung',
|
||||
'No rows.' => 'Keine Daten.',
|
||||
'No rows.' => 'Keine Datensätze.',
|
||||
'Action' => 'Aktion',
|
||||
'edit' => 'ändern',
|
||||
'edit' => 'bearbeiten',
|
||||
'Page' => 'Seite',
|
||||
'Query executed OK, %d row(s) affected.' => array('Abfrage ausgeführt, %d Datensatz betroffen.', 'Abfrage ausgeführt, %d Datensätze betroffen.'),
|
||||
'Error in query' => 'Fehler in der SQL-Abfrage',
|
||||
@@ -77,16 +75,16 @@ $translations = array(
|
||||
'Unable to upload a file.' => 'Hochladen von Datei fehlgeschlagen.',
|
||||
'File upload' => 'Datei importieren',
|
||||
'File uploads are disabled.' => 'Importieren von Dateien abgeschaltet.',
|
||||
'Routine has been called, %d row(s) affected.' => array('Kommando SQL ausgeführt, %d Datensatz betroffen.', 'Kommando SQL ausgeführt, %d Datensätze betroffen.'),
|
||||
'Routine has been called, %d row(s) affected.' => array('Routine wurde ausgeführt, %d Datensatz betroffen.', 'Routine wurde ausgeführt, %d Datensätze betroffen.'),
|
||||
'Call' => 'Aufrufen',
|
||||
'No extension' => 'Keine Erweiterungen installiert',
|
||||
'None of the supported PHP extensions (%s) are available.' => 'Keine der unterstützten PHP-Erweiterungen (%s) ist vorhanden.',
|
||||
'Session support must be enabled.' => 'Sitzungen müssen aktiviert sein.',
|
||||
'Session support must be enabled.' => 'Unterstüzung für PHP-Sessions muss aktiviert sein.',
|
||||
'Session expired, please login again.' => 'Sitzungsdauer abgelaufen, bitte erneut anmelden.',
|
||||
'Text length' => 'Textlänge',
|
||||
'Foreign key has been dropped.' => 'Fremdschlüssel entfernt.',
|
||||
'Foreign key has been altered.' => 'Fremdschlüssel geändert.',
|
||||
'Foreign key has been created.' => 'Fremdschlüssel erstellt.',
|
||||
'Foreign key has been dropped.' => 'Fremdschlüssel wurde entfernt.',
|
||||
'Foreign key has been altered.' => 'Fremdschlüssel wurde geändert.',
|
||||
'Foreign key has been created.' => 'Fremdschlüssel wurde erstellt.',
|
||||
'Foreign key' => 'Fremdschlüssel',
|
||||
'Target table' => 'Zieltabelle',
|
||||
'Change' => 'Ändern',
|
||||
@@ -99,53 +97,53 @@ $translations = array(
|
||||
'ON UPDATE' => 'ON UPDATE',
|
||||
'Index Type' => 'Index-Typ',
|
||||
'Column (length)' => 'Spalte (Länge)',
|
||||
'View has been dropped.' => 'View entfernt.',
|
||||
'View has been altered.' => 'View geändert.',
|
||||
'View has been created.' => 'View erstellt.',
|
||||
'View has been dropped.' => 'View wurde entfernt.',
|
||||
'View has been altered.' => 'View wurde geändert.',
|
||||
'View has been created.' => 'View wurde erstellt.',
|
||||
'Alter view' => 'View ändern',
|
||||
'Create view' => 'Neue View erstellen',
|
||||
'Create view' => 'View erstellen',
|
||||
'Name' => 'Name',
|
||||
'Process list' => 'Prozessliste',
|
||||
'%d process(es) have been killed.' => array('%d Prozess gestoppt.', '%d Prozesse gestoppt.'),
|
||||
'Kill' => 'Anhalten',
|
||||
'Parameter name' => 'Name des Parameters',
|
||||
'Database schema' => 'Datenbankschema',
|
||||
'Create procedure' => 'Neue Prozedur',
|
||||
'Create function' => 'Neue Funktion',
|
||||
'Routine has been dropped.' => 'Prozedur entfernt.',
|
||||
'Routine has been altered.' => 'Prozedur geändert.',
|
||||
'Routine has been created.' => 'Prozedur erstellt.',
|
||||
'Create procedure' => 'Prozedur erstellen',
|
||||
'Create function' => 'Funktion erstellen',
|
||||
'Routine has been dropped.' => 'Routine wurde entfernt.',
|
||||
'Routine has been altered.' => 'Routine wurde geändert.',
|
||||
'Routine has been created.' => 'Routine wurde erstellt.',
|
||||
'Alter function' => 'Funktion ändern',
|
||||
'Alter procedure' => 'Prozedur ändern',
|
||||
'Return type' => 'Typ des Rückgabewertes',
|
||||
'Add trigger' => 'Trigger hinzufügen',
|
||||
'Trigger has been dropped.' => 'Trigger entfernt.',
|
||||
'Trigger has been altered.' => 'Trigger geändert.',
|
||||
'Trigger has been created.' => 'Trigger erstellt.',
|
||||
'Trigger has been dropped.' => 'Trigger wurde entfernt.',
|
||||
'Trigger has been altered.' => 'Trigger wurde geändert.',
|
||||
'Trigger has been created.' => 'Trigger wurde erstellt.',
|
||||
'Alter trigger' => 'Trigger ändern',
|
||||
'Create trigger' => 'Trigger hinzufügen',
|
||||
'Create trigger' => 'Trigger erstellen',
|
||||
'Time' => 'Zeitpunkt',
|
||||
'Event' => 'Ereignis',
|
||||
'%s version: %s through PHP extension %s' => 'Version %s: %s, mit PHP-Erweiterung %s',
|
||||
'%s version: %s through PHP extension %s' => 'Version %s: %s mit PHP-Erweiterung %s',
|
||||
'%d row(s)' => array('%d Datensatz', '%d Datensätze'),
|
||||
'Remove' => 'Entfernen',
|
||||
'Are you sure?' => 'Sind Sie sicher ?',
|
||||
'Are you sure?' => 'Sind Sie sicher?',
|
||||
'Privileges' => 'Rechte',
|
||||
'Create user' => 'Neuer Benutzer',
|
||||
'User has been dropped.' => 'Benutzer entfernt.',
|
||||
'User has been altered.' => 'Benutzer geändert.',
|
||||
'User has been created.' => 'Benutzer erstellt.',
|
||||
'Create user' => 'Benutzer erstellen',
|
||||
'User has been dropped.' => 'Benutzer wurde entfernt.',
|
||||
'User has been altered.' => 'Benutzer wurde geändert.',
|
||||
'User has been created.' => 'Benutzer wurde erstellt.',
|
||||
'Hashed' => 'Hashed',
|
||||
'Column' => 'Spalte',
|
||||
'Routine' => 'Rutine',
|
||||
'Routine' => 'Routine',
|
||||
'Grant' => 'Erlauben',
|
||||
'Revoke' => 'Verbieten',
|
||||
'Too big POST data. Reduce the data or increase the %s configuration directive.' => 'POST data zu gross. Reduzieren Sie die Grösse oder vergrössern Sie den Wert %s in der Konfiguration.',
|
||||
'Revoke' => 'Widerrufen',
|
||||
'Too big POST data. Reduce the data or increase the %s configuration directive.' => 'POST-Daten sind zu groß. Reduzieren Sie die Größe oder vergrößern Sie den Wert %s in der Konfiguration.',
|
||||
'Logged as: %s' => 'Angemeldet als: %s',
|
||||
'Move up' => 'Nach oben',
|
||||
'Move down' => 'Nach unten',
|
||||
'Functions' => 'Funktionen',
|
||||
'Aggregation' => 'Agregationen',
|
||||
'Aggregation' => 'Aggregationen',
|
||||
'Export' => 'Exportieren',
|
||||
'Output' => 'Ergebnis',
|
||||
'open' => 'anzeigen',
|
||||
@@ -153,9 +151,9 @@ $translations = array(
|
||||
'Format' => 'Format',
|
||||
'Tables' => 'Tabellen',
|
||||
'Data' => 'Daten',
|
||||
'Event has been dropped.' => 'Ereignis entfernt.',
|
||||
'Event has been altered.' => 'Ereignis geändert.',
|
||||
'Event has been created.' => 'Ereignis erstellt.',
|
||||
'Event has been dropped.' => 'Ereignis wurde entfernt.',
|
||||
'Event has been altered.' => 'Ereignis wurde geändert.',
|
||||
'Event has been created.' => 'Ereignis wurde erstellt.',
|
||||
'Alter event' => 'Ereignis ändern',
|
||||
'Create event' => 'Ereignis erstellen',
|
||||
'At given time' => 'Zur angegebenen Zeit',
|
||||
@@ -167,22 +165,23 @@ $translations = array(
|
||||
'Status' => 'Status',
|
||||
'On completion preserve' => 'Nach der Ausführung erhalten',
|
||||
'Tables and views' => 'Tabellen und Views',
|
||||
'Data Length' => 'Datengrösse',
|
||||
'Index Length' => 'Indexgrösse',
|
||||
'Data Length' => 'Datengröße',
|
||||
'Index Length' => 'Indexgröße',
|
||||
'Data Free' => 'Freier Bereich',
|
||||
'Collation' => 'Collation',
|
||||
'Collation' => 'Kollation',
|
||||
'Analyze' => 'Analysieren',
|
||||
'Optimize' => 'Optimieren',
|
||||
'Check' => 'Prüfen',
|
||||
'Repair' => 'Reparieren',
|
||||
'Truncate' => 'Entleeren (truncate)',
|
||||
'Tables have been truncated.' => 'Tabellen sind entleert worden (truncate).',
|
||||
'Truncate' => 'Leeren (truncate)',
|
||||
'Tables have been truncated.' => 'Tabellen wurden geleert (truncate).',
|
||||
'Rows' => 'Datensätze',
|
||||
',' => ' ',
|
||||
'0123456789' => '0123456789',
|
||||
'Tables have been moved.' => 'Tabellen verschoben.',
|
||||
'Move to other database' => 'In andere Datenbank verschieben',
|
||||
'Move' => 'Verschieben',
|
||||
'Engine' => 'Motor',
|
||||
'Engine' => 'Speicher-Engine',
|
||||
'Save and continue edit' => 'Speichern und weiter bearbeiten',
|
||||
'original' => 'Original',
|
||||
'Tables have been dropped.' => 'Tabellen wurden entfernt (drop).',
|
||||
@@ -194,7 +193,7 @@ $translations = array(
|
||||
'Partitions' => 'Partitionen',
|
||||
'Partition name' => 'Name der Partition',
|
||||
'Values' => 'Werte',
|
||||
'%d row(s) have been imported.' => array('%d Datensatz importiert.', '%d Datensätze wurden importiert.'),
|
||||
'%d row(s) have been imported.' => array('%d Datensatz wurde importiert.', '%d Datensätze wurden importiert.'),
|
||||
'anywhere' => 'beliebig',
|
||||
'Import' => 'Importieren',
|
||||
'Stop on error' => 'Bei Fehler anhalten',
|
||||
@@ -203,50 +202,49 @@ $translations = array(
|
||||
'[yyyy]-mm-dd' => 't.m.[jjjj]',
|
||||
'History' => 'History',
|
||||
'Variables' => 'Variablen',
|
||||
'Source and target columns must have the same data type, there must be an index on the target columns and referenced data must exist.' => 'Spalten des Ursprungs und des Zieles müssen vom gleichen Datentyp sein, es muss unter den Zielspalten ein Index existieren und die referenzierten Daten müssen existieren.',
|
||||
'Source and target columns must have the same data type, there must be an index on the target columns and referenced data must exist.' => 'Quell- und Zielspalten müssen vom gleichen Datentyp sein, es muss unter den Zielspalten ein Index existieren und die referenzierten Daten müssen existieren.',
|
||||
'Relations' => 'Relationen',
|
||||
'Run file' => 'Datei ausführen',
|
||||
'Clear' => 'Entleeren',
|
||||
'Maximum allowed file size is %sB.' => 'Maximal erlaubte Dateigrösse ist %sB.',
|
||||
'Clear' => 'Löschen',
|
||||
'Maximum allowed file size is %sB.' => 'Maximal erlaubte Dateigröße ist %sB.',
|
||||
'Numbers' => 'Zahlen',
|
||||
'Date and time' => 'Datum oder Zeit',
|
||||
'Date and time' => 'Datum und Zeit',
|
||||
'Strings' => 'Zeichenketten',
|
||||
'Binary' => 'Binär',
|
||||
'Lists' => 'Listen',
|
||||
'Editor' => 'Editor',
|
||||
'E-mail' => 'E-mail',
|
||||
'E-mail' => 'E-Mail',
|
||||
'From' => 'Von',
|
||||
'Subject' => 'Betreff',
|
||||
'Send' => 'Abschicken',
|
||||
'%d e-mail(s) have been sent.' => array('%d e-mail abgeschickt.', '%d e-mails abgeschickt.'),
|
||||
'%d e-mail(s) have been sent.' => array('%d E-Mail abgeschickt.', '%d E-Mails abgeschickt.'),
|
||||
'Webserver file %s' => 'Webserver Datei %s',
|
||||
'File does not exist.' => 'Datei existiert nicht.',
|
||||
'%d in total' => '%d insgesamt',
|
||||
'Permanent login' => 'Passwort speichern',
|
||||
'Databases have been dropped.' => 'Datenbanken entfernt.',
|
||||
'Databases have been dropped.' => 'Datenbanken wurden entfernt.',
|
||||
'Search data in tables' => 'Suche in Tabellen',
|
||||
'schema' => 'Schema',
|
||||
'Schema' => 'Schema',
|
||||
'Alter schema' => 'Schema ändern',
|
||||
'Create schema' => 'Neues Schema',
|
||||
'Create schema' => 'Schema erstellen',
|
||||
'Schema has been dropped.' => 'Schema wurde gelöscht.',
|
||||
'Schema has been created.' => 'Neues Schema erstellt.',
|
||||
'Schema has been altered.' => 'Schema geändert.',
|
||||
'Sequences' => 'Sequenz',
|
||||
'Create sequence' => 'Neue Sequenz',
|
||||
'Schema has been created.' => 'Schema wurde erstellt.',
|
||||
'Schema has been altered.' => 'Schema wurde geändert.',
|
||||
'Sequences' => 'Sequenzen',
|
||||
'Create sequence' => 'Sequenz erstellen',
|
||||
'Alter sequence' => 'Sequenz ändern',
|
||||
'Sequence has been dropped.' => 'Sequenz gelöscht.',
|
||||
'Sequence has been created.' => 'Neue Sequenz erstellt.',
|
||||
'Sequence has been altered.' => 'Sequenz geändert.',
|
||||
'User types' => 'Benutzer-definierte Typen',
|
||||
'Sequence has been dropped.' => 'Sequenz wurde gelöscht.',
|
||||
'Sequence has been created.' => 'Sequenz wurde erstellt.',
|
||||
'Sequence has been altered.' => 'Sequenz wurde geändert.',
|
||||
'User types' => 'Benutzerdefinierte Typen',
|
||||
'Create type' => 'Typ erstellen',
|
||||
'Alter type' => 'Typ ändern',
|
||||
'Type has been dropped.' => 'Typ gelöscht.',
|
||||
'Type has been created.' => 'Typ erstellt.',
|
||||
'Ctrl+click on a value to modify it.' => 'Ctrl+klick zum Bearbeiten des Wertes.',
|
||||
'Use edit link to modify this value.' => 'Benutzen Sie den Link zum editieren dieses Wertes.',
|
||||
'Type has been dropped.' => 'Typ wurde gelöscht.',
|
||||
'Type has been created.' => 'Typ wurde erstellt.',
|
||||
'Ctrl+click on a value to modify it.' => 'Ctrl+Klick zum Bearbeiten des Wertes.',
|
||||
'Use edit link to modify this value.' => 'Benutzen Sie den Link zum Bearbeiten dieses Wertes.',
|
||||
'last' => 'letzte',
|
||||
'From server' => 'Im Server',
|
||||
'From server' => 'Vom Server',
|
||||
'System' => 'Datenbank System',
|
||||
'Select data' => 'Daten auswählen',
|
||||
'Show structure' => 'Struktur anzeigen',
|
||||
@@ -255,7 +253,7 @@ $translations = array(
|
||||
'Geometry' => 'Geometrie',
|
||||
'File exists.' => 'Datei existiert schon.',
|
||||
'Attachments' => 'Anhänge',
|
||||
'%d query(s) executed OK.' => array('SQL-Query erfolgreich ausgeführt.', '%d SQL-Queries erfolgreich ausgeführt.'),
|
||||
'%d query(s) executed OK.' => array('SQL-Abfrage erfolgreich ausgeführt.', '%d SQL-Abfragen erfolgreich ausgeführt.'),
|
||||
'Show only errors' => 'Nur Fehler anzeigen',
|
||||
'Refresh' => 'Aktualisieren',
|
||||
'Invalid schema.' => 'Schema nicht gültig.',
|
||||
@@ -265,6 +263,26 @@ $translations = array(
|
||||
'Tables have been copied.' => 'Tabellen wurden kopiert.',
|
||||
'Copy' => 'Kopieren',
|
||||
'Permanent link' => 'Dauerhafter Link',
|
||||
'Edit all' => 'Alle ändern',
|
||||
'Edit all' => 'Alle bearbeiten',
|
||||
'HH:MM:SS' => 'HH:MM:SS',
|
||||
'Compute' => 'kalkulieren',
|
||||
'Size' => 'Größe',
|
||||
'Modify' => 'Ändern',
|
||||
'Selected' => 'Ausgewählte',
|
||||
'Default value' => 'Vorgabewert festlegen',
|
||||
'Limit rows' => 'Datensätze begrenzen',
|
||||
'Tables have been optimized.' => 'Tabellen wurden optimiert.',
|
||||
'File must be in UTF-8 encoding.' => 'Die Datei muss UTF-8 kodiert sein.',
|
||||
'Loading' => 'Lade',
|
||||
'Load more data' => 'Mehr Daten laden',
|
||||
'Too many unsuccessful logins, try again in %d minute(s).' => array('Zu viele erfolglose Login-Versuche. Bitte probieren Sie es in %d Minute noch einmal.', 'Zu viele erfolglose Login-Versuche. Bitte probieren Sie es in %d Minuten noch einmal.'),
|
||||
'If you did not send this request from Adminer then close this page.' => 'Wenn Sie diese Anfrage nicht von Adminer gesendet haben, schließen Sie diese Seite.',
|
||||
'You can upload a big SQL file via FTP and import it from server.' => 'Sie können eine große SQL-Datei per FTP hochladen und dann vom Server importieren.',
|
||||
'You are offline.' => 'Sie sind offline.',
|
||||
'You have no privileges to update this table.' => 'Sie haben keine Rechte, um diese Tabelle zu aktualisieren.' ,
|
||||
'Saving' => 'Speichere',
|
||||
'yes' => 'ja',
|
||||
'no' => 'nein',
|
||||
'Master password expired. <a href="https://www.adminer.org/en/extension/" target="_blank">Implement</a> %s method to make it permanent.' => 'Das Master-Passwort ist abgelaufen. <a href="https://www.adminer.org/de/extension/" target="_blank">Implementieren</a> Sie die %s Methode, um es permanent zu machen.',
|
||||
'%d / ' => '%d / ',
|
||||
);
|
||||
|
||||
336
adminer/lang/el.inc.php
Normal file
336
adminer/lang/el.inc.php
Normal file
@@ -0,0 +1,336 @@
|
||||
<?php
|
||||
$translations = array(
|
||||
// label for database system selection (MySQL, SQLite, ...)
|
||||
'System' => 'Σύστημα',
|
||||
'Server' => 'Διακομιστής',
|
||||
'Username' => 'Όνομα Χρήστη',
|
||||
'Password' => 'Κωδικός',
|
||||
'Permanent login' => 'Μόνιμη Σύνδεση',
|
||||
'Login' => 'Σύνδεση',
|
||||
'Logout' => 'Αποσύνδεση',
|
||||
'Logged as: %s' => 'Συνδεθήκατε ως %s',
|
||||
'Logout successful.' => 'Αποσυνδεθήκατε με επιτυχία.',
|
||||
'Invalid credentials.' => 'Εσφαλμένα Διαπιστευτήρια.',
|
||||
'Too many unsuccessful logins, try again in %d minute(s).' => array('Επανηλημμένες ανεπιτυχείς προσπάθειες σύνδεσης, δοκιμάστε ξανά σε %s λεπτό.', 'Επανηλημμένες ανεπιτυχείς προσπάθειες σύνδεσης, δοκιμάστε ξανά σε %s λεπτά.'),
|
||||
'Master password expired. <a href="https://www.adminer.org/en/extension/" target="_blank">Implement</a> %s method to make it permanent.' => 'Έλειξε ο Κύριος Κωδικός. <a href="https://www.adminer.org/en/extension/" target="_blank">Ενεργοποιήστε</a> τη μέθοδο %s για να τον κάνετε μόνιμο.',
|
||||
'Language' => 'Γλώσσα',
|
||||
'Invalid CSRF token. Send the form again.' => 'Άκυρο κουπόνι CSRF. Στείλτε τη φόρμα ξανά.',
|
||||
'If you did not send this request from Adminer then close this page.' => 'Αν δε στείλατε αυτό το αίτημα από το Adminer, τότε κλείστε αυτή τη σελίδα.',
|
||||
'No extension' => 'Χωρίς Επεκτάσεις',
|
||||
'None of the supported PHP extensions (%s) are available.' => 'Καμία από τις υποστηριζόμενες επεκτάσεις PHP (%s) δεν είναι διαθέσιμη.',
|
||||
'Session support must be enabled.' => 'Πρέπει να είναι ενεργοποιημένη η υποστήριξη συνεδριών.',
|
||||
'Session expired, please login again.' => 'Η συνεδρία έληξε, παρακαλώ συνδεθείτε ξανά.',
|
||||
'%s version: %s through PHP extension %s' => '%s έκδοση: %s μέσω επέκτασης PHP %s',
|
||||
'Refresh' => 'Ανανέωση',
|
||||
|
||||
// text direction - 'ltr' or 'rtl'
|
||||
'ltr' => 'ltr',
|
||||
|
||||
'Privileges' => 'Προνόμια',
|
||||
'Create user' => 'Δημιουργία Χρήστη',
|
||||
'User has been dropped.' => 'Ο Χρήστης διαγράφηκε.',
|
||||
'User has been altered.' => 'Ο Χρήστης τροποποιήθηκε.',
|
||||
'User has been created.' => 'Ο Χρήστης δημιουργήθηκε.',
|
||||
'Hashed' => 'Κωδικοποιήθηκε',
|
||||
'Column' => 'Στήλη',
|
||||
'Routine' => 'Ρουτίνα',
|
||||
'Grant' => 'Παραχώρηση',
|
||||
'Revoke' => 'Ανάκληση',
|
||||
|
||||
'Process list' => 'Λίστα διεργασιών',
|
||||
'%d process(es) have been killed.' => array('Τερματίστηκαν %d διεργασία.', 'Τερματίστηκαν %d διεργασίες.'),
|
||||
'Kill' => 'Τερματισμός',
|
||||
|
||||
'Variables' => 'Μεταβλητές',
|
||||
'Status' => 'Κατάσταση',
|
||||
|
||||
'SQL command' => 'Εντολή SQL',
|
||||
'%d query(s) executed OK.' => array('Το ερώτημα %d εκτελέστηκε ΟΚ.', 'Τα ερώτηματα %d εκτελέστηκαν ΟΚ.'),
|
||||
'Query executed OK, %d row(s) affected.' => array('Το ερώτημα εκτελέστηκε ΟΚ, επιρρεάστηκε %d σειρά.', 'Το ερώτημα εκτελέστηκε ΟΚ, επιρρεάστηκαν %d σειρές.'),
|
||||
'No commands to execute.' => 'Δεν υπάρχει εντολή να εκτελεστεί.',
|
||||
'Error in query' => 'Σφάλμα στο ερώτημα',
|
||||
'Execute' => 'Εκτέλεση',
|
||||
'Stop on error' => 'Διακοπή όταν υπάρχει σφάλμα',
|
||||
'Show only errors' => 'Να εμφανίζονται μόνο τα σφάλματα',
|
||||
// sprintf() format for time of the command
|
||||
'%.3f s' => '%.3f s',
|
||||
'History' => 'Ιστορικό',
|
||||
'Clear' => 'Καθαρισμός',
|
||||
'Edit all' => 'Επεξεργασία όλων',
|
||||
|
||||
'File upload' => 'Ανέβασμα αρχείου',
|
||||
'From server' => 'Από διακομιστή',
|
||||
'Webserver file %s' => 'Αρχείο %s από διακομιστή web',
|
||||
'Run file' => 'Εκτέλεση αρχείου',
|
||||
'File does not exist.' => 'Το αρχείο δεν υπάρχει.',
|
||||
'File uploads are disabled.' => 'Έχει απενεργοποιηθεί το ανέβασμα αρχείων.',
|
||||
'Unable to upload a file.' => 'Δεν είναι δυνατόν να ανεβεί το αρχείο.',
|
||||
'Maximum allowed file size is %sB.' => 'Το μέγιστο επιτρεπόμενο μέγεθος αρχείο για ανέβασμα είναι %sB.',
|
||||
'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 are offline.' => 'Βρίσκεστε εκτός σύνδεσης.',
|
||||
|
||||
'Export' => 'Εξαγωγή',
|
||||
'Output' => 'Αποτέλεσμα',
|
||||
'open' => 'άνοιγμα',
|
||||
'save' => 'αποθήκευση',
|
||||
'Saving' => 'Γίνεται Αποθήκευση',
|
||||
'Format' => 'Μορφή',
|
||||
'Data' => 'Δεδομένα',
|
||||
|
||||
'Database' => 'Β. Δεδομένων',
|
||||
'database' => 'β. δεδομένων',
|
||||
'Use' => 'χρήση',
|
||||
'Select database' => 'Επιλέξτε Β.Δ.',
|
||||
'Invalid database.' => 'Άκυρη Β.Δ.',
|
||||
'Database has been dropped.' => 'Η Β.Δ. διαγράφηκε.',
|
||||
'Databases have been dropped.' => 'Οι Β.Δ. διαγράφηκαν.',
|
||||
'Database has been created.' => 'Η Β.Δ. δημιουργήθηκε.',
|
||||
'Database has been renamed.' => 'Η. Β.Δ. μετονομάστηκε.',
|
||||
'Database has been altered.' => 'Η Β.Δ. τροποποιήθηκε.',
|
||||
'Alter database' => 'Τροποποίηση Β.Δ.',
|
||||
'Create database' => 'Δημιουργία Β.Δ.',
|
||||
'Database schema' => 'Σχήμα Β.Δ.',
|
||||
|
||||
// link to current database schema layout
|
||||
'Permanent link' => 'Μόνιμος Σύνδεσμος',
|
||||
|
||||
// thousands separator - must contain single byte
|
||||
',' => '.',
|
||||
'0123456789' => '0123456789',
|
||||
'Engine' => 'Μηχανή',
|
||||
'Collation' => 'Collation',
|
||||
'Data Length' => 'Μήκος Δεδομένων',
|
||||
'Index Length' => 'Μήκος Δείκτη',
|
||||
'Data Free' => 'Δεδομένα Ελεύθερα',
|
||||
'Rows' => 'Σειρές',
|
||||
'%d in total' => '%d συνολικά',
|
||||
'Analyze' => 'Ανάλυση',
|
||||
'Optimize' => 'Βελτιστοποίηση',
|
||||
'Vacuum' => 'Καθαρισμός',
|
||||
'Check' => 'Έλεγχος',
|
||||
'Repair' => 'Επιδιόρθωση',
|
||||
'Truncate' => 'Περικοπή',
|
||||
'Tables have been truncated.' => 'Οι πίνακες περικόπτηκαν.',
|
||||
'Move to other database' => 'Μεταφορά σε άλλη Β.Δ.',
|
||||
'Move' => 'Μεταφορά',
|
||||
'Tables have been moved.' => 'Οι πίνακες μεταφέρθηκαν.',
|
||||
'Copy' => 'Αντιγραφή',
|
||||
'Tables have been copied.' => 'Οι πίνακες αντιγράφηκαν.',
|
||||
|
||||
'Routines' => 'Ρουτίνες',
|
||||
'Routine has been called, %d row(s) affected.' => array('Η ρουτίνα εκτελέστηκε, επιρρεάστηκε %d σειρά.', 'Η ρουτίνα εκτελέστηκε, επιρρεάστηκαν %d σειρές.'),
|
||||
'Call' => 'Εκτέλεση',
|
||||
'Parameter name' => 'Όνομα παραμέτρου',
|
||||
'Create procedure' => 'Δημιουργία διαδικασίας',
|
||||
'Create function' => 'Δημιουργία Λειτουργίας',
|
||||
'Routine has been dropped.' => 'Η ρουτίνα διαγράφηκε.',
|
||||
'Routine has been altered.' => 'Η ρουτίνα τροποποιήθηκε.',
|
||||
'Routine has been created.' => 'Η ρουτίνα δημιουργήθηκε.',
|
||||
'Alter function' => 'Τροποποίηση λειτουργίας',
|
||||
'Alter procedure' => 'Τροποποίηση διαδικασίας',
|
||||
'Return type' => 'Επιστρεφόμενος τύπος',
|
||||
|
||||
'Events' => 'Γεγονός',
|
||||
'Event has been dropped.' => 'Το γεγονός διαγράφηκε.',
|
||||
'Event has been altered.' => 'Το γεγονός τροποποιήθηκε.',
|
||||
'Event has been created.' => 'Το γεγονός δημιουργήθηκε.',
|
||||
'Alter event' => 'Τροποποίηση γεγονότος',
|
||||
'Create event' => 'Δημιουργία γεγονότος',
|
||||
'At given time' => 'Σε προκαθορισμένο χρόνο',
|
||||
'Every' => 'Κάθε',
|
||||
'Schedule' => 'Προγραμματισμός',
|
||||
'Start' => 'Έναρξη',
|
||||
'End' => 'Λήξη',
|
||||
'On completion preserve' => 'Κατά την ολοκλήρωση διατήρησε',
|
||||
|
||||
'Tables' => 'Πίνακες',
|
||||
'Tables and views' => 'Πίνακες και Προβολές',
|
||||
'Table' => 'Πίνακας',
|
||||
'No tables.' => 'Χωρίς πίνακες.',
|
||||
'Alter table' => 'Τροποποίηση πίνακα',
|
||||
'Create table' => 'Δημιουργία πίνακα',
|
||||
'Table has been dropped.' => 'Ο πίνακας διαγράφηκε.',
|
||||
'Tables have been dropped.' => 'Οι πινακες διαγράφηκαν.',
|
||||
'Tables have been optimized.' => 'Οι πίνακες βελτιστοποιήθηκαν.',
|
||||
'Table has been altered.' => 'Ο πίνακας τροποποιήθηκε.',
|
||||
'Table has been created.' => 'Ο πίνακας δημιουργήθηκε.',
|
||||
'Table name' => 'Όνομα πίνακα',
|
||||
'Show structure' => 'Προβολή δομής',
|
||||
'engine' => 'μηχανή',
|
||||
'collation' => 'collation',
|
||||
'Column name' => 'Όνομα στήλης',
|
||||
'Type' => 'Τύπος',
|
||||
'Length' => 'Μήκος',
|
||||
'Auto Increment' => 'Αυτόματη αρίθμηση',
|
||||
'Options' => 'Επιλογές',
|
||||
'Comment' => 'Σχόλιο',
|
||||
'Default value' => 'Προεπιλεγμένη τιμή',
|
||||
'Default values' => 'Προεπιλεγμένες τιμές',
|
||||
'Drop' => 'Διαγραφή',
|
||||
'Are you sure?' => 'Είστε σίγουρος;',
|
||||
'Size' => 'Μέγεθος',
|
||||
'Compute' => 'Υπολογισμός',
|
||||
'Move up' => 'Μετακίνηση προς τα επάνω',
|
||||
'Move down' => 'Μετακίνηση προς τα κάτω',
|
||||
'Remove' => 'Αφαίρεση',
|
||||
'Maximum number of allowed fields exceeded. Please increase %s.' => 'Υπέρβαση μέγιστου επιτρεπόμενου αριθμού πεδίων. Παρακαλώ αυξήστε %s.',
|
||||
|
||||
'Partition by' => 'Τμηματοποίηση ανά',
|
||||
'Partitions' => 'Τμήματα',
|
||||
'Partition name' => 'Όνομα Τμήματος',
|
||||
'Values' => 'Τιμές',
|
||||
|
||||
'View' => 'Προβολή',
|
||||
'Materialized view' => 'Υλοποιημένη προβολή',
|
||||
'View has been dropped.' => 'Η προβολή διαγράφηκε.',
|
||||
'View has been altered.' => 'Η προβολή τροποποιήθηκε.',
|
||||
'View has been created.' => 'Η προβολή δημιουργήθηκε.',
|
||||
'Alter view' => 'Τροποποίηση προβολής',
|
||||
'Create view' => 'Δημιουργία προβολής',
|
||||
|
||||
'Indexes' => 'Δείκτες',
|
||||
'Indexes have been altered.' => 'Οι δείκτες τροποποιήθηκαν.',
|
||||
'Alter indexes' => 'Τροποποίηση δεικτών',
|
||||
'Add next' => 'Προσθήκη επόμενου',
|
||||
'Index Type' => 'Τύπος δείκτη',
|
||||
'Column (length)' => 'Στήλη (μήκος)',
|
||||
|
||||
'Foreign keys' => 'Εξαρτημένα κλειδιά',
|
||||
'Foreign key' => 'Εξαρτημένο κλειδί',
|
||||
'Foreign key has been dropped.' => 'Το εξαρτημένο κλειδί διαγράφηκε.',
|
||||
'Foreign key has been altered.' => 'Το εξαρτημένο κλειδί τροποποιήθηκε.',
|
||||
'Foreign key has been created.' => 'Το εξαρτημένο κλειδί δημιουργήθηκε.',
|
||||
'Target table' => 'Πίνακας Στόχος',
|
||||
'Change' => 'Αλλαγή',
|
||||
'Source' => 'Πηγή',
|
||||
'Target' => 'Στόχος',
|
||||
'Add column' => 'Προσθήκη στήλης',
|
||||
'Alter' => 'Τροποποίηση',
|
||||
'Add foreign key' => 'Προσθήκη εξαρτημένου κλειδιού',
|
||||
'ON DELETE' => 'ΚΑΤΑ ΤΗ ΔΙΑΓΡΑΦΗ',
|
||||
'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.' => 'Οι στήλες στη πηγή και το στόχο πρέπει να έχουν τον ίδιο τύπο, πρέπει να υπάρχει δείκτης στη στήλη στόχο και να υπάρχουν εξαρτημένα δεδομένα.',
|
||||
|
||||
'Triggers' => 'Εναύσματα',
|
||||
'Add trigger' => 'Προσθήκη εναύσματος',
|
||||
'Trigger has been dropped.' => 'Το έναυσμα διαγράφηκε.',
|
||||
'Trigger has been altered.' => 'Το έναυσμα τροποποιήθηκε.',
|
||||
'Trigger has been created.' => 'Το έναυσμα δημιουργήθηκε.',
|
||||
'Alter trigger' => 'Τροποποίηση εναύσματος',
|
||||
'Create trigger' => 'Δημιουργία εναύσματος',
|
||||
'Time' => 'Ώρα',
|
||||
'Event' => 'Γεγονός',
|
||||
'Name' => 'Όνομα',
|
||||
|
||||
'select' => 'επιλογή',
|
||||
'Select' => 'Επιλογή',
|
||||
'Select data' => 'Επιλέξτε δεδομένα',
|
||||
'Functions' => 'Λειτουργίες',
|
||||
'Aggregation' => 'Άθροισμα',
|
||||
'Search' => 'Αναζήτηση',
|
||||
'anywhere' => 'παντού',
|
||||
'Search data in tables' => 'Αναζήτηση δεδομένων στους πίνακες',
|
||||
'Sort' => 'Ταξινόμηση',
|
||||
'descending' => 'Φθίνουσα',
|
||||
'Limit' => 'Όριο',
|
||||
'Limit rows' => 'Περιοριμός σειρών',
|
||||
'Text length' => 'Μήκος κειμένου',
|
||||
'Action' => 'Ενέργεια',
|
||||
'Full table scan' => 'Πλήρης σάρωση πινάκων',
|
||||
'Unable to select the table' => 'Δεν είναι δυνατή η επιλογή πίνακα',
|
||||
'No rows.' => 'Χωρίς σειρές.',
|
||||
'%d / ' => '%d / ',
|
||||
'%d row(s)' => array('%d σειρά', '%d σειρές'),
|
||||
'Page' => 'Σελίδα',
|
||||
'last' => 'τελευταία',
|
||||
'Load more data' => 'Φόρτωση κι άλλων δεδομένων',
|
||||
'Loading' => 'Φορτώνει',
|
||||
'whole result' => 'όλο το αποτέλεσμα',
|
||||
'%d byte(s)' => array('%d byte', '%d bytes'),
|
||||
|
||||
'Import' => 'Εισαγωγή',
|
||||
'%d row(s) have been imported.' => array('$d σειρά εισήχθη.', '%d σειρές εισήχθησαν.'),
|
||||
'File must be in UTF-8 encoding.' => 'Το αρχείο πρέπει να έχει κωδικοποίηση UTF-8.',
|
||||
|
||||
// in-place editing in select
|
||||
'Modify' => 'Τροποποίηση',
|
||||
'Ctrl+click on a value to modify it.' => 'Πιέστε Ctrl+click σε μια τιμή για να την τροποποιήσετε.',
|
||||
'Use edit link to modify this value.' => 'Χρησιμοποιήστε το σύνδεσμο επεξεργασία για να τροποποιήσετε την τιμή.',
|
||||
|
||||
// %s can contain auto-increment value
|
||||
'Item%s has been inserted.' => 'Η εγγραφή%s εισήχθη.',
|
||||
'Item has been deleted.' => 'Η εγγραφή διαγράφηκε.',
|
||||
'Item has been updated.' => 'Η εγγραφή ενημερώθηκε.',
|
||||
'%d item(s) have been affected.' => array('Επιρρεάστηκε %d εγγραφή.', 'Επιρρεάστηκαν %d εγγραφές.'),
|
||||
'New item' => 'Νέα εγγραφή',
|
||||
'original' => 'πρωτότυπο',
|
||||
// label for value '' in enum data type
|
||||
'empty' => 'κενό',
|
||||
'edit' => 'επεξεργασία',
|
||||
'Edit' => 'Επεξεργασία',
|
||||
'Insert' => 'Εισαγωγή',
|
||||
'Save' => 'Αποθήκευση',
|
||||
'Save and continue edit' => 'Αποθήκευση και συνέχεια επεξεργασίας',
|
||||
'Save and insert next' => 'Αποθήκευση και εισαγωγή επόμενου',
|
||||
'Selected' => 'Επιλεγμένα',
|
||||
'Clone' => 'Κλονοποίηση',
|
||||
'Delete' => 'Διαγραφή',
|
||||
'You have no privileges to update this table.' => 'Δεν έχετε δικαίωμα να τροποποιήσετε αυτό τον πίνακα.',
|
||||
|
||||
'E-mail' => 'E-mail',
|
||||
'From' => 'Από',
|
||||
'Subject' => 'Θέμα',
|
||||
'Attachments' => 'Συνημμένα',
|
||||
'Send' => 'Αποστολή',
|
||||
'%d e-mail(s) have been sent.' => array('%d e-mail απεστάλλει.', '%d e-mail απεστάλλησαν.'),
|
||||
|
||||
// data type descriptions
|
||||
'Numbers' => 'Αριθμοί',
|
||||
'Date and time' => 'Ημερομηνία και ώρα',
|
||||
'Strings' => 'Κείμενο',
|
||||
'Binary' => 'Δυαδικό',
|
||||
'Lists' => 'Λίστες',
|
||||
'Network' => 'Δίκτυο',
|
||||
'Geometry' => 'Γεωμετρία',
|
||||
'Relations' => 'Συσχετήσεις',
|
||||
|
||||
'Editor' => 'Επεξεργαστής',
|
||||
// date format in Editor: $1 yyyy, $2 yy, $3 mm, $4 m, $5 dd, $6 d
|
||||
'$1-$3-$5' => '$5/$3/$1',
|
||||
// hint for date format - use language equivalents for day, month and year shortcuts
|
||||
'[yyyy]-mm-dd' => 'ηη/μμ/[εεεε]',
|
||||
// hint for time format - use language equivalents for hour, minute and second shortcuts
|
||||
'HH:MM:SS' => 'ΩΩ:ΛΛ:ΔΔ',
|
||||
'now' => 'τώρα',
|
||||
'yes' => 'ναι',
|
||||
'no' => 'όχι',
|
||||
|
||||
// general SQLite error in create, drop or rename database
|
||||
'File exists.' => 'Το αρχείο υπάρχει.',
|
||||
'Please use one of the extensions %s.' => 'Παρακαλώ χρησιμοποιείστε μια από τις επεκτάσεις %s.',
|
||||
|
||||
// PostgreSQL and MS SQL schema support
|
||||
'Alter schema' => 'Τροποποίηση σχήματος',
|
||||
'Create schema' => 'Δημιουργία σχήματος',
|
||||
'Schema has been dropped.' => 'Το σχήμα διαγράφηκε.',
|
||||
'Schema has been created.' => 'Το σχήμα δημιουργήθηκε.',
|
||||
'Schema has been altered.' => 'Το σχήμα τροποποιήθηκε.',
|
||||
'Schema' => 'Σχήμα',
|
||||
'Invalid schema.' => 'Άκυρο σχήμα.',
|
||||
|
||||
// PostgreSQL sequences support
|
||||
'Sequences' => 'Αλληλουχία',
|
||||
'Create sequence' => 'Δημιουργία αλληλουχίας',
|
||||
'Sequence has been dropped.' => 'Η αλληλουχία διαγράφηκε.',
|
||||
'Sequence has been created.' => 'Η αλληλουχία δημιουργήθηκε.',
|
||||
'Sequence has been altered.' => 'Η αλληλουχία τροποποιήθηκε.',
|
||||
'Alter sequence' => 'Τροποποίηση αλληλουχίας',
|
||||
|
||||
// PostgreSQL user types support
|
||||
'User types' => 'Τύποι χρήστη',
|
||||
'Create type' => 'Δημιουργία τύπου',
|
||||
'Type has been dropped.' => 'Ο τύπος διαγράφηκε.',
|
||||
'Type has been created.' => 'Ο τύπος δημιουργήθηκε.',
|
||||
'Alter type' => 'Τροποποίηση τύπου',
|
||||
);
|
||||
@@ -1,9 +1,11 @@
|
||||
<?php
|
||||
$translations = array(
|
||||
'Too many unsuccessful logins, try again in %d minute(s).' => array('Too many unsuccessful logins, try again in %d minute.', 'Too many unsuccessful logins, try again in %d minutes.'),
|
||||
'Query executed OK, %d row(s) affected.' => array('Query executed OK, %d row affected.', 'Query executed OK, %d rows affected.'),
|
||||
'%d byte(s)' => array('%d byte', '%d bytes'),
|
||||
'Routine has been called, %d row(s) affected.' => array('Routine has been called, %d row affected.', 'Routine has been called, %d rows affected.'),
|
||||
'%d process(es) have been killed.' => array('%d process has been killed.', '%d processes have been killed.'),
|
||||
'%d / ' => '%d / ',
|
||||
'%d row(s)' => array('%d row', '%d rows'),
|
||||
'%d item(s) have been affected.' => array('%d item has been affected.', '%d items have been affected.'),
|
||||
'%d row(s) have been imported.' => array('%d row has been imported.', '%d rows have been imported.'),
|
||||
|
||||
@@ -1,18 +1,17 @@
|
||||
<?php
|
||||
$translations = array(
|
||||
'Login' => 'Login',
|
||||
'Logout successful.' => 'Salida exitosa.',
|
||||
'Invalid credentials.' => 'Identificacion inválida.',
|
||||
'Logout successful.' => 'Sesión finalizada con éxito.',
|
||||
'Invalid credentials.' => 'Usuario y/o clave de acceso incorrecta.',
|
||||
'Server' => 'Servidor',
|
||||
'Username' => 'Usuario',
|
||||
'Password' => 'Contraseña',
|
||||
'Select database' => 'Seleccionar Base de datos',
|
||||
'Invalid database.' => 'Base de datos inválida.',
|
||||
'Create new database' => 'Ingrese nueva base de datos',
|
||||
'Invalid database.' => 'Base de datos incorrecta.',
|
||||
'Table has been dropped.' => 'Tabla eliminada.',
|
||||
'Table has been altered.' => 'Tabla modificada.',
|
||||
'Table has been created.' => 'Tabla creada.',
|
||||
'Alter table' => 'Modifique estructura',
|
||||
'Alter table' => 'Modificar tabla',
|
||||
'Create table' => 'Crear tabla',
|
||||
'Table name' => 'Nombre de la tabla',
|
||||
'engine' => 'motor',
|
||||
@@ -31,8 +30,7 @@ $translations = array(
|
||||
'Alter database' => 'Modificar Base de datos',
|
||||
'Create database' => 'Crear Base de datos',
|
||||
'SQL command' => 'Comando SQL',
|
||||
'Dump' => 'Export',
|
||||
'Logout' => 'Logout',
|
||||
'Logout' => 'Cerrar sesión',
|
||||
'database' => 'base de datos',
|
||||
'Use' => 'Usar',
|
||||
'No tables.' => 'No existen tablas.',
|
||||
@@ -42,11 +40,11 @@ $translations = array(
|
||||
'Item%s has been inserted.' => 'Registro%s insertado.',
|
||||
'Edit' => 'Modificar',
|
||||
'Insert' => 'Agregar',
|
||||
'Save and insert next' => 'Guardar e insertar otro',
|
||||
'Save and insert next' => 'Guardar e insertar siguiente',
|
||||
'Delete' => 'Eliminar',
|
||||
'Database' => 'Base de datos',
|
||||
'Routines' => 'Procedimientos',
|
||||
'Indexes have been altered.' => 'Indices modificados.',
|
||||
'Indexes have been altered.' => 'Indices actualizados.',
|
||||
'Indexes' => 'Indices',
|
||||
'Alter indexes' => 'Modificar indices',
|
||||
'Add next' => 'Agregar',
|
||||
@@ -56,33 +54,33 @@ $translations = array(
|
||||
'Search' => 'Condición',
|
||||
'Sort' => 'Ordenar',
|
||||
'descending' => 'descendiente',
|
||||
'Limit' => 'Limit',
|
||||
'Limit' => 'Limite',
|
||||
'No rows.' => 'No existen registros.',
|
||||
'Action' => 'Acción',
|
||||
'edit' => 'modificar',
|
||||
'Page' => 'Página',
|
||||
'Query executed OK, %d row(s) affected.' => array('Consulta ejecutada, %d registro afectado.', 'Consulta ejecutada, %d registros afectados.'),
|
||||
'Error in query' => 'Error en consulta',
|
||||
'Error in query' => 'Error al ejecutar consulta',
|
||||
'Execute' => 'Ejecutar',
|
||||
'Table' => 'Tabla',
|
||||
'Foreign keys' => 'Claves foráneas',
|
||||
'Triggers' => 'Triggers',
|
||||
'View' => 'Vistas',
|
||||
'Foreign keys' => 'Claves externas',
|
||||
'Triggers' => 'Disparadores',
|
||||
'View' => 'Vista',
|
||||
'Unable to select the table' => 'No es posible seleccionar la tabla',
|
||||
'Invalid CSRF token. Send the form again.' => 'Token CSRF inválido. Vuelva a enviar los datos del formulario.',
|
||||
'Comment' => 'Comentario',
|
||||
'Default values' => 'Valores predeterminados',
|
||||
'%d byte(s)' => array('%d byte', '%d bytes'),
|
||||
'No commands to execute.' => 'No hay comando para ejecutar.',
|
||||
'Unable to upload a file.' => 'No es posible importar archivo.',
|
||||
'No commands to execute.' => 'No es posible ejecutar ningún comando.',
|
||||
'Unable to upload a file.' => 'No es posible importar el archivo.',
|
||||
'File upload' => 'Importar archivo',
|
||||
'File uploads are disabled.' => 'Importación de archivos deshablilitado.',
|
||||
'File uploads are disabled.' => 'Importación de archivos deshablilitada.',
|
||||
'Routine has been called, %d row(s) affected.' => array('Consulta ejecutada, %d registro afectado.', 'Consulta ejecutada, %d registros afectados.'),
|
||||
'Call' => 'Llamar',
|
||||
'No extension' => 'No hay extension',
|
||||
'None of the supported PHP extensions (%s) are available.' => 'Ninguna de las extensiones PHP soportadas (%s) está disponible.',
|
||||
'Session support must be enabled.' => 'Deben estar habilitadas las sesiones.',
|
||||
'Session expired, please login again.' => 'Sesión expirada, por favor ingrese su clave de nuevo.',
|
||||
'Session expired, please login again.' => 'Sesión caducada, por favor escriba su clave de nuevo.',
|
||||
'Text length' => 'Longitud de texto',
|
||||
'Foreign key has been dropped.' => 'Clave externa eliminada.',
|
||||
'Foreign key has been altered.' => 'Clave externa modificada.',
|
||||
@@ -94,9 +92,9 @@ $translations = array(
|
||||
'Target' => 'Destino',
|
||||
'Add column' => 'Agregar columna',
|
||||
'Alter' => 'Modificar',
|
||||
'Add foreign key' => 'Agregar clave foránea',
|
||||
'ON DELETE' => 'ON DELETE',
|
||||
'ON UPDATE' => 'ON UPDATE',
|
||||
'Add foreign key' => 'Agregar clave externa',
|
||||
'ON DELETE' => 'AL BORRAR',
|
||||
'ON UPDATE' => 'AL ACTUALIZAR',
|
||||
'Index Type' => 'Tipo de índice',
|
||||
'Column (length)' => 'Columna (longitud)',
|
||||
'View has been dropped.' => 'Vista eliminada.',
|
||||
@@ -117,16 +115,16 @@ $translations = array(
|
||||
'Routine has been created.' => 'Procedimiento creado.',
|
||||
'Alter function' => 'Modificar Función',
|
||||
'Alter procedure' => 'Modificar procedimiento',
|
||||
'Return type' => 'Tipo de valor de regreso',
|
||||
'Add trigger' => 'Agregar trigger',
|
||||
'Trigger has been dropped.' => 'Trigger eliminado.',
|
||||
'Trigger has been altered.' => 'Trigger modificado.',
|
||||
'Trigger has been created.' => 'Trigger creado.',
|
||||
'Alter trigger' => 'Modificar Trigger',
|
||||
'Create trigger' => 'Agregar Trigger',
|
||||
'Return type' => 'Tipo de valor de vuelta',
|
||||
'Add trigger' => 'Agregar disparador',
|
||||
'Trigger has been dropped.' => 'Disparador eliminado.',
|
||||
'Trigger has been altered.' => 'Disparador modificado.',
|
||||
'Trigger has been created.' => 'Disparador creado.',
|
||||
'Alter trigger' => 'Modificar Disparador',
|
||||
'Create trigger' => 'Agregar Disparador',
|
||||
'Time' => 'Tiempo',
|
||||
'Event' => 'Evento',
|
||||
'%s version: %s through PHP extension %s' => 'Versión %s: %s a través de extensión PHP %s',
|
||||
'%s version: %s through PHP extension %s' => 'Versión %s: %s a través de la extensión de PHP %s',
|
||||
'%d row(s)' => array('%d registro', '%d registros'),
|
||||
'Remove' => 'Eliminar',
|
||||
'Are you sure?' => 'Está seguro?',
|
||||
@@ -145,7 +143,7 @@ $translations = array(
|
||||
'Move up' => 'Mover arriba',
|
||||
'Move down' => 'Mover abajo',
|
||||
'Functions' => 'Funciones',
|
||||
'Aggregation' => 'Agregaciones',
|
||||
'Aggregation' => 'Agregados',
|
||||
'Export' => 'Exportar',
|
||||
'Output' => 'Salida',
|
||||
'open' => 'mostrar',
|
||||
@@ -158,14 +156,14 @@ $translations = array(
|
||||
'Event has been created.' => 'Evento creado.',
|
||||
'Alter event' => 'Modificar Evento',
|
||||
'Create event' => 'Crear Evento',
|
||||
'At given time' => 'A hora determinada',
|
||||
'At given time' => 'En el momento indicado',
|
||||
'Every' => 'Cada',
|
||||
'Events' => 'Eventos',
|
||||
'Schedule' => 'Agenda',
|
||||
'Start' => 'Inicio',
|
||||
'End' => 'Fin',
|
||||
'Status' => 'Estado',
|
||||
'On completion preserve' => 'Al completar preservar',
|
||||
'On completion preserve' => 'Al completar mantener',
|
||||
'Tables and views' => 'Tablas y vistas',
|
||||
'Data Length' => 'Longitud de datos',
|
||||
'Index Length' => 'Longitud de índice',
|
||||
@@ -176,9 +174,10 @@ $translations = array(
|
||||
'Check' => 'Comprobar',
|
||||
'Repair' => 'Reparar',
|
||||
'Truncate' => 'Vaciar',
|
||||
'Tables have been truncated.' => 'Tablas vaciadas (truncate).',
|
||||
'Tables have been truncated.' => 'Las tablas han sido vaciadas.',
|
||||
'Rows' => 'Registros',
|
||||
',' => ' ',
|
||||
'0123456789' => '0123456789',
|
||||
'Tables have been moved.' => 'Se movieron las tablas.',
|
||||
'Move to other database' => 'Mover a otra base de datos',
|
||||
'Move' => 'Mover',
|
||||
@@ -186,10 +185,10 @@ $translations = array(
|
||||
'Save and continue edit' => 'Guardar y continuar editando',
|
||||
'original' => 'original',
|
||||
'Tables have been dropped.' => 'Tablas eliminadas.',
|
||||
'%d item(s) have been affected.' => array('%d ítem afectado.', '%d itemes afectados.'),
|
||||
'%d item(s) have been affected.' => array('%d elemento afectado.', '%d elementos afectados.'),
|
||||
'whole result' => 'resultado completo',
|
||||
'Clone' => 'Clonar',
|
||||
'Maximum number of allowed fields exceeded. Please increase %s.' => 'Cantida máxima de campos permitidos excedidos. Por favor aumente %s.',
|
||||
'Maximum number of allowed fields exceeded. Please increase %s.' => 'Excedida la cantidad máxima de campos permitidos. Por favor aumente %s.',
|
||||
'Partition by' => 'Particionar por',
|
||||
'Partitions' => 'Particiones',
|
||||
'Partition name' => 'Nombre de Partición',
|
||||
@@ -201,13 +200,13 @@ $translations = array(
|
||||
'%.3f s' => '%.3f s',
|
||||
'$1-$3-$5' => '$5/$3/$1',
|
||||
'[yyyy]-mm-dd' => 'dd/mm/[aaaa]',
|
||||
'History' => 'History',
|
||||
'History' => 'Histórico',
|
||||
'Variables' => 'Variables',
|
||||
'Source and target columns must have the same data type, there must be an index on the target columns and referenced data must exist.' => 'Las columnas de origen y destino deben ser del mismo tipo, debe existir un índice entre las columnas del destino y el registro referenciado debe existir.',
|
||||
'Source and target columns must have the same data type, there must be an index on the target columns and referenced data must exist.' => 'Las columnas de origen y destino deben ser del mismo tipo, debe existir un índice entre las columnas del destino y el registro referenciado debe existir también.',
|
||||
'Relations' => 'Relaciones',
|
||||
'Run file' => 'Ejecutar Archivo',
|
||||
'Clear' => 'Vaciar',
|
||||
'Maximum allowed file size is %sB.' => 'Tamaño máximo de archivo es %sB.',
|
||||
'Maximum allowed file size is %sB.' => 'El tamaño máximo de archivo es %sB.',
|
||||
'Numbers' => 'Números',
|
||||
'Date and time' => 'Fecha y hora',
|
||||
'Strings' => 'Cadena',
|
||||
@@ -220,12 +219,11 @@ $translations = array(
|
||||
'Send' => 'Enviar',
|
||||
'%d e-mail(s) have been sent.' => array('%d email enviado.', '%d emails enviados.'),
|
||||
'Webserver file %s' => 'Archivo de servidor web %s',
|
||||
'File does not exist.' => 'Archivo no existe.',
|
||||
'File does not exist.' => 'Ese archivo no existe.',
|
||||
'%d in total' => '%d en total',
|
||||
'Permanent login' => 'Guardar contraseña',
|
||||
'Databases have been dropped.' => 'Bases de datos eliminadas.',
|
||||
'Search data in tables' => 'Buscar datos en tablas',
|
||||
'schema' => 'esquema',
|
||||
'Schema' => 'Esquema',
|
||||
'Alter schema' => 'Modificar esquema',
|
||||
'Create schema' => 'Crear esquema',
|
||||
@@ -238,13 +236,13 @@ $translations = array(
|
||||
'Sequence has been dropped.' => 'Secuencia eliminada.',
|
||||
'Sequence has been created.' => 'Secuencia creada.',
|
||||
'Sequence has been altered.' => 'Secuencia modificada.',
|
||||
'User types' => 'Tipos definido por el usuario',
|
||||
'User types' => 'Tipos definidos por el usuario',
|
||||
'Create type' => 'Crear tipo',
|
||||
'Alter type' => 'Modificar tipo',
|
||||
'Type has been dropped.' => 'Tipo eliminado.',
|
||||
'Type has been created.' => 'Tipo creado.',
|
||||
'Ctrl+click on a value to modify it.' => 'Ctrl+clic sobre el valor para editarlo.',
|
||||
'Use edit link to modify this value.' => 'Utilice el enlace de modificar para realizar los cambios.',
|
||||
'Use edit link to modify this value.' => 'Utilice el enlace de edición para realizar cambios.',
|
||||
'last' => 'último',
|
||||
'From server' => 'Desde servidor',
|
||||
'System' => 'Motor de base de datos',
|
||||
@@ -253,7 +251,7 @@ $translations = array(
|
||||
'empty' => 'ningúno',
|
||||
'Network' => 'Red',
|
||||
'Geometry' => 'Geometría',
|
||||
'File exists.' => 'Archivo ya existe.',
|
||||
'File exists.' => 'Ese archivo ya existe.',
|
||||
'Attachments' => 'Adjuntos',
|
||||
'%d query(s) executed OK.' => array('%d sentencia sql ejecutada correctamente.', '%d sentencias sql ejecutadas correctamente.'),
|
||||
'Show only errors' => 'Mostrar solamente errores',
|
||||
|
||||
@@ -8,7 +8,6 @@ $translations = array(
|
||||
'Password' => 'Parool',
|
||||
'Select database' => 'Vali andmebaas',
|
||||
'Invalid database.' => 'Tundmatu andmebaas.',
|
||||
'Create new database' => 'Loo uus andmebaas',
|
||||
'Table has been dropped.' => 'Tabel on edukalt kustutatud.',
|
||||
'Table has been altered.' => 'Tabeli andmed on edukalt muudetud.',
|
||||
'Table has been created.' => 'Tabel on edukalt loodud.',
|
||||
@@ -31,7 +30,6 @@ $translations = array(
|
||||
'Alter database' => 'Muuda andmebaasi',
|
||||
'Create database' => 'Loo uus andmebaas',
|
||||
'SQL command' => 'SQL-Päring',
|
||||
'Dump' => 'Ekspordi',
|
||||
'Logout' => 'Logi välja',
|
||||
'database' => 'andmebaas',
|
||||
'Use' => 'Kasuta',
|
||||
@@ -179,6 +177,7 @@ $translations = array(
|
||||
'Data Free' => 'Vaba ruumi',
|
||||
'Rows' => 'Ridu',
|
||||
',' => ',',
|
||||
'0123456789' => '0123456789',
|
||||
'Analyze' => 'Analüüsi',
|
||||
'Optimize' => 'Optimeeri',
|
||||
'Check' => 'Kontrolli',
|
||||
@@ -225,7 +224,6 @@ $translations = array(
|
||||
'Permanent login' => 'Jäta mind meelde',
|
||||
'Databases have been dropped.' => 'Andmebaasid on edukalt kustutatud.',
|
||||
'Search data in tables' => 'Otsi kogu andmebaasist',
|
||||
'schema' => 'struktuur',
|
||||
'Schema' => 'Struktuur',
|
||||
'Alter schema' => 'Muuda struktuuri',
|
||||
'Create schema' => 'Loo struktuur',
|
||||
|
||||
@@ -1,98 +1,101 @@
|
||||
<?php
|
||||
$translations = array(
|
||||
// label for database system selection (MySQL, SQLite, ...)
|
||||
'System' => 'سيستم',
|
||||
'System' => 'سیستم',
|
||||
'Server' => 'سرور',
|
||||
'Username' => 'نام كاربري',
|
||||
'Password' => 'كلمه عبور',
|
||||
'Permanent login' => '',
|
||||
'Username' => 'نام کاربری',
|
||||
'Password' => 'کلمه عبور',
|
||||
'Permanent login' => 'ورود دائم',
|
||||
'Login' => 'ورود',
|
||||
'Logout' => 'خروج',
|
||||
'Logged as: %s' => 'ورود به عنوان: %s',
|
||||
'Logout successful.' => 'با موفقيت خارج شديد',
|
||||
'Invalid credentials.' => 'اعتبار سنجي نامعتبر',
|
||||
'Logout successful.' => 'با موفقیت خارج شدید.',
|
||||
'Invalid credentials.' => 'اعتبار سنجی نامعتبر.',
|
||||
'Too many unsuccessful logins, try again in %d minute(s).' => array('ورودهای ناموفق بیش از حد، %d دقیقه دیگر تلاش نمایید.', 'ورودهای ناموفق بیش از حد، %d دقیقه دیگر تلاش نمایید.'),
|
||||
'Master password expired. <a href="https://www.adminer.org/en/extension/" target="_blank">Implement</a> %s method to make it permanent.' => 'رمز اصلی باطل شده است. روش %s را <a href="https://www.adminer.org/en/extension/" target="_blank">پیاده سازی</a> کرده تا آن را دائمی سازید.',
|
||||
'Language' => 'زبان',
|
||||
'Invalid CSRF token. Send the form again.' => 'نامعتبر است. دوباره سعی کنید Token CSRF',
|
||||
'Invalid CSRF token. Send the form again.' => 'CSRF token نامعتبر است. دوباره سعی کنید.',
|
||||
'No extension' => 'پسوند نامعتبر',
|
||||
'None of the supported PHP extensions (%s) are available.' => ' پسوند پی اچ پی در دسترس نیست (%s) تعداد',
|
||||
'Session support must be enabled.' => 'پشتيباني از نشست بايستي فعال گردد',
|
||||
'Session expired, please login again.' => 'نشست پايان يافته، لطفا دوباره وارد شويد',
|
||||
'None of the supported PHP extensions (%s) are available.' => 'هیچ کدام از افزونه های PHP پشتیبانی شده (%s) موجود نمی باشند.',
|
||||
'Session support must be enabled.' => 'پشتیبانی از نشست بایستی فعال گردد.',
|
||||
'Session expired, please login again.' => 'نشست پایان یافته، لطفا دوباره وارد شوید.',
|
||||
'%s version: %s through PHP extension %s' => 'نسخه %s : %s توسعه پی اچ پی %s',
|
||||
'Refresh' => 'بازيابي',
|
||||
'Refresh' => 'بازیابی',
|
||||
|
||||
// text direction - 'ltr' or 'rtl'
|
||||
'ltr' => 'rtl',
|
||||
|
||||
'Privileges' => 'امتيازات',
|
||||
'Create user' => 'ایجاد كاربر',
|
||||
'User has been dropped.' => 'كاربر حذف شد',
|
||||
'User has been altered.' => 'كاربر ويرايش گرديد',
|
||||
'User has been created.' => 'كاربر ايجاد شد',
|
||||
'Hashed' => 'به هم ريخته',
|
||||
'Privileges' => 'امتیازات',
|
||||
'Create user' => 'ایجاد کاربر',
|
||||
'User has been dropped.' => 'کاربر حذف شد.',
|
||||
'User has been altered.' => 'کاربر ویرایش گردید.',
|
||||
'User has been created.' => 'کاربر ایجاد شد.',
|
||||
'Hashed' => 'به هم ریخته',
|
||||
'Column' => 'ستون',
|
||||
'Routine' => 'روتين',
|
||||
'Routine' => 'روتین',
|
||||
'Grant' => 'اعطا',
|
||||
'Revoke' => 'لغو كردن',
|
||||
'Revoke' => 'لغو کردن',
|
||||
|
||||
'Process list' => 'ليست فرآيند',
|
||||
'%d process(es) have been killed.' => '%d فرآيند متوقف شد',
|
||||
'Kill' => 'حذف فرآيند',
|
||||
'Process list' => 'لیست فرآیند',
|
||||
'%d process(es) have been killed.' => '%d فرآیند متوقف شد.',
|
||||
'Kill' => 'حذف فرآیند',
|
||||
|
||||
'Variables' => 'متغيرها',
|
||||
'Status' => 'وضعيت',
|
||||
'Variables' => 'متغیرها',
|
||||
'Status' => 'وضعیت',
|
||||
|
||||
'SQL command' => 'دستور اس كيو ال',
|
||||
'%d query(s) executed OK.' => '%d كوئري اجرا شد',
|
||||
'Query executed OK, %d row(s) affected.' => 'كوئري اجرا شد. %d سطر تغيير كرد.',
|
||||
'No commands to execute.' => 'دستوري براي اجرا وجود ندارد',
|
||||
'Error in query' => 'خطا در كوئري',
|
||||
'SQL command' => 'دستور SQL',
|
||||
'%d query(s) executed OK.' => '%d کوئری اجرا شد.',
|
||||
'Query executed OK, %d row(s) affected.' => 'کوئری اجرا شد. %d سطر تغیر کرد.',
|
||||
'No commands to execute.' => 'دستوری برای اجرا وجود ندارد.',
|
||||
'Error in query' => 'خطا در کوئری',
|
||||
'Execute' => 'اجرا',
|
||||
'Stop on error' => 'توقف در خطا',
|
||||
'Show only errors' => 'فقط نمايش خطاها',
|
||||
'Stop on error' => 'توقف بر روی خطا',
|
||||
'Show only errors' => 'فقط نمایش خطاها',
|
||||
// sprintf() format for time of the command
|
||||
'%.3f s' => '%.3f s',
|
||||
'History' => 'تاريخ',
|
||||
'Clear' => 'پاك كردن',
|
||||
'Edit all' => 'ويرايش همه',
|
||||
'History' => 'تاریخ',
|
||||
'Clear' => 'پاک کردن',
|
||||
'Edit all' => 'ویرایش همه',
|
||||
|
||||
'File upload' => 'بارگذاري فايل',
|
||||
'File upload' => 'بارگذاری فایل',
|
||||
'From server' => 'از سرور',
|
||||
'Webserver file %s' => '%s فايل وب سرور',
|
||||
'Run file' => 'نمايش فايل',
|
||||
'File does not exist.' => 'فايل وجود ندارد',
|
||||
'File uploads are disabled.' => 'بارگذاري غير فعال است',
|
||||
'Unable to upload a file.' => 'قادر به بارگذاري فايل نيستيد',
|
||||
'Maximum allowed file size is %sB.' => ' %sB حداكثر اندازه فايل',
|
||||
'Too big POST data. Reduce the data or increase the %s configuration directive.' => 'حجم داده ارسالي برزگ است. حجم داده كاهش دهيد و يا مقدار %s را در پيكربندي افزايش دهيد.',
|
||||
|
||||
'Webserver file %s' => '%s فایل وب سرور',
|
||||
'Run file' => 'اجرای فایل',
|
||||
'File does not exist.' => 'فایل وجود ندارد.',
|
||||
'File uploads are disabled.' => 'بارگذاری غیر فعال است.',
|
||||
'Unable to upload a file.' => 'قادر به بارگذاری فایل نیستید.',
|
||||
'Maximum allowed file size is %sB.' => ' %sB حداکثر اندازه فایل.',
|
||||
'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 are offline.' => 'شما آفلاین می باشید.',
|
||||
|
||||
'Export' => 'استخراج',
|
||||
'Dump' => 'خالي كردن',
|
||||
'Output' => 'خروجي',
|
||||
'open' => 'بازكردن',
|
||||
'save' => 'ذخيره',
|
||||
'Output' => 'خروجی',
|
||||
'open' => 'بازکردن',
|
||||
'save' => 'ذخیره',
|
||||
'Format' => 'حذف',
|
||||
'Data' => 'داده',
|
||||
|
||||
'Database' => 'پايگاه داده',
|
||||
'database' => 'پايگاه داده',
|
||||
'Database' => 'پایگاه داده',
|
||||
'database' => 'پایگاه داده',
|
||||
'Use' => 'استفاده',
|
||||
'Select database' => 'انتخاب پايگاه داده',
|
||||
'Invalid database.' => 'پايگاه داده نامعتبر',
|
||||
'Create new database' => 'ایجاد پايگاه داده جديد',
|
||||
'Database has been dropped.' => 'پايگاه داده حذف شد',
|
||||
'Databases have been dropped.' => 'پايگاه دادها حذف شدند',
|
||||
'Database has been created.' => 'پايگاه داده ايجاد شد',
|
||||
'Database has been renamed.' => 'نام پايگاه داده تغيير كرد',
|
||||
'Database has been altered.' => 'پايگاه داده ويرايش شد',
|
||||
'Alter database' => 'ويرايش پايگاه داده',
|
||||
'Create database' => 'ایجاد پايگاه داده',
|
||||
'Database schema' => 'ساختار پايگاه داده',
|
||||
'Select database' => 'انتخاب پایگاه داده',
|
||||
'Invalid database.' => 'پایگاه داده نامعتبر.',
|
||||
'Database has been dropped.' => 'پایگاه داده حذف شد.',
|
||||
'Databases have been dropped.' => 'پایگاه های داده حذف شدند.',
|
||||
'Database has been created.' => 'پایگاه داده ایجاد شد.',
|
||||
'Database has been renamed.' => 'نام پایگاه داده تغیر کرد.',
|
||||
'Database has been altered.' => 'پایگاه داده ویرایش شد.',
|
||||
'Alter database' => 'ویرایش پایگاه داده',
|
||||
'Create database' => 'ایجاد پایگاه داده',
|
||||
'Database schema' => 'ساختار پایگاه داده',
|
||||
|
||||
// link to current database schema layout
|
||||
'Permanent link' => 'ارتباط دائم',
|
||||
|
||||
// thousands separator - must contain single byte
|
||||
',' => ' ',
|
||||
'0123456789' => '۰۱۲۳۴۵۶۷۸۹',
|
||||
'Engine' => 'موتور',
|
||||
'Collation' => 'تطبیق',
|
||||
'Data Length' => 'طول داده',
|
||||
@@ -102,33 +105,34 @@ $translations = array(
|
||||
'%d in total' => ' به طور کل %d ',
|
||||
'Analyze' => 'تحلیل',
|
||||
'Optimize' => 'بهینه سازی',
|
||||
'Vacuum' => 'پاک سازی',
|
||||
'Check' => 'بررسی',
|
||||
'Repair' => 'تعمیر',
|
||||
'Truncate' => 'کوتاه کردن',
|
||||
'Tables have been truncated.' => 'جدولها بریده شدند',
|
||||
'Tables have been truncated.' => 'جدولها بریده شدند.',
|
||||
'Move to other database' => 'انتقال به یک پایگاه داده دیگر',
|
||||
'Move' => 'انتقال',
|
||||
'Tables have been moved.' => 'جدولها انتقال داده شدند',
|
||||
'Tables have been moved.' => 'جدولها انتقال داده شدند.',
|
||||
'Copy' => 'کپی کردن',
|
||||
'Tables have been copied.' => 'جدولها کپی شدند',
|
||||
'Tables have been copied.' => 'جدولها کپی شدند.',
|
||||
|
||||
'Routines' => 'روالها',
|
||||
'Routine has been called, %d row(s) affected.' => array('روال فراخوانی شد %d سطر متاثر شد', 'روال فراخوانی شد %d سطر متاثر شد'),
|
||||
'Routine has been called, %d row(s) affected.' => array('روال فراخوانی شد %d سطر متاثر شد.', 'روال فراخوانی شد %d سطر متاثر شد.'),
|
||||
'Call' => 'صدا زدن',
|
||||
'Parameter name' => 'نام پارامتر',
|
||||
'Create procedure' => 'ایجاد زیربرنامه',
|
||||
'Create function' => 'ایجاد تابع',
|
||||
'Routine has been dropped.' => 'روال حذف شد',
|
||||
'Routine has been altered.' => 'روال ویرایش شد',
|
||||
'Routine has been created.' => 'روال ایجاد شد',
|
||||
'Routine has been dropped.' => 'روال حذف شد.',
|
||||
'Routine has been altered.' => 'روال ویرایش شد.',
|
||||
'Routine has been created.' => 'روال ایجاد شد.',
|
||||
'Alter function' => 'ویرایش تابع',
|
||||
'Alter procedure' => 'ویرایش زیربرنامه',
|
||||
'Return type' => 'برگرداندن نوع',
|
||||
|
||||
'Events' => 'رویدادها',
|
||||
'Event has been dropped.' => 'رویداد حذف شد',
|
||||
'Event has been altered.' => 'رویداد ویرایش شد',
|
||||
'Event has been created.' => 'رویداد ایجاد شد',
|
||||
'Event has been dropped.' => 'رویداد حذف شد.',
|
||||
'Event has been altered.' => 'رویداد ویرایش شد.',
|
||||
'Event has been created.' => 'رویداد ایجاد شد.',
|
||||
'Alter event' => 'ویرایش رویداد',
|
||||
'Create event' => 'ایجاد رویداد',
|
||||
'At given time' => 'زمان معین',
|
||||
@@ -144,10 +148,11 @@ $translations = array(
|
||||
'No tables.' => 'جدولی وجود ندارد',
|
||||
'Alter table' => 'ویرایش جدول',
|
||||
'Create table' => 'ایجاد جدول',
|
||||
'Table has been dropped.' => 'جدول حذف شد',
|
||||
'Tables have been dropped.' => 'جدولها حذف شدند',
|
||||
'Table has been altered.' => 'جدول ویرایش شد',
|
||||
'Table has been created.' => 'جدول ایجاد شد',
|
||||
'Table has been dropped.' => 'جدول حذف شد.',
|
||||
'Tables have been dropped.' => 'جدولها حذف شدند.',
|
||||
'Tables have been optimized.' => 'جدولها بهینه شدند.',
|
||||
'Table has been altered.' => 'جدول ویرایش شد.',
|
||||
'Table has been created.' => 'جدول ایجاد شد.',
|
||||
'Table name' => 'نام جدول',
|
||||
'Show structure' => 'نمایش ساختار',
|
||||
'engine' => 'موتور',
|
||||
@@ -158,13 +163,16 @@ $translations = array(
|
||||
'Auto Increment' => 'افزایش خودکار',
|
||||
'Options' => 'اختیارات',
|
||||
'Comment' => 'توضیح',
|
||||
'Default value' => 'مقدار پیش فرض',
|
||||
'Default values' => 'مقادیر پیش فرض',
|
||||
'Drop' => 'حذف',
|
||||
'Are you sure?' => 'مطمئن هستید؟',
|
||||
'Size' => 'حجم',
|
||||
'Compute' => 'محاسبه',
|
||||
'Move up' => 'انتقال به بالا',
|
||||
'Move down' => 'انتقال به پایین',
|
||||
'Remove' => 'حذف',
|
||||
'Maximum number of allowed fields exceeded. Please increase %s.' => 'حداکثر مجاز فیلدهای مجاز اشباع شد. لطفا %s را کاهش دهید',
|
||||
'Maximum number of allowed fields exceeded. Please increase %s.' => 'حداکثر تعداد فیلدهای مجاز اشباع شد. لطفا %s را افزایش دهید.',
|
||||
|
||||
'Partition by' => 'بخشبندی توسط',
|
||||
'Partitions' => 'بخشبندیها',
|
||||
@@ -172,14 +180,15 @@ $translations = array(
|
||||
'Values' => 'مقادیر',
|
||||
|
||||
'View' => 'نمایش',
|
||||
'View has been dropped.' => 'نمایش حذف شد',
|
||||
'View has been altered.' => 'نمایش ویرایش شد',
|
||||
'View has been created.' => 'نمایش ایجاد شد',
|
||||
'Materialized view' => 'نمایه مادی',
|
||||
'View has been dropped.' => 'نمایش حذف شد.',
|
||||
'View has been altered.' => 'نمایش ویرایش شد.',
|
||||
'View has been created.' => 'نمایش ایجاد شد.',
|
||||
'Alter view' => 'حذف نمایش',
|
||||
'Create view' => 'ایجاد نمایش',
|
||||
|
||||
'Indexes' => 'ایندکسها',
|
||||
'Indexes have been altered.' => 'ایندکسها ویرایش شد',
|
||||
'Indexes have been altered.' => 'ایندکسها ویرایش شدند.',
|
||||
'Alter indexes' => 'ویرایش ایندکسها',
|
||||
'Add next' => 'افرودن بعدی',
|
||||
'Index Type' => 'نوع ایندکس',
|
||||
@@ -187,9 +196,9 @@ $translations = array(
|
||||
|
||||
'Foreign keys' => 'کلیدهای خارجی',
|
||||
'Foreign key' => 'کلید خارجی',
|
||||
'Foreign key has been dropped.' => 'کلید خارجی حذف شد',
|
||||
'Foreign key has been altered.' => 'کلید خارجی ویرایش شد',
|
||||
'Foreign key has been created.' => 'کلید خارجی ایجاد شد',
|
||||
'Foreign key has been dropped.' => 'کلید خارجی حذف شد.',
|
||||
'Foreign key has been altered.' => 'کلید خارجی ویرایش شد.',
|
||||
'Foreign key has been created.' => 'کلید خارجی ایجاد شد.',
|
||||
'Target table' => 'جدول هدف',
|
||||
'Change' => 'تغییر',
|
||||
'Source' => 'منبع',
|
||||
@@ -199,13 +208,13 @@ $translations = array(
|
||||
'Add foreign key' => 'افزودن کلید خارجی',
|
||||
'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' => 'تریگرها',
|
||||
'Add trigger' => 'افزودن تریگر',
|
||||
'Trigger has been dropped.' => 'تریگر حذف شد',
|
||||
'Trigger has been altered.' => 'تریگر ویرایش شد',
|
||||
'Trigger has been created.' => 'تریگر ایجاد شد',
|
||||
'Trigger has been dropped.' => 'تریگر حذف شد.',
|
||||
'Trigger has been altered.' => 'تریگر ویرایش شد.',
|
||||
'Trigger has been created.' => 'تریگر ایجاد شد.',
|
||||
'Alter trigger' => 'ویرایش تریگر',
|
||||
'Create trigger' => 'ایجاد تریگر',
|
||||
'Time' => 'زمان',
|
||||
@@ -223,27 +232,35 @@ $translations = array(
|
||||
'Sort' => 'مرتب کردن',
|
||||
'descending' => 'نزولی',
|
||||
'Limit' => 'محدودیت',
|
||||
'Limit rows' => 'محدودیت سطرها',
|
||||
'Text length' => 'طول متن',
|
||||
'Action' => 'عملیات',
|
||||
'Full table scan' => 'اسکن کامل جدول',
|
||||
'Unable to select the table' => 'قادر به انتخاب جدول نیستید',
|
||||
'No rows.' => 'سطری وجود ندارد',
|
||||
'%d / ' => '%d / ',
|
||||
'%d row(s)' => array('%d سطر', '%d سطر'),
|
||||
'Page' => 'صفحه',
|
||||
'last' => 'آخری',
|
||||
'Load more data' => 'بارگزاری اطلاعات بیشتر',
|
||||
'Loading' => 'در حال بارگزاری',
|
||||
'whole result' => 'همه نتایج',
|
||||
'%d byte(s)' => array('%d بایت', '%d بایت'),
|
||||
|
||||
'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 باشید.',
|
||||
|
||||
// in-place editing in select
|
||||
'Use edit link to modify this value.' => 'از لینک ویرایش برای ویرایش این مقدار استفاده کنید',
|
||||
'Modify' => 'ویرایش',
|
||||
'Ctrl+click on a value to modify it.' => 'برای ویرایش بر روی مقدار ctrl+click کنید.',
|
||||
'Use edit link to modify this value.' => 'از لینک ویرایش برای ویرایش این مقدار استفاده کنید.',
|
||||
|
||||
// %s can contain auto-increment value
|
||||
'Item%s has been inserted.' => '%s آیتم درج شد',
|
||||
'Item has been deleted.' => 'آیتم حذف شد',
|
||||
'Item has been updated.' => 'آیتم بروز رسانی شد',
|
||||
'%d item(s) have been affected.' => array('%d آیتم متاثر شد', '%d آیتم متاثر شد'),
|
||||
'Item%s has been inserted.' => '%s آیتم درج شد.',
|
||||
'Item has been deleted.' => 'آیتم حذف شد.',
|
||||
'Item has been updated.' => 'آیتم بروز رسانی شد.',
|
||||
'%d item(s) have been affected.' => array('%d آیتم متاثر شد.', '%d آیتم متاثر شد.'),
|
||||
'New item' => 'آیتم جدید',
|
||||
'original' => 'اصلی',
|
||||
// label for value '' in enum data type
|
||||
@@ -254,15 +271,17 @@ $translations = array(
|
||||
'Save' => 'ذخیره',
|
||||
'Save and continue edit' => 'ذخیره و ادامه ویرایش',
|
||||
'Save and insert next' => 'ذخیره و درج بعدی',
|
||||
'Selected' => 'انتخاب شده',
|
||||
'Clone' => 'تکثیر',
|
||||
'Delete' => 'حذف',
|
||||
'You have no privileges to update this table.' => 'شما اختیار ویرایش این جدول را ندارید.',
|
||||
|
||||
'E-mail' => 'پست الکترونیک',
|
||||
'From' => 'فرستنده',
|
||||
'Subject' => 'موضوع',
|
||||
'Attachments' => 'پیوست ها',
|
||||
'Send' => 'ارسال',
|
||||
'%d e-mail(s) have been sent.' => array('%d ایمیل ارسال شد', '%d ایمیل ارسال شد'),
|
||||
'%d e-mail(s) have been sent.' => array('%d ایمیل ارسال شد.', '%d ایمیل ارسال شد.'),
|
||||
|
||||
// data type descriptions
|
||||
'Numbers' => 'اعداد',
|
||||
@@ -282,33 +301,34 @@ $translations = array(
|
||||
// hint for time format - use language equivalents for hour, minute and second shortcuts
|
||||
'HH:MM:SS' => 'HH:MM:SS',
|
||||
'now' => 'اکنون',
|
||||
|
||||
'yes' => 'بله',
|
||||
'no' => 'خیر',
|
||||
|
||||
// general SQLite error in create, drop or rename database
|
||||
'File exists.' => 'فایل موجود است',
|
||||
'Please use one of the extensions %s.' => 'لطفا یکی از پسوندهای زیر را انتخاب نمائید %s ',
|
||||
'File exists.' => 'فایل موجود است.',
|
||||
'Please use one of the extensions %s.' => 'لطفا یکی از پسوندها را انتخاب نمائید %s.',
|
||||
|
||||
// PostgreSQL and MS SQL schema support
|
||||
'Alter schema' => 'ویرایش ساختار',
|
||||
'Create schema' => 'ایجاد ساختار',
|
||||
'Schema has been dropped.' => 'ساختار حذف شد',
|
||||
'Schema has been created.' => 'ساختار ایجاد شد',
|
||||
'Schema has been altered.' => 'ساختار ویرایش شد',
|
||||
'schema' => 'ساختار',
|
||||
'Schema has been dropped.' => 'ساختار حذف شد.',
|
||||
'Schema has been created.' => 'ساختار ایجاد شد.',
|
||||
'Schema has been altered.' => 'ساختار ویرایش شد.',
|
||||
'Schema' => 'ساختار',
|
||||
'Invalid schema.' => 'ساختار نامعتبر',
|
||||
'Invalid schema.' => 'ساختار نامعتبر.',
|
||||
|
||||
// PostgreSQL sequences support
|
||||
'Sequences' => 'صف ها',
|
||||
'Create sequence' => 'ایجاد صف',
|
||||
'Sequence has been dropped.' => 'صف حذف شد',
|
||||
'Sequence has been created.' => 'صف ایجاد شد',
|
||||
'Sequence has been altered.' => 'صف ویرایش شد',
|
||||
'Sequence has been dropped.' => 'صف حذف شد.',
|
||||
'Sequence has been created.' => 'صف ایجاد شد.',
|
||||
'Sequence has been altered.' => 'صف ویرایش شد.',
|
||||
'Alter sequence' => 'ویرایش صف',
|
||||
|
||||
// PostgreSQL user types support
|
||||
'User types' => 'انواع کاربر',
|
||||
'Create type' => 'ایجاد نوع',
|
||||
'Type has been dropped.' => 'نوع حذف شد',
|
||||
'Type has been created.' => 'نوع ایجاد شد',
|
||||
'Type has been dropped.' => 'نوع حذف شد.',
|
||||
'Type has been created.' => 'نوع ایجاد شد.',
|
||||
'Alter type' => 'ویرایش نوع',
|
||||
);
|
||||
|
||||
336
adminer/lang/fi.inc.php
Normal file
336
adminer/lang/fi.inc.php
Normal file
@@ -0,0 +1,336 @@
|
||||
<?php
|
||||
$translations = array(
|
||||
// label for database system selection (MySQL, SQLite, ...)
|
||||
'System' => 'Järjestelmä',
|
||||
'Server' => 'Palvelin',
|
||||
'Username' => 'Käyttäjänimi',
|
||||
'Password' => 'Salasana',
|
||||
'Permanent login' => 'Haluan pysyä kirjautuneena',
|
||||
'Login' => 'Kirjaudu',
|
||||
'Logout' => 'Kirjaudu ulos',
|
||||
'Logged as: %s' => 'Olet kirjautunut käyttäjänä: %s',
|
||||
'Logout successful.' => 'Uloskirjautuminen onnistui.',
|
||||
'Invalid credentials.' => 'Virheelliset kirjautumistiedot.',
|
||||
'Too many unsuccessful logins, try again in %d minute(s).' => array('Liian monta epäonnistunutta sisäänkirjautumisyritystä, kokeile uudestaan %d minuutin kuluttua.', 'Liian monta epäonnistunutta sisäänkirjautumisyritystä, kokeile uudestaan %d minuutin kuluttua.'),
|
||||
'Master password expired. <a href="https://www.adminer.org/en/extension/" target="_blank">Implement</a> %s method to make it permanent.' => 'Master-salasana ei ole enää voimassa. <a href="https://www.adminer.org/en/extension/" target="_blank">Toteuta</a> %s-metodi sen tekemiseksi pysyväksi.',
|
||||
'Language' => 'Kieli',
|
||||
'Invalid CSRF token. Send the form again.' => 'Virheellinen CSRF-vastamerkki. Lähetä lomake uudelleen.',
|
||||
'If you did not send this request from Adminer then close this page.' => 'Jollet lähettänyt tämä pyyntö Adminerista, sulje tämä sivu.',
|
||||
'No extension' => 'Ei laajennusta',
|
||||
'None of the supported PHP extensions (%s) are available.' => 'Mitään tuetuista PHP-laajennuksista (%s) ei ole käytettävissä.',
|
||||
'Session support must be enabled.' => 'Istuntotuki on oltava päällä.',
|
||||
'Session expired, please login again.' => 'Istunto vanhentunut, kirjaudu uudelleen.',
|
||||
'%s version: %s through PHP extension %s' => '%s versio: %s PHP-laajennuksella %s',
|
||||
'Refresh' => 'Virkistä',
|
||||
|
||||
// text direction - 'ltr' or 'rtl'
|
||||
'ltr' => 'ltr',
|
||||
|
||||
'Privileges' => 'Oikeudet',
|
||||
'Create user' => 'Luo käyttäjä',
|
||||
'User has been dropped.' => 'Käyttäjä poistettiin.',
|
||||
'User has been altered.' => 'Käyttäjää muutettiin.',
|
||||
'User has been created.' => 'Käyttäjä luotiin.',
|
||||
'Hashed' => 'Hashed',
|
||||
'Column' => 'Sarake',
|
||||
'Routine' => 'Rutiini',
|
||||
'Grant' => 'Myönnä',
|
||||
'Revoke' => 'Kiellä',
|
||||
|
||||
'Process list' => 'Prosessilista',
|
||||
'%d process(es) have been killed.' => array('%d prosessi lopetettu.', '%d prosessia lopetettu..'),
|
||||
'Kill' => 'Lopeta',
|
||||
|
||||
'Variables' => 'Muuttujat',
|
||||
'Status' => 'Tila',
|
||||
|
||||
'SQL command' => 'SQL-komento',
|
||||
'%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.'),
|
||||
'No commands to execute.' => 'Ei komentoja suoritettavana.',
|
||||
'Error in query' => 'Virhe kyselyssä',
|
||||
'Execute' => 'Suorita',
|
||||
'Stop on error' => 'Pysähdy virheeseen',
|
||||
'Show only errors' => 'Näytä vain virheet',
|
||||
// sprintf() format for time of the command
|
||||
'%.3f s' => '%.3f s',
|
||||
'History' => 'Historia',
|
||||
'Clear' => 'Tyhjennä',
|
||||
'Edit all' => 'Muokkaa kaikkia',
|
||||
|
||||
'File upload' => 'Tiedoston lataus palvelimelle',
|
||||
'From server' => 'Verkkopalvelimella Adminer-kansiossa oleva tiedosto',
|
||||
'Webserver file %s' => 'Verkkopalvelintiedosto %s',
|
||||
'Run file' => 'Suorita tämä',
|
||||
'File does not exist.' => 'Tiedostoa ei ole.',
|
||||
'File uploads are disabled.' => 'Tiedostojen lataaminen palvelimelle on estetty.',
|
||||
'Unable to upload a file.' => 'Tiedostoa ei voida ladata palvelimelle.',
|
||||
'Maximum allowed file size is %sB.' => 'Suurin sallittu tiedostokoko on %sB.',
|
||||
'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 are offline.' => 'Olet offline-tilassa.',
|
||||
|
||||
'Export' => 'Vienti',
|
||||
'Output' => 'Tulos',
|
||||
'open' => 'avaa',
|
||||
'save' => 'tallenna',
|
||||
'Saving' => 'Tallennetaan',
|
||||
'Format' => 'Muoto',
|
||||
'Data' => 'Data',
|
||||
|
||||
'Database' => 'Tietokanta',
|
||||
'database' => 'tietokanta',
|
||||
'Use' => 'Käytä',
|
||||
'Select database' => 'Valitse tietokanta',
|
||||
'Invalid database.' => 'Tietokanta ei kelpaa.',
|
||||
'Database has been dropped.' => 'Tietokanta on poistettu.',
|
||||
'Databases have been dropped.' => 'Tietokannat on poistettu.',
|
||||
'Database has been created.' => 'Tietokanta on luotu.',
|
||||
'Database has been renamed.' => 'Tietokanta on nimetty uudelleen.',
|
||||
'Database has been altered.' => 'Tietokantaa on muutettu.',
|
||||
'Alter database' => 'Muuta tietokantaa',
|
||||
'Create database' => 'Luo tietokanta',
|
||||
'Database schema' => 'Tietokantakaava',
|
||||
|
||||
// link to current database schema layout
|
||||
'Permanent link' => 'Pysyvä linkki',
|
||||
|
||||
// thousands separator - must contain single byte
|
||||
',' => ',',
|
||||
'0123456789' => '0123456789',
|
||||
'Engine' => 'Moottori',
|
||||
'Collation' => 'Kollaatio',
|
||||
'Data Length' => 'Datan pituus',
|
||||
'Index Length' => 'Indeksin pituus',
|
||||
'Data Free' => 'Vapaa tila',
|
||||
'Rows' => 'Riviä',
|
||||
'%d in total' => '%d kaikkiaan',
|
||||
'Analyze' => 'Analysoi',
|
||||
'Optimize' => 'Optimoi',
|
||||
'Vacuum' => 'Siivoa',
|
||||
'Check' => 'Tarkista',
|
||||
'Repair' => 'Korjaa',
|
||||
'Truncate' => 'Tyhjennä',
|
||||
'Tables have been truncated.' => 'Taulujen sisältö on tyhjennetty.',
|
||||
'Move to other database' => 'Siirrä toiseen tietokantaan',
|
||||
'Move' => 'Siirrä',
|
||||
'Tables have been moved.' => 'Taulut on siirretty.',
|
||||
'Copy' => 'Kopioi',
|
||||
'Tables have been copied.' => 'Taulut on kopioitu.',
|
||||
|
||||
'Routines' => 'Rutiinit',
|
||||
'Routine has been called, %d row(s) affected.' => array('Rutiini kutsuttu, kohdistui %d riviin.', 'Rutiini kutsuttu, kohdistui %d riviin.'),
|
||||
'Call' => 'Kutsua',
|
||||
'Parameter name' => 'Parametrin nimi',
|
||||
'Create procedure' => 'Luo proseduuri',
|
||||
'Create function' => 'Luo funktio',
|
||||
'Routine has been dropped.' => 'Rutiini on poistettu.',
|
||||
'Routine has been altered.' => 'Rutiinia on muutettu.',
|
||||
'Routine has been created.' => 'Rutiini on luotu.',
|
||||
'Alter function' => 'Muuta funktiota',
|
||||
'Alter procedure' => 'Muuta proseduuria',
|
||||
'Return type' => 'Palautustyyppi',
|
||||
|
||||
'Events' => 'Tapahtumat',
|
||||
'Event has been dropped.' => 'Tapahtuma on poistettu.',
|
||||
'Event has been altered.' => 'Tapahtumaa on muutettu.',
|
||||
'Event has been created.' => 'Tapahtuma on luotu.',
|
||||
'Alter event' => 'Muuta tapahtumaa',
|
||||
'Create event' => 'Luo tapahtuma',
|
||||
'At given time' => 'Tiettynä aikana',
|
||||
'Every' => 'Joka',
|
||||
'Schedule' => 'Aikataulu',
|
||||
'Start' => 'Aloitus',
|
||||
'End' => 'Lopetus',
|
||||
'On completion preserve' => 'Säilytä, kun valmis',
|
||||
|
||||
'Tables' => 'Taulut',
|
||||
'Tables and views' => 'Taulut ja näkymät',
|
||||
'Table' => 'Taulu',
|
||||
'No tables.' => 'Ei tauluja.',
|
||||
'Alter table' => 'Muuta taulua',
|
||||
'Create table' => 'Luo taulu',
|
||||
'Table has been dropped.' => 'Taulu on poistettu.',
|
||||
'Tables have been dropped.' => 'Tauluja on poistettu.',
|
||||
'Tables have been optimized.' => 'Taulut on optimoitu.',
|
||||
'Table has been altered.' => 'Taulua on muutettu.',
|
||||
'Table has been created.' => 'Taulu on luotu.',
|
||||
'Table name' => 'Taulun nimi',
|
||||
'Show structure' => 'Näytä rakenne',
|
||||
'engine' => 'moottori',
|
||||
'collation' => 'kollaatio',
|
||||
'Column name' => 'Sarakkeen nimi',
|
||||
'Type' => 'Tyyppi',
|
||||
'Length' => 'Pituus',
|
||||
'Auto Increment' => 'Automaattinen lisäys',
|
||||
'Options' => 'Asetukset',
|
||||
'Comment' => 'Kommentit',
|
||||
'Default value' => 'Oletusarvo',
|
||||
'Default values' => 'Oletusarvot',
|
||||
'Drop' => 'Poista',
|
||||
'Are you sure?' => 'Oletko varma?',
|
||||
'Size' => 'Koko',
|
||||
'Compute' => 'Laske',
|
||||
'Move up' => 'Siirrä ylös',
|
||||
'Move down' => 'Siirrä alas',
|
||||
'Remove' => 'Poista',
|
||||
'Maximum number of allowed fields exceeded. Please increase %s.' => 'Kenttien sallittu enimmäismäärä ylitetty. Kasvata arvoa %s.',
|
||||
|
||||
'Partition by' => 'Osioi arvolla',
|
||||
'Partitions' => 'Osiot',
|
||||
'Partition name' => 'Osion nimi',
|
||||
'Values' => 'Arvot',
|
||||
|
||||
'View' => 'Näkymä',
|
||||
'Materialized view' => 'Materialisoitunut näkymä',
|
||||
'View has been dropped.' => 'Näkymä on poistettu.',
|
||||
'View has been altered.' => 'Näkymää on muutettu.',
|
||||
'View has been created.' => 'Näkymä on luotu.',
|
||||
'Alter view' => 'Muuta näkymää',
|
||||
'Create view' => 'Luo näkymä',
|
||||
|
||||
'Indexes' => 'Indeksit',
|
||||
'Indexes have been altered.' => 'Indeksejä on muutettu.',
|
||||
'Alter indexes' => 'Muuta indeksejä',
|
||||
'Add next' => 'Lisää seuraava',
|
||||
'Index Type' => 'Indeksityyppi',
|
||||
'Column (length)' => 'Sarake (pituus)',
|
||||
|
||||
'Foreign keys' => 'Vieraat avaimet',
|
||||
'Foreign key' => 'Vieras avain',
|
||||
'Foreign key has been dropped.' => 'Vieras avain on poistettu.',
|
||||
'Foreign key has been altered.' => 'Vierasta avainta on muutettu.',
|
||||
'Foreign key has been created.' => 'Vieras avain on luotu.',
|
||||
'Target table' => 'Kohdetaulu',
|
||||
'Change' => 'Muuta',
|
||||
'Source' => 'Lähde',
|
||||
'Target' => 'Kohde',
|
||||
'Add column' => 'Lisää sarake',
|
||||
'Alter' => 'Muuta',
|
||||
'Add foreign key' => 'Lisää vieras avain',
|
||||
'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.' => 'Lähde- ja kohdesarakkeiden tulee olla samaa tietotyyppiä, kohdesarakkeisiin tulee olla indeksi ja dataa, johon viitataan, täytyy olla.',
|
||||
|
||||
'Triggers' => 'Liipaisimet',
|
||||
'Add trigger' => 'Lisää liipaisin',
|
||||
'Trigger has been dropped.' => 'Liipaisin on poistettu.',
|
||||
'Trigger has been altered.' => 'Liipaisinta on muutettu.',
|
||||
'Trigger has been created.' => 'Liipaisin on luotu.',
|
||||
'Alter trigger' => 'Muuta liipaisinta',
|
||||
'Create trigger' => 'Luo liipaisin',
|
||||
'Time' => 'Aika',
|
||||
'Event' => 'Tapahtuma',
|
||||
'Name' => 'Nimi',
|
||||
|
||||
'select' => 'valitse',
|
||||
'Select' => 'Valitse',
|
||||
'Select data' => 'Valitse data',
|
||||
'Functions' => 'Funktiot',
|
||||
'Aggregation' => 'Aggregaatiot',
|
||||
'Search' => 'Hae',
|
||||
'anywhere' => 'kaikkialta',
|
||||
'Search data in tables' => 'Hae dataa tauluista',
|
||||
'Sort' => 'Lajittele',
|
||||
'descending' => 'alenevasti',
|
||||
'Limit' => 'Raja',
|
||||
'Limit rows' => 'Rajoita rivimäärää',
|
||||
'Text length' => 'Tekstin pituus',
|
||||
'Action' => 'Toimenpide',
|
||||
'Full table scan' => 'Koko taulun läpikäynti',
|
||||
'Unable to select the table' => 'Taulua ei voitu valita',
|
||||
'No rows.' => 'Ei rivejä.',
|
||||
'%d / ' => '%d / ',
|
||||
'%d row(s)' => array('%d rivi', '%d riviä'),
|
||||
'Page' => 'Sivu',
|
||||
'last' => 'viimeinen',
|
||||
'Load more data' => 'Lataa lisää dataa',
|
||||
'Loading' => 'Ladataan',
|
||||
'whole result' => 'koko tulos',
|
||||
'%d byte(s)' => array('%d tavu', '%d tavua'),
|
||||
|
||||
'Import' => 'Tuonti',
|
||||
'%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.',
|
||||
|
||||
// in-place editing in select
|
||||
'Modify' => 'Muuta',
|
||||
'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.',
|
||||
|
||||
// %s can contain auto-increment value
|
||||
'Item%s has been inserted.' => 'Tietue%s lisättiin.',
|
||||
'Item has been deleted.' => 'Tietue poistettiin.',
|
||||
'Item has been updated.' => 'Tietue päivitettiin.',
|
||||
'%d item(s) have been affected.' => array('Kohdistui %d tietueeseen.', 'Kohdistui %d tietueeseen.'),
|
||||
'New item' => 'Uusi tietue',
|
||||
'original' => 'alkuperäinen',
|
||||
// label for value '' in enum data type
|
||||
'empty' => 'tyhjä',
|
||||
'edit' => 'muokkaa',
|
||||
'Edit' => 'Muokkaa',
|
||||
'Insert' => 'Lisää',
|
||||
'Save' => 'Tallenna',
|
||||
'Save and continue edit' => 'Tallenna ja jatka muokkaamista',
|
||||
'Save and insert next' => 'Tallenna ja lisää seuraava',
|
||||
'Selected' => 'Valitut',
|
||||
'Clone' => 'Kloonaa',
|
||||
'Delete' => 'Poista',
|
||||
'You have no privileges to update this table.' => 'Sinulla ei ole oikeutta päivittää tätä taulua.',
|
||||
|
||||
'E-mail' => 'S-posti',
|
||||
'From' => 'Lähettäjä',
|
||||
'Subject' => 'Aihe',
|
||||
'Attachments' => 'Liitteet',
|
||||
'Send' => 'Lähetä',
|
||||
'%d e-mail(s) have been sent.' => array('% sähköpostiviestiä lähetetty.', '% sähköpostiviestiä lähetetty.'),
|
||||
|
||||
// data type descriptions
|
||||
'Numbers' => 'Numerot',
|
||||
'Date and time' => 'Päiväys ja aika',
|
||||
'Strings' => 'Merkkijonot',
|
||||
'Binary' => 'Binäärinen',
|
||||
'Lists' => 'Luettelot',
|
||||
'Network' => 'Verkko',
|
||||
'Geometry' => 'Geometria',
|
||||
'Relations' => 'Suhteet',
|
||||
|
||||
'Editor' => 'Editori',
|
||||
// date format in Editor: $1 yyyy, $2 yy, $3 mm, $4 m, $5 dd, $6 d
|
||||
'$1-$3-$5' => '$5.$3.$1',
|
||||
// hint for date format - use language equivalents for day, month and year shortcuts
|
||||
'[yyyy]-mm-dd' => 'pp.kk.[vvvv]',
|
||||
// hint for time format - use language equivalents for hour, minute and second shortcuts
|
||||
'HH:MM:SS' => 'HH:MM:SS',
|
||||
'now' => 'nyt',
|
||||
'yes' => 'kyllä',
|
||||
'no' => 'ei',
|
||||
|
||||
// general SQLite error in create, drop or rename database
|
||||
'File exists.' => 'Tiedosto on olemassa.',
|
||||
'Please use one of the extensions %s.' => 'Käytä jotain %s-laajennuksista.',
|
||||
|
||||
// PostgreSQL and MS SQL schema support
|
||||
'Alter schema' => 'Muuta kaavaa',
|
||||
'Create schema' => 'Luo kaava',
|
||||
'Schema has been dropped.' => 'Kaava poistettiin.',
|
||||
'Schema has been created.' => 'Kaava luotiin.',
|
||||
'Schema has been altered.' => 'Kaavaa muutettiin.',
|
||||
'Schema' => 'Kaava',
|
||||
'Invalid schema.' => 'Kaava ei kelpaa.',
|
||||
|
||||
// PostgreSQL sequences support
|
||||
'Sequences' => 'Sekvenssit',
|
||||
'Create sequence' => 'Luo sekvenssi',
|
||||
'Sequence has been dropped.' => 'Sekvenssi on poistettu.',
|
||||
'Sequence has been created.' => 'Sekvenssi on luotu.',
|
||||
'Sequence has been altered.' => 'Sekvenssiä on muutettu.',
|
||||
'Alter sequence' => 'Muuta sekvenssiä',
|
||||
|
||||
// PostgreSQL user types support
|
||||
'User types' => 'Käyttäjän tyypit',
|
||||
'Create type' => 'Luo tyyppi',
|
||||
'Type has been dropped.' => 'Tyyppi poistettiin.',
|
||||
'Type has been created.' => 'Tyyppi luotiin.',
|
||||
'Alter type' => 'Muuta tyyppiä',
|
||||
);
|
||||
@@ -8,7 +8,6 @@ $translations = array(
|
||||
'Password' => 'Mot de passe',
|
||||
'Select database' => 'Sélectionner la base de données',
|
||||
'Invalid database.' => 'Base de données invalide.',
|
||||
'Create new database' => 'Créer une base de données',
|
||||
'Table has been dropped.' => 'La table a été effacée.',
|
||||
'Table has been altered.' => 'La table a été modifiée.',
|
||||
'Table has been created.' => 'La table a été créée.',
|
||||
@@ -20,7 +19,7 @@ $translations = array(
|
||||
'Column name' => 'Nom de la colonne',
|
||||
'Type' => 'Type',
|
||||
'Length' => 'Longueur',
|
||||
'Auto Increment' => 'Auto increment',
|
||||
'Auto Increment' => 'Incrément automatique',
|
||||
'Options' => 'Options',
|
||||
'Save' => 'Enregistrer',
|
||||
'Drop' => 'Supprimer',
|
||||
@@ -30,7 +29,6 @@ $translations = array(
|
||||
'Alter database' => 'Modifier la base de données',
|
||||
'Create database' => 'Créer une base de données',
|
||||
'SQL command' => 'Requête SQL',
|
||||
'Dump' => 'Exporter',
|
||||
'Logout' => 'Déconnexion',
|
||||
'database' => 'base de données',
|
||||
'Use' => 'Utiliser',
|
||||
@@ -49,7 +47,7 @@ $translations = array(
|
||||
'Alter indexes' => 'Modifier les index',
|
||||
'Add next' => 'Ajouter le prochain',
|
||||
'Language' => 'Langue',
|
||||
'Select' => 'Select',
|
||||
'Select' => 'Sélectionner',
|
||||
'New item' => 'Nouvel élément',
|
||||
'Search' => 'Rechercher',
|
||||
'Sort' => 'Trier',
|
||||
@@ -64,10 +62,10 @@ $translations = array(
|
||||
'Execute' => 'Exécuter',
|
||||
'Table' => 'Table',
|
||||
'Foreign keys' => 'Clés étrangères',
|
||||
'Triggers' => 'Triggers',
|
||||
'Triggers' => 'Déclencheurs',
|
||||
'View' => 'Vue',
|
||||
'Unable to select the table' => 'Impossible de sélectionner la table',
|
||||
'Invalid CSRF token. Send the form again.' => 'Token CSRF invalide. Veuillez réenvoyer le formulaire.',
|
||||
'Invalid CSRF token. Send the form again.' => 'Token CSRF invalide. Veuillez renvoyer le formulaire.',
|
||||
'Comment' => 'Commentaire',
|
||||
'Default values' => 'Valeurs par défaut',
|
||||
'%d byte(s)' => array('%d octet', '%d octets'),
|
||||
@@ -116,17 +114,17 @@ $translations = array(
|
||||
'Alter function' => 'Modifier la fonction',
|
||||
'Alter procedure' => 'Modifier la procédure',
|
||||
'Return type' => 'Type de retour',
|
||||
'Add trigger' => 'Ajouter un trigger',
|
||||
'Trigger has been dropped.' => 'Le trigger a été supprimé.',
|
||||
'Trigger has been altered.' => 'Le trigger a été modifié.',
|
||||
'Trigger has been created.' => 'Le trigger a été créé.',
|
||||
'Alter trigger' => 'Modifier un trigger',
|
||||
'Create trigger' => 'Ajouter un trigger',
|
||||
'Add trigger' => 'Ajouter un déclencheur',
|
||||
'Trigger has been dropped.' => 'Le déclencheur a été supprimé.',
|
||||
'Trigger has been altered.' => 'Le déclencheur a été modifié.',
|
||||
'Trigger has been created.' => 'Le déclencheur a été créé.',
|
||||
'Alter trigger' => 'Modifier un déclencheur',
|
||||
'Create trigger' => 'Ajouter un déclencheur',
|
||||
'Time' => 'Temps',
|
||||
'Event' => 'Évènement',
|
||||
'%d row(s)' => array('%d ligne', '%d lignes'),
|
||||
'Remove' => 'Effacer',
|
||||
'Are you sure?' => 'Êtes-vous certain ?',
|
||||
'Are you sure?' => 'Êtes-vous certain(e) ?',
|
||||
'Privileges' => 'Privilèges',
|
||||
'Create user' => 'Créer un utilisateur',
|
||||
'User has been dropped.' => 'L\'utilisateur a été effacé.',
|
||||
@@ -177,6 +175,7 @@ $translations = array(
|
||||
'Data Free' => 'Espace inutilisé',
|
||||
'Rows' => 'Lignes',
|
||||
',' => ',',
|
||||
'0123456789' => '0123456789',
|
||||
'Analyze' => 'Analyser',
|
||||
'Optimize' => 'Optimiser',
|
||||
'Check' => 'Vérifier',
|
||||
@@ -192,7 +191,7 @@ $translations = array(
|
||||
'Partitions' => 'Partitions',
|
||||
'Partition name' => 'Nom de la partition',
|
||||
'Values' => 'Valeurs',
|
||||
'%d row(s) have been imported.' => array('%d ligne a été importée.','%d lignes ont été importées.'),
|
||||
'%d row(s) have been imported.' => array('%d ligne a été importée.', '%d lignes ont été importées.'),
|
||||
'anywhere' => 'n\'importe où',
|
||||
'Import' => 'Importer',
|
||||
'Stop on error' => 'Arrêter en cas d\'erreur',
|
||||
@@ -224,7 +223,6 @@ $translations = array(
|
||||
'Databases have been dropped.' => 'Les bases de données ont été supprimées.',
|
||||
'Database has been dropped.' => 'La base de données a été supprimée.',
|
||||
'Search data in tables' => 'Rechercher dans les tables',
|
||||
'schema' => 'schéma',
|
||||
'Schema' => 'Schéma',
|
||||
'Alter schema' => 'Modifier le schéma',
|
||||
'Create schema' => 'Créer un schéma',
|
||||
@@ -267,4 +265,27 @@ $translations = array(
|
||||
'Permanent link' => 'Lien permanent',
|
||||
'Edit all' => 'Tout modifier',
|
||||
'HH:MM:SS' => 'HH:MM:SS',
|
||||
'Selected' => 'Sélectionnée(s)',
|
||||
'Modify' => 'Modification',
|
||||
'Load more data' => 'Charger plus de données',
|
||||
'Loading' => 'Chargement',
|
||||
'Tables have been optimized.' => 'Les tables ont bien été optimisées.',
|
||||
'Vacuum' => 'Vide',
|
||||
'File must be in UTF-8 encoding.' => 'Les fichiers doivent être encodés en UTF-8.',
|
||||
'Full table scan' => 'Scan de toute la table',
|
||||
'Too many unsuccessful logins, try again in %d minute(s).' => array('Trop de connexions échouées, essayez à nouveau dans %d minute.', 'Trop de connexions échouées, essayez à nouveau dans %d minutes.'),
|
||||
'Master password expired. <a href="https://www.adminer.org/en/extension/" target="_blank">Implement</a> %s method to make it permanent.' => 'Le mot de passe a expiré. <a href="https://www.adminer.org/en/extension/" target="_blank">Implémentez</a> la méthode %s afin de le rendre permanent.',
|
||||
'You can upload a big SQL file via FTP and import it from server.' => 'Vous pouvez uploader un gros fichier SQL par FTP et ensuite l\'importer depuis le serveur.',
|
||||
'Size' => 'Taille',
|
||||
'Compute' => 'Calcul',
|
||||
'You have no privileges to update this table.' => 'Vous n\'avez pas les droits pour mettre à jour cette table.',
|
||||
'Saving' => 'Enregistrement',
|
||||
'yes' => 'oui',
|
||||
'no' => 'non',
|
||||
'Materialized view' => 'Vue matérialisée',
|
||||
'%d / ' => '%d / ',
|
||||
'Limit rows' => 'Limiter les lignes',
|
||||
'Default value' => 'Valeur par défaut',
|
||||
'If you did not send this request from Adminer then close this page.' => 'Si vous n\'avez pas envoyé cette requête depuis Adminer, alors fermez cette page.',
|
||||
'You are offline.' => 'Vous êtes hors ligne.',
|
||||
);
|
||||
|
||||
291
adminer/lang/gl.inc.php
Normal file
291
adminer/lang/gl.inc.php
Normal file
@@ -0,0 +1,291 @@
|
||||
<?php
|
||||
$translations = array(
|
||||
'Login' => 'Conectar',
|
||||
'Logout successful.' => 'Pechouse a sesión con éxito.',
|
||||
'Invalid credentials.' => 'Credenciais (usuario e/ou contrasinal) inválidos.',
|
||||
'Server' => 'Servidor',
|
||||
'Username' => 'Usuario',
|
||||
'Password' => 'Contrasinal',
|
||||
'Select database' => 'Seleccionar Base de datos',
|
||||
'Invalid database.' => 'Base de datos incorrecta.',
|
||||
'Table has been dropped.' => 'Eliminouse a táboa.',
|
||||
'Table has been altered.' => 'Modificouse a táboa.',
|
||||
'Table has been created.' => 'Creouse a táboa.',
|
||||
'Alter table' => 'Modificar táboa',
|
||||
'Create table' => 'Crear táboa',
|
||||
'Table name' => 'Nome da táboa',
|
||||
'engine' => 'motor',
|
||||
'collation' => 'xogo de caracteres (collation)',
|
||||
'Column name' => 'Nome da columna',
|
||||
'Type' => 'Tipo',
|
||||
'Length' => 'Lonxitude',
|
||||
'Auto Increment' => 'Incremento automático',
|
||||
'Options' => 'Opcións',
|
||||
'Save' => 'Gardar',
|
||||
'Drop' => 'Eliminar',
|
||||
'Database has been dropped.' => 'Eliminouse a base de datos.',
|
||||
'Database has been created.' => 'Creouse a base de datos.',
|
||||
'Database has been renamed.' => 'Renomeouse a base de datos.',
|
||||
'Database has been altered.' => 'Modificouse a base de datos.',
|
||||
'Alter database' => 'Modificar Base de datos',
|
||||
'Create database' => 'Crear Base de datos',
|
||||
'SQL command' => 'Comando SQL',
|
||||
'Logout' => 'Pechar sesión',
|
||||
'database' => 'base de datos',
|
||||
'Use' => 'Usar',
|
||||
'No tables.' => 'Nengunha táboa.',
|
||||
'select' => 'selecciona',
|
||||
'Item has been deleted.' => 'Eliminouse o elemento.',
|
||||
'Item has been updated.' => 'Modificouse o elemento.',
|
||||
'Item%s has been inserted.' => 'Inseríuse o elemento%s.',
|
||||
'Edit' => 'Editar',
|
||||
'Insert' => 'Inserir',
|
||||
'Save and insert next' => 'Guardar e inserir seguinte',
|
||||
'Delete' => 'Borrar',
|
||||
'Database' => 'Base de datos',
|
||||
'Routines' => 'Rutinas',
|
||||
'Indexes have been altered.' => 'Alteráronse os índices.',
|
||||
'Indexes' => 'Índices',
|
||||
'Alter indexes' => 'Modificar índices',
|
||||
'Add next' => 'Engadir seguinte',
|
||||
'Language' => 'Lingua',
|
||||
'Select' => 'Seleccionar',
|
||||
'New item' => 'Novo elemento',
|
||||
'Search' => 'Buscar',
|
||||
'Sort' => 'Ordenar',
|
||||
'descending' => 'descendente',
|
||||
'Limit' => 'Límite',
|
||||
'No rows.' => 'Nengún resultado.',
|
||||
'Action' => 'Acción',
|
||||
'edit' => 'editar',
|
||||
'Page' => 'Páxina',
|
||||
'Query executed OK, %d row(s) affected.' => array('Consulta executada, %d fila afectada.', 'Consulta executada, %d filas afectadas.'),
|
||||
'Error in query' => 'Erro na consulta',
|
||||
'Execute' => 'Executar',
|
||||
'Table' => 'Táboa',
|
||||
'Foreign keys' => 'Chaves externas',
|
||||
'Triggers' => 'Disparadores',
|
||||
'View' => 'Vista',
|
||||
'Unable to select the table' => 'No é posible seleccionar a táboa',
|
||||
'Invalid CSRF token. Send the form again.' => 'Token CSRF inválido. Envíe de novo os datos do formulario.',
|
||||
'Comment' => 'Comentario',
|
||||
'Default values' => 'Valores predeterminados',
|
||||
'%d byte(s)' => array('%d byte', '%d bytes'),
|
||||
'No commands to execute.' => 'Non hai comandos para executar.',
|
||||
'Unable to upload a file.' => 'Non é posible importar o ficheiro.',
|
||||
'File upload' => 'Importar ficheiro',
|
||||
'File uploads are disabled.' => 'Importación de ficheiros deshablilitada.',
|
||||
'Routine has been called, %d row(s) affected.' => array('Chamouse á rutina, %d fila afectada.', 'Chamouse á rutina, %d filas afectadas.'),
|
||||
'Call' => 'Chamar',
|
||||
'No extension' => 'Non ten extensión',
|
||||
'None of the supported PHP extensions (%s) are available.' => 'Ningunha das extensións PHP soportadas (%s) está dispoñible.',
|
||||
'Session support must be enabled.' => 'As sesións deben estar habilitadas.',
|
||||
'Session expired, please login again.' => 'Caducou a sesión, por favor acceda de novo.',
|
||||
'Text length' => 'Lonxitud do texto',
|
||||
'Foreign key has been dropped.' => 'Eliminouse a chave externa.',
|
||||
'Foreign key has been altered.' => 'Modificouse a chave externa.',
|
||||
'Foreign key has been created.' => 'Creouse a chave externa.',
|
||||
'Foreign key' => 'Chave externa',
|
||||
'Target table' => 'táboa de destino',
|
||||
'Change' => 'Cambiar',
|
||||
'Source' => 'Orixe',
|
||||
'Target' => 'Destino',
|
||||
'Add column' => 'Engadir columna',
|
||||
'Alter' => 'Modificar',
|
||||
'Add foreign key' => 'Engadir chave externa',
|
||||
'ON DELETE' => 'AO BORRAR (ON DELETE)',
|
||||
'ON UPDATE' => 'AO ACTUALIZAR (ON UPDATE)',
|
||||
'Index Type' => 'Tipo de índice',
|
||||
'Column (length)' => 'Columna (lonxitude)',
|
||||
'View has been dropped.' => 'Eliminouse a vista.',
|
||||
'View has been altered.' => 'Modificouse a vista.',
|
||||
'View has been created.' => 'Creouse a vista.',
|
||||
'Alter view' => 'Modificar vista',
|
||||
'Create view' => 'Crear vista',
|
||||
'Name' => 'Nome',
|
||||
'Process list' => 'Lista de procesos',
|
||||
'%d process(es) have been killed.' => array('%d proceso foi detido.', '%d procesos foron detidos.'),
|
||||
'Kill' => 'Deter',
|
||||
'Parameter name' => 'Nome de Parámetro',
|
||||
'Database schema' => 'Esquema de base de datos',
|
||||
'Create procedure' => 'Crear procedemento',
|
||||
'Create function' => 'Crear función',
|
||||
'Routine has been dropped.' => 'Eliminouse o procedemento.',
|
||||
'Routine has been altered.' => 'Alterouse o procedemento.',
|
||||
'Routine has been created.' => 'Creouse o procedemento.',
|
||||
'Alter function' => 'Modificar Función',
|
||||
'Alter procedure' => 'Modificar procedemento',
|
||||
'Return type' => 'Tipo de valor devolto',
|
||||
'Add trigger' => 'Engadir disparador',
|
||||
'Trigger has been dropped.' => 'Eliminouse o disparador.',
|
||||
'Trigger has been altered.' => 'Modificouse o disparador.',
|
||||
'Trigger has been created.' => 'Creouse o disparador.',
|
||||
'Alter trigger' => 'Modificar Disparador',
|
||||
'Create trigger' => 'Crear Disparador',
|
||||
'Time' => 'Tempo',
|
||||
'Event' => 'Evento',
|
||||
'%s version: %s through PHP extension %s' => 'Versión %s: %s a través da extensión de PHP %s',
|
||||
'%d row(s)' => array('%d fila', '%d filas'),
|
||||
'Remove' => 'Eliminar',
|
||||
'Are you sure?' => 'Está seguro?',
|
||||
'Privileges' => 'Privilexios',
|
||||
'Create user' => 'Crear Usuario',
|
||||
'User has been dropped.' => 'Eliminouse o usuario.',
|
||||
'User has been altered.' => 'Modificouse o usuario.',
|
||||
'User has been created.' => 'Creouse o usuario.',
|
||||
'Hashed' => 'Hashed',
|
||||
'Column' => 'Columna',
|
||||
'Routine' => 'Rutina',
|
||||
'Grant' => 'Conceder',
|
||||
'Revoke' => 'Revocar',
|
||||
'Too big POST data. Reduce the data or increase the %s configuration directive.' => 'Datos POST demasiado grandes. Reduza os datos ou aumente a directiva de configuración %s.',
|
||||
'Logged as: %s' => 'Conectado como: %s',
|
||||
'Move up' => 'Mover arriba',
|
||||
'Move down' => 'Mover abaixo',
|
||||
'Functions' => 'Funcións',
|
||||
'Aggregation' => 'Agregados',
|
||||
'Export' => 'Exportar',
|
||||
'Output' => 'Salida',
|
||||
'open' => 'abrir',
|
||||
'save' => 'gardar',
|
||||
'Format' => 'Formato',
|
||||
'Tables' => 'Táboas',
|
||||
'Data' => 'Datos',
|
||||
'Event has been dropped.' => 'Eliminouse o evento.',
|
||||
'Event has been altered.' => 'Modificouse o evento.',
|
||||
'Event has been created.' => 'Creouse o evento.',
|
||||
'Alter event' => 'Modificar Evento',
|
||||
'Create event' => 'Crear Evento',
|
||||
'At given time' => 'No tempo indicado',
|
||||
'Every' => 'Cada',
|
||||
'Events' => 'Eventos',
|
||||
'Schedule' => 'Axenda',
|
||||
'Start' => 'Inicio',
|
||||
'End' => 'Fin',
|
||||
'Status' => 'Estado',
|
||||
'On completion preserve' => 'Ao completar manter',
|
||||
'Tables and views' => 'táboas e vistas',
|
||||
'Data Length' => 'Lonxitude de datos',
|
||||
'Index Length' => 'Lonxitude de índice',
|
||||
'Data Free' => 'Espazo dispoñible',
|
||||
'Collation' => 'Xogo de caracteres (collation)',
|
||||
'Analyze' => 'Analizar',
|
||||
'Optimize' => 'Optimizar',
|
||||
'Check' => 'Comprobar',
|
||||
'Repair' => 'Reparar',
|
||||
'Truncate' => 'Baleirar',
|
||||
'Tables have been truncated.' => 'Baleiráronse as táboas.',
|
||||
'Rows' => 'Filas',
|
||||
',' => ' ',
|
||||
'0123456789' => '0123456789',
|
||||
'Tables have been moved.' => 'Movéronse as táboas.',
|
||||
'Move to other database' => 'Mover a outra base de datos',
|
||||
'Move' => 'Mover',
|
||||
'Engine' => 'Motor',
|
||||
'Save and continue edit' => 'Gardar se seguir editando',
|
||||
'original' => 'orixinal',
|
||||
'Tables have been dropped.' => 'Elimináronse as táboas.',
|
||||
'%d item(s) have been affected.' => array('%d elemento afectado.', '%d elementos afectados.'),
|
||||
'whole result' => 'resultado completo',
|
||||
'Clone' => 'Clonar',
|
||||
'Maximum number of allowed fields exceeded. Please increase %s.' => 'Excedida o número máximo de campos permitidos. Por favor aumente %s.',
|
||||
'Partition by' => 'Particionar por',
|
||||
'Partitions' => 'Particións',
|
||||
'Partition name' => 'Nome da Partición',
|
||||
'Values' => 'Valores',
|
||||
'%d row(s) have been imported.' => array('%d fila importada.', '%d filas importadas.'),
|
||||
'anywhere' => 'onde sexa',
|
||||
'Import' => 'Importar',
|
||||
'Stop on error' => 'Parar en caso de erro',
|
||||
'%.3f s' => '%.3f s',
|
||||
'$1-$3-$5' => '$5/$3/$1',
|
||||
'[yyyy]-mm-dd' => 'dd/mm/[aaaa]',
|
||||
'History' => 'Histórico',
|
||||
'Variables' => 'Variables',
|
||||
'Source and target columns must have the same data type, there must be an index on the target columns and referenced data must exist.' => 'As columnas de orixe e destino deben ser do mesmo tipo, debe existir un índice nas columnas de destino e os datos referenciados deben existir.',
|
||||
'Relations' => 'Relacins',
|
||||
'Run file' => 'Executar ficheiro',
|
||||
'Clear' => 'Baleirar',
|
||||
'Maximum allowed file size is %sB.' => 'O tamaño máximo de ficheiro permitido é de %sB.',
|
||||
'Numbers' => 'Números',
|
||||
'Date and time' => 'Data e hora',
|
||||
'Strings' => 'Cadea',
|
||||
'Binary' => 'Binario',
|
||||
'Lists' => 'Listas',
|
||||
'Editor' => 'Editor',
|
||||
'E-mail' => 'Email',
|
||||
'From' => 'De',
|
||||
'Subject' => 'Asunto',
|
||||
'Send' => 'Enviar',
|
||||
'%d e-mail(s) have been sent.' => array('%d email enviado.', '%d emails enviados.'),
|
||||
'Webserver file %s' => 'Ficheiro de servidor web %s',
|
||||
'File does not exist.' => 'O ficheiro non existe.',
|
||||
'%d in total' => '%d en total',
|
||||
'Permanent login' => 'Permanecer conectado',
|
||||
'Databases have been dropped.' => 'Elimináronse as bases de datos.',
|
||||
'Search data in tables' => 'Buscar datos en táboas',
|
||||
'Schema' => 'Esquema',
|
||||
'Alter schema' => 'Modificar esquema',
|
||||
'Create schema' => 'Crear esquema',
|
||||
'Schema has been dropped.' => 'Eliminouse o esquema.',
|
||||
'Schema has been created.' => 'Creouse o esquema.',
|
||||
'Schema has been altered.' => 'Modificouse o esquema.',
|
||||
'Sequences' => 'Secuencias',
|
||||
'Create sequence' => 'Crear secuencias',
|
||||
'Alter sequence' => 'Modificar secuencia',
|
||||
'Sequence has been dropped.' => 'Eliminouse a secuencia.',
|
||||
'Sequence has been created.' => 'Creouse a secuencia.',
|
||||
'Sequence has been altered.' => 'Modificaouse a secuencia.',
|
||||
'User types' => 'Tipos definidos polo usuario',
|
||||
'Create type' => 'Crear tipo',
|
||||
'Alter type' => 'Modificar tipo',
|
||||
'Type has been dropped.' => 'Eliminouse o tipo.',
|
||||
'Type has been created.' => 'Creouse o tipo.',
|
||||
'Ctrl+click on a value to modify it.' => 'Ctrl+clic sobre o valor para editalo.',
|
||||
'Use edit link to modify this value.' => 'Use a ligazón de edición para modificar este valor.',
|
||||
'last' => 'último',
|
||||
'From server' => 'Desde o servidor',
|
||||
'System' => 'Sistema',
|
||||
'Select data' => 'Seleccionar datos',
|
||||
'Show structure' => 'Amosar estructura',
|
||||
'empty' => 'baleiro',
|
||||
'Network' => 'Rede',
|
||||
'Geometry' => 'Xeometría',
|
||||
'File exists.' => 'O ficheiro xa existe.',
|
||||
'Attachments' => 'Adxuntos',
|
||||
'%d query(s) executed OK.' => array('%d consulta executada correctamente.', '%d consultas executadas correctamente.'),
|
||||
'Show only errors' => 'Amosar só erros',
|
||||
'Refresh' => 'Refrescar',
|
||||
'Invalid schema.' => 'Esquema inválido.',
|
||||
'Please use one of the extensions %s.' => 'Por favor use unha das extensións %s.',
|
||||
'now' => 'agora',
|
||||
'ltr' => 'ltr',
|
||||
'Tables have been copied.' => 'Copiáronse as táboas.',
|
||||
'Copy' => 'Copiar',
|
||||
'Permanent link' => 'Ligazón permanente',
|
||||
'Edit all' => 'Editar todo',
|
||||
'HH:MM:SS' => 'HH:MM:SS',
|
||||
'Tables have been optimized.' => 'Optimizáronse as táboas',
|
||||
'Materialized view' => 'Vista materializada',
|
||||
'Vacuum' => 'Baleirar',
|
||||
'Selected' => 'Selección',
|
||||
'File must be in UTF-8 encoding.' => 'O ficheiro ten que estar codificado con UTF-8',
|
||||
'Modify' => 'Modificar',
|
||||
'Loading' => 'Cargando',
|
||||
'Load more data' => 'Cargar máis datos',
|
||||
'%d / ' => array('%d / ','%d / '),
|
||||
'Limit rows' => 'Limitar filas',
|
||||
'Default value' => 'Valor por defecto',
|
||||
'Full table scan' => 'Escaneo completo da táboa',
|
||||
'Too many unsuccessful logins, try again in %d minute(s).' => array('Demasiados intentos de conexión, intentao de novo en %d minuto', 'Demasiados intentos de conexión, intentao de novo en %d minutos'),
|
||||
'Master password expired. <a href="https://www.adminer.org/en/extension/" target="_blank">Implement</a> %s method to make it permanent.' => 'O contrasinal principal caducou. <a href="https://www.adminer.org/en/extension/" target="_blank">Implementa</a> o método %s para facelo permanente.',
|
||||
'If you did not send this request from Adminer then close this page.' => 'Se non enviaches esta petición dende o Adminer entón pecha esta páxina',
|
||||
'You can upload a big SQL file via FTP and import it from server.' => 'Podes subir un ficheiro SQL de gran tamaño vía FTP e importalo dende o servidor',
|
||||
'Size' => 'Tamaño',
|
||||
'Compute' => 'Calcular',
|
||||
'You are offline.' => 'Non tes conexión',
|
||||
'You have no privileges to update this table.' => 'Non tes privilexios para actualizar esta táboa',
|
||||
'Saving' => 'Gardando',
|
||||
'yes' => 'si',
|
||||
'no' => 'non',
|
||||
);
|
||||
@@ -8,7 +8,6 @@ $translations = array(
|
||||
'Password' => 'Jelszó',
|
||||
'Select database' => 'Adatbázis kiválasztása',
|
||||
'Invalid database.' => 'Érvénytelen adatbázis.',
|
||||
'Create new database' => 'Új adatbázis',
|
||||
'Table has been dropped.' => 'A tábla eldobva.',
|
||||
'Table has been altered.' => 'A tábla módosult.',
|
||||
'Table has been created.' => 'A tábla létrejött.',
|
||||
@@ -31,7 +30,6 @@ $translations = array(
|
||||
'Alter database' => 'Adatbázis módosítása',
|
||||
'Create database' => 'Adatbázis létrehozása',
|
||||
'SQL command' => 'SQL parancs',
|
||||
'Dump' => 'Exportálás',
|
||||
'Logout' => 'Kilépés',
|
||||
'database' => 'adatbázis',
|
||||
'Use' => 'Használ',
|
||||
@@ -179,6 +177,7 @@ $translations = array(
|
||||
'Tables have been truncated.' => 'A tábla felszabadítva.',
|
||||
'Rows' => 'Oszlop',
|
||||
',' => ' ',
|
||||
'0123456789' => '0123456789',
|
||||
'Tables have been moved.' => 'Táblák áthelyezve.',
|
||||
'Move to other database' => 'Áthelyezés másik adatbázisba',
|
||||
'Move' => 'Áthelyez',
|
||||
@@ -238,7 +237,6 @@ $translations = array(
|
||||
'Schema has been dropped.' => 'Séma eldobva.',
|
||||
'Schema has been created.' => 'Séma létrejött.',
|
||||
'Schema has been altered.' => 'Séma módosult.',
|
||||
'schema' => 'séma',
|
||||
'Schema' => 'Séma',
|
||||
'Sequences' => 'Sorozatok',
|
||||
'Create sequence' => 'Sorozat létrehozása',
|
||||
|
||||
@@ -10,11 +10,11 @@ $translations = array(
|
||||
'Logout' => 'Keluar',
|
||||
'Logged as: %s' => 'Masuk sebagai: %s',
|
||||
'Logout successful.' => 'Berhasil keluar.',
|
||||
'Invalid credentials.' => 'Akses invalid.',
|
||||
'Invalid credentials.' => 'Akses tidak sah.',
|
||||
'Language' => 'Bahasa',
|
||||
'Invalid CSRF token. Send the form again.' => 'Token CSRF invalid. Kirim ulang formulir.',
|
||||
'No extension' => 'Ekstensi tidak tersedia',
|
||||
'None of the supported PHP extensions (%s) are available.' => 'Ekstensi PHP yang didukung (%s) tidak tersedia.',
|
||||
'Invalid CSRF token. Send the form again.' => 'Token CSRF tidak sah. Kirim ulang formulir.',
|
||||
'No extension' => 'Ekstensi tidak ada',
|
||||
'None of the supported PHP extensions (%s) are available.' => 'Ekstensi PHP yang didukung (%s) tidak ada.',
|
||||
'Session support must be enabled.' => 'Dukungan sesi harus aktif.',
|
||||
'Session expired, please login again.' => 'Sesi habis, silakan masuk lagi.',
|
||||
'%s version: %s through PHP extension %s' => 'Versi %s: %s dengan ekstensi PHP %s',
|
||||
@@ -44,29 +44,28 @@ $translations = array(
|
||||
'SQL command' => 'Perintah SQL',
|
||||
'%d query(s) executed OK.' => '%d kueri berhasil dijalankan.',
|
||||
'Query executed OK, %d row(s) affected.' => 'Kueri berhasil, %d baris terpengaruh.',
|
||||
'No commands to execute.' => 'Tiada perintah untuk dijalankan.',
|
||||
'Error in query' => 'Kesalahan dalam kueri',
|
||||
'No commands to execute.' => 'Tidak ada perintah untuk dijalankan.',
|
||||
'Error in query' => 'Galat dalam kueri',
|
||||
'Execute' => 'Jalankan',
|
||||
'Stop on error' => 'Hentikan pada kesalahan',
|
||||
'Show only errors' => 'Hanya tampilkan kesalahan',
|
||||
'Stop on error' => 'Hentikan jika galat',
|
||||
'Show only errors' => 'Hanya tampilkan galat',
|
||||
// sprintf() format for time of the command
|
||||
'%.3f s' => '%.3f s',
|
||||
'History' => 'Riwayat',
|
||||
'Clear' => 'Bersihkan',
|
||||
'Edit all' => 'Edit semua',
|
||||
|
||||
'Edit all' => 'Sunting semua',
|
||||
'File upload' => 'Unggah berkas',
|
||||
'From server' => 'Dari server',
|
||||
'Webserver file %s' => 'Berkas server web %s',
|
||||
'Run file' => 'Jalankan berkas',
|
||||
'File does not exist.' => 'Berkas tidak ditemukan.',
|
||||
'File does not exist.' => 'Berkas tidak ada.',
|
||||
'File uploads are disabled.' => 'Pengunggahan berkas dimatikan.',
|
||||
'Unable to upload a file.' => 'Tidak dapat mengunggah berkas.',
|
||||
'Maximum allowed file size is %sB.' => 'Besar berkas yang diizinkan adalah %s bita.',
|
||||
'Too big POST data. Reduce the data or increase the %s configuration directive.' => 'Data POST terlalu besar. Kurangi data atau perbesar pengarah konfigurasi %s.',
|
||||
'Maximum allowed file size is %sB.' => 'Besar berkas yang diizinkan adalah %sB.',
|
||||
'Too big POST data. Reduce the data or increase the %s configuration directive.' => 'Data POST terlalu besar. Kurangi data atau perbesar direktif konfigurasi %s.',
|
||||
|
||||
'Export' => 'Ekspor',
|
||||
'Dump' => 'Ekspor',
|
||||
'Output' => 'Hasil',
|
||||
'open' => 'buka',
|
||||
'save' => 'simpan',
|
||||
@@ -77,22 +76,22 @@ $translations = array(
|
||||
'database' => 'basis data',
|
||||
'Use' => 'Gunakan',
|
||||
'Select database' => 'Pilih basis data',
|
||||
'Invalid database.' => 'Basis data invalid.',
|
||||
'Create new database' => 'Buat basis data baru',
|
||||
'Invalid database.' => 'Basis data tidak sah.',
|
||||
'Database has been dropped.' => 'Basis data berhasil dihapus.',
|
||||
'Databases have been dropped.' => 'Basis data berhasil dihapus.',
|
||||
'Database has been created.' => 'Basis data berhasil dibuat.',
|
||||
'Database has been renamed.' => 'Basis data berhasil diganti nama.',
|
||||
'Database has been renamed.' => 'Basis data berhasil diganti namanya.',
|
||||
'Database has been altered.' => 'Basis data berhasil diubah.',
|
||||
'Alter database' => 'Ubah basis data',
|
||||
'Create database' => 'Buat basis data',
|
||||
'Database schema' => 'Skema basis data',
|
||||
|
||||
// link to current database schema layout
|
||||
'Permanent link' => 'Tautan permanen',
|
||||
'Permanent link' => 'Pranala permanen',
|
||||
|
||||
// thousands separator - must contain single byte
|
||||
',' => '.',
|
||||
'0123456789' => '0123456789',
|
||||
'Engine' => 'Mesin',
|
||||
'Collation' => 'Kolasi',
|
||||
'Data Length' => 'Panjang Data',
|
||||
@@ -113,9 +112,9 @@ $translations = array(
|
||||
'Tables have been copied.' => 'Tabel berhasil disalin.',
|
||||
|
||||
'Routines' => 'Rutin',
|
||||
'Routine has been called, %d row(s) affected.' => array('Rutin telah dipanggil, %d baris terpengaruh.', 'Rutin telah dipanggil, %d baris terpengaruh'),
|
||||
'Routine has been called, %d row(s) affected.' => 'Rutin telah dipanggil, %d baris terpengaruh.',
|
||||
'Call' => 'Panggilan',
|
||||
'Parameter name' => 'Nama paramater',
|
||||
'Parameter name' => 'Nama parameter',
|
||||
'Create procedure' => 'Buat prosedur',
|
||||
'Create function' => 'Buat fungsi',
|
||||
'Routine has been dropped.' => 'Rutin berhasil dihapus.',
|
||||
@@ -123,14 +122,14 @@ $translations = array(
|
||||
'Routine has been created.' => 'Rutin berhasil dibuat.',
|
||||
'Alter function' => 'Ubah fungsi',
|
||||
'Alter procedure' => 'Ubah prosedur',
|
||||
'Return type' => 'Jenis balikan',
|
||||
'Return type' => 'Jenis pengembalian',
|
||||
|
||||
'Events' => 'Peristiwa',
|
||||
'Event has been dropped.' => 'Peristiwa berhasil dihapus.',
|
||||
'Event has been altered.' => 'Peristiwa berhasil diubah.',
|
||||
'Event has been created.' => 'Peristiwa berhasil dibuat.',
|
||||
'Alter event' => 'Ubah peristiwa',
|
||||
'Create event' => 'Buat peristiwa',
|
||||
'Events' => 'Even',
|
||||
'Event has been dropped.' => 'Even berhasil dihapus.',
|
||||
'Event has been altered.' => 'Even berhasil diubah.',
|
||||
'Event has been created.' => 'Even berhasil dibuat.',
|
||||
'Alter event' => 'Ubah even',
|
||||
'Create event' => 'Buat even',
|
||||
'At given time' => 'Pada waktu tertentu',
|
||||
'Every' => 'Setiap',
|
||||
'Schedule' => 'Jadwal',
|
||||
@@ -141,7 +140,7 @@ $translations = array(
|
||||
'Tables' => 'Tabel',
|
||||
'Tables and views' => 'Tabel dan tampilan',
|
||||
'Table' => 'Tabel',
|
||||
'No tables.' => 'Tiada tabel.',
|
||||
'No tables.' => 'Tidak ada tabel.',
|
||||
'Alter table' => 'Ubah tabel',
|
||||
'Create table' => 'Buat tabel',
|
||||
'Table has been dropped.' => 'Tabel berhasil dihapus.',
|
||||
@@ -156,16 +155,16 @@ $translations = array(
|
||||
'Column name' => 'Nama kolom',
|
||||
'Type' => 'Jenis',
|
||||
'Length' => 'Panjang',
|
||||
'Auto Increment' => 'Kenaikan Otomatis',
|
||||
'Auto Increment' => 'Inkrementasi Otomatis',
|
||||
'Options' => 'Opsi',
|
||||
'Comment' => 'Komentar',
|
||||
'Default values' => 'Nilai bawaan',
|
||||
'Drop' => 'Hapus',
|
||||
'Are you sure?' => 'Anda yakin',
|
||||
'Are you sure?' => 'Anda yakin?',
|
||||
'Move up' => 'Naik',
|
||||
'Move down' => 'Turun',
|
||||
'Remove' => 'Hapus',
|
||||
'Maximum number of allowed fields exceeded. Please increase %s.' => 'Jumlah ruas maksimum yang diizinkan dilewati. Harap naikkan %s.',
|
||||
'Maximum number of allowed fields exceeded. Please increase %s.' => 'Sudah lebih dumlah ruas maksimum yang diizinkan. Harap naikkan %s.',
|
||||
|
||||
'Partition by' => 'Partisi menurut',
|
||||
'Partitions' => 'Partisi',
|
||||
@@ -202,15 +201,15 @@ $translations = array(
|
||||
'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.' => 'Kolom sumber dan sasaran harus memiliki jenis data yang sama. Kolom sasaran harus memiliki indeks dan data rujukan harus ada.',
|
||||
|
||||
'Triggers' => 'Picu',
|
||||
'Add trigger' => 'Tambah picu',
|
||||
'Trigger has been dropped.' => 'Picu berhasil dihapus.',
|
||||
'Trigger has been altered.' => 'Picu berhasil diubah.',
|
||||
'Trigger has been created.' => 'Picu berhasil dibuat.',
|
||||
'Alter trigger' => 'Ubah picu',
|
||||
'Create trigger' => 'Buat picu',
|
||||
'Triggers' => 'Pemicu',
|
||||
'Add trigger' => 'Tambah pemicu',
|
||||
'Trigger has been dropped.' => 'Pemicu berhasil dihapus.',
|
||||
'Trigger has been altered.' => 'Pemicu berhasil diubah.',
|
||||
'Trigger has been created.' => 'Pemicu berhasil dibuat.',
|
||||
'Alter trigger' => 'Ubah pemicu',
|
||||
'Create trigger' => 'Buat pemicu',
|
||||
'Time' => 'Waktu',
|
||||
'Event' => 'Peristiwa',
|
||||
'Event' => 'Even',
|
||||
'Name' => 'Nama',
|
||||
|
||||
'select' => 'pilih',
|
||||
@@ -221,14 +220,14 @@ $translations = array(
|
||||
'Search' => 'Cari',
|
||||
'anywhere' => 'di mana pun',
|
||||
'Search data in tables' => 'Cari data dalam tabel',
|
||||
'Sort' => 'Urutan',
|
||||
'Sort' => 'Urutkan',
|
||||
'descending' => 'menurun',
|
||||
'Limit' => 'Limit',
|
||||
'Limit' => 'Batas',
|
||||
'Text length' => 'Panjang teks',
|
||||
'Action' => 'Tindakan',
|
||||
'Full table scan' => 'Pindai tabel lengkap',
|
||||
'Unable to select the table' => 'Gagal memilih tabel',
|
||||
'No rows.' => 'Tiada baris.',
|
||||
'No rows.' => 'Tidak ada baris.',
|
||||
'%d row(s)' => '%d baris',
|
||||
'Page' => 'Halaman',
|
||||
'last' => 'terakhir',
|
||||
@@ -239,7 +238,7 @@ $translations = array(
|
||||
'%d row(s) have been imported.' => '%d baris berhasil diimpor.',
|
||||
|
||||
// in-place editing in select
|
||||
'Use edit link to modify this value.' => 'Gunakan tautan edit untuk mengubah nilai ini.',
|
||||
'Use edit link to modify this value.' => 'Gunakan pranala suntingan untuk mengubah nilai ini.',
|
||||
|
||||
// %s can contain auto-increment value
|
||||
'Item%s has been inserted.' => 'Entri%s berhasil disisipkan.',
|
||||
@@ -247,30 +246,30 @@ $translations = array(
|
||||
'Item has been updated.' => 'Entri berhasil diperbarui.',
|
||||
'%d item(s) have been affected.' => '%d entri terpengaruh.',
|
||||
'New item' => 'Entri baru',
|
||||
'original' => 'orisinal',
|
||||
'original' => 'asli',
|
||||
// label for value '' in enum data type
|
||||
'empty' => 'kosong',
|
||||
'edit' => 'edit',
|
||||
'Edit' => 'Edit',
|
||||
'edit' => 'sunting',
|
||||
'Edit' => 'Sunting',
|
||||
'Insert' => 'Sisipkan',
|
||||
'Save' => 'Simpan',
|
||||
'Save and continue edit' => 'Simpan dan terus mengedit',
|
||||
'Save and insert next' => 'Simpan dan sisipkan yang lain',
|
||||
'Save and continue edit' => 'Simpan dan lanjut menyunting',
|
||||
'Save and insert next' => 'Simpan dan sisipkan berikutnya',
|
||||
'Clone' => 'Gandakan',
|
||||
'Delete' => 'Hapus',
|
||||
|
||||
'E-mail' => 'Surel',
|
||||
'From' => 'Dari',
|
||||
'Subject' => 'Subjek',
|
||||
'Subject' => 'Judul',
|
||||
'Attachments' => 'Lampiran',
|
||||
'Send' => 'Kirim',
|
||||
'%d e-mail(s) have been sent.' => array('%d surel berhasil dikirim.', '%d surel berhasil dikirim'),
|
||||
'%d e-mail(s) have been sent.' => '%d surel berhasil dikirim.',
|
||||
|
||||
// data type descriptions
|
||||
'Numbers' => 'Angka',
|
||||
'Date and time' => 'Tanggal dan waktu',
|
||||
'Strings' => 'String',
|
||||
'Binary' => 'Biner',
|
||||
'Binary' => 'Binari',
|
||||
'Lists' => 'Daftar',
|
||||
'Network' => 'Jaringan',
|
||||
'Geometry' => 'Geometri',
|
||||
@@ -297,9 +296,8 @@ $translations = array(
|
||||
'Schema has been dropped.' => 'Skema berhasil dihapus.',
|
||||
'Schema has been created.' => 'Skema berhasil dibuat.',
|
||||
'Schema has been altered.' => 'Skema berhasil diubah.',
|
||||
'schema' => 'skema',
|
||||
'Schema' => 'Skema',
|
||||
'Invalid schema.' => 'Skema invalid.',
|
||||
'Invalid schema.' => 'Skema tidak sah.',
|
||||
|
||||
// PostgreSQL sequences support
|
||||
'Sequences' => 'Deret',
|
||||
|
||||
@@ -8,7 +8,6 @@ $translations = array(
|
||||
'Password' => 'Password',
|
||||
'Select database' => 'Seleziona database',
|
||||
'Invalid database.' => 'Database non valido.',
|
||||
'Create new database' => 'Crea nuovo database',
|
||||
'Table has been dropped.' => 'Tabella eliminata.',
|
||||
'Table has been altered.' => 'Tabella modificata.',
|
||||
'Table has been created.' => 'Tabella creata.',
|
||||
@@ -31,7 +30,6 @@ $translations = array(
|
||||
'Alter database' => 'Modifica database',
|
||||
'Create database' => 'Crea database',
|
||||
'SQL command' => 'Comando SQL',
|
||||
'Dump' => 'Dump',
|
||||
'Logout' => 'Esci',
|
||||
'database' => 'database',
|
||||
'Use' => 'Usa',
|
||||
@@ -179,6 +177,7 @@ $translations = array(
|
||||
'Data Free' => 'Dati liberi',
|
||||
'Rows' => 'Righe',
|
||||
',' => '.',
|
||||
'0123456789' => '0123456789',
|
||||
'Analyze' => 'Analizza',
|
||||
'Optimize' => 'Ottimizza',
|
||||
'Check' => 'Controlla',
|
||||
@@ -225,7 +224,6 @@ $translations = array(
|
||||
'Permanent login' => 'Login permanente',
|
||||
'Databases have been dropped.' => 'Database eliminati.',
|
||||
'Search data in tables' => 'Cerca nelle tabelle',
|
||||
'schema' => 'schema',
|
||||
'Schema' => 'Schema',
|
||||
'Alter schema' => 'Modifica schema',
|
||||
'Create schema' => 'Crea schema',
|
||||
|
||||
@@ -8,7 +8,6 @@ $translations = array(
|
||||
'Password' => 'パスワード',
|
||||
'Select database' => 'データベースを選択してください',
|
||||
'Invalid database.' => '不正なデータベース',
|
||||
'Create new database' => '新規にデータベースを作成',
|
||||
'Table has been dropped.' => 'テーブルを削除しました',
|
||||
'Table has been altered.' => 'テーブルを変更しました',
|
||||
'Table has been created.' => 'テーブルを作成しました',
|
||||
@@ -31,7 +30,6 @@ $translations = array(
|
||||
'Alter database' => 'データベースを変更',
|
||||
'Create database' => 'データベースを作成',
|
||||
'SQL command' => 'SQLコマンド',
|
||||
'Dump' => 'ダンプ',
|
||||
'Logout' => 'ログアウト',
|
||||
'database' => 'データベース',
|
||||
'Use' => '使用',
|
||||
@@ -175,6 +173,7 @@ $translations = array(
|
||||
'Data Free' => '空き',
|
||||
'Rows' => '行数',
|
||||
',' => ',',
|
||||
'0123456789' => '0123456789',
|
||||
'Analyze' => '分析',
|
||||
'Optimize' => '最適化',
|
||||
'Check' => 'チェック',
|
||||
@@ -226,7 +225,6 @@ $translations = array(
|
||||
'Permanent login' => '永続的にログイン',
|
||||
'Databases have been dropped.' => 'データベースを削除しました',
|
||||
'Search data in tables' => 'データを検索する',
|
||||
'schema' => 'スキーマ',
|
||||
'Schema' => 'スキーマ',
|
||||
'Alter schema' => 'スキーマ変更',
|
||||
'Create schema' => 'スキーマ追加',
|
||||
|
||||
@@ -8,7 +8,6 @@ $translations = array(
|
||||
'Password' => '비밀번호',
|
||||
'Select database' => '데이터베이스를 선택하십시오.',
|
||||
'Invalid database.' => '잘못된 데이터베이스입니다.',
|
||||
'Create new database' => '새 데이터베이스 만들기',
|
||||
'Table has been dropped.' => '테이블을 삭제했습니다.',
|
||||
'Table has been altered.' => '테이블을 변경했습니다.',
|
||||
'Table has been created.' => '테이블을 만들었습니다.',
|
||||
@@ -31,7 +30,6 @@ $translations = array(
|
||||
'Alter database' => '데이터베이스 변경',
|
||||
'Create database' => '데이터베이스 만들기',
|
||||
'SQL command' => 'SQL 명령',
|
||||
'Dump' => '덤프',
|
||||
'Logout' => '로그아웃',
|
||||
'database' => '데이터베이스',
|
||||
'Use' => '사용',
|
||||
@@ -175,6 +173,7 @@ $translations = array(
|
||||
'Data Free' => '여유',
|
||||
'Rows' => '행',
|
||||
',' => ',',
|
||||
'0123456789' => '0123456789',
|
||||
'Analyze' => '분석',
|
||||
'Optimize' => '최적화',
|
||||
'Check' => '확인',
|
||||
@@ -226,7 +225,6 @@ $translations = array(
|
||||
'Permanent login' => '영구적으로 로그인',
|
||||
'Databases have been dropped.' => '데이터베이스를 삭제했습니다.',
|
||||
'Search data in tables' => '데이터 검색',
|
||||
'schema' => '스키마',
|
||||
'Schema' => '스키마',
|
||||
'Alter schema' => '스키마 변경',
|
||||
'Create schema' => '스키마 추가',
|
||||
|
||||
@@ -66,7 +66,6 @@ $translations = array(
|
||||
'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',
|
||||
'Dump' => 'Eksportuoti',
|
||||
'Output' => 'Išvestis',
|
||||
'open' => 'atidaryti',
|
||||
'save' => 'išsaugoti',
|
||||
@@ -78,7 +77,6 @@ $translations = array(
|
||||
'Use' => 'Naudoti',
|
||||
'Select database' => 'Pasirinkti duomenų bazę',
|
||||
'Invalid database.' => 'Neteisinga duomenų bazė.',
|
||||
'Create new database' => 'Sukurti naują duomenų bazę',
|
||||
'Database has been dropped.' => 'Duomenų bazė panaikinta.',
|
||||
'Databases have been dropped.' => 'Duomenų bazės panaikintos.',
|
||||
'Database has been created.' => 'Duomenų bazė sukurta.',
|
||||
@@ -93,6 +91,7 @@ $translations = array(
|
||||
|
||||
// thousands separator - must contain single byte
|
||||
',' => ' ',
|
||||
'0123456789' => '0123456789',
|
||||
'Engine' => 'Variklis',
|
||||
'Collation' => 'Lyginimas',
|
||||
'Data Length' => 'Duomenų ilgis',
|
||||
@@ -293,7 +292,6 @@ $translations = array(
|
||||
'Schema has been dropped.' => 'Schema pašalinta.',
|
||||
'Schema has been created.' => 'Schema sukurta.',
|
||||
'Schema has been altered.' => 'Schema pakeista.',
|
||||
'schema' => 'schema',
|
||||
'Schema' => 'Schema',
|
||||
'Invalid schema.' => 'Neteisinga schema.',
|
||||
|
||||
|
||||
@@ -8,7 +8,6 @@ $translations = array(
|
||||
'Password' => 'Wachtwoord',
|
||||
'Select database' => 'Database selecteren',
|
||||
'Invalid database.' => 'Ongeldige database.',
|
||||
'Create new database' => 'Nieuwe database',
|
||||
'Table has been dropped.' => 'Tabel verwijderd.',
|
||||
'Table has been altered.' => 'Tabel aangepast.',
|
||||
'Table has been created.' => 'Tabel aangemaakt.',
|
||||
@@ -32,7 +31,6 @@ $translations = array(
|
||||
'Alter database' => 'Database aanpassen',
|
||||
'Create database' => 'Database aanmaken',
|
||||
'SQL command' => 'SQL opdracht',
|
||||
'Dump' => 'Exporteer',
|
||||
'Logout' => 'Uitloggen',
|
||||
'database' => 'database',
|
||||
'Use' => 'Gebruik',
|
||||
@@ -62,7 +60,7 @@ $translations = array(
|
||||
'Action' => 'Acties',
|
||||
'edit' => 'bewerk',
|
||||
'Page' => 'Pagina',
|
||||
'Query executed OK, %d row(s) affected.' => array('Query uitgevoerd, %d rij geraakt.', 'Query uitgevoerd, %d rijen geraakt.'),
|
||||
'Query executed OK, %d row(s) affected.' => array('Query uitgevoerd, %d rij geraakt.', 'Query uitgevoerd, %d rijen beïnvloed.'),
|
||||
'Error in query' => 'Fout in query',
|
||||
'Execute' => 'Uitvoeren',
|
||||
'Table' => 'Tabel',
|
||||
@@ -180,6 +178,7 @@ $translations = array(
|
||||
'Data Free' => 'Data Vrij',
|
||||
'Rows' => 'Rijen',
|
||||
',' => '.',
|
||||
'0123456789' => '0123456789',
|
||||
'Analyze' => 'Analyseer',
|
||||
'Optimize' => 'Optimaliseer',
|
||||
'Check' => 'Controleer',
|
||||
@@ -225,7 +224,6 @@ $translations = array(
|
||||
'%d in total' => '%d in totaal',
|
||||
'Permanent login' => 'Blijf aangemeld',
|
||||
'Search data in tables' => 'Zoeken in database',
|
||||
'schema' => 'schema',
|
||||
'Schema' => 'Schema',
|
||||
'Alter schema' => 'Schema wijzigen',
|
||||
'Create schema' => 'Schema maken',
|
||||
|
||||
@@ -10,7 +10,7 @@ $translations = array(
|
||||
'Logged as: %s' => 'Logget inn som: %s',
|
||||
'Logout successful.' => 'Utlogging vellykket.',
|
||||
'Invalid credentials.' => 'Ugylding innloggingsinformasjon.',
|
||||
'Master password expired. <a href="http://www.adminer.org/en/extension/" target="_blank">Implement</a> %s method to make it permanent.' => 'Master-passord er utløpt. <a href="http://www.adminer.org/en/extension/" target="_blank">Implementer</a> en metode for %s for å gjøre det permanent.',
|
||||
'Master password expired. <a href="https://www.adminer.org/en/extension/" target="_blank">Implement</a> %s method to make it permanent.' => 'Master-passord er utløpt. <a href="https://www.adminer.org/en/extension/" target="_blank">Implementer</a> en metode for %s for å gjøre det permanent.',
|
||||
'Language' => 'Språk',
|
||||
'Invalid CSRF token. Send the form again.' => 'Ugylding CSRF-token - Send inn skjemaet igjen.',
|
||||
'No extension' => 'Ingen utvidelse',
|
||||
@@ -58,7 +58,6 @@ $translations = array(
|
||||
'Too big POST data. Reduce the data or increase the %s configuration directive.' => 'For stor datamengde i skjemaet. Reduser datamengden, eller øk størrelsen på %s-konfigurasjonsdirektivet.',
|
||||
'You can upload a big SQL file via FTP and import it from server.' => 'Du kan laste opp en stor SQL-fil via FTP og importere den fra serveren.',
|
||||
'Export' => 'Eksport',
|
||||
'Dump' => 'Dump',
|
||||
'Output' => 'Resultat',
|
||||
'open' => 'åpne',
|
||||
'save' => 'lagre',
|
||||
@@ -69,7 +68,6 @@ $translations = array(
|
||||
'Use' => 'Bruk',
|
||||
'Select database' => 'Velg database',
|
||||
'Invalid database.' => 'Ugyldig database.',
|
||||
'Create new database' => 'Lag ny database',
|
||||
'Database has been dropped.' => 'Databasen har blitt slettet.',
|
||||
'Databases have been dropped.' => 'Databasene har blitt slettet.',
|
||||
'Database has been created.' => 'Databasen er opprettet.',
|
||||
@@ -80,6 +78,7 @@ $translations = array(
|
||||
'Database schema' => 'Databaseskjema',
|
||||
'Permanent link' => 'Permanent lenke',
|
||||
',' => ' ',
|
||||
'0123456789' => '0123456789',
|
||||
'Engine' => 'Motor',
|
||||
'Collation' => 'Tekstsortering',
|
||||
'Data Length' => 'Datalengde',
|
||||
@@ -266,7 +265,6 @@ $translations = array(
|
||||
'Schema has been dropped.' => 'Skjemaet er slettet.',
|
||||
'Schema has been created.' => 'Skjemaet er opprettet.',
|
||||
'Schema has been altered.' => 'Skjemaet er endret.',
|
||||
'schema' => 'skjema',
|
||||
'Schema' => 'Skjema',
|
||||
'Invalid schema.' => 'Ugylding skjema.',
|
||||
'Sequences' => 'Sekvenser',
|
||||
|
||||
@@ -11,9 +11,11 @@ $translations = array(
|
||||
'Logged as: %s' => 'Zalogowany jako: %s',
|
||||
'Logout successful.' => 'Wylogowano pomyślnie.',
|
||||
'Invalid credentials.' => 'Nieprawidłowe dane logowania.',
|
||||
'Master password expired. <a href="http://www.adminer.org/en/extension/" target="_blank">Implement</a> %s method to make it permanent.' => 'Ważność hasła głównego wygasła. <a href="http://www.adminer.org/pl/extension/" target="_blank">Zaimplementuj</a> własną metodę %s, aby ustawić je na stałe.',
|
||||
'Too many unsuccessful logins, try again in %d minute(s).' => array('Za dużo nieudanych prób logowania, spróbuj ponownie za %d minutę.', 'Za dużo nieudanych prób logowania, spróbuj ponownie za %d minuty.', 'Za dużo nieudanych prób logowania, spróbuj ponownie za %d minut.'),
|
||||
'Master password expired. <a href="https://www.adminer.org/en/extension/" target="_blank">Implement</a> %s method to make it permanent.' => 'Ważność hasła głównego wygasła. <a href="https://www.adminer.org/pl/extension/" target="_blank">Zaimplementuj</a> własną metodę %s, aby ustawić je na stałe.',
|
||||
'Language' => 'Język',
|
||||
'Invalid CSRF token. Send the form again.' => 'Nieprawidłowy token CSRF. Spróbuj wysłać formularz ponownie.',
|
||||
'If you did not send this request from Adminer then close this page.' => 'Jeżeli nie wywołałeś tej strony z Adminera, zamknij to okno.',
|
||||
'No extension' => 'Brak rozszerzenia',
|
||||
'None of the supported PHP extensions (%s) are available.' => 'Żadne z rozszerzeń PHP umożliwiających połączenie się z bazą danych (%s) nie jest dostępne.',
|
||||
'Session support must be enabled.' => 'Wymagana jest obsługa sesji w PHP.',
|
||||
@@ -66,9 +68,9 @@ $translations = array(
|
||||
'Maximum allowed file size is %sB.' => 'Maksymalna wielkość pliku to %sB.',
|
||||
'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 are offline.' => 'Jesteś offline.',
|
||||
|
||||
'Export' => 'Eksport',
|
||||
'Dump' => 'Eksport',
|
||||
'Output' => 'Rezultat',
|
||||
'open' => 'otwórz',
|
||||
'save' => 'zapisz',
|
||||
@@ -80,7 +82,6 @@ $translations = array(
|
||||
'Use' => 'Wybierz',
|
||||
'Select database' => 'Wybierz bazę danych',
|
||||
'Invalid database.' => 'Nie znaleziono bazy danych.',
|
||||
'Create new database' => 'Utwórz nową bazę danych',
|
||||
'Database has been dropped.' => 'Baza danych została usunięta.',
|
||||
'Databases have been dropped.' => 'Bazy danych zostały usunięte.',
|
||||
'Database has been created.' => 'Baza danych została utworzona.',
|
||||
@@ -95,6 +96,7 @@ $translations = array(
|
||||
|
||||
// thousands separator - must contain single byte
|
||||
',' => ' ',
|
||||
'0123456789' => '0123456789',
|
||||
'Engine' => 'Składowanie',
|
||||
'Collation' => 'Porównywanie znaków',
|
||||
'Data Length' => 'Rozmiar danych',
|
||||
@@ -104,6 +106,7 @@ $translations = array(
|
||||
'%d in total' => '%d w sumie',
|
||||
'Analyze' => 'Analizuj',
|
||||
'Optimize' => 'Optymalizuj',
|
||||
'Vacuum' => 'Wyczyść',
|
||||
'Check' => 'Sprawdź',
|
||||
'Repair' => 'Napraw',
|
||||
'Truncate' => 'Opróżnij',
|
||||
@@ -161,9 +164,12 @@ $translations = array(
|
||||
'Auto Increment' => 'Auto Increment',
|
||||
'Options' => 'Opcje',
|
||||
'Comment' => 'Komentarz',
|
||||
'Default value' => 'Wartość domyślna',
|
||||
'Default values' => 'Wartości domyślne',
|
||||
'Drop' => 'Usuń',
|
||||
'Are you sure?' => 'Czy jesteś pewien?',
|
||||
'Size' => 'Wielkość',
|
||||
'Compute' => 'Oblicz',
|
||||
'Move up' => 'Przesuń w górę',
|
||||
'Move down' => 'Przesuń w dół',
|
||||
'Remove' => 'Usuń',
|
||||
@@ -175,6 +181,7 @@ $translations = array(
|
||||
'Values' => 'Wartości',
|
||||
|
||||
'View' => 'Perspektywa',
|
||||
'Materialized view' => 'Zmaterializowana perspektywa',
|
||||
'View has been dropped.' => 'Perspektywa została usunięta.',
|
||||
'View has been altered.' => 'Perspektywa została zmieniona.',
|
||||
'View has been created.' => 'Perspektywa została utworzona.',
|
||||
@@ -244,6 +251,7 @@ $translations = array(
|
||||
'File must be in UTF-8 encoding.' => 'Kodowanie pliku musi być ustawione na UTF-8.',
|
||||
|
||||
// in-place editing in select
|
||||
'Modify' => 'Zmień',
|
||||
'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ść.',
|
||||
|
||||
@@ -260,8 +268,10 @@ $translations = array(
|
||||
'Edit' => 'Edytuj',
|
||||
'Insert' => 'Dodaj',
|
||||
'Save' => 'Zapisz zmiany',
|
||||
'Saving' => 'Zapisywanie',
|
||||
'Save and continue edit' => 'Zapisz i kontynuuj edycję',
|
||||
'Save and insert next' => 'Zapisz i dodaj następny',
|
||||
'Selected' => 'Zaznaczone',
|
||||
'Clone' => 'Duplikuj',
|
||||
'Delete' => 'Usuń',
|
||||
'You have no privileges to update this table.' => 'Brak uprawnień do edycji tej tabeli',
|
||||
@@ -304,7 +314,6 @@ $translations = array(
|
||||
'Schema has been dropped.' => 'Schemat został usunięty.',
|
||||
'Schema has been created.' => 'Schemat został utworzony.',
|
||||
'Schema has been altered.' => 'Schemat został zmieniony.',
|
||||
'schema' => 'schemat',
|
||||
'Schema' => 'Schemat',
|
||||
'Invalid schema.' => 'Nieprawidłowy schemat.',
|
||||
|
||||
|
||||
@@ -1,18 +1,17 @@
|
||||
<?php
|
||||
$translations = array(
|
||||
'Login' => 'Entrar',
|
||||
'Logout successful.' => 'Saida bem sucedida.',
|
||||
'Logout successful.' => 'Saída bem sucedida.',
|
||||
'Invalid credentials.' => 'Identificação inválida.',
|
||||
'Server' => 'Servidor',
|
||||
'Username' => 'Usuário',
|
||||
'Password' => 'Senha',
|
||||
'Select database' => 'Selecionar Base de dados',
|
||||
'Invalid database.' => 'Base de dados inválida.',
|
||||
'Create new database' => 'Criar nova base de dados',
|
||||
'Table has been dropped.' => 'Tabela eliminada.',
|
||||
'Table has been altered.' => 'Tabela modificada.',
|
||||
'Table has been created.' => 'Tabela criada.',
|
||||
'Alter table' => 'Modificar estrutura',
|
||||
'Table has been dropped.' => 'A Tabela foi eliminada.',
|
||||
'Table has been altered.' => 'A Tabela foi alterada.',
|
||||
'Table has been created.' => 'A Tabela foi criada.',
|
||||
'Alter table' => 'Alterar estrutura',
|
||||
'Create table' => 'Criar tabela',
|
||||
'Table name' => 'Nome da tabela',
|
||||
'engine' => 'motor',
|
||||
@@ -23,32 +22,31 @@ $translations = array(
|
||||
'Auto Increment' => 'Incremento Automático',
|
||||
'Options' => 'Opções',
|
||||
'Save' => 'Salvar',
|
||||
'Drop' => 'Remover',
|
||||
'Database has been dropped.' => 'Base de dados eliminada.',
|
||||
'Database has been created.' => 'Base de dados criada.',
|
||||
'Database has been renamed.' => 'Base de dados renomeada.',
|
||||
'Database has been altered.' => 'Base de dados modificada.',
|
||||
'Alter database' => 'Modificar Base de dados',
|
||||
'Drop' => 'Apagar',
|
||||
'Database has been dropped.' => 'A Base de dados foi apagada.',
|
||||
'Database has been created.' => 'A Base de dados foi criada.',
|
||||
'Database has been renamed.' => 'A Base de dados foi renomeada.',
|
||||
'Database has been altered.' => 'A Base de dados foi alterada.',
|
||||
'Alter database' => 'Alterar Base de dados',
|
||||
'Create database' => 'Criar Base de dados',
|
||||
'SQL command' => 'Comando SQL',
|
||||
'Dump' => 'Exportar',
|
||||
'Logout' => 'Sair',
|
||||
'database' => 'base de dados',
|
||||
'Use' => 'Usar',
|
||||
'No tables.' => 'Não existem tabelas.',
|
||||
'select' => 'registros',
|
||||
'Item has been deleted.' => 'Registro eliminado.',
|
||||
'Item has been updated.' => 'Registro modificado.',
|
||||
'Item%s has been inserted.' => 'Registro%s inserido.',
|
||||
'Edit' => 'Modificar',
|
||||
'select' => 'selecionar',
|
||||
'Item has been deleted.' => 'O Registro foi deletado.',
|
||||
'Item has been updated.' => 'O Registro foi atualizado.',
|
||||
'Item%s has been inserted.' => 'O Registro%s foi inserido.',
|
||||
'Edit' => 'Editar',
|
||||
'Insert' => 'Inserir',
|
||||
'Save and insert next' => 'Salvar e inserir outro',
|
||||
'Delete' => 'Apagar',
|
||||
'Delete' => 'Deletar',
|
||||
'Database' => 'Base de dados',
|
||||
'Routines' => 'Procedimentos',
|
||||
'Indexes have been altered.' => 'Índices modificados.',
|
||||
'Routines' => 'Rotinas',
|
||||
'Indexes have been altered.' => 'Os Índices foram alterados.',
|
||||
'Indexes' => 'Índices',
|
||||
'Alter indexes' => 'Modificar índices',
|
||||
'Alter indexes' => 'Alterar índices',
|
||||
'Add next' => 'Adicionar proximo',
|
||||
'Language' => 'Idioma',
|
||||
'Select' => 'Selecionar',
|
||||
@@ -59,82 +57,82 @@ $translations = array(
|
||||
'Limit' => 'Limite',
|
||||
'No rows.' => 'Não existem registros.',
|
||||
'Action' => 'Ação',
|
||||
'edit' => 'modificar',
|
||||
'edit' => 'editar',
|
||||
'Page' => 'Página',
|
||||
'Query executed OK, %d row(s) affected.' => array('Consulta executada, %d registro afetado.', 'Consulta executada, %d registros afetados.'),
|
||||
'Error in query' => 'Erro na consulta',
|
||||
'Execute' => 'Executar',
|
||||
'Table' => 'Tabela',
|
||||
'Foreign keys' => 'Chaves foráneas',
|
||||
'Foreign keys' => 'Chaves estrangeiras',
|
||||
'Triggers' => 'Triggers',
|
||||
'View' => 'Visualizar',
|
||||
'View' => 'Visão',
|
||||
'Unable to select the table' => 'Não é possivel selecionar a Tabela',
|
||||
'Invalid CSRF token. Send the form again.' => 'Token CSRF inválido. Enviar o formulario novamente.',
|
||||
'Comment' => 'Comentário',
|
||||
'Default values' => 'Valores predeterminados',
|
||||
'Default values' => 'Valores padrões',
|
||||
'%d byte(s)' => array('%d byte', '%d bytes'),
|
||||
'No commands to execute.' => 'Nenhum comando para executar.',
|
||||
'Unable to upload a file.' => 'Não é possível enviar o arquivo.',
|
||||
'File upload' => 'Importar arquivo',
|
||||
'File uploads are disabled.' => 'Importação de arquivos desablilitada.',
|
||||
'Routine has been called, %d row(s) affected.' => array('Consulta executada, %d registro afetado.', 'Consulta executada, %d registros afetados.'),
|
||||
'Routine has been called, %d row(s) affected.' => array('Rotina executada, %d registro afetado.', 'Rotina executada, %d registros afetados.'),
|
||||
'Call' => 'Chamar',
|
||||
'No extension' => 'Não há extension',
|
||||
'None of the supported PHP extensions (%s) are available.' => 'Nenhuma das extensões PHP suportadas (%s) está disponivel.',
|
||||
'Session support must be enabled.' => 'Devem estar habilitadas as sessões.',
|
||||
'Session expired, please login again.' => 'Sessão expirada, por favor entre sua Chave de novo.',
|
||||
'Session support must be enabled.' => 'Suporte a sessões deve estar habilitado.',
|
||||
'Session expired, please login again.' => 'Sessão expirada, por favor logue-se novamente.',
|
||||
'Text length' => 'Tamanho de texto',
|
||||
'Foreign key has been dropped.' => 'Chave externa eliminada.',
|
||||
'Foreign key has been altered.' => 'Chave externa modificada.',
|
||||
'Foreign key has been created.' => 'Chave externa criada.',
|
||||
'Foreign key' => 'Chave externa',
|
||||
'Foreign key has been dropped.' => 'A Chave Estrangeira foi apagada.',
|
||||
'Foreign key has been altered.' => 'A Chave Estrangeira foi alterada.',
|
||||
'Foreign key has been created.' => 'A Chave Estrangeira foi criada.',
|
||||
'Foreign key' => 'Chave Estrangeira',
|
||||
'Target table' => 'Tabela de destino',
|
||||
'Change' => 'Modificar',
|
||||
'Source' => 'Origem',
|
||||
'Target' => 'Destino',
|
||||
'Add column' => 'Adicionar coluna',
|
||||
'Alter' => 'Modificar',
|
||||
'Add foreign key' => 'Adicionar Chave foránea',
|
||||
'Alter' => 'Alterar',
|
||||
'Add foreign key' => 'Adicionar Chave Estrangeira',
|
||||
'ON DELETE' => 'ON DELETE',
|
||||
'ON UPDATE' => 'ON UPDATE',
|
||||
'Index Type' => 'Tipo de índice',
|
||||
'Column (length)' => 'coluna (tamanho)',
|
||||
'View has been dropped.' => 'Vista eliminada.',
|
||||
'View has been altered.' => 'Vista modificada.',
|
||||
'View has been created.' => 'Vista criada.',
|
||||
'Alter view' => 'Modificar vista',
|
||||
'Create view' => 'Criar vista',
|
||||
'Column (length)' => 'Coluna (tamanho)',
|
||||
'View has been dropped.' => 'A Visão foi apagada.',
|
||||
'View has been altered.' => 'A Visão foi alterada.',
|
||||
'View has been created.' => 'A Visão foi criada.',
|
||||
'Alter view' => 'Alterar visão',
|
||||
'Create view' => 'Criar visão',
|
||||
'Name' => 'Nome',
|
||||
'Process list' => 'Lista de processos',
|
||||
'%d process(es) have been killed.' => array('%d processo terminado.', '%d processos terminados.'),
|
||||
'%d process(es) have been killed.' => array('%d processo foi terminado.', '%d processos foram terminados.'),
|
||||
'Kill' => 'Parar',
|
||||
'Parameter name' => 'Nome de Parâmetro',
|
||||
'Database schema' => 'Esquema de Base de dados',
|
||||
'Create procedure' => 'Criar procedimento',
|
||||
'Create function' => 'Criar função',
|
||||
'Routine has been dropped.' => 'Procedimento eliminado.',
|
||||
'Routine has been altered.' => 'Procedimento modificado.',
|
||||
'Routine has been created.' => 'Procedimento criado.',
|
||||
'Alter function' => 'Modificar Função',
|
||||
'Alter procedure' => 'Modificar procedimento',
|
||||
'Return type' => 'Tipo de valor de regreso',
|
||||
'Routine has been dropped.' => 'A Rotina foi apagada.',
|
||||
'Routine has been altered.' => 'A Rotina foi alterada.',
|
||||
'Routine has been created.' => 'A Rotina foi criada.',
|
||||
'Alter function' => 'Alterar função',
|
||||
'Alter procedure' => 'Alterar procedimento',
|
||||
'Return type' => 'Tipo de valor de retorno',
|
||||
'Add trigger' => 'Adicionar trigger',
|
||||
'Trigger has been dropped.' => 'Trigger eliminado.',
|
||||
'Trigger has been altered.' => 'Trigger modificado.',
|
||||
'Trigger has been created.' => 'Trigger criado.',
|
||||
'Alter trigger' => 'Modificar Trigger',
|
||||
'Trigger has been dropped.' => 'O Trigger foi apagado.',
|
||||
'Trigger has been altered.' => 'O Trigger foi alterado.',
|
||||
'Trigger has been created.' => 'O Trigger foi criado.',
|
||||
'Alter trigger' => 'Alterar Trigger',
|
||||
'Create trigger' => 'Adicionar Trigger',
|
||||
'Time' => 'Tempo',
|
||||
'Event' => 'Evento',
|
||||
'%s version: %s through PHP extension %s' => 'Versão %s: %s através da extensão PHP %s',
|
||||
'%d row(s)' => array('%d registro', '%d registros'),
|
||||
'Remove' => 'Remover',
|
||||
'Are you sure?' => 'Está seguro?',
|
||||
'Are you sure?' => 'Você tem certeza?',
|
||||
'Privileges' => 'Privilégios',
|
||||
'Create user' => 'Criar Usuário',
|
||||
'User has been dropped.' => 'Usuário eliminado.',
|
||||
'User has been altered.' => 'Usuário modificado.',
|
||||
'User has been created.' => 'Usuário criado.',
|
||||
'User has been dropped.' => 'O Usuário foi apagado.',
|
||||
'User has been altered.' => 'O Usuário foi alterado.',
|
||||
'User has been created.' => 'O Usuário foi criado.',
|
||||
'Hashed' => 'Hash',
|
||||
'Column' => 'Coluna',
|
||||
'Routine' => 'Rotina',
|
||||
@@ -148,14 +146,14 @@ $translations = array(
|
||||
'Aggregation' => 'Adições',
|
||||
'Export' => 'Exportar',
|
||||
'Output' => 'Saída',
|
||||
'open' => 'mostrar',
|
||||
'save' => 'salvas',
|
||||
'open' => 'abrir',
|
||||
'save' => 'salvar',
|
||||
'Format' => 'Formato',
|
||||
'Tables' => 'Tabelas',
|
||||
'Data' => 'Dados',
|
||||
'Event has been dropped.' => 'Evento eliminado.',
|
||||
'Event has been altered.' => 'Evento modificado.',
|
||||
'Event has been created.' => 'Evento criado.',
|
||||
'Event has been dropped.' => 'O Evento foi apagado.',
|
||||
'Event has been altered.' => 'O Evento foi alterado.',
|
||||
'Event has been created.' => 'O Evento foi criado.',
|
||||
'Alter event' => 'Modificar Evento',
|
||||
'Create event' => 'Criar Evento',
|
||||
'At given time' => 'A hora determinada',
|
||||
@@ -166,7 +164,7 @@ $translations = array(
|
||||
'End' => 'Fim',
|
||||
'Status' => 'Estado',
|
||||
'On completion preserve' => 'Ao completar preservar',
|
||||
'Tables and views' => 'Tabelas e vistas',
|
||||
'Tables and views' => 'Tabelas e Visões',
|
||||
'Data Length' => 'Tamanho de dados',
|
||||
'Index Length' => 'Tamanho de índice',
|
||||
'Data Free' => 'Espaço Livre',
|
||||
@@ -176,17 +174,18 @@ $translations = array(
|
||||
'Check' => 'Verificar',
|
||||
'Repair' => 'Reparar',
|
||||
'Truncate' => 'Truncar',
|
||||
'Tables have been truncated.' => 'Tabelas truncadas (truncate).',
|
||||
'Tables have been truncated.' => 'As Tabelas foram truncadas.',
|
||||
'Rows' => 'Registros',
|
||||
',' => ' ',
|
||||
'0123456789' => '0123456789',
|
||||
'Tables have been moved.' => 'As Tabelas foram movidas.',
|
||||
'Move to other database' => 'Mover outra Base de dados',
|
||||
'Move to other database' => 'Mover para outra Base de dados',
|
||||
'Move' => 'Mover',
|
||||
'Engine' => 'Motor',
|
||||
'Save and continue edit' => 'Salvar e continuar editando',
|
||||
'original' => 'original',
|
||||
'Tables have been dropped.' => 'Tabelas eliminadas.',
|
||||
'%d item(s) have been affected.' => array('%d item afetado.', '%d itens afetados.'),
|
||||
'Tables have been dropped.' => 'As Tabelas foram eliminadas.',
|
||||
'%d item(s) have been affected.' => array('%d item foi afetado.', '%d itens foram afetados.'),
|
||||
'whole result' => 'resultado completo',
|
||||
'Clone' => 'Clonar',
|
||||
'Maximum number of allowed fields exceeded. Please increase %s.' => 'Quantidade máxima de campos permitidos excedidos. Por favor aumente %s.',
|
||||
@@ -194,7 +193,7 @@ $translations = array(
|
||||
'Partitions' => 'Partições',
|
||||
'Partition name' => 'Nome da Partição',
|
||||
'Values' => 'Valores',
|
||||
'%d row(s) have been imported.' => array('%d registro importado.', '%d registros importados.'),
|
||||
'%d row(s) have been imported.' => array('%d registro foi importado.', '%d registros foram importados.'),
|
||||
'anywhere' => 'qualquer local',
|
||||
'Import' => 'Importar',
|
||||
'Stop on error' => 'Parar em caso de erro',
|
||||
@@ -207,7 +206,7 @@ $translations = array(
|
||||
'Relations' => 'Relações',
|
||||
'Run file' => 'Executar Arquivo',
|
||||
'Clear' => 'Limpar',
|
||||
'Maximum allowed file size is %sB.' => 'Tamanho máximo do arquivo é %sB.',
|
||||
'Maximum allowed file size is %sB.' => 'Tamanho máximo do arquivo permitido é %sB.',
|
||||
'Numbers' => 'Números',
|
||||
'Date and time' => 'Data e hora',
|
||||
'Strings' => 'Cadena',
|
||||
@@ -218,36 +217,35 @@ $translations = array(
|
||||
'From' => 'De',
|
||||
'Subject' => 'Assunto',
|
||||
'Send' => 'Enviar',
|
||||
'%d e-mail(s) have been sent.' => array('%d email enviado.', '%d emails enviados.'),
|
||||
'%d e-mail(s) have been sent.' => array('%d email foi enviado.', '%d emails foram enviados.'),
|
||||
'Webserver file %s' => 'Arquivo do servidor web %s',
|
||||
'File does not exist.' => 'Arquivo não existe.',
|
||||
'%d in total' => '%d no total',
|
||||
'Permanent login' => 'Salvar Senha',
|
||||
'Databases have been dropped.' => 'Bases de dados eliminadas.',
|
||||
'Permanent login' => 'Login permanente',
|
||||
'Databases have been dropped.' => 'A Base de dados foi apagada.',
|
||||
'Search data in tables' => 'Buscar dados nas Tabelas',
|
||||
'schema' => 'esquema',
|
||||
'Schema' => 'Esquema',
|
||||
'Alter schema' => 'Modificar esquema',
|
||||
'Alter schema' => 'Alterar esquema',
|
||||
'Create schema' => 'Criar esquema',
|
||||
'Schema has been dropped.' => 'Esquema eliminado.',
|
||||
'Schema has been created.' => 'Esquema criado.',
|
||||
'Schema has been altered.' => 'Esquema modificado.',
|
||||
'Schema has been dropped.' => 'O Esquema foi apagado.',
|
||||
'Schema has been created.' => 'O Esquema foi criado.',
|
||||
'Schema has been altered.' => 'O Esquema foi alterado.',
|
||||
'Sequences' => 'Sequências',
|
||||
'Create sequence' => 'Criar sequências',
|
||||
'Alter sequence' => 'Modificar sequência',
|
||||
'Sequence has been dropped.' => 'Sequência eliminada.',
|
||||
'Sequence has been created.' => 'Sequência criada.',
|
||||
'Sequence has been altered.' => 'Sequência modificada.',
|
||||
'User types' => 'Tipos definido pelo usuário',
|
||||
'Create sequence' => 'Criar sequência',
|
||||
'Alter sequence' => 'Alterar sequência',
|
||||
'Sequence has been dropped.' => 'A Sequência foi apagada.',
|
||||
'Sequence has been created.' => 'A Sequência foi criada.',
|
||||
'Sequence has been altered.' => 'A Sequência foi alterada.',
|
||||
'User types' => 'Tipos definidos pelo usuário',
|
||||
'Create type' => 'Criar tipo',
|
||||
'Alter type' => 'Modificar tipo',
|
||||
'Type has been dropped.' => 'Tipo eliminado.',
|
||||
'Type has been created.' => 'Tipo criado.',
|
||||
'Ctrl+click on a value to modify it.' => 'Ctrl+clique vezes sobre o valor para edita-lo.',
|
||||
'Use edit link to modify this value.' => 'Utilize o link modificar para alterar.',
|
||||
'Alter type' => 'Alterar tipo',
|
||||
'Type has been dropped.' => 'O Tipo foi apagado.',
|
||||
'Type has been created.' => 'O Tipo foi criado.',
|
||||
'Ctrl+click on a value to modify it.' => 'Ctrl+clique sobre o valor para edita-lo.',
|
||||
'Use edit link to modify this value.' => 'Utilize o link editar para modificar este valor.',
|
||||
'last' => 'último',
|
||||
'From server' => 'Desde servidor',
|
||||
'System' => 'Motor de Base de dados',
|
||||
'From server' => 'A partir do servidor',
|
||||
'System' => 'Sistema',
|
||||
'Select data' => 'Selecionar dados',
|
||||
'Show structure' => 'Mostrar estrutura',
|
||||
'empty' => 'vazio',
|
||||
|
||||
@@ -8,7 +8,6 @@ $translations = array(
|
||||
'Password' => 'Senha',
|
||||
'Select database' => 'Selecionar Base de dados',
|
||||
'Invalid database.' => 'Base de dados inválida.',
|
||||
'Create new database' => 'Criar nova base de dados',
|
||||
'Table has been dropped.' => 'Tabela eliminada.',
|
||||
'Table has been altered.' => 'Tabela modificada.',
|
||||
'Table has been created.' => 'Tabela criada.',
|
||||
@@ -31,7 +30,6 @@ $translations = array(
|
||||
'Alter database' => 'Modificar Base de dados',
|
||||
'Create database' => 'Criar Base de dados',
|
||||
'SQL command' => 'Comando SQL',
|
||||
'Dump' => 'Exportar',
|
||||
'Logout' => 'Terminar sessão',
|
||||
'database' => 'base de dados',
|
||||
'Use' => 'Usar',
|
||||
@@ -179,6 +177,7 @@ $translations = array(
|
||||
'Tables have been truncated.' => 'Tabelas truncadas (truncate).',
|
||||
'Rows' => 'Registos',
|
||||
',' => ' ',
|
||||
'0123456789' => '0123456789',
|
||||
'Tables have been moved.' => 'As Tabelas foram movidas.',
|
||||
'Move to other database' => 'Mover outra Base de dados',
|
||||
'Move' => 'Mover',
|
||||
@@ -225,7 +224,6 @@ $translations = array(
|
||||
'Permanent login' => 'Memorizar a senha',
|
||||
'Databases have been dropped.' => 'Bases de dados eliminadas.',
|
||||
'Search data in tables' => 'Pesquisar dados nas Tabelas',
|
||||
'schema' => 'esquema',
|
||||
'Schema' => 'Esquema',
|
||||
'Alter schema' => 'Modificar esquema',
|
||||
'Create schema' => 'Criar esquema',
|
||||
|
||||
@@ -1,14 +1,13 @@
|
||||
<?php
|
||||
$translations = array(
|
||||
'Login' => 'Intră',
|
||||
'Logout successful.' => 'Ați eșit cu succes.',
|
||||
'Logout successful.' => 'Ați ieșit cu succes.',
|
||||
'Invalid credentials.' => 'Numele de utilizator sau parola este greșită.',
|
||||
'Server' => 'Server',
|
||||
'Username' => 'Nume de utilizator',
|
||||
'Password' => 'Parola',
|
||||
'Select database' => 'Alege baza de date',
|
||||
'Invalid database.' => 'Bază de deate invalidă.',
|
||||
'Create new database' => 'Crează o bază de date nouă',
|
||||
'Table has been dropped.' => 'Tabelul a fost șters.',
|
||||
'Table has been altered.' => 'Tabelul a fost modificat.',
|
||||
'Table has been created.' => 'Tabelul a fost creat.',
|
||||
@@ -31,8 +30,7 @@ $translations = array(
|
||||
'Alter database' => 'Modifică baza de date',
|
||||
'Create database' => 'Crează baza de date',
|
||||
'SQL command' => 'SQL query',
|
||||
'Dump' => 'Dump',
|
||||
'Logout' => 'Eșire',
|
||||
'Logout' => 'Ieșire',
|
||||
'database' => 'baza de date',
|
||||
'Use' => 'Alege',
|
||||
'No tables.' => 'În baza de date nu sunt tabele.',
|
||||
@@ -46,9 +44,9 @@ $translations = array(
|
||||
'Delete' => 'Șterge',
|
||||
'Database' => 'Baza de date',
|
||||
'Routines' => 'Proceduri și funcții salvate',
|
||||
'Indexes have been altered.' => 'Indexele au fost modificate.',
|
||||
'Indexes' => 'Indexe',
|
||||
'Alter indexes' => 'Modifică indexe',
|
||||
'Indexes have been altered.' => 'Indexurile au fost modificate.',
|
||||
'Indexes' => 'Indexuri',
|
||||
'Alter indexes' => 'Modifică indexuri',
|
||||
'Add next' => 'Adaugă încă',
|
||||
'Language' => 'Limba',
|
||||
'Select' => 'Selectează',
|
||||
@@ -62,11 +60,11 @@ $translations = array(
|
||||
'edit' => 'editare',
|
||||
'Page' => 'Pagina',
|
||||
'Query executed OK, %d row(s) affected.' => array('Query executat, %d înscriere modificată.', 'Query executat, %d înscrieri modificate.'),
|
||||
'Error in query' => 'Eroare în query',
|
||||
'Error in query' => 'Greșeală în query',
|
||||
'Execute' => 'Execută',
|
||||
'Table' => 'Tabel',
|
||||
'Foreign keys' => 'Cheiuri externe',
|
||||
'Triggers' => 'Triggere',
|
||||
'Foreign keys' => 'Chei externe',
|
||||
'Triggers' => 'Declanșatoare',
|
||||
'View' => 'Reprezentare',
|
||||
'Unable to select the table' => 'Nu am putut selecta date din tabel',
|
||||
'Invalid CSRF token. Send the form again.' => 'CSRF token imposibil. Retrimite forma.',
|
||||
@@ -77,24 +75,24 @@ $translations = array(
|
||||
'Unable to upload a file.' => 'Nu am putut încărca fișierul pe server.',
|
||||
'File upload' => 'Încarcă fișierul',
|
||||
'File uploads are disabled.' => 'Încărcarea fișierelor este interzisă.',
|
||||
'Routine has been called, %d row(s) affected.' => array('A fost executată procedură, %d înscriere a fost modificată.', 'A fost executată procedură, %d înscrieri au fost modificate.'),
|
||||
'Routine has been called, %d row(s) affected.' => array('A fost executată procedura, %d înscriere a fost modificată.', 'A fost executată procedura, %d înscrieri au fost modificate.'),
|
||||
'Call' => 'Apelează',
|
||||
'No extension' => 'Nu este extensie',
|
||||
'None of the supported PHP extensions (%s) are available.' => 'Nu este aviabilă nici o extensie suportată (%s).',
|
||||
'Session support must be enabled.' => 'Sesiunile trebuie să fie pornite.',
|
||||
'Session expired, please login again.' => 'Timpul sesiunii a expirat, rog să te loghezi din nou.',
|
||||
'Session expired, please login again.' => 'Timpul sesiunii a expirat, rog să vă conectați din nou.',
|
||||
'Text length' => 'Lungimea textului',
|
||||
'Foreign key has been dropped.' => 'Chei extern a fost șters.',
|
||||
'Foreign key has been altered.' => 'Chei extern a fost modificat.',
|
||||
'Foreign key has been created.' => 'Chei extern a fost creat.',
|
||||
'Foreign key' => 'Chei extern',
|
||||
'Foreign key has been dropped.' => 'Cheia externă a fost ștearsă.',
|
||||
'Foreign key has been altered.' => 'Cheia externă a fost modificată.',
|
||||
'Foreign key has been created.' => 'Cheia externă a fost creată.',
|
||||
'Foreign key' => 'Cheie externă',
|
||||
'Target table' => 'Tabela scop',
|
||||
'Change' => 'Modifică',
|
||||
'Source' => 'Sursă',
|
||||
'Target' => 'Scop',
|
||||
'Add column' => 'Adaugă coloană',
|
||||
'Alter' => 'Modifică',
|
||||
'Add foreign key' => 'Adaugă chei extern',
|
||||
'Add foreign key' => 'Adaugă cheie externă',
|
||||
'ON DELETE' => 'La ștergere',
|
||||
'ON UPDATE' => 'La modificare',
|
||||
'Index Type' => 'Tipul indexului',
|
||||
@@ -102,11 +100,11 @@ $translations = array(
|
||||
'View has been dropped.' => 'Reprezentarea a fost ștearsă.',
|
||||
'View has been altered.' => 'Reprezentarea a fost modificată.',
|
||||
'View has been created.' => 'Reprezentarea a fost creată.',
|
||||
'Alter view' => 'Modifică reprezentare',
|
||||
'Alter view' => 'Modifică reprezentarea',
|
||||
'Create view' => 'Crează reprezentare',
|
||||
'Name' => 'Titlu',
|
||||
'Process list' => 'Lista proceselor',
|
||||
'%d process(es) have been killed.' => array('A fost finisat %d proces.', 'Au fost finisate %d procese.'),
|
||||
'%d process(es) have been killed.' => array('A fost terminat %d proces.', 'Au fost terminate %d procese.'),
|
||||
'Kill' => 'Termină',
|
||||
'Parameter name' => 'Numele parametrului',
|
||||
'Database schema' => 'Schema bazei de date',
|
||||
@@ -118,7 +116,7 @@ $translations = array(
|
||||
'Alter function' => 'Modifică funcția',
|
||||
'Alter procedure' => 'Modifică procedura',
|
||||
'Return type' => 'Tipul returnării',
|
||||
'Add trigger' => 'Adaugă trigger',
|
||||
'Add trigger' => 'Adaugă trigger (declanșator)',
|
||||
'Trigger has been dropped.' => 'Triggerul a fost șters.',
|
||||
'Trigger has been altered.' => 'Triggerul a fost modificat.',
|
||||
'Trigger has been created.' => 'Triggerul a fost creat.',
|
||||
@@ -129,8 +127,8 @@ $translations = array(
|
||||
'%s version: %s through PHP extension %s' => 'Versiunea %s: %s cu extensia PHP %s',
|
||||
'%d row(s)' => array('%d înscriere', '%d înscrieri'),
|
||||
'Remove' => 'Șterge',
|
||||
'Are you sure?' => 'Ești precis?',
|
||||
'Privileges' => 'Privelegii',
|
||||
'Are you sure?' => 'Sunteți sigur(ă)?',
|
||||
'Privileges' => 'Privilegii',
|
||||
'Create user' => 'Crează utilizator',
|
||||
'User has been dropped.' => 'Utilizatorul a fost șters.',
|
||||
'User has been altered.' => 'Utilizatorul a fost modificat.',
|
||||
@@ -147,7 +145,7 @@ $translations = array(
|
||||
'Functions' => 'Funcții',
|
||||
'Aggregation' => 'Agregare',
|
||||
'Export' => 'Export',
|
||||
'Output' => 'Date de eșire',
|
||||
'Output' => 'Date de ieșire',
|
||||
'open' => 'deschide',
|
||||
'save' => 'salvează',
|
||||
'Format' => 'Format',
|
||||
@@ -163,12 +161,12 @@ $translations = array(
|
||||
'Events' => 'Evenimente',
|
||||
'Schedule' => 'Program',
|
||||
'Start' => 'Început',
|
||||
'End' => 'Svârșit',
|
||||
'End' => 'Sfârșit',
|
||||
'Status' => 'Stare',
|
||||
'On completion preserve' => 'Salvează după finisare',
|
||||
'Tables and views' => 'Tabele și reprezentări',
|
||||
'Data Length' => 'Cantitatea de date',
|
||||
'Index Length' => 'Cantitatea de indexe',
|
||||
'Index Length' => 'Cantitatea de indecși',
|
||||
'Data Free' => 'Spațiu liber',
|
||||
'Collation' => 'Colaționare',
|
||||
'Analyze' => 'Analizează',
|
||||
@@ -179,6 +177,7 @@ $translations = array(
|
||||
'Tables have been truncated.' => 'Tabelele au fost curățate.',
|
||||
'Rows' => 'Înscrieri',
|
||||
',' => ',',
|
||||
'0123456789' => '0123456789',
|
||||
'Tables have been moved.' => 'Tabelele au fost mutate.',
|
||||
'Move to other database' => 'Mută în altă bază de date',
|
||||
'Move' => 'Mută',
|
||||
@@ -195,7 +194,7 @@ $translations = array(
|
||||
'Values' => 'Parametru',
|
||||
'%d row(s) have been imported.' => array('%d rînd importat.', '%d rînduri importate.'),
|
||||
'Import' => 'Importă',
|
||||
'Stop on error' => 'Opreștete la eroare',
|
||||
'Stop on error' => 'Se oprește la greșeală',
|
||||
'Maximum number of allowed fields exceeded. Please increase %s.' => 'Numărul maxim de înscrieri disponibile a fost atins. Majorați %s.',
|
||||
'anywhere' => 'oriunde',
|
||||
'%.3f s' => '%.3f s',
|
||||
@@ -206,11 +205,11 @@ $translations = array(
|
||||
'Source and target columns must have the same data type, there must be an index on the target columns and referenced data must exist.' => 'Coloanele ar trebui să aibă aceleaşi tipuri de date, trebuie să existe date de referinţă și un index pe coloanela-ţintă.',
|
||||
'Relations' => 'Relații',
|
||||
'Run file' => 'Execută fișier',
|
||||
'Clear' => 'Curățp',
|
||||
'Clear' => 'Curăță',
|
||||
'Maximum allowed file size is %sB.' => 'Fișierul maxim admis - %sO.',
|
||||
'Numbers' => 'Număr',
|
||||
'Date and time' => 'Data și timpul',
|
||||
'Strings' => 'Șire de caractere',
|
||||
'Strings' => 'Șiruri de caractere',
|
||||
'Binary' => 'Tip binar',
|
||||
'Lists' => 'Liste',
|
||||
'Editor' => 'Editor',
|
||||
@@ -218,14 +217,13 @@ $translations = array(
|
||||
'From' => 'De la',
|
||||
'Subject' => 'Pentru',
|
||||
'Send' => 'Trimite',
|
||||
'%d e-mail(s) have been sent.' => array('A fost trimisă %d scrisoare.', 'Au fost trimise %d scrisori.'),
|
||||
'%d e-mail(s) have been sent.' => array('A fost trimis %d mail.', 'Au fost trimise %d mail-uri.'),
|
||||
'Webserver file %s' => 'Fișierul %s pe server',
|
||||
'File does not exist.' => 'Așa fișier nu există.',
|
||||
'File does not exist.' => 'Acest fișier nu există.',
|
||||
'%d in total' => 'În total %d',
|
||||
'Permanent login' => 'Logare permanentă',
|
||||
'Databases have been dropped.' => 'Baze de date au fost șterse.',
|
||||
'Databases have been dropped.' => 'Bazele de date au fost șterse.',
|
||||
'Search data in tables' => 'Caută în tabele',
|
||||
'schema' => 'schema',
|
||||
'Schema' => 'Schema',
|
||||
'Alter schema' => 'Modifică schema',
|
||||
'Create schema' => 'Crează o schemă',
|
||||
@@ -247,13 +245,13 @@ $translations = array(
|
||||
'Use edit link to modify this value.' => 'Valoare poate fi modificată cu ajutorul butonului «modifică».',
|
||||
'last' => 'ultima',
|
||||
'From server' => 'De pe server',
|
||||
'System' => 'Sistema',
|
||||
'System' => 'Sistem',
|
||||
'Select data' => 'Selectează',
|
||||
'Show structure' => 'Arată structura',
|
||||
'empty' => 'gol',
|
||||
'Network' => 'Rețea',
|
||||
'Geometry' => 'Geometrie',
|
||||
'File exists.' => 'Fișierul deja există.',
|
||||
'File exists.' => 'Fișierul există deja.',
|
||||
'Attachments' => 'Fișiere atașate',
|
||||
'%d query(s) executed OK.' => array('%d query executat.', '%d query-uri executate cu succes.'),
|
||||
'Show only errors' => 'Arată doar greșeli',
|
||||
|
||||
@@ -7,15 +7,14 @@ $translations = array(
|
||||
'Username' => 'Имя пользователя',
|
||||
'Password' => 'Пароль',
|
||||
'Select database' => 'Выбрать базу данных',
|
||||
'Invalid database.' => 'Плохая база данных.',
|
||||
'Create new database' => 'Создать новую базу данных',
|
||||
'Invalid database.' => 'Неверная база данных.',
|
||||
'Table has been dropped.' => 'Таблица была удалена.',
|
||||
'Table has been altered.' => 'Таблица была изменена.',
|
||||
'Table has been created.' => 'Таблица была создана.',
|
||||
'Alter table' => 'Изменить таблицу',
|
||||
'Create table' => 'Создать таблицу',
|
||||
'Table name' => 'Название таблицы',
|
||||
'engine' => 'тип',
|
||||
'engine' => 'Тип таблицы',
|
||||
'collation' => 'режим сопоставления',
|
||||
'Column name' => 'Название поля',
|
||||
'Type' => 'Тип',
|
||||
@@ -30,8 +29,7 @@ $translations = array(
|
||||
'Database has been altered.' => 'База данных была изменена.',
|
||||
'Alter database' => 'Изменить базу данных',
|
||||
'Create database' => 'Создать базу данных',
|
||||
'SQL command' => 'SQL запрос',
|
||||
'Dump' => 'Дамп',
|
||||
'SQL command' => 'SQL-запрос',
|
||||
'Logout' => 'Выйти',
|
||||
'database' => 'база данных',
|
||||
'Use' => 'Выбрать',
|
||||
@@ -42,14 +40,14 @@ $translations = array(
|
||||
'Item%s has been inserted.' => 'Запись%s была вставлена.',
|
||||
'Edit' => 'Редактировать',
|
||||
'Insert' => 'Вставить',
|
||||
'Save and insert next' => 'Сохранить и вставить еще',
|
||||
'Save and insert next' => 'Сохранить и вставить ещё',
|
||||
'Delete' => 'Стереть',
|
||||
'Database' => 'База данных',
|
||||
'Routines' => 'Хранимые процедуры и функции',
|
||||
'Indexes have been altered.' => 'Индексы изменены.',
|
||||
'Indexes' => 'Индексы',
|
||||
'Alter indexes' => 'Изменить индексы',
|
||||
'Add next' => 'Добавить еще',
|
||||
'Add next' => 'Добавить ещё',
|
||||
'Language' => 'Язык',
|
||||
'Select' => 'Выбрать',
|
||||
'New item' => 'Новая запись',
|
||||
@@ -61,7 +59,7 @@ $translations = array(
|
||||
'Action' => 'Действие',
|
||||
'edit' => 'редактировать',
|
||||
'Page' => 'Страница',
|
||||
'Query executed OK, %d row(s) affected.' => array('Запрос завершен, изменена %d запись.', 'Запрос завершен, изменены %d записи.', 'Запрос завершен, изменено %d записей.'),
|
||||
'Query executed OK, %d row(s) affected.' => array('Запрос завершён, изменена %d запись.', 'Запрос завершён, изменены %d записи.', 'Запрос завершён, изменено %d записей.'),
|
||||
'Error in query' => 'Ошибка в запросe',
|
||||
'Execute' => 'Выполнить',
|
||||
'Table' => 'Таблица',
|
||||
@@ -69,7 +67,7 @@ $translations = array(
|
||||
'Triggers' => 'Триггеры',
|
||||
'View' => 'Представление',
|
||||
'Unable to select the table' => 'Не удалось получить данные из таблицы',
|
||||
'Invalid CSRF token. Send the form again.' => 'Недействительный CSRF токен. Отправите форму ещё раз.',
|
||||
'Invalid CSRF token. Send the form again.' => 'Недействительный CSRF-токен. Отправите форму ещё раз.',
|
||||
'Comment' => 'Комментарий',
|
||||
'Default values' => 'Значения по умолчанию',
|
||||
'%d byte(s)' => array('%d байт', '%d байта', '%d байтов'),
|
||||
@@ -80,25 +78,25 @@ $translations = array(
|
||||
'Routine has been called, %d row(s) affected.' => array('Была вызвана процедура, %d запись была изменена.', 'Была вызвана процедура, %d записи было изменено.', 'Была вызвана процедура, %d записей было изменено.'),
|
||||
'Call' => 'Вызвать',
|
||||
'No extension' => 'Нет расширений',
|
||||
'None of the supported PHP extensions (%s) are available.' => 'Не доступно ни одного расширения из поддерживаемых (%s).',
|
||||
'None of the supported PHP extensions (%s) are available.' => 'Недоступно ни одного расширения из поддерживаемых (%s).',
|
||||
'Session support must be enabled.' => 'Сессии должны быть включены.',
|
||||
'Session expired, please login again.' => 'Срок действия сесси истек, нужно снова войти в систему.',
|
||||
'Session expired, please login again.' => 'Срок действия сессии истёк, нужно снова войти в систему.',
|
||||
'Text length' => 'Длина текста',
|
||||
'Foreign key has been dropped.' => 'Внешний ключ был удален.',
|
||||
'Foreign key has been altered.' => 'Внешний ключ был изменен.',
|
||||
'Foreign key has been dropped.' => 'Внешний ключ был удалён.',
|
||||
'Foreign key has been altered.' => 'Внешний ключ был изменён.',
|
||||
'Foreign key has been created.' => 'Внешний ключ был создан.',
|
||||
'Foreign key' => 'Внешний ключ',
|
||||
'Target table' => 'Результирующая таблица',
|
||||
'Change' => 'Изменить',
|
||||
'Source' => 'Источник',
|
||||
'Target' => 'Цель',
|
||||
'Add column' => 'Добавить колонку',
|
||||
'Add column' => 'Добавить поле',
|
||||
'Alter' => 'Изменить',
|
||||
'Add foreign key' => 'Добавить внешний ключ',
|
||||
'ON DELETE' => 'При стирании',
|
||||
'ON UPDATE' => 'При обновлении',
|
||||
'Index Type' => 'Тип индекса',
|
||||
'Column (length)' => 'Колонка (длина)',
|
||||
'Column (length)' => 'Поле (длина)',
|
||||
'View has been dropped.' => 'Представление было удалено.',
|
||||
'View has been altered.' => 'Представление было изменено.',
|
||||
'View has been created.' => 'Представление было создано.',
|
||||
@@ -106,7 +104,7 @@ $translations = array(
|
||||
'Create view' => 'Создать представление',
|
||||
'Name' => 'Название',
|
||||
'Process list' => 'Список процессов',
|
||||
'%d process(es) have been killed.' => array('Был завершен %d процесс.', 'Было завершено %d процесса.', 'Было завершёно %d процессов.'),
|
||||
'%d process(es) have been killed.' => array('Был завершён %d процесс.', 'Было завершено %d процесса.', 'Было завершено %d процессов.'),
|
||||
'Kill' => 'Завершить',
|
||||
'Parameter name' => 'Название параметра',
|
||||
'Database schema' => 'Схема базы данных',
|
||||
@@ -119,8 +117,8 @@ $translations = array(
|
||||
'Alter procedure' => 'Изменить процедуру',
|
||||
'Return type' => 'Возвращаемый тип',
|
||||
'Add trigger' => 'Добавить триггер',
|
||||
'Trigger has been dropped.' => 'Триггер был удален.',
|
||||
'Trigger has been altered.' => 'Триггер был изменен.',
|
||||
'Trigger has been dropped.' => 'Триггер был удалён.',
|
||||
'Trigger has been altered.' => 'Триггер был изменён.',
|
||||
'Trigger has been created.' => 'Триггер был создан.',
|
||||
'Alter trigger' => 'Изменить триггер',
|
||||
'Create trigger' => 'Создать триггер',
|
||||
@@ -132,15 +130,15 @@ $translations = array(
|
||||
'Are you sure?' => 'Вы уверены?',
|
||||
'Privileges' => 'Полномочия',
|
||||
'Create user' => 'Создать пользователя',
|
||||
'User has been dropped.' => 'Пользователь был удален.',
|
||||
'User has been altered.' => 'Пользователь был изменен.',
|
||||
'User has been dropped.' => 'Пользователь был удалён.',
|
||||
'User has been altered.' => 'Пользователь был изменён.',
|
||||
'User has been created.' => 'Пользователь был создан.',
|
||||
'Hashed' => 'Хешировано',
|
||||
'Column' => 'Колонка',
|
||||
'Column' => 'поле',
|
||||
'Routine' => 'Процедура',
|
||||
'Grant' => 'Позволить',
|
||||
'Revoke' => 'Запретить',
|
||||
'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.',
|
||||
'Logged as: %s' => 'Вы вошли как: %s',
|
||||
'Move up' => 'Переместить вверх',
|
||||
'Move down' => 'Переместить вниз',
|
||||
@@ -179,10 +177,11 @@ $translations = array(
|
||||
'Tables have been truncated.' => 'Таблицы были очищены.',
|
||||
'Rows' => 'Строк',
|
||||
',' => ' ',
|
||||
'0123456789' => '0123456789',
|
||||
'Tables have been moved.' => 'Таблицы были перемещены.',
|
||||
'Move to other database' => 'Переместить в другую базу данных',
|
||||
'Move' => 'Переместить',
|
||||
'Engine' => 'Тип',
|
||||
'Engine' => 'Тип таблиц',
|
||||
'Save and continue edit' => 'Сохранить и продолжить редактирование',
|
||||
'original' => 'исходный',
|
||||
'%d item(s) have been affected.' => array('Была изменена %d запись.', 'Были изменены %d записи.', 'Было изменено %d записей.'),
|
||||
@@ -203,20 +202,20 @@ $translations = array(
|
||||
'[yyyy]-mm-dd' => 'дд.мм.[гггг]',
|
||||
'History' => 'История',
|
||||
'Variables' => 'Переменные',
|
||||
'Source and target columns must have the same data type, there must be an index on the target columns and referenced data must exist.' => 'Колонки должны иметь одинаковые типы данных, в результирующей колонке должен быть индекс, данные для импорта должны существовать.',
|
||||
'Relations' => 'Реляции',
|
||||
'Source and target columns must have the same data type, there must be an index on the target columns and referenced data must exist.' => 'Поля должны иметь одинаковые типы данных, в результирующем поле должен быть индекс, данные для импорта должны существовать.',
|
||||
'Relations' => 'Отношения',
|
||||
'Run file' => 'Запустить файл',
|
||||
'Clear' => 'Очистить',
|
||||
'Maximum allowed file size is %sB.' => 'Максимальный разрешенный размер файла - %sB.',
|
||||
'Numbers' => 'Число',
|
||||
'Maximum allowed file size is %sB.' => 'Максимальный разрешённый размер файла — %sB.',
|
||||
'Numbers' => 'Числа',
|
||||
'Date and time' => 'Дата и время',
|
||||
'Strings' => 'Строки',
|
||||
'Binary' => 'Двоичный тип',
|
||||
'Lists' => 'Списки',
|
||||
'Editor' => 'Редактор',
|
||||
'E-mail' => 'Электропочта',
|
||||
'E-mail' => 'Эл. почта',
|
||||
'From' => 'От',
|
||||
'Subject' => 'Кому',
|
||||
'Subject' => 'Тема',
|
||||
'Send' => 'Послать',
|
||||
'%d e-mail(s) have been sent.' => array('Было отправлено %d письмо.', 'Было отправлено %d письма.', 'Было отправлено %d писем.'),
|
||||
'Webserver file %s' => 'Файл %s на вебсервере',
|
||||
@@ -225,7 +224,6 @@ $translations = array(
|
||||
'Permanent login' => 'Оставаться в системе',
|
||||
'Databases have been dropped.' => 'Базы данных удалены.',
|
||||
'Search data in tables' => 'Поиск в таблицах',
|
||||
'schema' => 'схема',
|
||||
'Schema' => 'Схема',
|
||||
'Alter schema' => 'Изменить схему',
|
||||
'Create schema' => 'Новая схема',
|
||||
@@ -243,7 +241,7 @@ $translations = array(
|
||||
'Alter type' => 'Изменить тип',
|
||||
'Type has been dropped.' => 'Тип удален.',
|
||||
'Type has been created.' => 'Создан новый тип.',
|
||||
'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.' => 'Изменить это значение можно с помощью ссылки «изменить».',
|
||||
'last' => 'последняя',
|
||||
'From server' => 'С сервера',
|
||||
@@ -254,7 +252,7 @@ $translations = array(
|
||||
'Network' => 'Сеть',
|
||||
'Geometry' => 'Геометрия',
|
||||
'File exists.' => 'Файл уже существует.',
|
||||
'Attachments' => 'Прикрепленные файлы',
|
||||
'Attachments' => 'Прикреплённые файлы',
|
||||
'%d query(s) executed OK.' => array('%d запрос выполнен успешно.', '%d запроса выполнено успешно.', '%d запросов выполнено успешно.'),
|
||||
'Show only errors' => 'Только ошибки',
|
||||
'Refresh' => 'Обновить',
|
||||
@@ -267,4 +265,32 @@ $translations = array(
|
||||
'Permanent link' => 'Постоянная ссылка',
|
||||
'Edit all' => 'Редактировать всё',
|
||||
'HH:MM:SS' => 'ЧЧ:ММ:СС',
|
||||
'Tables have been optimized.' => 'Таблицы оптимизированы.',
|
||||
'Materialized view' => 'Материализованное представление',
|
||||
'Vacuum' => 'Вакуум',
|
||||
'Selected' => 'Выбранные',
|
||||
'Replication' => 'Репликация',
|
||||
'Master status' => 'состояние мастер-сервера',
|
||||
'Slave status' => 'состояние ведомого сервера',
|
||||
'File must be in UTF-8 encoding.' => 'Файл должен быть в кодировке UTF-8.',
|
||||
'Modify' => 'Изменить',
|
||||
'Loading' => 'Загрузка',
|
||||
'Load more data' => 'Загрузить ещё данные',
|
||||
'ATTACH queries are not supported.' => 'ATTACH-запросы не поддерживаются.',
|
||||
'%d / ' => '%d / ',
|
||||
'Limit rows' => 'Лимит строк',
|
||||
'<a href="https://www.adminer.org/en/extension/" target="_blank">Implement</a> %s method to use SQLite.' => '<a href="https://www.adminer.org/en/extension/" target="_blank">Реализуйте</a> метод %s, чтобы использовать SQLite.',
|
||||
'Default value' => 'Значение по умолчанию',
|
||||
'Full table scan' => 'Анализ полной таблицы',
|
||||
'Too many unsuccessful logins, try again in %d minute(s).' => array('Слишком много неудачных попыток входа. Попробуйте снова через %d минуту.', 'Слишком много неудачных попыток входа. Попробуйте снова через %d минуты.', 'Слишком много неудачных попыток входа. Попробуйте снова через %d минут.'),
|
||||
'Master password expired. <a href="https://www.adminer.org/en/extension/" target="_blank">Implement</a> %s method to make it permanent.' => 'Мастер-пароль истёк. <a href="https://www.adminer.org/en/extension/" target="_blank">Реализуйте</a> метод %s, чтобы сделать его постоянным.',
|
||||
'If you did not send this request from Adminer then close this page.' => 'Если вы не посылали этот запрос из Adminer, закройте эту страницу.',
|
||||
'You can upload a big SQL file via FTP and import it from server.' => 'Вы можете закачать большой SQL-файл по FTP и затем импортировать его с сервера.',
|
||||
'Size' => 'Размер',
|
||||
'Compute' => 'Вычислить',
|
||||
'You are offline.' => 'Вы не выполнили вход.',
|
||||
'You have no privileges to update this table.' => 'У вас нет прав на обновление этой таблицы.',
|
||||
'Saving' => 'Сохранение',
|
||||
'yes' => 'Да',
|
||||
'no' => 'Нет',
|
||||
);
|
||||
|
||||
@@ -8,7 +8,6 @@ $translations = array(
|
||||
'Password' => 'Heslo',
|
||||
'Select database' => 'Vybrať databázu',
|
||||
'Invalid database.' => 'Nesprávna databáza.',
|
||||
'Create new database' => 'Vytvoriť novú databázu',
|
||||
'Table has been dropped.' => 'Tabuľka bola odstránená.',
|
||||
'Table has been altered.' => 'Tabuľka bola zmenená.',
|
||||
'Table has been created.' => 'Tabuľka bola vytvorená.',
|
||||
@@ -32,7 +31,6 @@ $translations = array(
|
||||
'Alter database' => 'Zmeniť databázu',
|
||||
'Create database' => 'Vytvoriť databázu',
|
||||
'SQL command' => 'SQL príkaz',
|
||||
'Dump' => 'Export',
|
||||
'Logout' => 'Odhlásiť',
|
||||
'database' => 'databáza',
|
||||
'Use' => 'Vybrať',
|
||||
@@ -180,6 +178,7 @@ $translations = array(
|
||||
'Data Free' => 'Voľné miesto',
|
||||
'Rows' => 'Riadky',
|
||||
',' => ' ',
|
||||
'0123456789' => '0123456789',
|
||||
'Analyze' => 'Analyzovať',
|
||||
'Optimize' => 'Optimalizovať',
|
||||
'Check' => 'Skontrolovať',
|
||||
@@ -230,7 +229,6 @@ $translations = array(
|
||||
'Schema has been dropped.' => 'Schéma bola odstránená.',
|
||||
'Schema has been created.' => 'Schéma bola vytvorená.',
|
||||
'Schema has been altered.' => 'Schéma bola zmenená.',
|
||||
'schema' => 'schéma',
|
||||
'Schema' => 'Schéma',
|
||||
'Sequences' => 'Sekvencia',
|
||||
'Create sequence' => 'Vytvoriť sekvenciu',
|
||||
|
||||
@@ -65,7 +65,6 @@ $translations = array(
|
||||
'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',
|
||||
'Dump' => 'Izvozi',
|
||||
'Output' => 'Izhod rezultata',
|
||||
'open' => 'odpri',
|
||||
'save' => 'shrani',
|
||||
@@ -77,7 +76,6 @@ $translations = array(
|
||||
'Use' => 'Uporabi',
|
||||
'Select database' => 'Izberi bazo',
|
||||
'Invalid database.' => 'Neveljavna baza.',
|
||||
'Create new database' => 'Ustvari novo bazo',
|
||||
'Database has been dropped.' => 'Baza je zavržena.',
|
||||
'Databases have been dropped.' => 'Baze so zavržene.',
|
||||
'Database has been created.' => 'Baza je ustvarjena.',
|
||||
@@ -89,6 +87,7 @@ $translations = array(
|
||||
|
||||
// thousands separator - must contain single byte
|
||||
',' => ' ',
|
||||
'0123456789' => '0123456789',
|
||||
'Engine' => 'Pogon',
|
||||
'Collation' => 'Zbiranje',
|
||||
'Data Length' => 'Velikost podatkov',
|
||||
@@ -288,7 +287,6 @@ $translations = array(
|
||||
'Schema has been dropped.' => 'Shema je zavržena.',
|
||||
'Schema has been created.' => 'Shema je ustvarjena.',
|
||||
'Schema has been altered.' => 'Shema je spremenjena.',
|
||||
'schema' => 'shema',
|
||||
'Schema' => 'Shema',
|
||||
'Invalid schema.' => 'Neveljavna shema.',
|
||||
|
||||
|
||||
@@ -66,7 +66,6 @@ $translations = array(
|
||||
'Too big POST data. Reduce the data or increase the %s configuration directive.' => 'Превелики POST податак. Морате да смањите податак или повећајте вредност конфигурационе директиве %s.',
|
||||
|
||||
'Export' => 'Извоз',
|
||||
'Dump' => 'Истовар',
|
||||
'Output' => 'Испис',
|
||||
'open' => 'отвори',
|
||||
'save' => 'сачувај',
|
||||
@@ -78,7 +77,6 @@ $translations = array(
|
||||
'Use' => 'Користи',
|
||||
'Select database' => 'Изаберите базу',
|
||||
'Invalid database.' => 'Неисправна база података.',
|
||||
'Create new database' => 'Направи нову базу података',
|
||||
'Database has been dropped.' => 'База података је избрисана.',
|
||||
'Databases have been dropped.' => 'Базњ података су избрисане.',
|
||||
'Database has been created.' => 'База података је креирана.',
|
||||
@@ -93,6 +91,7 @@ $translations = array(
|
||||
|
||||
// thousands separator - must contain single byte
|
||||
',' => ',',
|
||||
'0123456789' => '0123456789',
|
||||
'Engine' => 'Механизам',
|
||||
'Collation' => 'Сравњивање',
|
||||
'Data Length' => 'Дужина података',
|
||||
@@ -300,7 +299,6 @@ $translations = array(
|
||||
'Schema has been dropped.' => 'Шема је избрисана.',
|
||||
'Schema has been created.' => 'Шема је креирана.',
|
||||
'Schema has been altered.' => 'Шема је измењена.',
|
||||
'schema' => 'шема',
|
||||
'Schema' => 'Шема',
|
||||
'Invalid schema.' => 'Шема није исправна.',
|
||||
|
||||
|
||||
@@ -8,7 +8,6 @@ $translations = array(
|
||||
'Password' => 'கடவுச்சொல்',
|
||||
'Select database' => 'தகவல்தளத்தை தேர்வு செய்',
|
||||
'Invalid database.' => 'தகவல்தளம் சரியானதல்ல.',
|
||||
'Create new database' => 'புதிய தகவல்தளத்தை உருவாக்கு',
|
||||
'Table has been dropped.' => 'அட்டவணை நீக்கப்பட்டது.',
|
||||
'Table has been altered.' => 'அட்டவணை மாற்றப்பட்டது.',
|
||||
'Table has been created.' => 'அட்டவணை உருவாக்கப்பட்டது.',
|
||||
@@ -31,7 +30,6 @@ $translations = array(
|
||||
'Alter database' => 'தகவல்தளத்தை மாற்று',
|
||||
'Create database' => 'தகவல்தளத்தை உருவாக்கு',
|
||||
'SQL command' => 'SQL கட்டளை',
|
||||
'Dump' => 'Dump',
|
||||
'Logout' => 'வெளியேறு',
|
||||
'database' => 'தகவல்தளம்',
|
||||
'Use' => 'உபயோகி',
|
||||
@@ -176,6 +174,7 @@ $translations = array(
|
||||
'Tables have been truncated.' => 'அட்டவணை குறைக்கப்பட்டது (truncated).',
|
||||
'Rows' => 'வரிசைகள்',
|
||||
',' => ',',
|
||||
'0123456789' => '0123456789',
|
||||
'Tables have been moved.' => 'அட்டவணை நகர்த்தப்பட்டது.',
|
||||
'Move to other database' => 'மற்ற தகவல் தளத்திற்க்கு நகர்த்து',
|
||||
'Move' => 'நகர்த்து',
|
||||
@@ -246,7 +245,6 @@ $translations = array(
|
||||
'System' => 'சிஸ்டம் (System)',
|
||||
'anywhere' => 'எங்காயினும்',
|
||||
'empty' => 'வெறுமை (empty)',
|
||||
'schema' => 'அமைப்புமுறை',
|
||||
'No extension' => 'விரிவு (extensஇஒன்) இல்லை ',
|
||||
'Databases have been dropped.' => 'தகவல் தளங்கள் நீக்கப்பட்டன.',
|
||||
'%s version: %s through PHP extension %s' => '%s பதிப்பு: %s through PHP extension %s',
|
||||
|
||||
@@ -8,7 +8,6 @@ $translations = array(
|
||||
'Password' => 'รหัสผ่าน',
|
||||
'Select database' => 'เลือกฐานข้อมูล',
|
||||
'Invalid database.' => 'ฐานข้อมูลไม่ถูกต้อง.',
|
||||
'Create new database' => 'สร้างฐานข้อมูลใหม่',
|
||||
'Table has been dropped.' => 'ลบตารางแล้ว.',
|
||||
'Table has been altered.' => 'แก้ไขตารางแล้ว.',
|
||||
'Table has been created.' => 'สร้างตารางใหม่แล้ว.',
|
||||
@@ -31,7 +30,6 @@ $translations = array(
|
||||
'Alter database' => 'เปลี่ยนแปลงฐานข้อมูล',
|
||||
'Create database' => 'สร้างฐานข้อมูล',
|
||||
'SQL command' => 'คำสั่ง SQL',
|
||||
'Dump' => 'ส่งออก',
|
||||
'Logout' => 'ออกจากระบบ',
|
||||
'database' => 'ฐานข้อมูล',
|
||||
'Use' => 'ใช้งาน',
|
||||
@@ -179,6 +177,7 @@ $translations = array(
|
||||
'Tables have been truncated.' => 'เคลียร์ตารางแล้ว (truncate).',
|
||||
'Rows' => 'แถว',
|
||||
',' => ' ',
|
||||
'0123456789' => '0123456789',
|
||||
'Tables have been moved.' => 'ตารางถูกย้ายแล้ว.',
|
||||
'Move to other database' => 'ย้ายไปยังฐานข้อมูลอื่น',
|
||||
'Move' => 'ย้าย',
|
||||
@@ -225,7 +224,6 @@ $translations = array(
|
||||
'Permanent login' => 'จดจำการเข้าสู่ระบบตลอดไป',
|
||||
'Databases have been dropped.' => 'ฐานข้อมูลถูกลบแล้ว.',
|
||||
'Search data in tables' => 'ค้นหาในตาราง',
|
||||
'schema' => 'schema',
|
||||
'Schema' => 'Schema',
|
||||
'Alter schema' => 'เปลี่ยนแปลง schema',
|
||||
'Create schema' => 'สร้าง schema',
|
||||
|
||||
@@ -66,7 +66,6 @@ $translations = array(
|
||||
'Too big POST data. Reduce the data or increase the %s configuration directive.' => 'Çok büyük POST verisi, veriyi azaltın ya da %s ayar yönergesini uygun olarak yapılandırın.',
|
||||
|
||||
'Export' => 'Dışarı Aktar',
|
||||
'Dump' => 'Döküm',
|
||||
'Output' => 'Çıktı',
|
||||
'open' => 'aç',
|
||||
'save' => 'kaydet',
|
||||
@@ -78,7 +77,6 @@ $translations = array(
|
||||
'Use' => 'Kullan',
|
||||
'Select database' => 'Veri tabanı seç',
|
||||
'Invalid database.' => 'Geçersiz veri tabanı.',
|
||||
'Create new database' => 'Yeni veri tabanı oluştur',
|
||||
'Database has been dropped.' => 'Veri tabanı silindi.',
|
||||
'Databases have been dropped.' => 'Veritabanları silindi.',
|
||||
'Database has been created.' => 'Veri tabanı oluşturuldu.',
|
||||
@@ -93,6 +91,7 @@ $translations = array(
|
||||
|
||||
// thousands separator - must contain single byte
|
||||
',' => ' ',
|
||||
'0123456789' => '0123456789',
|
||||
'Engine' => 'Motor',
|
||||
'Collation' => 'Karşılaştırma',
|
||||
'Data Length' => 'Veri Uzunluğu',
|
||||
@@ -300,7 +299,6 @@ $translations = array(
|
||||
'Schema has been dropped.' => 'Şema silindi.',
|
||||
'Schema has been created.' => 'Şema oluşturuldu.',
|
||||
'Schema has been altered.' => 'Şema değiştirildi.',
|
||||
'schema' => 'şema',
|
||||
'Schema' => 'Şema',
|
||||
'Invalid schema.' => 'Geçersiz şema.',
|
||||
|
||||
|
||||
@@ -66,7 +66,6 @@ $translations = array(
|
||||
'Too big POST data. Reduce the data or increase the %s configuration directive.' => 'Занадто великий об\'єм POST-даних. Зменшіть об\'єм або збільшіть параметр директиви %s конфигурації.',
|
||||
|
||||
'Export' => 'Експорт',
|
||||
'Dump' => 'Дамп',
|
||||
'Output' => 'Вихідні дані',
|
||||
'open' => 'відкрити',
|
||||
'save' => 'зберегти',
|
||||
@@ -78,7 +77,6 @@ $translations = array(
|
||||
'Use' => 'Обрати',
|
||||
'Select database' => 'Обрати базу даних',
|
||||
'Invalid database.' => 'Погана база даних.',
|
||||
'Create new database' => 'Створити нову базу даних',
|
||||
'Database has been dropped.' => 'Базу даних було видалено.',
|
||||
'Databases have been dropped.' => 'Бази даних були видалені.',
|
||||
'Database has been created.' => 'Базу даних було створено.',
|
||||
@@ -93,6 +91,7 @@ $translations = array(
|
||||
|
||||
// thousands separator - must contain single byte
|
||||
',' => ' ',
|
||||
'0123456789' => '0123456789',
|
||||
'Engine' => 'Рушій',
|
||||
'Collation' => 'Співставлення',
|
||||
'Data Length' => 'Об\'єм даних',
|
||||
@@ -297,7 +296,6 @@ $translations = array(
|
||||
'Schema has been dropped.' => 'Схему було видалено.',
|
||||
'Schema has been created.' => 'Схему було створено.',
|
||||
'Schema has been altered.' => 'Схему було змінено.',
|
||||
'schema' => 'схема',
|
||||
'Schema' => 'Схема',
|
||||
'Invalid schema.' => 'Невірна схема.',
|
||||
|
||||
|
||||
328
adminer/lang/vi.inc.php
Normal file
328
adminer/lang/vi.inc.php
Normal file
@@ -0,0 +1,328 @@
|
||||
<?php
|
||||
$translations = array(
|
||||
// label for database system selection (MySQL, SQLite, ...)
|
||||
'System' => 'Hệ thống',
|
||||
'Server' => 'Máy chủ',
|
||||
'Username' => 'Tên người dùng',
|
||||
'Password' => 'Mật khẩu',
|
||||
'Permanent login' => 'Giữ đăng nhập một thời gian',
|
||||
'Login' => 'Đăng nhập',
|
||||
'Logout' => 'Thoát',
|
||||
'Logged as: %s' => 'Vào dưới tên: %s',
|
||||
'Logout successful.' => 'Đã thoát xong.',
|
||||
'Invalid credentials.' => 'Tài khoản sai.',
|
||||
'Too many unsuccessful logins, try again in %d minute(s).' => 'Bạn gõ sai tài khoản quá nhiều lần, hãy thử lại sau %d phút nữa.',
|
||||
'Master password expired. <a href="https://www.adminer.org/en/extension/" target="_blank">Implement</a> %s method to make it permanent.' => 'Mật khẩu đã hết hạn. <a href="https://www.adminer.org/en/extension/" target="_blank">Thử cách làm</a> để giữ cố định.',
|
||||
'Language' => 'Ngôn ngữ',
|
||||
'Invalid CSRF token. Send the form again.' => 'Mã kiểm tra CSRF sai, hãy nhập lại biểu mẫu.',
|
||||
'No extension' => 'Không có phần mở rộng',
|
||||
'None of the supported PHP extensions (%s) are available.' => 'Bản cài đặt PHP thiếu hỗ trợ cho %s.',
|
||||
'Session support must be enabled.' => 'Cần phải bật session.',
|
||||
'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)',
|
||||
'Refresh' => 'Làm mới',
|
||||
|
||||
// text direction - 'ltr' or 'rtl'
|
||||
'ltr' => 'ltr',
|
||||
|
||||
'Privileges' => 'Quyền truy cập',
|
||||
'Create user' => 'Tạo người dùng',
|
||||
'User has been dropped.' => 'Đã xoá người dùng.',
|
||||
'User has been altered.' => 'Đã sửa người dùng.',
|
||||
'User has been created.' => 'Đã tạo người dùng.',
|
||||
'Hashed' => 'Mã hoá',
|
||||
'Column' => 'Cột',
|
||||
'Routine' => 'Hàm tích hợp',
|
||||
'Grant' => 'Cấp quyền',
|
||||
'Revoke' => 'Tước quyền',
|
||||
|
||||
'Process list' => 'Danh sách tiến trình',
|
||||
'%d process(es) have been killed.' => '%d tiến trình đã dừng.',
|
||||
'Kill' => 'Dừng',
|
||||
|
||||
'Variables' => 'Biến',
|
||||
'Status' => 'Trạng thái',
|
||||
|
||||
'SQL command' => 'Câu lệnh SQL',
|
||||
'%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.',
|
||||
'No commands to execute.' => 'Chẳng có gì để thực hiện!.',
|
||||
'Error in query' => 'Có lỗi trong câu lệnh',
|
||||
'Execute' => 'Thực hiện',
|
||||
'Stop on error' => 'Dừng khi có lỗi',
|
||||
'Show only errors' => 'Chỉ hiện lỗi',
|
||||
// sprintf() format for time of the command
|
||||
'%.3f s' => '%.3f s',
|
||||
'History' => 'Lịch sử',
|
||||
'Clear' => 'Xoá',
|
||||
'Edit all' => 'Sửa tất cả',
|
||||
|
||||
'File upload' => 'Tải tệp lên',
|
||||
'From server' => 'Dùng tệp trên máy chủ',
|
||||
'Webserver file %s' => 'Tệp trên máy chủ',
|
||||
'Run file' => 'Chạy tệp',
|
||||
'File does not exist.' => 'Tệp không tồn tại.',
|
||||
'File uploads are disabled.' => 'Chức năng tải tệp lên đã bị cấm.',
|
||||
'Unable to upload a file.' => 'Không thể tải tệp lên.',
|
||||
'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).',
|
||||
'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',
|
||||
'Output' => 'Kết quả',
|
||||
'open' => 'xem',
|
||||
'save' => 'lưu',
|
||||
'Format' => 'Định dạng',
|
||||
'Data' => 'Dữ liệu',
|
||||
|
||||
'Database' => 'Cơ sở dữ liệu',
|
||||
'database' => 'cơ sở dữ liệu',
|
||||
'Use' => 'Sử dụng',
|
||||
'Select database' => 'Chọn CSDL',
|
||||
'Invalid database.' => 'CSDL sai.',
|
||||
'Database has been dropped.' => 'CSDL đã bị xoá.',
|
||||
'Databases have been dropped.' => 'Các CSDL đã bị xoá.',
|
||||
'Database has been created.' => 'Đã tạo CSDL.',
|
||||
'Database has been renamed.' => 'Đã đổi tên CSDL.',
|
||||
'Database has been altered.' => 'Đã thay đổi CSDL.',
|
||||
'Alter database' => 'Thay đổi CSDL',
|
||||
'Create database' => 'Tạo CSDL',
|
||||
'Database schema' => 'Cấu trúc CSDL',
|
||||
|
||||
// link to current database schema layout
|
||||
'Permanent link' => 'Liên kết cố định',
|
||||
|
||||
// thousands separator - must contain single byte
|
||||
',' => ',',
|
||||
'0123456789' => '0123456789',
|
||||
'Engine' => 'Cơ chế lưu trữ',
|
||||
'Collation' => 'Bộ mã',
|
||||
'Data Length' => 'Kích thước dữ liệu',
|
||||
'Index Length' => 'Kích thước chỉ mục',
|
||||
'Data Free' => 'Dữ liệu trống',
|
||||
'Rows' => 'Số dòng',
|
||||
'%d in total' => '%s',
|
||||
'Analyze' => 'Phân tích',
|
||||
'Optimize' => 'Tối ưu',
|
||||
'Vacuum' => 'Dọn dẹp',
|
||||
'Check' => 'Kiểm tra',
|
||||
'Repair' => 'Sửa chữa',
|
||||
'Truncate' => 'Làm rỗng',
|
||||
'Tables have been truncated.' => 'Bảng đã bị làm rỗng.',
|
||||
'Move to other database' => 'Chuyển tới cơ sở dữ liệu khác',
|
||||
'Move' => 'Chuyển đi',
|
||||
'Tables have been moved.' => 'Bảng.',
|
||||
'Copy' => 'Sao chép',
|
||||
'Tables have been copied.' => 'Bảng đã được sao chép.',
|
||||
|
||||
'Routines' => 'Routines',
|
||||
'Routine has been called, %d row(s) affected.' => 'Đã chạy routine, thay đổi %d dòng.',
|
||||
'Call' => 'Gọi',
|
||||
'Parameter name' => 'Tham số',
|
||||
'Create procedure' => 'Tạo lệnh',
|
||||
'Create function' => 'Tạo hàm',
|
||||
'Routine has been dropped.' => 'Đã xoá routine.',
|
||||
'Routine has been altered.' => 'Đã thay đổi routine.',
|
||||
'Routine has been created.' => 'Đã tạo routine.',
|
||||
'Alter function' => 'Thay đổi hàm',
|
||||
'Alter procedure' => 'Thay đổi thủ tục',
|
||||
'Return type' => 'Giá trị trả về',
|
||||
'Events' => 'Sự kiện',
|
||||
'Event has been dropped.' => 'Đã xoá sự kiện.',
|
||||
'Event has been altered.' => 'Đã thay đổi sự kiện.',
|
||||
'Event has been created.' => 'Đã tạo sự kiện.',
|
||||
'Alter event' => 'Sửa sự kiện',
|
||||
'Create event' => 'Tạo sự kiện',
|
||||
'At given time' => 'Vào thời gian xác định',
|
||||
'Every' => 'Mỗi',
|
||||
'Schedule' => 'Đặt lịch',
|
||||
'Start' => 'Bắt đầu',
|
||||
'End' => 'Kết thúc',
|
||||
'On completion preserve' => 'Khi kết thúc, duy trì',
|
||||
|
||||
'Tables' => 'Các bảng',
|
||||
'Tables and views' => 'Bảng và khung nhìn',
|
||||
'Table' => 'Bảng',
|
||||
'No tables.' => 'Không có bảng nào.',
|
||||
'Alter table' => 'Sửa bảng',
|
||||
'Create table' => 'Tạo bảng',
|
||||
'Table has been dropped.' => 'Bảng đã bị xoá.',
|
||||
'Tables have been dropped.' => 'Các bảng đã bị xoá.',
|
||||
'Tables have been optimized.' => 'Bảng đã được tối ưu.',
|
||||
'Table has been altered.' => 'Bảng đã thay đổi.',
|
||||
'Table has been created.' => 'Bảng đã được tạo.',
|
||||
'Table name' => 'Tên bảng',
|
||||
'Show structure' => 'Hiện cấu trúc',
|
||||
'engine' => 'cơ chế lưu trữ',
|
||||
'collation' => 'bảng mã',
|
||||
'Column name' => 'Tên cột',
|
||||
'Type' => 'Loại',
|
||||
'Length' => 'Độ dài',
|
||||
'Auto Increment' => 'Tăng tự động',
|
||||
'Options' => 'Tuỳ chọn',
|
||||
'Comment' => 'Chú thích',
|
||||
'Default values' => 'Giá trị mặc định',
|
||||
'Drop' => 'Xoá',
|
||||
'Are you sure?' => 'Bạn có chắc',
|
||||
'Size' => 'Kích thước',
|
||||
'Compute' => 'Tính',
|
||||
'Move up' => 'Chuyển lên trên',
|
||||
'Move down' => 'Chuyển xuống dưới',
|
||||
'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).',
|
||||
|
||||
'Partition by' => 'Phân chia bằng',
|
||||
'Partitions' => 'Phân hoạch',
|
||||
'Partition name' => 'Tên phân hoạch',
|
||||
'Values' => 'Giá trị',
|
||||
|
||||
'View' => 'Khung nhìn',
|
||||
'View has been dropped.' => 'Khung nhìn đã bị xoá.',
|
||||
'View has been altered.' => 'Khung nhìn đã được sửa.',
|
||||
'View has been created.' => 'Khung nhìn đã được tạo.',
|
||||
'Alter view' => 'Sửa khung nhìn',
|
||||
'Create view' => 'Tạo khung nhìn',
|
||||
|
||||
'Indexes' => 'Chỉ mục',
|
||||
'Indexes have been altered.' => 'Chỉ mục đã được sửa.',
|
||||
'Alter indexes' => 'Sửa chỉ mục',
|
||||
'Add next' => 'Thêm tiếp',
|
||||
'Index Type' => 'Loại chỉ mục',
|
||||
'Column (length)' => 'Cột (độ dài)',
|
||||
|
||||
'Foreign keys' => 'Các khoá ngoại',
|
||||
'Foreign key' => 'Khoá ngoại',
|
||||
'Foreign key has been dropped.' => 'Khoá ngoại đã bị xoá.',
|
||||
'Foreign key has been altered.' => 'Khoá ngoại đã được sửa.',
|
||||
'Foreign key has been created.' => 'Khoá ngoại đã được tạo.',
|
||||
'Target table' => 'Bảng đích',
|
||||
'Change' => 'Thay đổi',
|
||||
'Source' => 'Nguồn',
|
||||
'Target' => 'Đích',
|
||||
'Add column' => 'Thêm cột',
|
||||
'Alter' => 'Sửa',
|
||||
'Add foreign key' => 'Thêm khoá ngoại',
|
||||
'ON DELETE' => 'Khi xoá',
|
||||
'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.',
|
||||
|
||||
'Triggers' => 'xx',
|
||||
'Add trigger' => 'xx',
|
||||
'Trigger has been dropped.' => 'Đã xoá phản xạ.',
|
||||
'Trigger has been altered.' => 'Đã sửa phản xạ.',
|
||||
'Trigger has been created.' => 'Đã tạo phản xạ.',
|
||||
'Alter trigger' => 'Sửa phản xạ',
|
||||
'Create trigger' => 'Tạo phản xạ',
|
||||
'Time' => 'Thời gian',
|
||||
'Event' => 'Sự kiện',
|
||||
'Name' => 'Tên',
|
||||
|
||||
'select' => 'xem',
|
||||
'Select' => 'Xem',
|
||||
'Select data' => 'Xem dữ liệu',
|
||||
'Functions' => 'Các chức năng',
|
||||
'Aggregation' => 'Tổng hợp',
|
||||
'Search' => 'Tìm kiếm',
|
||||
'anywhere' => 'bất cứ đâu',
|
||||
'Search data in tables' => 'Tìm kiếm dữ liệu trong các bảng',
|
||||
'Sort' => 'Sắp xếp',
|
||||
'descending' => 'giảm dần',
|
||||
'Limit' => 'Giới hạn',
|
||||
'Text length' => 'Chiều dài văn bản',
|
||||
'Action' => 'Hành động',
|
||||
'Full table scan' => 'Quét toàn bộ bảng',
|
||||
'Unable to select the table' => 'Không thể xem dữ liệu',
|
||||
'No rows.' => 'Không có dòng dữ liệu nào.',
|
||||
'%d row(s)' => '%s dòng',
|
||||
'Page' => 'trang',
|
||||
'last' => 'cuối',
|
||||
'Load more data' => 'Xem thêm dữ liệu',
|
||||
'Loading' => 'Đang nạp',
|
||||
'whole result' => 'toàn bộ kết quả',
|
||||
'%d byte(s)' => '%d byte(s)',
|
||||
|
||||
'Import' => 'Nhập khẩ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.',
|
||||
|
||||
// in-place editing in select
|
||||
'Modify' => '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.',
|
||||
|
||||
// %s can contain auto-increment value
|
||||
'Item%s has been inserted.' => 'Đã thêm%s.',
|
||||
'Item has been deleted.' => 'Đã xoá.',
|
||||
'Item has been updated.' => 'Đã cập nhật.',
|
||||
'%d item(s) have been affected.' => '%d phần đã thay đổi.',
|
||||
'New item' => 'Thêm',
|
||||
'original' => 'bản gốc',
|
||||
// label for value '' in enum data type
|
||||
'empty' => 'trống',
|
||||
'edit' => 'sửa',
|
||||
'Edit' => 'Sửa',
|
||||
'Insert' => 'Thêm',
|
||||
'Save' => 'Lưu',
|
||||
'Save and continue edit' => 'Lưu và tiếp tục sửa',
|
||||
'Save and insert next' => 'Lưu và thêm tiếp',
|
||||
'Selected' => 'Chọn',
|
||||
'Clone' => 'Sao chép',
|
||||
'Delete' => 'Xoá',
|
||||
'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',
|
||||
'From' => 'Người gửi',
|
||||
'Subject' => 'Chủ đề',
|
||||
'Attachments' => 'Đính kèm',
|
||||
'Send' => 'Gửi',
|
||||
'%d e-mail(s) have been sent.' => '%d thư đã gửi.',
|
||||
|
||||
// data type descriptions
|
||||
'Numbers' => 'Số',
|
||||
'Date and time' => 'Ngày giờ',
|
||||
'Strings' => 'Chuỗi',
|
||||
'Binary' => 'Mã máy',
|
||||
'Lists' => 'Danh sách',
|
||||
'Network' => 'Mạng',
|
||||
'Geometry' => 'Toạ độ',
|
||||
'Relations' => 'Quan hệ',
|
||||
|
||||
'Editor' => 'Biên tập',
|
||||
// date format in Editor: $1 yyyy, $2 yy, $3 mm, $4 m, $5 dd, $6 d
|
||||
'$1-$3-$5' => '$1-$3-$5',
|
||||
// hint for date format - use language equivalents for day, month and year shortcuts
|
||||
'[yyyy]-mm-dd' => '[yyyy]-mm-dd',
|
||||
// hint for time format - use language equivalents for hour, minute and second shortcuts
|
||||
'HH:MM:SS' => 'HH:MM:SS',
|
||||
'now' => 'hiện tại',
|
||||
'yes' => 'có',
|
||||
'no' => 'không',
|
||||
|
||||
// general SQLite error in create, drop or rename database
|
||||
'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.',
|
||||
|
||||
// PostgreSQL and MS SQL schema support
|
||||
'Alter schema' => 'Thay đổi schema',
|
||||
'Create schema' => 'Tạo schema',
|
||||
'Schema has been dropped.' => 'Đã xoá schema.',
|
||||
'Schema has been created.' => 'Đã tạo schema.',
|
||||
'Schema has been altered.' => 'Đã thay đổi schema.',
|
||||
'Schema' => 'schema',
|
||||
'Invalid schema.' => 'Schema khong hợp lệ.',
|
||||
|
||||
// PostgreSQL sequences support
|
||||
'Sequences' => 'Dãy số',
|
||||
'Create sequence' => 'Tạo đãy số',
|
||||
'Sequence has been dropped.' => 'Dãy số đã bị xoá.',
|
||||
'Sequence has been created.' => 'Đã tạo dãy số.',
|
||||
'Sequence has been altered.' => 'Đã sửa dãy số.',
|
||||
'Alter sequence' => 'Thay đổi dãy số',
|
||||
|
||||
// PostgreSQL user types support
|
||||
'User types' => 'Kiểu tự định nghĩa',
|
||||
'Create type' => 'Tạo kiểu',
|
||||
'Type has been dropped.' => 'Đã xoá kiểu.',
|
||||
'Type has been created.' => 'Đã tạo kiểu.',
|
||||
'Alter type' => 'Sửa kiểu dữ liệu',
|
||||
);
|
||||
@@ -1,328 +1,342 @@
|
||||
<?php
|
||||
$translations = array(
|
||||
// label for database system selection (MySQL, SQLite, ...)
|
||||
'System' => 'xx',
|
||||
'Server' => 'xx',
|
||||
'Username' => 'xx',
|
||||
'Password' => 'xx',
|
||||
'Permanent login' => 'xx',
|
||||
'Login' => 'xx',
|
||||
'Logout' => 'xx',
|
||||
'Logged as: %s' => 'xx',
|
||||
'Logout successful.' => 'xx',
|
||||
'Invalid credentials.' => 'xx',
|
||||
'Master password expired. <a href="http://www.adminer.org/en/extension/" target="_blank">Implement</a> %s method to make it permanent.' => 'xx',
|
||||
'Language' => 'xx',
|
||||
'Invalid CSRF token. Send the form again.' => 'xx',
|
||||
'No extension' => 'xx',
|
||||
'None of the supported PHP extensions (%s) are available.' => 'xx',
|
||||
'Session support must be enabled.' => 'xx',
|
||||
'Session expired, please login again.' => 'xx',
|
||||
'%s version: %s through PHP extension %s' => 'xx',
|
||||
'Refresh' => 'xx',
|
||||
'System' => 'Xx',
|
||||
'Server' => 'Xx',
|
||||
'Username' => 'Xx',
|
||||
'Password' => 'Xx',
|
||||
'Permanent login' => 'Xx',
|
||||
'Login' => 'Xx',
|
||||
'Logout' => 'Xx',
|
||||
'Logged as: %s' => 'Xx',
|
||||
'Logout successful.' => 'Xx.',
|
||||
'Invalid credentials.' => 'Xx.',
|
||||
'<a href="https://www.adminer.org/en/extension/" target="_blank">Implement</a> %s method to use SQLite.' => 'Xx.',
|
||||
'Too many unsuccessful logins, try again in %d minute(s).' => array('Xx.', 'Xx.'),
|
||||
'Master password expired. <a href="https://www.adminer.org/en/extension/" target="_blank">Implement</a> %s method to make it permanent.' => 'Xx.',
|
||||
'Language' => 'Xx',
|
||||
'Invalid CSRF token. Send the form again.' => 'Xx.',
|
||||
'If you did not send this request from Adminer then close this page.' => 'Xx.',
|
||||
'No extension' => 'Xx',
|
||||
'None of the supported PHP extensions (%s) are available.' => 'Xx.',
|
||||
'Session support must be enabled.' => 'Xx.',
|
||||
'Session expired, please login again.' => 'Xx.',
|
||||
'%s version: %s through PHP extension %s' => 'Xx',
|
||||
'Refresh' => 'Xx',
|
||||
|
||||
// text direction - 'ltr' or 'rtl'
|
||||
'ltr' => 'xx',
|
||||
|
||||
'Privileges' => 'xx',
|
||||
'Create user' => 'xx',
|
||||
'User has been dropped.' => 'xx',
|
||||
'User has been altered.' => 'xx',
|
||||
'User has been created.' => 'xx',
|
||||
'Hashed' => 'xx',
|
||||
'Column' => 'xx',
|
||||
'Routine' => 'xx',
|
||||
'Grant' => 'xx',
|
||||
'Revoke' => 'xx',
|
||||
'Privileges' => 'Xx',
|
||||
'Create user' => 'Xx',
|
||||
'User has been dropped.' => 'Xx.',
|
||||
'User has been altered.' => 'Xx.',
|
||||
'User has been created.' => 'Xx.',
|
||||
'Hashed' => 'Xx',
|
||||
'Column' => 'Xx',
|
||||
'Routine' => 'Xx',
|
||||
'Grant' => 'Xx',
|
||||
'Revoke' => 'Xx',
|
||||
|
||||
'Process list' => 'xx',
|
||||
'%d process(es) have been killed.' => array('xx', 'xx'),
|
||||
'Kill' => 'xx',
|
||||
'Process list' => 'Xx',
|
||||
'%d process(es) have been killed.' => array('Xx.', 'Xx.'),
|
||||
'Kill' => 'Xx',
|
||||
|
||||
'Variables' => 'xx',
|
||||
'Status' => 'xx',
|
||||
'Variables' => 'Xx',
|
||||
'Status' => 'Xx',
|
||||
|
||||
'SQL command' => 'xx',
|
||||
'%d query(s) executed OK.' => array('xx', 'xx'),
|
||||
'Query executed OK, %d row(s) affected.' => array('xx', 'xx'),
|
||||
'No commands to execute.' => 'xx',
|
||||
'Error in query' => 'xx',
|
||||
'Execute' => 'xx',
|
||||
'Stop on error' => 'xx',
|
||||
'Show only errors' => 'xx',
|
||||
'Replication' => 'Xx',
|
||||
'Master status' => 'Xx',
|
||||
'Slave status' => 'Xx',
|
||||
|
||||
'SQL command' => 'Xx',
|
||||
'%d query(s) executed OK.' => array('Xx.', 'Xx.'),
|
||||
'Query executed OK, %d row(s) affected.' => array('Xx.', 'Xx.'),
|
||||
'No commands to execute.' => 'Xx.',
|
||||
'Error in query' => 'Xx',
|
||||
'ATTACH queries are not supported.' => 'Xx.',
|
||||
'Execute' => 'Xx',
|
||||
'Stop on error' => 'Xx',
|
||||
'Show only errors' => 'Xx',
|
||||
// sprintf() format for time of the command
|
||||
'%.3f s' => 'xx',
|
||||
'History' => 'xx',
|
||||
'Clear' => 'xx',
|
||||
'Edit all' => 'xx',
|
||||
'History' => 'Xx',
|
||||
'Clear' => 'Xx',
|
||||
'Edit all' => 'Xx',
|
||||
|
||||
'File upload' => 'xx',
|
||||
'From server' => 'xx',
|
||||
'Webserver file %s' => 'xx',
|
||||
'Run file' => 'xx',
|
||||
'File does not exist.' => 'xx',
|
||||
'File uploads are disabled.' => 'xx',
|
||||
'Unable to upload a file.' => 'xx',
|
||||
'Maximum allowed file size is %sB.' => 'xx',
|
||||
'Too big POST data. Reduce the data or increase the %s configuration directive.' => 'xx',
|
||||
'You can upload a big SQL file via FTP and import it from server.' => 'xx',
|
||||
'File upload' => 'Xx',
|
||||
'From server' => 'Xx',
|
||||
'Webserver file %s' => 'Xx',
|
||||
'Run file' => 'Xx',
|
||||
'File does not exist.' => 'Xx.',
|
||||
'File uploads are disabled.' => 'Xx.',
|
||||
'Unable to upload a file.' => 'Xx.',
|
||||
'Maximum allowed file size is %sB.' => 'Xx.',
|
||||
'Too big POST data. Reduce the data or increase the %s configuration directive.' => 'Xx.',
|
||||
'You can upload a big SQL file via FTP and import it from server.' => 'Xx.',
|
||||
'You are offline.' => 'Xx.',
|
||||
|
||||
'Export' => 'xx',
|
||||
'Dump' => 'xx',
|
||||
'Output' => 'xx',
|
||||
'Export' => 'Xx',
|
||||
'Output' => 'Xx',
|
||||
'open' => 'xx',
|
||||
'save' => 'xx',
|
||||
'Format' => 'xx',
|
||||
'Data' => 'xx',
|
||||
'Saving' => 'Xx',
|
||||
'Format' => 'Xx',
|
||||
'Data' => 'Xx',
|
||||
|
||||
'Database' => 'xx',
|
||||
'Database' => 'Xx',
|
||||
'database' => 'xx',
|
||||
'Use' => 'xx',
|
||||
'Select database' => 'xx',
|
||||
'Invalid database.' => 'xx',
|
||||
'Create new database' => 'xx',
|
||||
'Database has been dropped.' => 'xx',
|
||||
'Databases have been dropped.' => 'xx',
|
||||
'Database has been created.' => 'xx',
|
||||
'Database has been renamed.' => 'xx',
|
||||
'Database has been altered.' => 'xx',
|
||||
'Alter database' => 'xx',
|
||||
'Create database' => 'xx',
|
||||
'Database schema' => 'xx',
|
||||
'Use' => 'Xx',
|
||||
'Select database' => 'Xx',
|
||||
'Invalid database.' => 'Xx.',
|
||||
'Database has been dropped.' => 'Xx.',
|
||||
'Databases have been dropped.' => 'Xx.',
|
||||
'Database has been created.' => 'Xx.',
|
||||
'Database has been renamed.' => 'Xx.',
|
||||
'Database has been altered.' => 'Xx.',
|
||||
'Alter database' => 'Xx',
|
||||
'Create database' => 'Xx',
|
||||
'Database schema' => 'Xx',
|
||||
|
||||
// link to current database schema layout
|
||||
'Permanent link' => 'xx',
|
||||
'Permanent link' => 'Xx',
|
||||
|
||||
// thousands separator - must contain single byte
|
||||
',' => 'xx',
|
||||
'Engine' => 'xx',
|
||||
'Collation' => 'xx',
|
||||
'Data Length' => 'xx',
|
||||
'Index Length' => 'xx',
|
||||
'Data Free' => 'xx',
|
||||
'Rows' => 'xx',
|
||||
',' => 'x',
|
||||
'0123456789' => 'xxxxxxxxxx',
|
||||
'Engine' => 'Xx',
|
||||
'Collation' => 'Xx',
|
||||
'Data Length' => 'Xx',
|
||||
'Index Length' => 'Xx',
|
||||
'Data Free' => 'Xx',
|
||||
'Rows' => 'Xx',
|
||||
'%d in total' => 'xx',
|
||||
'Analyze' => 'xx',
|
||||
'Optimize' => 'xx',
|
||||
'Vacuum' => 'xx',
|
||||
'Check' => 'xx',
|
||||
'Repair' => 'xx',
|
||||
'Truncate' => 'xx',
|
||||
'Tables have been truncated.' => 'xx',
|
||||
'Move to other database' => 'xx',
|
||||
'Move' => 'xx',
|
||||
'Tables have been moved.' => 'xx',
|
||||
'Copy' => 'xx',
|
||||
'Tables have been copied.' => 'xx',
|
||||
'Analyze' => 'Xx',
|
||||
'Optimize' => 'Xx',
|
||||
'Vacuum' => 'Xx',
|
||||
'Check' => 'Xx',
|
||||
'Repair' => 'Xx',
|
||||
'Truncate' => 'Xx',
|
||||
'Tables have been truncated.' => 'Xx.',
|
||||
'Move to other database' => 'Xx',
|
||||
'Move' => 'Xx',
|
||||
'Tables have been moved.' => 'Xx.',
|
||||
'Copy' => 'Xx',
|
||||
'Tables have been copied.' => 'Xx.',
|
||||
|
||||
'Routines' => 'xx',
|
||||
'Routine has been called, %d row(s) affected.' => array('xx', 'xx'),
|
||||
'Call' => 'xx',
|
||||
'Parameter name' => 'xx',
|
||||
'Create procedure' => 'xx',
|
||||
'Create function' => 'xx',
|
||||
'Routine has been dropped.' => 'xx',
|
||||
'Routine has been altered.' => 'xx',
|
||||
'Routine has been created.' => 'xx',
|
||||
'Alter function' => 'xx',
|
||||
'Alter procedure' => 'xx',
|
||||
'Return type' => 'xx',
|
||||
'Routines' => 'Xx',
|
||||
'Routine has been called, %d row(s) affected.' => array('Xx.', 'Xx.'),
|
||||
'Call' => 'Xx',
|
||||
'Parameter name' => 'Xx',
|
||||
'Create procedure' => 'Xx',
|
||||
'Create function' => 'Xx',
|
||||
'Routine has been dropped.' => 'Xx.',
|
||||
'Routine has been altered.' => 'Xx.',
|
||||
'Routine has been created.' => 'Xx.',
|
||||
'Alter function' => 'Xx',
|
||||
'Alter procedure' => 'Xx',
|
||||
'Return type' => 'Xx',
|
||||
|
||||
'Events' => 'xx',
|
||||
'Event has been dropped.' => 'xx',
|
||||
'Event has been altered.' => 'xx',
|
||||
'Event has been created.' => 'xx',
|
||||
'Alter event' => 'xx',
|
||||
'Create event' => 'xx',
|
||||
'At given time' => 'xx',
|
||||
'Every' => 'xx',
|
||||
'Schedule' => 'xx',
|
||||
'Start' => 'xx',
|
||||
'End' => 'xx',
|
||||
'On completion preserve' => 'xx',
|
||||
'Events' => 'Xx',
|
||||
'Event has been dropped.' => 'Xx.',
|
||||
'Event has been altered.' => 'Xx.',
|
||||
'Event has been created.' => 'Xx.',
|
||||
'Alter event' => 'Xx',
|
||||
'Create event' => 'Xx',
|
||||
'At given time' => 'Xx',
|
||||
'Every' => 'Xx',
|
||||
'Schedule' => 'Xx',
|
||||
'Start' => 'Xx',
|
||||
'End' => 'Xx',
|
||||
'On completion preserve' => 'Xx',
|
||||
|
||||
'Tables' => 'xx',
|
||||
'Tables and views' => 'xx',
|
||||
'Table' => 'xx',
|
||||
'No tables.' => 'xx',
|
||||
'Alter table' => 'xx',
|
||||
'Create table' => 'xx',
|
||||
'Table has been dropped.' => 'xx',
|
||||
'Tables have been dropped.' => 'xx',
|
||||
'Tables have been optimized.' => 'xx',
|
||||
'Table has been altered.' => 'xx',
|
||||
'Table has been created.' => 'xx',
|
||||
'Table name' => 'xx',
|
||||
'Show structure' => 'xx',
|
||||
'Tables' => 'Xx',
|
||||
'Tables and views' => 'Xx',
|
||||
'Table' => 'Xx',
|
||||
'No tables.' => 'Xx.',
|
||||
'Alter table' => 'Xx',
|
||||
'Create table' => 'Xx',
|
||||
'Table has been dropped.' => 'Xx.',
|
||||
'Tables have been dropped.' => 'Xx.',
|
||||
'Tables have been optimized.' => 'Xx.',
|
||||
'Table has been altered.' => 'Xx.',
|
||||
'Table has been created.' => 'Xx.',
|
||||
'Table name' => 'Xx',
|
||||
'Show structure' => 'Xx',
|
||||
'engine' => 'xx',
|
||||
'collation' => 'xx',
|
||||
'Column name' => 'xx',
|
||||
'Type' => 'xx',
|
||||
'Length' => 'xx',
|
||||
'Auto Increment' => 'xx',
|
||||
'Options' => 'xx',
|
||||
'Comment' => 'xx',
|
||||
'Default values' => 'xx',
|
||||
'Drop' => 'xx',
|
||||
'Are you sure?' => 'xx',
|
||||
'Move up' => 'xx',
|
||||
'Move down' => 'xx',
|
||||
'Remove' => 'xx',
|
||||
'Maximum number of allowed fields exceeded. Please increase %s.' => 'xx',
|
||||
'Column name' => 'Xx',
|
||||
'Type' => 'Xx',
|
||||
'Length' => 'Xx',
|
||||
'Auto Increment' => 'Xx',
|
||||
'Options' => 'Xx',
|
||||
'Comment' => 'Xx',
|
||||
'Default value' => 'Xx',
|
||||
'Default values' => 'Xx',
|
||||
'Drop' => 'Xx',
|
||||
'Are you sure?' => 'Xx',
|
||||
'Size' => 'Xx',
|
||||
'Compute' => 'Xx',
|
||||
'Move up' => 'Xx',
|
||||
'Move down' => 'Xx',
|
||||
'Remove' => 'Xx',
|
||||
'Maximum number of allowed fields exceeded. Please increase %s.' => 'Xx.',
|
||||
|
||||
'Partition by' => 'xx',
|
||||
'Partitions' => 'xx',
|
||||
'Partition name' => 'xx',
|
||||
'Values' => 'xx',
|
||||
'Partition by' => 'Xx',
|
||||
'Partitions' => 'Xx',
|
||||
'Partition name' => 'Xx',
|
||||
'Values' => 'Xx',
|
||||
|
||||
'View' => 'xx',
|
||||
'View has been dropped.' => 'xx',
|
||||
'View has been altered.' => 'xx',
|
||||
'View has been created.' => 'xx',
|
||||
'Alter view' => 'xx',
|
||||
'Create view' => 'xx',
|
||||
'View' => 'Xx',
|
||||
'Materialized view' => 'Xx',
|
||||
'View has been dropped.' => 'Xx.',
|
||||
'View has been altered.' => 'Xx.',
|
||||
'View has been created.' => 'Xx.',
|
||||
'Alter view' => 'Xx',
|
||||
'Create view' => 'Xx',
|
||||
|
||||
'Indexes' => 'xx',
|
||||
'Indexes have been altered.' => 'xx',
|
||||
'Alter indexes' => 'xx',
|
||||
'Add next' => 'xx',
|
||||
'Index Type' => 'xx',
|
||||
'Column (length)' => 'xx',
|
||||
'Indexes' => 'Xx',
|
||||
'Indexes have been altered.' => 'Xx.',
|
||||
'Alter indexes' => 'Xx',
|
||||
'Add next' => 'Xx',
|
||||
'Index Type' => 'Xx',
|
||||
'Column (length)' => 'Xx',
|
||||
|
||||
'Foreign keys' => 'xx',
|
||||
'Foreign key' => 'xx',
|
||||
'Foreign key has been dropped.' => 'xx',
|
||||
'Foreign key has been altered.' => 'xx',
|
||||
'Foreign key has been created.' => 'xx',
|
||||
'Target table' => 'xx',
|
||||
'Change' => 'xx',
|
||||
'Source' => 'xx',
|
||||
'Target' => 'xx',
|
||||
'Add column' => 'xx',
|
||||
'Alter' => 'xx',
|
||||
'Add foreign key' => 'xx',
|
||||
'ON DELETE' => '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',
|
||||
'Foreign keys' => 'Xx',
|
||||
'Foreign key' => 'Xx',
|
||||
'Foreign key has been dropped.' => 'Xx.',
|
||||
'Foreign key has been altered.' => 'Xx.',
|
||||
'Foreign key has been created.' => 'Xx.',
|
||||
'Target table' => 'Xx',
|
||||
'Change' => 'Xx',
|
||||
'Source' => 'Xx',
|
||||
'Target' => 'Xx',
|
||||
'Add column' => 'Xx',
|
||||
'Alter' => 'Xx',
|
||||
'Add foreign key' => 'Xx',
|
||||
'ON DELETE' => '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.',
|
||||
|
||||
'Triggers' => 'xx',
|
||||
'Add trigger' => 'xx',
|
||||
'Trigger has been dropped.' => 'xx',
|
||||
'Trigger has been altered.' => 'xx',
|
||||
'Trigger has been created.' => 'xx',
|
||||
'Alter trigger' => 'xx',
|
||||
'Create trigger' => 'xx',
|
||||
'Time' => 'xx',
|
||||
'Event' => 'xx',
|
||||
'Name' => 'xx',
|
||||
'Triggers' => 'Xx',
|
||||
'Add trigger' => 'Xx',
|
||||
'Trigger has been dropped.' => 'Xx.',
|
||||
'Trigger has been altered.' => 'Xx.',
|
||||
'Trigger has been created.' => 'Xx.',
|
||||
'Alter trigger' => 'Xx',
|
||||
'Create trigger' => 'Xx',
|
||||
'Time' => 'Xx',
|
||||
'Event' => 'Xx',
|
||||
'Name' => 'Xx',
|
||||
|
||||
'select' => 'xx',
|
||||
'Select' => 'xx',
|
||||
'Select data' => 'xx',
|
||||
'Functions' => 'xx',
|
||||
'Aggregation' => 'xx',
|
||||
'Search' => 'xx',
|
||||
'Select' => 'Xx',
|
||||
'Select data' => 'Xx',
|
||||
'Functions' => 'Xx',
|
||||
'Aggregation' => 'Xx',
|
||||
'Search' => 'Xx',
|
||||
'anywhere' => 'xx',
|
||||
'Search data in tables' => 'xx',
|
||||
'Sort' => 'xx',
|
||||
'Search data in tables' => 'Xx',
|
||||
'Sort' => 'Xx',
|
||||
'descending' => 'xx',
|
||||
'Limit' => 'xx',
|
||||
'Text length' => 'xx',
|
||||
'Action' => 'xx',
|
||||
'Full table scan' => 'xx',
|
||||
'Unable to select the table' => 'xx',
|
||||
'No rows.' => 'xx',
|
||||
'Limit' => 'Xx',
|
||||
'Limit rows' => 'Xx',
|
||||
'Text length' => 'Xx',
|
||||
'Action' => 'Xx',
|
||||
'Full table scan' => 'Xx',
|
||||
'Unable to select the table' => 'Xx',
|
||||
'No rows.' => 'Xx.',
|
||||
'%d / ' => 'xx',
|
||||
'%d row(s)' => array('xx', 'xx'),
|
||||
'Page' => 'xx',
|
||||
'Page' => 'Xx',
|
||||
'last' => 'xx',
|
||||
'Load more data' => 'xx',
|
||||
'Loading' => 'xx',
|
||||
'Load more data' => 'Xx',
|
||||
'Loading' => 'Xx',
|
||||
'whole result' => 'xx',
|
||||
'%d byte(s)' => array('xx', 'xx'),
|
||||
|
||||
'Import' => 'xx',
|
||||
'%d row(s) have been imported.' => array('xx', 'xx'),
|
||||
'File must be in UTF-8 encoding.' => 'xx',
|
||||
'Import' => 'Xx',
|
||||
'%d row(s) have been imported.' => array('Xx.', 'Xx.'),
|
||||
'File must be in UTF-8 encoding.' => 'Xx.',
|
||||
|
||||
// in-place editing in select
|
||||
'Modify' => 'xx',
|
||||
'Ctrl+click on a value to modify it.' => 'xx',
|
||||
'Use edit link to modify this value.' => 'xx',
|
||||
'Modify' => 'Xx',
|
||||
'Ctrl+click on a value to modify it.' => 'Xx.',
|
||||
'Use edit link to modify this value.' => 'Xx.',
|
||||
|
||||
// %s can contain auto-increment value
|
||||
'Item%s has been inserted.' => 'xx',
|
||||
'Item has been deleted.' => 'xx',
|
||||
'Item has been updated.' => 'xx',
|
||||
'%d item(s) have been affected.' => array('xx', 'xx'),
|
||||
'New item' => 'xx',
|
||||
'Item%s has been inserted.' => 'Xx.',
|
||||
'Item has been deleted.' => 'Xx.',
|
||||
'Item has been updated.' => 'Xx.',
|
||||
'%d item(s) have been affected.' => array('Xx.', 'Xx.'),
|
||||
'New item' => 'Xx',
|
||||
'original' => 'xx',
|
||||
// label for value '' in enum data type
|
||||
'empty' => 'xx',
|
||||
'edit' => 'xx',
|
||||
'Edit' => 'xx',
|
||||
'Insert' => 'xx',
|
||||
'Save' => 'xx',
|
||||
'Save and continue edit' => 'xx',
|
||||
'Save and insert next' => 'xx',
|
||||
'Selected' => 'xx',
|
||||
'Clone' => 'xx',
|
||||
'Delete' => 'xx',
|
||||
'You have no privileges to update this table.' => 'xx',
|
||||
'Edit' => 'Xx',
|
||||
'Insert' => 'Xx',
|
||||
'Save' => 'Xx',
|
||||
'Save and continue edit' => 'Xx',
|
||||
'Save and insert next' => 'Xx',
|
||||
'Selected' => 'Xx',
|
||||
'Clone' => 'Xx',
|
||||
'Delete' => 'Xx',
|
||||
'You have no privileges to update this table.' => 'Xx.',
|
||||
|
||||
'E-mail' => 'xx',
|
||||
'From' => 'xx',
|
||||
'Subject' => 'xx',
|
||||
'Attachments' => 'xx',
|
||||
'Send' => 'xx',
|
||||
'%d e-mail(s) have been sent.' => array('xx', 'xx'),
|
||||
'E-mail' => 'Xx',
|
||||
'From' => 'Xx',
|
||||
'Subject' => 'Xx',
|
||||
'Attachments' => 'Xx',
|
||||
'Send' => 'Xx',
|
||||
'%d e-mail(s) have been sent.' => array('Xx.', 'Xx.'),
|
||||
|
||||
// data type descriptions
|
||||
'Numbers' => 'xx',
|
||||
'Date and time' => 'xx',
|
||||
'Strings' => 'xx',
|
||||
'Binary' => 'xx',
|
||||
'Lists' => 'xx',
|
||||
'Network' => 'xx',
|
||||
'Geometry' => 'xx',
|
||||
'Relations' => 'xx',
|
||||
'Numbers' => 'Xx',
|
||||
'Date and time' => 'Xx',
|
||||
'Strings' => 'Xx',
|
||||
'Binary' => 'Xx',
|
||||
'Lists' => 'Xx',
|
||||
'Network' => 'Xx',
|
||||
'Geometry' => 'Xx',
|
||||
'Relations' => 'Xx',
|
||||
|
||||
'Editor' => 'xx',
|
||||
'Editor' => 'Xx',
|
||||
// date format in Editor: $1 yyyy, $2 yy, $3 mm, $4 m, $5 dd, $6 d
|
||||
'$1-$3-$5' => 'xx',
|
||||
// hint for date format - use language equivalents for day, month and year shortcuts
|
||||
'[yyyy]-mm-dd' => 'xx',
|
||||
// hint for time format - use language equivalents for hour, minute and second shortcuts
|
||||
'HH:MM:SS' => 'xx',
|
||||
'HH:MM:SS' => 'Xx',
|
||||
'now' => 'xx',
|
||||
'yes' => 'xx',
|
||||
'no' => 'xx',
|
||||
|
||||
// general SQLite error in create, drop or rename database
|
||||
'File exists.' => 'xx',
|
||||
'Please use one of the extensions %s.' => 'xx',
|
||||
'File exists.' => 'Xx.',
|
||||
'Please use one of the extensions %s.' => 'Xx.',
|
||||
|
||||
// PostgreSQL and MS SQL schema support
|
||||
'Alter schema' => 'xx',
|
||||
'Create schema' => 'xx',
|
||||
'Schema has been dropped.' => 'xx',
|
||||
'Schema has been created.' => 'xx',
|
||||
'Schema has been altered.' => 'xx',
|
||||
'schema' => 'xx',
|
||||
'Schema' => 'xx',
|
||||
'Invalid schema.' => 'xx',
|
||||
'Alter schema' => 'Xx',
|
||||
'Create schema' => 'Xx',
|
||||
'Schema has been dropped.' => 'Xx.',
|
||||
'Schema has been created.' => 'Xx.',
|
||||
'Schema has been altered.' => 'Xx.',
|
||||
'Schema' => 'Xx',
|
||||
'Invalid schema.' => 'Xx.',
|
||||
|
||||
// PostgreSQL sequences support
|
||||
'Sequences' => 'xx',
|
||||
'Create sequence' => 'xx',
|
||||
'Sequence has been dropped.' => 'xx',
|
||||
'Sequence has been created.' => 'xx',
|
||||
'Sequence has been altered.' => 'xx',
|
||||
'Alter sequence' => 'xx',
|
||||
'Sequences' => 'Xx',
|
||||
'Create sequence' => 'Xx',
|
||||
'Sequence has been dropped.' => 'Xx.',
|
||||
'Sequence has been created.' => 'Xx.',
|
||||
'Sequence has been altered.' => 'Xx.',
|
||||
'Alter sequence' => 'Xx',
|
||||
|
||||
// PostgreSQL user types support
|
||||
'User types' => 'xx',
|
||||
'Create type' => 'xx',
|
||||
'Type has been dropped.' => 'xx',
|
||||
'Type has been created.' => 'xx',
|
||||
'Alter type' => 'xx',
|
||||
'User types' => 'Xx',
|
||||
'Create type' => 'Xx',
|
||||
'Type has been dropped.' => 'Xx.',
|
||||
'Type has been created.' => 'Xx.',
|
||||
'Alter type' => 'Xx',
|
||||
);
|
||||
|
||||
@@ -8,7 +8,6 @@ $translations = array(
|
||||
'Password' => '密碼',
|
||||
'Select database' => '選擇資料庫',
|
||||
'Invalid database.' => '無效的資料庫。',
|
||||
'Create new database' => '建立新資料庫',
|
||||
'Table has been altered.' => '資料表已修改。',
|
||||
'Table has been created.' => '資料表已修改。',
|
||||
'Alter table' => '修改資料表',
|
||||
@@ -30,7 +29,6 @@ $translations = array(
|
||||
'Alter database' => '修改資料庫',
|
||||
'Create database' => '建立資料庫',
|
||||
'SQL command' => 'SQL命令',
|
||||
'Dump' => '匯出',
|
||||
'Logout' => '登出',
|
||||
'database' => '資料庫',
|
||||
'Use' => '使用',
|
||||
@@ -174,6 +172,7 @@ $translations = array(
|
||||
'Data Free' => '資料空閒',
|
||||
'Rows' => '行數',
|
||||
',' => ',',
|
||||
'0123456789' => '0123456789',
|
||||
'Analyze' => '分析',
|
||||
'Optimize' => '最佳化',
|
||||
'Check' => '檢查',
|
||||
@@ -225,7 +224,6 @@ $translations = array(
|
||||
'Table has been dropped.' => '已經刪除資料表。',
|
||||
'Databases have been dropped.' => '資料庫已刪除。',
|
||||
'Search data in tables' => '在資料庫搜尋',
|
||||
'schema' => '資料表結構',
|
||||
'Schema' => '資料表結構',
|
||||
'Alter schema' => '修改資料表結構',
|
||||
'Create schema' => '建立資料表結構',
|
||||
|
||||
@@ -8,7 +8,6 @@ $translations = array(
|
||||
'Password' => '密码',
|
||||
'Select database' => '选择数据库',
|
||||
'Invalid database.' => '无效数据库。',
|
||||
'Create new database' => '创建新数据库',
|
||||
'Table has been dropped.' => '已删除表。',
|
||||
'Table has been altered.' => '已修改表。',
|
||||
'Table has been created.' => '已创建表。',
|
||||
@@ -31,7 +30,6 @@ $translations = array(
|
||||
'Alter database' => '修改数据库',
|
||||
'Create database' => '创建数据库',
|
||||
'SQL command' => 'SQL命令',
|
||||
'Dump' => '导出',
|
||||
'Logout' => '注销',
|
||||
'database' => '数据库',
|
||||
'Use' => '使用',
|
||||
@@ -176,6 +174,7 @@ $translations = array(
|
||||
'Data Free' => '数据空闲',
|
||||
'Rows' => '行数',
|
||||
',' => ',',
|
||||
'0123456789' => '0123456789',
|
||||
'Analyze' => '分析',
|
||||
'Optimize' => '优化',
|
||||
'Check' => '检查',
|
||||
@@ -225,7 +224,6 @@ $translations = array(
|
||||
'Permanent login' => '保持登录',
|
||||
'Databases have been dropped.' => '已删除数据库。',
|
||||
'Search data in tables' => '在表中搜索数据',
|
||||
'schema' => '模式',
|
||||
'Schema' => '模式',
|
||||
'Alter schema' => '修改模式',
|
||||
'Create schema' => '创建模式',
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
<?php
|
||||
page_header(lang('Privileges'));
|
||||
|
||||
echo '<p class="links"><a href="' . h(ME) . 'user=">' . lang('Create user') . "</a>";
|
||||
|
||||
$result = $connection->query("SELECT User, Host FROM mysql." . (DB == "" ? "user" : "db WHERE " . q(DB) . " LIKE Db") . " ORDER BY Host, User");
|
||||
$grant = $result;
|
||||
if (!$result) {
|
||||
@@ -25,5 +27,3 @@ if (!$grant || DB != "") {
|
||||
|
||||
echo "</table>\n";
|
||||
echo "</form>\n";
|
||||
|
||||
echo '<p class="links"><a href="' . h(ME) . 'user=">' . lang('Create user') . "</a>";
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
if (support("kill") && $_POST && !$error) {
|
||||
$killed = 0;
|
||||
foreach ((array) $_POST["kill"] as $val) {
|
||||
if (queries("KILL " . (+$val))) {
|
||||
if (kill_process($val)) {
|
||||
$killed++;
|
||||
}
|
||||
}
|
||||
@@ -30,8 +30,7 @@ foreach (process_list() as $i => $row) {
|
||||
}
|
||||
echo "</thead>\n";
|
||||
}
|
||||
|
||||
echo "<tr" . odd() . ">" . (support("kill") ? "<td>" . checkbox("kill[]", $row["Id"], 0) : "");
|
||||
echo "<tr" . odd() . ">" . (support("kill") ? "<td>" . checkbox("kill[]", $row[$jush == "sql" ? "Id" : "pid"], 0) : "");
|
||||
foreach ($row as $key => $val) {
|
||||
echo "<td>" . (
|
||||
($jush == "sql" && $key == "Info" && preg_match("~Query|Killed~", $row["Command"]) && $val != "") ||
|
||||
@@ -49,7 +48,7 @@ foreach (process_list() as $i => $row) {
|
||||
<p>
|
||||
<?php
|
||||
if (support("kill")) {
|
||||
echo ($i + 1) . "/" . lang('%d in total', $connection->result("SELECT @@max_connections"));
|
||||
echo ($i + 1) . "/" . lang('%d in total', max_connections());
|
||||
echo "<p><input type='submit' value='" . lang('Kill') . "'>\n";
|
||||
}
|
||||
?>
|
||||
|
||||
30
adminer/replication.inc.php
Normal file
30
adminer/replication.inc.php
Normal file
@@ -0,0 +1,30 @@
|
||||
<?php
|
||||
page_header(lang('Replication'));
|
||||
|
||||
echo "<h3>" . lang('Master status') . doc_link(array("sql" => "show-master-status.html")) . "</h3>\n";
|
||||
$master_replication_status = replication_status("MASTER");
|
||||
if (!$master_replication_status) {
|
||||
echo "<p class='message'>" . lang('No rows.') . "\n";
|
||||
} else {
|
||||
echo "<table cellspacing='0'>\n";
|
||||
foreach ($master_replication_status[0] as $key => $val) {
|
||||
echo "<tr>";
|
||||
echo "<th>" . h($key);
|
||||
echo "<td>" . nbsp($val);
|
||||
}
|
||||
echo "</table>\n";
|
||||
}
|
||||
|
||||
$slave_replication_status = replication_status("SLAVE");
|
||||
if ($slave_replication_status) {
|
||||
echo "<h3>" . lang('Slave status') . doc_link(array("sql" => "show-slave-status.html")) . "</h3>\n";
|
||||
foreach ($slave_replication_status[0] as $slave) {
|
||||
echo "<table cellspacing='0'>\n";
|
||||
foreach ($slave as $key => $val) {
|
||||
echo "<tr>";
|
||||
echo "<th>" . h($key);
|
||||
echo "<td>" . nbsp($val);
|
||||
}
|
||||
echo "</table>\n";
|
||||
}
|
||||
}
|
||||
@@ -3,8 +3,7 @@ page_header(lang('Database schema'), "", array(), h(DB . ($_GET["ns"] ? ".$_GET[
|
||||
|
||||
$table_pos = array();
|
||||
$table_pos_js = array();
|
||||
$name = "adminer_schema";
|
||||
$SCHEMA = ($_GET["schema"] ? $_GET["schema"] : $_COOKIE[($_COOKIE["$name-" . DB] ? "$name-" . DB : $name)]); // $_COOKIE["adminer_schema"] was used before 3.2.0 //! ':' in table name
|
||||
$SCHEMA = ($_GET["schema"] ? $_GET["schema"] : $_COOKIE["adminer_schema-" . str_replace(".", "_", DB)]); // $_COOKIE["adminer_schema"] was used before 3.2.0 //! ':' in table name
|
||||
preg_match_all('~([^:]+):([-0-9.]+)x([-0-9.]+)(_|$)~', $SCHEMA, $matches, PREG_SET_ORDER);
|
||||
foreach ($matches as $i => $match) {
|
||||
$table_pos[$match[1]] = array($match[2], $match[3]);
|
||||
|
||||
@@ -4,16 +4,15 @@ header("Content-Type: text/javascript; charset=utf-8");
|
||||
if ($_GET["script"] == "db") {
|
||||
$sums = array("Data_length" => 0, "Index_length" => 0, "Data_free" => 0);
|
||||
foreach (table_status() as $name => $table_status) {
|
||||
$id = js_escape($name);
|
||||
json_row("Comment-$id", nbsp($table_status["Comment"]));
|
||||
json_row("Comment-$name", nbsp($table_status["Comment"]));
|
||||
if (!is_view($table_status)) {
|
||||
foreach (array("Engine", "Collation") as $key) {
|
||||
json_row("$key-$id", nbsp($table_status[$key]));
|
||||
json_row("$key-$name", nbsp($table_status[$key]));
|
||||
}
|
||||
foreach ($sums + array("Auto_increment" => 0, "Rows" => 0) as $key => $val) {
|
||||
if ($table_status[$key] != "") {
|
||||
$val = number_format($table_status[$key], 0, '.', lang(','));
|
||||
json_row("$key-$id", ($key == "Rows" && $val && $table_status["Engine"] == ($sql == "pgsql" ? "table" : "InnoDB")
|
||||
$val = format_number($table_status[$key]);
|
||||
json_row("$key-$name", ($key == "Rows" && $val && $table_status["Engine"] == ($sql == "pgsql" ? "table" : "InnoDB")
|
||||
? "~ $val"
|
||||
: $val
|
||||
));
|
||||
@@ -22,22 +21,23 @@ if ($_GET["script"] == "db") {
|
||||
$sums[$key] += ($table_status["Engine"] != "InnoDB" || $key != "Data_free" ? $table_status[$key] : 0);
|
||||
}
|
||||
} elseif (array_key_exists($key, $table_status)) {
|
||||
json_row("$key-$id");
|
||||
json_row("$key-$name");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
foreach ($sums as $key => $val) {
|
||||
json_row("sum-$key", number_format($val, 0, '.', lang(',')));
|
||||
json_row("sum-$key", format_number($val));
|
||||
}
|
||||
json_row("");
|
||||
|
||||
} elseif ($_GET["script"] == "kill") {
|
||||
$connection->query("KILL " . (+$_POST["kill"]));
|
||||
$connection->query("KILL " . number($_POST["kill"]));
|
||||
|
||||
} else { // connect
|
||||
foreach (count_tables($adminer->databases()) as $db => $val) {
|
||||
json_row("tables-" . js_escape($db), $val);
|
||||
json_row("tables-$db", $val);
|
||||
json_row("size-$db", db_size($db));
|
||||
}
|
||||
json_row("");
|
||||
}
|
||||
|
||||
@@ -52,7 +52,11 @@ if ($_GET["val"] && is_ajax()) {
|
||||
if ($_POST && !$error) {
|
||||
$where_check = $where;
|
||||
if (!$_POST["all"] && is_array($_POST["check"])) {
|
||||
$where_check[] = "((" . implode(") OR (", array_map('where_check', $_POST["check"])) . "))";
|
||||
$checks = array();
|
||||
foreach ($_POST["check"] as $check) {
|
||||
$checks[] = where_check($check, $fields);
|
||||
}
|
||||
$where_check[] = "((" . implode(") OR (", $checks) . "))";
|
||||
}
|
||||
$where_check = ($where_check ? "\nWHERE " . implode(" AND ", $where_check) : "");
|
||||
$primary = $unselected = null;
|
||||
@@ -139,7 +143,11 @@ if ($_POST && !$error) {
|
||||
}
|
||||
}
|
||||
queries_redirect(remove_from_uri($_POST["all"] && $_POST["delete"] ? "page" : ""), $message, $result);
|
||||
//! display edit page in case of an error
|
||||
if (!$_POST["delete"]) {
|
||||
edit_form($TABLE, $fields, (array) $_POST["fields"], !$_POST["clone"]);
|
||||
page_footer();
|
||||
exit;
|
||||
}
|
||||
|
||||
} elseif (!$_POST["import"]) { // modify
|
||||
if (!$_POST["val"]) {
|
||||
@@ -197,7 +205,7 @@ if ($_POST && !$error) {
|
||||
}
|
||||
$result = (!$rows || $driver->insertUpdate($TABLE, $rows, $primary));
|
||||
if ($result) {
|
||||
$driver->commit();
|
||||
$result = $driver->commit();
|
||||
}
|
||||
queries_redirect(remove_from_uri("page"), lang('%d row(s) have been imported.', $affected), $result);
|
||||
$driver->rollback(); // after queries_redirect() to not overwrite error
|
||||
@@ -290,7 +298,7 @@ if (!$columns && support("table")) {
|
||||
$backward_keys = $adminer->backwardKeys($TABLE, $table_name);
|
||||
|
||||
echo "<table id='table' cellspacing='0' class='nowrap checkable' onclick='tableClick(event);' ondblclick='tableClick(event, true);' onkeydown='return editingKeydown(event);'>\n";
|
||||
echo "<thead><tr>" . (!$group && $select ? "" : "<td><input type='checkbox' id='all-page' onclick='formCheck(this, /check/);'> <a href='" . h($_GET["modify"] ? remove_from_uri("modify") : $_SERVER["REQUEST_URI"] . "&modify=1") . "'>" . lang('Modify') . "</a>");
|
||||
echo "<thead><tr>" . (!$group && $select ? "" : "<td><input type='checkbox' id='all-page' onclick='formCheck(this, /check/);' class='jsonly'> <a href='" . h($_GET["modify"] ? remove_from_uri("modify") : $_SERVER["REQUEST_URI"] . "&modify=1") . "'>" . lang('Modify') . "</a>");
|
||||
$names = array();
|
||||
$functions = array();
|
||||
reset($select);
|
||||
@@ -352,7 +360,8 @@ if (!$columns && support("table")) {
|
||||
$unique_idf = "";
|
||||
foreach ($unique_array as $key => $val) {
|
||||
if (($jush == "sql" || $jush == "pgsql") && strlen($val) > 64) {
|
||||
$key = "MD5(" . (strpos($key, '(') ? $key : idf_escape($key)) . ")"; //! columns looking like functions
|
||||
$key = (strpos($key, '(') ? $key : idf_escape($key)); //! columns looking like functions
|
||||
$key = "MD5(" . ($jush == 'sql' && preg_match("~^utf8_~", $fields[$key]["collation"]) ? $key : "CONVERT($key USING " . charset($connection) . ")") . ")";
|
||||
$val = md5($val);
|
||||
}
|
||||
$unique_idf .= "&" . ($val !== null ? urlencode("where[" . bracket_escape($key) . "]") . "=" . urlencode($val) : "null%5B%5D=" . urlencode($key));
|
||||
@@ -378,6 +387,9 @@ if (!$columns && support("table")) {
|
||||
$link .= where_link($i, $foreign_key["target"][$i], $rows[$n][$source]);
|
||||
}
|
||||
$link = ($foreign_key["db"] != "" ? preg_replace('~([?&]db=)[^&]+~', '\\1' . urlencode($foreign_key["db"]), ME) : ME) . 'select=' . urlencode($foreign_key["table"]) . $link; // InnoDB supports non-UNIQUE keys
|
||||
if ($foreign_key["ns"]) {
|
||||
$link = preg_replace('~([?&]ns=)[^&]+~', '\\1' . urlencode($foreign_key["ns"]), $link);
|
||||
}
|
||||
if (count($foreign_key["source"]) == 1) {
|
||||
break;
|
||||
}
|
||||
@@ -462,7 +474,7 @@ if (!$columns && support("table")) {
|
||||
);
|
||||
}
|
||||
echo (($found_rows === false ? count($rows) + 1 : $found_rows - $page * $limit) > $limit
|
||||
? ' <a href="' . h(remove_from_uri("page") . "&page=" . ($page + 1)) . '" onclick="return !selectLoadMore(this, ' . (+$limit) . ', \'' . lang('Loading') . '...\');">' . lang('Load more data') . '</a>'
|
||||
? ' <a href="' . h(remove_from_uri("page") . "&page=" . ($page + 1)) . '" onclick="return !selectLoadMore(this, ' . (+$limit) . ', \'' . lang('Loading') . '...\');" class="loadmore">' . lang('Load more data') . '</a>'
|
||||
: ''
|
||||
);
|
||||
} else {
|
||||
|
||||
@@ -39,13 +39,13 @@ if (!$error && $_POST) {
|
||||
$q = $query . (preg_match("~;[ \t\r\n]*\$~", $query) ? "" : ";"); //! doesn't work with DELIMITER |
|
||||
if (!$history || reset(end($history)) != $q) { // no repeated queries
|
||||
restart_session();
|
||||
$history[] = array($q, time());
|
||||
$history[] = array($q, time()); //! add elapsed time
|
||||
set_session("queries", $history_all); // required because reference is unlinked by stop_session()
|
||||
stop_session();
|
||||
}
|
||||
}
|
||||
|
||||
$space = "(?:\\s|/\\*.*\\*/|(?:#|-- )[^\n]*\n|--\r?\n)";
|
||||
$space = "(?:\\s|/\\*[\s\S]*?\\*/|(?:#|-- )[^\n]*\n?|--\r?\n)";
|
||||
$delimiter = ";";
|
||||
$offset = 0;
|
||||
$empty = true;
|
||||
@@ -55,7 +55,6 @@ if (!$error && $_POST) {
|
||||
}
|
||||
$commands = 0;
|
||||
$errors = array();
|
||||
$line = 0;
|
||||
$parse = '[\'"' . ($jush == "sql" ? '`#' : ($jush == "sqlite" ? '`[' : ($jush == "mssql" ? '[' : ''))) . ']|/\\*|-- |$' . ($jush == "pgsql" ? '|\\$[^$]*\\$' : '');
|
||||
$total_start = microtime(true);
|
||||
parse_str($_COOKIE["adminer_export"], $adminer_export);
|
||||
@@ -63,7 +62,7 @@ if (!$error && $_POST) {
|
||||
unset($dump_format["sql"]);
|
||||
|
||||
while ($query != "") {
|
||||
if (!$offset && preg_match("~^$space*DELIMITER\\s+(\\S+)~i", $query, $match)) {
|
||||
if (!$offset && preg_match("~^$space*+DELIMITER\\s+(\\S+)~i", $query, $match)) {
|
||||
$delimiter = $match[1];
|
||||
$query = substr($query, strlen($match[0]));
|
||||
} else {
|
||||
@@ -94,72 +93,83 @@ if (!$error && $_POST) {
|
||||
$empty = false;
|
||||
$q = substr($query, 0, $pos);
|
||||
$commands++;
|
||||
$print = "<pre id='sql-$commands'><code class='jush-$jush'>" . shorten_utf8(trim($q), 1000) . "</code></pre>\n";
|
||||
if (!$_POST["only_errors"]) {
|
||||
$print = "<pre id='sql-$commands'><code class='jush-$jush'>" . $adminer->sqlCommandQuery($q) . "</code></pre>\n";
|
||||
if ($jush == "sqlite" && preg_match("~^$space*+ATTACH\\b~i", $q, $match)) {
|
||||
// PHP doesn't support setting SQLITE_LIMIT_ATTACHED
|
||||
echo $print;
|
||||
ob_flush();
|
||||
flush(); // can take a long time - show the running query
|
||||
}
|
||||
$start = microtime(true);
|
||||
//! don't allow changing of character_set_results, convert encoding of displayed query
|
||||
if ($connection->multi_query($q) && is_object($connection2) && preg_match("~^$space*USE\\b~isU", $q)) {
|
||||
$connection2->query($q);
|
||||
}
|
||||
|
||||
do {
|
||||
$result = $connection->store_result();
|
||||
$end = microtime(true);
|
||||
$time = " <span class='time'>(" . format_time($start, $end) . ")</span>"
|
||||
. (strlen($q) < 1000 ? " <a href='" . h(ME) . "sql=" . urlencode(trim($q)) . "'>" . lang('Edit') . "</a>" : "") // 1000 - maximum length of encoded URL in IE is 2083 characters
|
||||
;
|
||||
|
||||
if ($connection->error) {
|
||||
echo ($_POST["only_errors"] ? $print : "");
|
||||
echo "<p class='error'>" . lang('Error in query') . ($connection->errno ? " ($connection->errno)" : "") . ": " . error() . "\n";
|
||||
$errors[] = " <a href='#sql-$commands'>$commands</a>";
|
||||
if ($_POST["error_stops"]) {
|
||||
break 2;
|
||||
}
|
||||
|
||||
} elseif (is_object($result)) {
|
||||
$orgtables = select($result, $connection2);
|
||||
if (!$_POST["only_errors"]) {
|
||||
echo "<form action='' method='post'>\n";
|
||||
echo "<p>" . ($result->num_rows ? lang('%d row(s)', $result->num_rows) : "") . $time;
|
||||
$id = "export-$commands";
|
||||
$export = ", <a href='#$id' onclick=\"return !toggle('$id');\">" . lang('Export') . "</a><span id='$id' class='hidden'>: "
|
||||
. html_select("output", $adminer->dumpOutput(), $adminer_export["output"]) . " "
|
||||
. html_select("format", $dump_format, $adminer_export["format"])
|
||||
. "<input type='hidden' name='query' value='" . h($q) . "'>"
|
||||
. " <input type='submit' name='export' value='" . lang('Export') . "'><input type='hidden' name='token' value='$token'></span>\n"
|
||||
;
|
||||
if ($connection2 && preg_match("~^($space|\\()*SELECT\\b~isU", $q) && ($explain = explain($connection2, $q))) {
|
||||
$id = "explain-$commands";
|
||||
echo ", <a href='#$id' onclick=\"return !toggle('$id');\">EXPLAIN</a>$export";
|
||||
echo "<div id='$id' class='hidden'>\n";
|
||||
select($explain, $connection2, $orgtables);
|
||||
echo "</div>\n";
|
||||
} else {
|
||||
echo $export;
|
||||
}
|
||||
echo "</form>\n";
|
||||
}
|
||||
|
||||
} else {
|
||||
if (preg_match("~^$space*(CREATE|DROP|ALTER)$space+(DATABASE|SCHEMA)\\b~isU", $q)) {
|
||||
restart_session();
|
||||
set_session("dbs", null); // clear cache
|
||||
stop_session();
|
||||
}
|
||||
if (!$_POST["only_errors"]) {
|
||||
echo "<p class='message' title='" . h($connection->info) . "'>" . lang('Query executed OK, %d row(s) affected.', $connection->affected_rows) . "$time\n";
|
||||
}
|
||||
echo "<p class='error'>" . lang('ATTACH queries are not supported.') . "\n";
|
||||
$errors[] = " <a href='#sql-$commands'>$commands</a>";
|
||||
if ($_POST["error_stops"]) {
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
if (!$_POST["only_errors"]) {
|
||||
echo $print;
|
||||
ob_flush();
|
||||
flush(); // can take a long time - show the running query
|
||||
}
|
||||
$start = microtime(true);
|
||||
//! don't allow changing of character_set_results, convert encoding of displayed query
|
||||
if ($connection->multi_query($q) && is_object($connection2) && preg_match("~^$space*+USE\\b~i", $q)) {
|
||||
$connection2->query($q);
|
||||
}
|
||||
|
||||
$start = $end;
|
||||
} while ($connection->next_result());
|
||||
do {
|
||||
$result = $connection->store_result();
|
||||
$time = " <span class='time'>(" . format_time($start) . ")</span>"
|
||||
. (strlen($q) < 1000 ? " <a href='" . h(ME) . "sql=" . urlencode(trim($q)) . "'>" . lang('Edit') . "</a>" : "") // 1000 - maximum length of encoded URL in IE is 2083 characters
|
||||
;
|
||||
|
||||
if ($connection->error) {
|
||||
echo ($_POST["only_errors"] ? $print : "");
|
||||
echo "<p class='error'>" . lang('Error in query') . ($connection->errno ? " ($connection->errno)" : "") . ": " . error() . "\n";
|
||||
$errors[] = " <a href='#sql-$commands'>$commands</a>";
|
||||
if ($_POST["error_stops"]) {
|
||||
break 2;
|
||||
}
|
||||
|
||||
} elseif (is_object($result)) {
|
||||
$limit = $_POST["limit"];
|
||||
$orgtables = select($result, $connection2, array(), $limit);
|
||||
if (!$_POST["only_errors"]) {
|
||||
echo "<form action='' method='post'>\n";
|
||||
$num_rows = $result->num_rows;
|
||||
echo "<p>" . ($num_rows ? ($limit && $num_rows > $limit ? lang('%d / ', $limit) : "") . lang('%d row(s)', $num_rows) : "");
|
||||
echo $time;
|
||||
$id = "export-$commands";
|
||||
$export = ", <a href='#$id' onclick=\"return !toggle('$id');\">" . lang('Export') . "</a><span id='$id' class='hidden'>: "
|
||||
. html_select("output", $adminer->dumpOutput(), $adminer_export["output"]) . " "
|
||||
. html_select("format", $dump_format, $adminer_export["format"])
|
||||
. "<input type='hidden' name='query' value='" . h($q) . "'>"
|
||||
. " <input type='submit' name='export' value='" . lang('Export') . "'><input type='hidden' name='token' value='$token'></span>\n"
|
||||
;
|
||||
if ($connection2 && preg_match("~^($space|\\()*+SELECT\\b~i", $q) && ($explain = explain($connection2, $q))) {
|
||||
$id = "explain-$commands";
|
||||
echo ", <a href='#$id' onclick=\"return !toggle('$id');\">EXPLAIN</a>$export";
|
||||
echo "<div id='$id' class='hidden'>\n";
|
||||
select($explain, $connection2, $orgtables);
|
||||
echo "</div>\n";
|
||||
} else {
|
||||
echo $export;
|
||||
}
|
||||
echo "</form>\n";
|
||||
}
|
||||
|
||||
} else {
|
||||
if (preg_match("~^$space*+(CREATE|DROP|ALTER)$space++(DATABASE|SCHEMA)\\b~i", $q)) {
|
||||
restart_session();
|
||||
set_session("dbs", null); // clear cache
|
||||
stop_session();
|
||||
}
|
||||
if (!$_POST["only_errors"]) {
|
||||
echo "<p class='message' title='" . h($connection->info) . "'>" . lang('Query executed OK, %d row(s) affected.', $connection->affected_rows) . "$time\n";
|
||||
}
|
||||
}
|
||||
|
||||
$start = microtime(true);
|
||||
} while ($connection->next_result());
|
||||
}
|
||||
|
||||
$line += substr_count($q.$found, "\n");
|
||||
$query = substr($query, $offset);
|
||||
$offset = 0;
|
||||
}
|
||||
@@ -172,7 +182,7 @@ if (!$error && $_POST) {
|
||||
echo "<p class='message'>" . lang('No commands to execute.') . "\n";
|
||||
} elseif ($_POST["only_errors"]) {
|
||||
echo "<p class='message'>" . lang('%d query(s) executed OK.', $commands - count($errors));
|
||||
echo " <span class='time'>(" . format_time($total_start, microtime(true)) . ")</span>\n";
|
||||
echo " <span class='time'>(" . format_time($total_start) . ")</span>\n";
|
||||
} elseif ($errors && $commands > 1) {
|
||||
echo "<p class='error'>" . lang('Error in query') . ": " . implode("", $errors) . "\n";
|
||||
}
|
||||
@@ -198,16 +208,16 @@ if (!isset($_GET["import"])) {
|
||||
}
|
||||
echo "<p>";
|
||||
textarea("query", $q, 20);
|
||||
echo ($_POST ? "" : "<script type='text/javascript'>focus(document.getElementsByTagName('textarea')[0]);</script>\n");
|
||||
echo ($_POST ? "" : "<script type='text/javascript'>document.getElementsByTagName('textarea')[0].focus();</script>\n");
|
||||
echo "<p>$execute\n";
|
||||
echo lang('Limit rows') . ": <input type='number' name='limit' class='size' value='" . h($_POST ? $_POST["limit"] : $_GET["limit"]) . "'>\n";
|
||||
|
||||
} else {
|
||||
echo "<fieldset><legend>" . lang('File upload') . "</legend><div>";
|
||||
echo (ini_bool("file_uploads")
|
||||
? '<input type="file" name="sql_file[]" multiple> (< ' . ini_get("upload_max_filesize") . 'B)' // ignore post_max_size because it is for all form fields together and bytes computing would be necessary
|
||||
? "SQL (< " . ini_get("upload_max_filesize") . "B): <input type='file' name='sql_file[]' multiple>\n$execute" // ignore post_max_size because it is for all form fields together and bytes computing would be necessary
|
||||
: lang('File uploads are disabled.')
|
||||
);
|
||||
echo "\n$execute";
|
||||
echo "</div></fieldset>\n";
|
||||
echo "<fieldset><legend>" . lang('From server') . "</legend><div>";
|
||||
echo lang('Webserver file %s', "<code>adminer.sql" . (extension_loaded("zlib") ? "[.gz]" : "") . "</code>");
|
||||
@@ -224,8 +234,13 @@ if (!isset($_GET["import"]) && $history) {
|
||||
print_fieldset("history", lang('History'), $_GET["history"] != "");
|
||||
for ($val = end($history); $val; $val = prev($history)) { // not array_reverse() to save memory
|
||||
$key = key($history);
|
||||
list($q, $time) = $val;
|
||||
echo '<a href="' . h(ME . "sql=&history=$key") . '">' . lang('Edit') . "</a> <span class='time' title='" . @date('Y-m-d', $time) . "'>" . @date("H:i:s", $time) . "</span> <code class='jush-$jush'>" . shorten_utf8(ltrim(str_replace("\n", " ", str_replace("\r", "", preg_replace('~^(#|-- ).*~m', '', $q)))), 80, "</code>") . "<br>\n"; // @ - time zone may be not set
|
||||
list($q, $time, $elapsed) = $val;
|
||||
echo '<a href="' . h(ME . "sql=&history=$key") . '">' . lang('Edit') . "</a>"
|
||||
. " <span class='time' title='" . @date('Y-m-d', $time) . "'>" . @date("H:i:s", $time) . "</span>" // @ - time zone may be not set
|
||||
. " <code class='jush-$jush'>" . shorten_utf8(ltrim(str_replace("\n", " ", str_replace("\r", "", preg_replace('~^(#|-- ).*~m', '', $q)))), 80, "</code>")
|
||||
. ($elapsed ? " <span class='time'>($elapsed)</span>" : "")
|
||||
. "<br>\n"
|
||||
;
|
||||
}
|
||||
echo "<input type='submit' name='clear' value='" . lang('Clear') . "'>\n";
|
||||
echo "<a href='" . h(ME . "sql=&history=all") . "'>" . lang('Edit all') . "</a>\n";
|
||||
|
||||
8
adminer/sqlite.php
Normal file
8
adminer/sqlite.php
Normal file
@@ -0,0 +1,8 @@
|
||||
<?php
|
||||
function adminer_object() {
|
||||
include_once "../plugins/plugin.php";
|
||||
include_once "../plugins/login-sqlite.php";
|
||||
return new AdminerPlugin(array(new AdminerLoginSqlite));
|
||||
}
|
||||
|
||||
include "./index.php";
|
||||
@@ -26,6 +26,8 @@ pre, textarea { font: 100%/1.25 monospace; }
|
||||
input[type=image] { vertical-align: middle; }
|
||||
input.default { box-shadow: 1px 1px 1px #777; }
|
||||
input.required { box-shadow: 1px 1px 1px red; }
|
||||
input.maxlength { box-shadow: 1px 1px 1px red; }
|
||||
input.wayoff { left: -1000px; position: absolute; }
|
||||
.block { display: block; }
|
||||
.version { color: #777; font-size: 67%; }
|
||||
.js .hidden, .nojs .jsonly { display: none; }
|
||||
@@ -58,8 +60,10 @@ input.required { box-shadow: 1px 1px 1px red; }
|
||||
.pages { position: fixed; bottom: 0; left: 21em; padding: 5px; background: #ddf; border: 1px solid #999; }
|
||||
.links a { white-space: nowrap; margin-right: 20px; }
|
||||
.logout { margin-top: .5em; position: absolute; top: 0; right: 0; }
|
||||
.loadmore { margin-left: 1ex; }
|
||||
#menu { position: absolute; margin: 10px 0 0; padding: 0 0 30px 0; top: 2em; left: 0; width: 19em; }
|
||||
#menu p { padding: .8em 1em; margin: 0; border-bottom: 1px solid #ccc; }
|
||||
#menu p, #tables { padding: .8em 1em; margin: 0; border-bottom: 1px solid #ccc; }
|
||||
#tables li{ list-style: none; }
|
||||
#dbs { overflow: hidden; }
|
||||
#logins, #tables { white-space: nowrap; overflow: auto; }
|
||||
#logins a, #tables a, #tables span { background: #fff; }
|
||||
@@ -78,6 +82,8 @@ input.required { box-shadow: 1px 1px 1px red; }
|
||||
.rtl .logout { left: 0; right: auto; }
|
||||
.rtl #content { margin: 2em 21em 0 0; padding: 10px 0 20px 20px; }
|
||||
.rtl #breadcrumb { left: auto; right: 21em; margin: 0 -18px 0 0; }
|
||||
.rtl .pages { left: auto; right: 21em; }
|
||||
.rtl input.wayoff { left: auto; right: -1000px; }
|
||||
.rtl #lang, .rtl #menu { left: auto; right: 0; }
|
||||
|
||||
@media all and (max-device-width: 880px) {
|
||||
@@ -86,6 +92,7 @@ input.required { box-shadow: 1px 1px 1px red; }
|
||||
#content { margin-left: 10px; }
|
||||
#lang { position: static; border-top: 1px solid #999; }
|
||||
#breadcrumb { left: auto; }
|
||||
.rtl .pages { right: auto; }
|
||||
.rtl #content { margin-right: 10px; }
|
||||
.rtl #breadcrumb { right: auto; }
|
||||
}
|
||||
|
||||
@@ -60,16 +60,6 @@ function typePassword(el, disable) {
|
||||
}
|
||||
}
|
||||
|
||||
/** Hide or show some login rows for selected driver
|
||||
* @param HTMLSelectElement
|
||||
*/
|
||||
function loginDriver(driver) {
|
||||
var trs = parentTag(driver, 'table').rows;
|
||||
for (var i=1; i < trs.length - 1; i++) {
|
||||
alterClass(trs[i], 'hidden', /sqlite/.test(driver.value));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
var dbCtrl;
|
||||
@@ -281,6 +271,22 @@ function editingRemoveRow(button, name) {
|
||||
return true;
|
||||
}
|
||||
|
||||
/** Move table row for field
|
||||
* @param HTMLInputElement
|
||||
* @param boolean direction to move row, true for up or false for down
|
||||
* @return boolean
|
||||
*/
|
||||
function editingMoveRow(button, dir){
|
||||
var row = parentTag(button, 'tr');
|
||||
if (!('nextElementSibling' in row)) {
|
||||
return false;
|
||||
}
|
||||
row.parentNode.insertBefore(row, dir
|
||||
? row.previousElementSibling
|
||||
: row.nextElementSibling ? row.nextElementSibling.nextElementSibling : row.parentNode.firstChild);
|
||||
return true;
|
||||
}
|
||||
|
||||
var lastType = '';
|
||||
|
||||
/** Clear length and hide collation or unsigned
|
||||
@@ -310,7 +316,7 @@ function editingTypeChange(type) {
|
||||
alterClass(el, 'hidden', !/((^|[^o])int|float|double|decimal)$/.test(text));
|
||||
}
|
||||
if (el.name == name + '[on_update]') {
|
||||
alterClass(el, 'hidden', text != 'timestamp');
|
||||
alterClass(el, 'hidden', !/timestamp|datetime/.test(text)); // MySQL supports datetime since 5.6.5
|
||||
}
|
||||
if (el.name == name + '[on_delete]') {
|
||||
alterClass(el, 'hidden', !/`/.test(text));
|
||||
@@ -486,6 +492,21 @@ function indexesAddColumn(field, prefix) {
|
||||
|
||||
|
||||
|
||||
/** Handle changing trigger time or event
|
||||
* @param RegExp
|
||||
* @param string
|
||||
* @param HTMLFormElement
|
||||
*/
|
||||
function triggerChange(tableRe, table, form) {
|
||||
var formEvent = selectValue(form['Event']);
|
||||
if (tableRe.test(form['Trigger'].value)) {
|
||||
form['Trigger'].value = table + '_' + (selectValue(form['Timing']).charAt(0) + formEvent.charAt(0)).toLowerCase();
|
||||
}
|
||||
alterClass(form['Of'], 'hidden', formEvent != 'UPDATE OF');
|
||||
}
|
||||
|
||||
|
||||
|
||||
var that, x, y; // em and tablePos defined in schema.inc.php
|
||||
|
||||
/** Get mouse position
|
||||
@@ -563,6 +584,8 @@ function schemaMouseup(ev, db) {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
var helpOpen, helpIgnore; // when mouse outs <option> then it mouse overs border of <select> - ignore it
|
||||
|
||||
/** Display help
|
||||
@@ -582,8 +605,9 @@ function helpMouseover(el, event, text, side) {
|
||||
jush.highlight_tag([ help ]);
|
||||
alterClass(help, 'hidden');
|
||||
var rect = target.getBoundingClientRect();
|
||||
help.style.top = (rect.top - (side ? (help.offsetHeight - target.offsetHeight) / 2 : help.offsetHeight)) + 'px';
|
||||
help.style.left = (rect.left - (side ? help.offsetWidth : (help.offsetWidth - target.offsetWidth) / 2)) + 'px';
|
||||
var body = document.documentElement;
|
||||
help.style.top = (body.scrollTop + rect.top - (side ? (help.offsetHeight - target.offsetHeight) / 2 : help.offsetHeight)) + 'px';
|
||||
help.style.left = (body.scrollLeft + rect.left - (side ? help.offsetWidth : (help.offsetWidth - target.offsetWidth) / 2)) + 'px';
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -5,7 +5,9 @@
|
||||
* @param [bool]
|
||||
*/
|
||||
function alterClass(el, className, enable) {
|
||||
el.className = el.className.replace(RegExp('(^|\\s)' + className + '(\\s|$)'), '$2') + (enable ? ' ' + className : '');
|
||||
if (el) {
|
||||
el.className = el.className.replace(RegExp('(^|\\s)' + className + '(\\s|$)'), '$2') + (enable ? ' ' + className : '');
|
||||
}
|
||||
}
|
||||
|
||||
/** Toggle visibility
|
||||
@@ -35,7 +37,7 @@ function cookie(assign, days) {
|
||||
function verifyVersion(current) {
|
||||
cookie('adminer_version=0', 1);
|
||||
var iframe = document.createElement('iframe');
|
||||
iframe.src = location.protocol + '//www.adminer.org/version/?current=' + current;
|
||||
iframe.src = 'https://www.adminer.org/version/?current=' + current;
|
||||
iframe.frameBorder = 0;
|
||||
iframe.marginHeight = 0;
|
||||
iframe.scrolling = 'no';
|
||||
@@ -44,7 +46,7 @@ function verifyVersion(current) {
|
||||
if (window.postMessage && window.addEventListener) {
|
||||
iframe.style.display = 'none';
|
||||
addEventListener('message', function (event) {
|
||||
if (event.origin == location.protocol + '//www.adminer.org') {
|
||||
if (event.origin == 'https://www.adminer.org') {
|
||||
var match = /version=(.+)/.exec(event.data);
|
||||
if (match) {
|
||||
cookie('adminer_version=' + match[1], 1);
|
||||
@@ -95,7 +97,7 @@ function parentTag(el, tag) {
|
||||
function trCheck(el) {
|
||||
var tr = parentTag(el, 'tr');
|
||||
alterClass(tr, 'checked', el.checked);
|
||||
if (el.form && el.form['all'] && el.form['all'].onclick) { // Opera thinks that 'all' is who knows what
|
||||
if (el.form && el.form['all'] && el.form['all'].onclick) { // Opera treats form.all as document.all
|
||||
el.form['all'].onclick();
|
||||
}
|
||||
}
|
||||
@@ -184,6 +186,9 @@ function tableClick(event, click) {
|
||||
click = false;
|
||||
}
|
||||
el = el.parentNode;
|
||||
if (!el) { // Ctrl+click on text fields hides the element
|
||||
return;
|
||||
}
|
||||
}
|
||||
el = el.firstChild.firstChild;
|
||||
if (click) {
|
||||
@@ -234,7 +239,7 @@ function checkboxClick(event, el) {
|
||||
function setHtml(id, html) {
|
||||
var el = document.getElementById(id);
|
||||
if (el) {
|
||||
if (html == undefined) {
|
||||
if (html == null) {
|
||||
el.parentNode.innerHTML = ' ';
|
||||
} else {
|
||||
el.innerHTML = html;
|
||||
@@ -305,8 +310,12 @@ function selectAddRow(field) {
|
||||
var inputs = row.getElementsByTagName('input');
|
||||
for (var i=0; i < inputs.length; i++) {
|
||||
inputs[i].name = inputs[i].name.replace(/[a-z]\[\d+/, '$&1');
|
||||
inputs[i].value = '';
|
||||
inputs[i].className = '';
|
||||
if (inputs[i].type == 'checkbox') {
|
||||
inputs[i].checked = false;
|
||||
} else {
|
||||
inputs[i].value = '';
|
||||
}
|
||||
}
|
||||
field.parentNode.parentNode.appendChild(row);
|
||||
}
|
||||
@@ -455,16 +464,17 @@ function functionChange(select) {
|
||||
if (selectValue(select)) {
|
||||
if (input.origType === undefined) {
|
||||
input.origType = input.type;
|
||||
input.origMaxLength = input.maxLength;
|
||||
input.origMaxLength = input.getAttribute('data-maxlength');
|
||||
}
|
||||
input.removeAttribute('maxlength');
|
||||
input.removeAttribute('data-maxlength');
|
||||
input.type = 'text';
|
||||
} else if (input.origType) {
|
||||
input.type = input.origType;
|
||||
if (input.origMaxLength >= 0) {
|
||||
input.maxLength = input.origMaxLength;
|
||||
input.setAttribute('data-maxlength', input.origMaxLength);
|
||||
}
|
||||
}
|
||||
oninput({target: input});
|
||||
helpClose();
|
||||
}
|
||||
|
||||
@@ -498,11 +508,19 @@ function fieldChange(field) {
|
||||
* @param string
|
||||
* @param function (XMLHttpRequest)
|
||||
* @param [string]
|
||||
* @param [string]
|
||||
* @return XMLHttpRequest or false in case of an error
|
||||
*/
|
||||
function ajax(url, callback, data) {
|
||||
function ajax(url, callback, data, message) {
|
||||
var request = (window.XMLHttpRequest ? new XMLHttpRequest() : (window.ActiveXObject ? new ActiveXObject('Microsoft.XMLHTTP') : false));
|
||||
if (request) {
|
||||
var ajaxStatus = document.getElementById('ajaxstatus');
|
||||
if (message) {
|
||||
ajaxStatus.innerHTML = '<div class="message">' + message + '</div>';
|
||||
ajaxStatus.className = ajaxStatus.className.replace(/ hidden/g, '');
|
||||
} else {
|
||||
ajaxStatus.className += ' hidden';
|
||||
}
|
||||
request.open((data ? 'POST' : 'GET'), url);
|
||||
if (data) {
|
||||
request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
|
||||
@@ -510,7 +528,12 @@ function ajax(url, callback, data) {
|
||||
request.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
|
||||
request.onreadystatechange = function () {
|
||||
if (request.readyState == 4) {
|
||||
callback(request);
|
||||
if (/^2/.test(request.status)) {
|
||||
callback(request);
|
||||
} else {
|
||||
ajaxStatus.innerHTML = (request.status ? request.responseText : '<div class="error">' + offlineMessage + '</div>');
|
||||
ajaxStatus.className = ajaxStatus.className.replace(/ hidden/g, '');
|
||||
}
|
||||
}
|
||||
};
|
||||
request.send(data);
|
||||
@@ -524,11 +547,9 @@ function ajax(url, callback, data) {
|
||||
*/
|
||||
function ajaxSetHtml(url) {
|
||||
return ajax(url, function (request) {
|
||||
if (request.status) {
|
||||
var data = eval('(' + request.responseText + ')');
|
||||
for (var key in data) {
|
||||
setHtml(key, data[key]);
|
||||
}
|
||||
var data = eval('(' + request.responseText + ')');
|
||||
for (var key in data) {
|
||||
setHtml(key, data[key]);
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -555,18 +576,17 @@ function ajaxForm(form, message, button) {
|
||||
}
|
||||
data = data.join('&');
|
||||
|
||||
setHtml('message', '<div class="message">' + message + '</div>');
|
||||
var url = form.action;
|
||||
if (!/post/i.test(form.method)) {
|
||||
url = url.replace(/\?.*/, '') + '?' + data;
|
||||
data = '';
|
||||
}
|
||||
return ajax(url, function (request) {
|
||||
setHtml('message', request.responseText);
|
||||
setHtml('ajaxstatus', request.responseText);
|
||||
if (window.jush) {
|
||||
jush.highlight_tag(document.getElementById('message').getElementsByTagName('code'), 0);
|
||||
jush.highlight_tag(document.getElementById('ajaxstatus').getElementsByTagName('code'), 0);
|
||||
}
|
||||
}, data);
|
||||
}, data, message);
|
||||
}
|
||||
|
||||
|
||||
@@ -624,7 +644,7 @@ function selectClick(td, event, text, warning) {
|
||||
input.focus();
|
||||
if (text == 2) { // long text
|
||||
return ajax(location.href + '&' + encodeURIComponent(td.id) + '=', function (request) {
|
||||
if (request.status && request.responseText) {
|
||||
if (request.responseText) {
|
||||
input.value = request.responseText;
|
||||
input.name = td.id;
|
||||
}
|
||||
@@ -778,3 +798,9 @@ function cloneNode(el) {
|
||||
setupSubmitHighlight(el2);
|
||||
return el2;
|
||||
}
|
||||
|
||||
oninput = function (event) {
|
||||
var target = event.target;
|
||||
var maxLength = target.getAttribute('data-maxlength');
|
||||
alterClass(target, 'maxlength', target.value && maxLength != null && target.value.length > maxLength); // maxLength could be 0
|
||||
};
|
||||
|
||||
@@ -6,7 +6,7 @@ if (!$fields) {
|
||||
}
|
||||
$table_status = table_status1($TABLE, true);
|
||||
|
||||
page_header(($fields && is_view($table_status) ? lang('View') : lang('Table')) . ": " . h($TABLE), $error);
|
||||
page_header(($fields && is_view($table_status) ? $table_status['Engine'] == 'materialized view' ? lang('Materialized view') : lang('View') : lang('Table')) . ": " . h($TABLE), $error);
|
||||
|
||||
$adminer->selectLinks($table_status);
|
||||
$comment = $table_status["Comment"];
|
||||
@@ -15,16 +15,7 @@ if ($comment != "") {
|
||||
}
|
||||
|
||||
if ($fields) {
|
||||
echo "<table cellspacing='0'>\n";
|
||||
echo "<thead><tr><th>" . lang('Column') . "<td>" . lang('Type') . (support("comment") ? "<td>" . lang('Comment') : "") . "</thead>\n";
|
||||
foreach ($fields as $field) {
|
||||
echo "<tr" . odd() . "><th>" . h($field["field"]);
|
||||
echo "<td title='" . h($field["collation"]) . "'>" . h($field["full_type"]) . ($field["null"] ? " <i>NULL</i>" : "") . ($field["auto_increment"] ? " <i>" . lang('Auto Increment') . "</i>" : "");
|
||||
echo (isset($field["default"]) ? " [<b>" . h($field["default"]) . "</b>]" : "");
|
||||
echo (support("comment") ? "<td>" . nbsp($field["comment"]) : "");
|
||||
echo "\n";
|
||||
}
|
||||
echo "</table>\n";
|
||||
$adminer->tableStructurePrint($fields);
|
||||
}
|
||||
|
||||
if (!is_view($table_status)) {
|
||||
@@ -32,19 +23,7 @@ if (!is_view($table_status)) {
|
||||
echo "<h3 id='indexes'>" . lang('Indexes') . "</h3>\n";
|
||||
$indexes = indexes($TABLE);
|
||||
if ($indexes) {
|
||||
echo "<table cellspacing='0'>\n";
|
||||
foreach ($indexes as $name => $index) {
|
||||
ksort($index["columns"]); // enforce correct columns order
|
||||
$print = array();
|
||||
foreach ($index["columns"] as $key => $val) {
|
||||
$print[] = "<i>" . h($val) . "</i>"
|
||||
. ($index["lengths"][$key] ? "(" . $index["lengths"][$key] . ")" : "")
|
||||
. ($index["descs"][$key] ? " DESC" : "")
|
||||
;
|
||||
}
|
||||
echo "<tr title='" . h($name) . "'><th>$index[type]<td>" . implode(", ", $print) . "\n";
|
||||
}
|
||||
echo "</table>\n";
|
||||
$adminer->tableIndexesPrint($indexes);
|
||||
}
|
||||
echo '<p class="links"><a href="' . h(ME) . 'indexes=' . urlencode($TABLE) . '">' . lang('Alter indexes') . "</a>\n";
|
||||
}
|
||||
@@ -79,7 +58,7 @@ if (support(is_view($table_status) ? "view_trigger" : "trigger")) {
|
||||
if ($triggers) {
|
||||
echo "<table cellspacing='0'>\n";
|
||||
foreach ($triggers as $key => $val) {
|
||||
echo "<tr valign='top'><td>$val[0]<td>$val[1]<th>" . h($key) . "<td><a href='" . h(ME . 'trigger=' . urlencode($TABLE) . '&name=' . urlencode($key)) . "'>" . lang('Alter') . "</a>\n";
|
||||
echo "<tr valign='top'><td>" . h($val[0]) . "<td>" . h($val[1]) . "<th>" . h($key) . "<td><a href='" . h(ME . 'trigger=' . urlencode($TABLE) . '&name=' . urlencode($key)) . "'>" . lang('Alter') . "</a>\n";
|
||||
}
|
||||
echo "</table>\n";
|
||||
}
|
||||
|
||||
@@ -2,11 +2,10 @@
|
||||
$TABLE = $_GET["trigger"];
|
||||
$name = $_GET["name"];
|
||||
$trigger_options = trigger_options();
|
||||
$trigger_event = array("INSERT", "UPDATE", "DELETE");
|
||||
$row = (array) trigger($name) + array("Trigger" => $TABLE . "_bi");
|
||||
|
||||
if ($_POST) {
|
||||
if (!$error && in_array($_POST["Timing"], $trigger_options["Timing"]) && in_array($_POST["Event"], $trigger_event) && in_array($_POST["Type"], $trigger_options["Type"])) {
|
||||
if (!$error && in_array($_POST["Timing"], $trigger_options["Timing"]) && in_array($_POST["Event"], $trigger_options["Event"]) && in_array($_POST["Type"], $trigger_options["Type"])) {
|
||||
// don't use drop_create() because there may not be more triggers for the same action
|
||||
$on = " ON " . table($TABLE);
|
||||
$drop = "DROP TRIGGER " . idf_escape($name) . ($jush == "pgsql" ? $on : "");
|
||||
@@ -35,11 +34,13 @@ page_header(($name != "" ? lang('Alter trigger') . ": " . h($name) : lang('Creat
|
||||
|
||||
<form action="" method="post" id="form">
|
||||
<table cellspacing="0">
|
||||
<tr><th><?php echo lang('Time'); ?><td><?php echo html_select("Timing", $trigger_options["Timing"], $row["Timing"], "if (/^" . preg_quote($TABLE, "/") . "_[ba][iud]$/.test(this.form['Trigger'].value)) this.form['Trigger'].value = '" . js_escape($TABLE) . "_' + selectValue(this).charAt(0).toLowerCase() + selectValue(this.form['Event']).charAt(0).toLowerCase();"); ?>
|
||||
<tr><th><?php echo lang('Event'); ?><td><?php echo html_select("Event", $trigger_event, $row["Event"], "this.form['Timing'].onchange();"); ?>
|
||||
<tr><th><?php echo lang('Time'); ?><td><?php echo html_select("Timing", $trigger_options["Timing"], $row["Timing"], "triggerChange(/^" . preg_quote($TABLE, "/") . "_[ba][iud]$/, '" . js_escape($TABLE) . "', this.form);"); ?>
|
||||
<tr><th><?php echo lang('Event'); ?><td><?php echo html_select("Event", $trigger_options["Event"], $row["Event"], "this.form['Timing'].onchange();"); ?>
|
||||
<?php echo (in_array("UPDATE OF", $trigger_options["Event"]) ? " <input name='Of' value='" . h($row["Of"]) . "' class='hidden'>": ""); ?>
|
||||
<tr><th><?php echo lang('Type'); ?><td><?php echo html_select("Type", $trigger_options["Type"], $row["Type"]); ?>
|
||||
</table>
|
||||
<p><?php echo lang('Name'); ?>: <input name="Trigger" value="<?php echo h($row["Trigger"]); ?>" maxlength="64" autocapitalize="off">
|
||||
<script type="text/javascript">document.getElementById('form')['Timing'].onchange();</script>
|
||||
<p><?php textarea("Statement", $row["Statement"]); ?>
|
||||
<p>
|
||||
<input type="submit" value="<?php echo lang('Save'); ?>">
|
||||
|
||||
@@ -1,23 +1,30 @@
|
||||
<?php
|
||||
$TABLE = $_GET["view"];
|
||||
$row = $_POST;
|
||||
$orig_type = "VIEW";
|
||||
if ($jush == "pgsql" && $TABLE != "") {
|
||||
$status = table_status($TABLE);
|
||||
$orig_type = strtoupper($status["Engine"]);
|
||||
}
|
||||
|
||||
if ($_POST && !$error) {
|
||||
$name = trim($row["name"]);
|
||||
$as = " AS\n$row[select]";
|
||||
$location = ME . "table=" . urlencode($name);
|
||||
$message = lang('View has been altered.');
|
||||
|
||||
if (!$_POST["drop"] && $TABLE == $name && $jush != "sqlite") {
|
||||
|
||||
$type = ($_POST["materialized"] ? "MATERIALIZED VIEW" : "VIEW");
|
||||
|
||||
if (!$_POST["drop"] && $TABLE == $name && $jush != "sqlite" && $type == "VIEW" && $orig_type == "VIEW") {
|
||||
query_redirect(($jush == "mssql" ? "ALTER" : "CREATE OR REPLACE") . " VIEW " . table($name) . $as, $location, $message);
|
||||
} else {
|
||||
$temp_name = $name . "_adminer_" . uniqid();
|
||||
drop_create(
|
||||
"DROP VIEW " . table($TABLE),
|
||||
"CREATE VIEW " . table($name) . $as,
|
||||
"DROP VIEW " . table($name),
|
||||
"CREATE VIEW " . table($temp_name) . $as,
|
||||
"DROP VIEW " . table($temp_name),
|
||||
"DROP $orig_type " . table($TABLE),
|
||||
"CREATE $type " . table($name) . $as,
|
||||
"DROP $type " . table($name),
|
||||
"CREATE $type " . table($temp_name) . $as,
|
||||
"DROP $type " . table($temp_name),
|
||||
($_POST["drop"] ? substr(ME, 0, -1) : $location),
|
||||
lang('View has been dropped.'),
|
||||
$message,
|
||||
@@ -31,8 +38,9 @@ if ($_POST && !$error) {
|
||||
if (!$_POST && $TABLE != "") {
|
||||
$row = view($TABLE);
|
||||
$row["name"] = $TABLE;
|
||||
$row["materialized"] = ($orig_type != "VIEW");
|
||||
if (!$error) {
|
||||
$error = $connection->error;
|
||||
$error = error();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -41,6 +49,7 @@ page_header(($TABLE != "" ? lang('Alter view') : lang('Create view')), $error, a
|
||||
|
||||
<form action="" method="post">
|
||||
<p><?php echo lang('Name'); ?>: <input name="name" value="<?php echo h($row["name"]); ?>" maxlength="64" autocapitalize="off">
|
||||
<?php echo (support("materializedview") ? " " . checkbox("materialized", 1, $row["materialized"], lang('Materialized view')) : ""); ?>
|
||||
<p><?php textarea("select", $row["select"]); ?>
|
||||
<p>
|
||||
<input type="submit" value="<?php echo lang('Save'); ?>">
|
||||
|
||||
92
changes.txt
92
changes.txt
@@ -1,3 +1,93 @@
|
||||
Adminer 4.3.1 (released 2017-04-14):
|
||||
Fix permanent login after logout (bug #539)
|
||||
Fix SQL command autofocus (regression from 4.0.0)
|
||||
PostgreSQL: Support JSON and JSONB data types
|
||||
PostgreSQL: Fix index size computation in PostgreSQL < 9.0 (regression from 4.3.0)
|
||||
PostgreSQL: Fix nullable fields in export
|
||||
|
||||
Adminer 4.3.0 (released 2017-03-15):
|
||||
Make maxlength in edit fields a soft limit
|
||||
Add accessibility labels
|
||||
Add Cache-Control: immutable to static files
|
||||
MySQL: Support MySQL 8
|
||||
MySQL: Support JSON data type
|
||||
MySQL: Add dedicated view for replication status
|
||||
MySQL: Support spatial indexes
|
||||
PostgreSQL: Export
|
||||
PostgreSQL: Don't treat partial indexes as unique
|
||||
MS SQL: Support pdo_dblib
|
||||
Elasticsearch: Support HTTPS by inputting https://server
|
||||
|
||||
Adminer 4.2.5 (released 2016-06-01):
|
||||
Fix remote execution in SQLite query
|
||||
SQLite: Require credentials to use
|
||||
PostgreSQL: Support KILL
|
||||
|
||||
Adminer 4.2.4 (released 2016-02-06):
|
||||
Fix remote execution in SQLite query
|
||||
MySQL: Support PHP 7
|
||||
Bosnian translation
|
||||
Finnish translation
|
||||
|
||||
Adminer 4.2.3 (released 2015-11-15):
|
||||
Fix XSS in indexes (non-MySQL only)
|
||||
Support PHP 7
|
||||
Greek translation
|
||||
Galician translation
|
||||
Bulgarian translation
|
||||
|
||||
Adminer 4.2.2 (released 2015-08-05):
|
||||
Fix XSS in alter table (found by HP Fortify)
|
||||
|
||||
Adminer 4.2.1 (released 2015-03-10):
|
||||
Send referrer header to the same domain
|
||||
MySQL: Fix usage of utf8mb4 if the client library doesn't support it
|
||||
MySQL: Use utf8mb4 in export only if required
|
||||
SQLite: Use EXPLAIN QUERY PLAN in SQL query
|
||||
|
||||
Adminer 4.2.0 (released 2015-02-07):
|
||||
Fix XSS in login form (bug #436)
|
||||
Allow limiting number of displayed rows in SQL command
|
||||
Fix reading routine column collations
|
||||
Unlock session in alter database
|
||||
Make master key unreadable to others (bug #410)
|
||||
Fix edit by long non-utf8 string
|
||||
Specify encoding for PHP 5.6 with invalid default_charset
|
||||
Fix saving NULL value, bug since Adminer 4.0.3
|
||||
Send 403 for auth error
|
||||
Report offline and other AJAX errors (bug #419)
|
||||
Don't alter table comment if not changed
|
||||
Add links to documentation on table status page
|
||||
Fix handling of 64 bit numbers in auto_increment
|
||||
Add referrer: never meta tag
|
||||
MySQL: Use utf8mb4 if available
|
||||
MySQL: Support foreign keys in NDB storage
|
||||
PostgreSQL: Materialized views
|
||||
SQLite: Support CURRENT_* default values (bug #417)
|
||||
Elasticsearch: Use where in select
|
||||
Firebird: Alpha version
|
||||
Danish translation
|
||||
|
||||
Adminer 4.1.0 (released 2014-04-18):
|
||||
Provide size of all databases in the overview
|
||||
Prevent against brute force login attempts from the same IP address
|
||||
Compute number of tables in the overview explicitly
|
||||
Display edit form after error in clone or multi-edit
|
||||
Trim trailing non-breaking spaces in SQL textarea
|
||||
Display time of the select command
|
||||
Print elapsed time in HTML instead of SQL command comment
|
||||
Improve gzip export ratio (bug #387)
|
||||
Use rel="noreferrer" for external links, skip adminer.org redirect in WebKit
|
||||
MySQL: Fix enum types in routines (bug #391)
|
||||
MySQL: Fix editing rows by binary values, bug since Adminer 3.7.1
|
||||
MySQL: Respect daylight saving time in dump, bug since Adminer 3.6.4
|
||||
MySQL 5.6.5+: Support ON UPDATE on datatime column
|
||||
SQLite: Support UPDATE OF triggers
|
||||
SQLite: Display auto-created unique indexes, bug since Adminer 3.5.0
|
||||
Editor: Fix login() method, bug since Adminer 4.0.0
|
||||
Translate numbers in ar, bn, fa
|
||||
Vietnamese translation
|
||||
|
||||
Adminer 4.0.3 (released 2014-02-01)
|
||||
MongoDB: insert, truncate, indexes
|
||||
SimpleDB, MongoDB: insert more fields at once
|
||||
@@ -368,7 +458,7 @@ Adminer 2.3.1 (released 2010-04-06):
|
||||
Add Drop button to Alter pages (regression from 2.0.0)
|
||||
Link COUNT(*) result to listing
|
||||
Newlines in select query edit
|
||||
Return to referer after edit
|
||||
Return to referrer after edit
|
||||
Respect session.auto_start (bug #2967284)
|
||||
|
||||
Adminer 2.3.0 (released 2010-02-26):
|
||||
|
||||
12
compile.php
12
compile.php
@@ -70,7 +70,7 @@ function lang(\$translation, \$number = null) {
|
||||
$translation = $translation[$pos];
|
||||
}
|
||||
$translation = str_replace("%d", "%s", $translation);
|
||||
$number = number_format($number, 0, ".", lang(\',\'));
|
||||
$number = format_number($number);
|
||||
return sprintf($translation, $number);
|
||||
}
|
||||
';
|
||||
@@ -134,7 +134,7 @@ function put_file_lang($match) {
|
||||
case "' . $lang . '": $compressed = "' . add_quo_slashes(lzw_compress(implode("\n", $translation_ids))) . '"; break;';
|
||||
}
|
||||
$translations_version = crc32($return);
|
||||
return '$translations = &$_SESSION["translations"];
|
||||
return '$translations = $_SESSION["translations"];
|
||||
if ($_SESSION["translations_version"] != ' . $translations_version . ') {
|
||||
$translations = array();
|
||||
$_SESSION["translations_version"] = ' . $translations_version . ';
|
||||
@@ -152,6 +152,7 @@ function get_translations($lang) {
|
||||
|
||||
if (!$translations) {
|
||||
$translations = get_translations($LANG);
|
||||
$_SESSION["translations"] = $translations;
|
||||
}
|
||||
';
|
||||
}
|
||||
@@ -343,7 +344,7 @@ foreach (glob(dirname(__FILE__) . "/adminer/drivers/" . ($driver ? $driver : "*"
|
||||
|
||||
include dirname(__FILE__) . "/adminer/include/pdo.inc.php";
|
||||
include dirname(__FILE__) . "/adminer/include/driver.inc.php";
|
||||
$features = array("call" => "routine", "dump", "event", "privileges", "procedure" => "routine", "processlist", "routine", "scheme", "sequence", "status", "trigger", "type", "user" => "privileges", "variables", "view");
|
||||
$features = array("call" => "routine", "dump", "event", "privileges", "procedure" => "routine", "processlist", "routine", "scheme", "sequence", "status", "trigger", "type", "user" => "privileges", "replication", "variables", "view");
|
||||
$lang_ids = array(); // global variable simplifies usage in a callback function
|
||||
$file = file_get_contents(dirname(__FILE__) . "/$project/index.php");
|
||||
if ($driver) {
|
||||
@@ -375,9 +376,9 @@ if ($driver) {
|
||||
}
|
||||
}
|
||||
if (count($drivers) == 1) {
|
||||
$file = str_replace('<?php echo html_select("driver", $drivers, DRIVER); ?>', "<input type='hidden' name='driver' value='" . ($driver == "mysql" ? "server" : $driver) . "'>" . reset($drivers), $file);
|
||||
$file = str_replace('<?php echo html_select("auth[driver]", $drivers, DRIVER); ?>', "<input type='hidden' name='auth[driver]' value='" . ($driver == "mysql" ? "server" : $driver) . "'>" . reset($drivers), $file);
|
||||
}
|
||||
$file = preg_replace('(;../externals/jush/modules/jush-(?!textarea\.|txt\.|' . preg_quote($driver == "mysql" ? "sql" : $driver) . '\.)[^.]+.js)', '', $file);
|
||||
$file = preg_replace('(;../externals/jush/modules/jush-(?!textarea\.|txt\.|js\.|' . preg_quote($driver == "mysql" ? "sql" : $driver) . '\.)[^.]+.js)', '', $file);
|
||||
}
|
||||
if ($project == "editor") {
|
||||
$file = preg_replace('~;../externals/jush/jush.css~', '', $file);
|
||||
@@ -395,6 +396,7 @@ if ($_SESSION["lang"]) {
|
||||
$file = str_replace('<script type="text/javascript" src="static/editing.js"></script>' . "\n", "", $file);
|
||||
$file = str_replace('<script type="text/javascript" src="../externals/jush/modules/jush-textarea.js"></script>' . "\n", "", $file);
|
||||
$file = str_replace('<script type="text/javascript" src="../externals/jush/modules/jush-txt.js"></script>' . "\n", "", $file);
|
||||
$file = str_replace('<script type="text/javascript" src="../externals/jush/modules/jush-js.js"></script>' . "\n", "", $file);
|
||||
$file = str_replace('<script type="text/javascript" src="../externals/jush/modules/jush-<?php echo $jush; ?>.js"></script>' . "\n", "", $file);
|
||||
$file = str_replace('<link rel="stylesheet" type="text/css" href="../externals/jush/jush.css">' . "\n", "", $file);
|
||||
$file = preg_replace_callback("~compile_file\\('([^']+)'(?:, '([^']*)')?\\)~", 'compile_file', $file); // integrate static files
|
||||
|
||||
31
composer.json
Normal file
31
composer.json
Normal file
@@ -0,0 +1,31 @@
|
||||
{
|
||||
"name": "vrana/adminer",
|
||||
"description": "Database management in a single PHP file.",
|
||||
"homepage": "https://www.adminer.org/",
|
||||
"keywords": [
|
||||
"database"
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://sourceforge.net/p/adminer/bugs-and-features/",
|
||||
"forum": "https://sourceforge.net/p/adminer/discussion/",
|
||||
"source": "https://github.com/vrana/adminer/"
|
||||
},
|
||||
"authors": [
|
||||
{
|
||||
"name": "Jakub Vrána",
|
||||
"homepage": "https://www.vrana.cz/"
|
||||
}
|
||||
],
|
||||
"autoload": {
|
||||
"classmap": [
|
||||
"plugins/"
|
||||
]
|
||||
},
|
||||
"license": [
|
||||
"Apache-2.0",
|
||||
"GPL-2.0"
|
||||
],
|
||||
"scripts": {
|
||||
"compile": "php compile.php"
|
||||
}
|
||||
}
|
||||
@@ -45,8 +45,8 @@ border:5px solid #ccc;margin:0}
|
||||
#menu a{color:#333;margin-right:4px}
|
||||
#menu a:hover{background:#333;color:#fff;border-color:#333}
|
||||
#menu a.h1,#menu a.h1:hover{display:block;height:0;width:175px;padding:40px 0 0 0;overflow:hidden;float:left;border:0;margin:0;
|
||||
outline:0;background:url(http://www.bradezone.com/random/adminer_logo.gif) no-repeat;line-height:32px}
|
||||
#menu p{white-space:nowrap;border:0;padding:0 0 4px 0;margin:0 0 4px 0}
|
||||
outline:0;background:url(//www.bradezone.com/random/adminer_logo.gif) no-repeat;line-height:32px}
|
||||
#menu p,#tables{white-space:nowrap;border:0;padding:0 0 4px 0;margin:0 0 4px 0}
|
||||
#breadcrumb{background:#333;color:#fff;position:fixed;top:0;left:320px;width:100%;line-height:40px;padding:0;z-index:1;margin:0}
|
||||
#breadcrumb a{color:#ff9}
|
||||
#breadcrumb a:hover{background:transparent;color:#ff9;border-color:#ff9}
|
||||
|
||||
@@ -1,13 +1,16 @@
|
||||
/**
|
||||
* Alternative style for Adminer by Frank Bueltge
|
||||
* @link http://bueltge.de/
|
||||
/**
|
||||
* Alternative style for Adminer by Frank Bültge
|
||||
*
|
||||
* @link http://bueltge.de/
|
||||
* @version 02/18/2014
|
||||
*/
|
||||
|
||||
body {
|
||||
margin: 0;
|
||||
line-height: 1.25em;
|
||||
margin: 0;
|
||||
font-size: 12px;
|
||||
line-height: 1.4em;
|
||||
background: #F9F9F9;
|
||||
color: #333;
|
||||
}
|
||||
body, select, option, optgroup, button {
|
||||
font-family: "Lucida Grande",Verdana,Arial,"Bitstream Vera Sans",sans-serif;
|
||||
@@ -20,27 +23,67 @@ font-family: "Lucida Grande",Verdana,Arial,"Bitstream Vera Sans",sans-serif;
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
pre {
|
||||
white-space: pre-wrap;
|
||||
}
|
||||
|
||||
p {
|
||||
margin: 0.8em 20px 0 5px
|
||||
}
|
||||
|
||||
a {
|
||||
color: #21759B;
|
||||
background: none !important;
|
||||
}
|
||||
a:visited {
|
||||
color: #21759B;
|
||||
}
|
||||
a:hover {
|
||||
a:hover, a:hover {
|
||||
text-decoration: none;
|
||||
color: #D54E21;
|
||||
color: #d54e21;
|
||||
}
|
||||
a:focus {
|
||||
background: #c7e7fd;
|
||||
color: #124964;
|
||||
}
|
||||
a:active {
|
||||
background: none;
|
||||
outline: thin dotted;
|
||||
}
|
||||
|
||||
a.active, a.active + a {
|
||||
text-decoration: none;
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
form {
|
||||
margin: 0;
|
||||
padding: 0 0 0 5px;
|
||||
}
|
||||
table {
|
||||
margin: 0 12px 12px 0;
|
||||
table {
|
||||
width: 100%;
|
||||
clear: both;
|
||||
margin: 0;
|
||||
border-spacing: 0;
|
||||
border-collapse: separate;
|
||||
border-color: gray;
|
||||
}
|
||||
table, thead, tbody {
|
||||
margin: 10px 12px 0 0;
|
||||
border: 1px #BBB solid;
|
||||
font-size: 90%;
|
||||
}
|
||||
thead th, thead td {
|
||||
text-align: center;
|
||||
}
|
||||
td {
|
||||
white-space: normal;
|
||||
overflow: hidden;
|
||||
padding: 0 4px;
|
||||
}
|
||||
th {
|
||||
text-align: left;
|
||||
font-weight: 400;
|
||||
}
|
||||
td, th {
|
||||
background-color: #fff;
|
||||
@@ -54,9 +97,14 @@ border-top-width: 0;
|
||||
td:first-child, th:first-child {
|
||||
border-left-width: 0;
|
||||
}
|
||||
thead {
|
||||
display: table-header-group;
|
||||
vertical-align: middle;
|
||||
border-color: inherit;
|
||||
}
|
||||
thead td, thead th {
|
||||
background-color: #DFDFDF;
|
||||
border: none;
|
||||
border: none;
|
||||
border-bottom: 1px #BBB solid;
|
||||
}
|
||||
thead tr:hover td, thead tr:hover th {
|
||||
@@ -85,19 +133,21 @@ fieldset, x:-moz-any-link {
|
||||
padding-top: 4px;
|
||||
}
|
||||
fieldset {
|
||||
%padding-top: 14px;
|
||||
padding-top: 14px;
|
||||
}
|
||||
legend {
|
||||
font-weight: 900;
|
||||
color: #000;
|
||||
position: absolute;
|
||||
top: -1.666em;
|
||||
left: -1em;
|
||||
padding: 0 4px;
|
||||
}
|
||||
input[name='limit'], input[name*='length'] {
|
||||
input {
|
||||
padding: 2px 5px 1px 5px;
|
||||
}
|
||||
input[name='limit'], input[name='length'] {
|
||||
width: 3em;
|
||||
xtext-align: right;
|
||||
text-align: right;
|
||||
}
|
||||
input[name='text_length'] {
|
||||
width: 5em;
|
||||
@@ -108,39 +158,83 @@ margin-left: 2px;
|
||||
textarea, input, select {
|
||||
border-width: 1px;
|
||||
border-style: solid;
|
||||
-moz-border-radius: 4px;
|
||||
-khtml-border-radius: 4px;
|
||||
-webkit-border-radius: 4px;
|
||||
border-radius: 4px;
|
||||
-moz-border-radius: 3px;
|
||||
-khtml-border-radius: 3px;
|
||||
-webkit-border-radius: 3px;
|
||||
border-radius: 3px;
|
||||
border-color: #DFDFDF;
|
||||
}
|
||||
select {
|
||||
margin: 0 0 1px 0;
|
||||
}
|
||||
input[type="checkbox"], input[type="radio"], input[type="image"] {
|
||||
border: 0 none;
|
||||
}
|
||||
input[type=button], input[type=submit] {
|
||||
border-color: #bbb;
|
||||
color: #464646;
|
||||
display: inline-block;
|
||||
text-decoration: none;
|
||||
font-size: 12px;
|
||||
line-height: 15px;
|
||||
padding: 1px 0 0 0;
|
||||
cursor: pointer;
|
||||
border-width: 1px;
|
||||
border-style: solid;
|
||||
-webkit-border-radius: 3px;
|
||||
border-radius: 3px;
|
||||
-webkit-box-sizing: content-box;
|
||||
-moz-box-sizing: content-box;
|
||||
box-sizing: content-box;
|
||||
white-space: nowrap;
|
||||
border-color: #dfdfdf;
|
||||
background-color: #fff;
|
||||
color: #333;
|
||||
}
|
||||
input[type=button]:hover, input[type=submit]:hover {
|
||||
color: #000;
|
||||
border-color: #666;
|
||||
input[type="button"]:focus, input[type=submit] {
|
||||
border-color: #a1a1a1;
|
||||
-webkit-box-shadow: 1px 1px 2px rgba(0,0,0,0.1);
|
||||
box-shadow: 1px 1px 2px rgba(0,0,0,0.1);
|
||||
}
|
||||
input[type=button], input[type=submit] {
|
||||
text-decoration: none;
|
||||
font-size: 11px !important;
|
||||
line-height: 14px;
|
||||
padding: 2px 8px;
|
||||
cursor: pointer;
|
||||
border-width: 1px;
|
||||
border-style: solid;
|
||||
-moz-border-radius: 11px;
|
||||
-khtml-border-radius: 11px;
|
||||
-webkit-border-radius: 11px;
|
||||
border-radius: 11px;
|
||||
-moz-box-sizing: content-box;
|
||||
-webkit-box-sizing: content-box;
|
||||
-khtml-box-sizing: content-box;
|
||||
box-sizing: content-box;
|
||||
padding: 2px 5px 1px 5px;
|
||||
background: #ececec;
|
||||
background-image: -webkit-gradient(linear, left top, left bottom, from(#fff), to(#eee));
|
||||
background-image: -webkit-linear-gradient(top, #fff, #eee);
|
||||
background-image: -moz-linear-gradient(top, #fff, #eee);
|
||||
background-image: -o-linear-gradient(top, #fff, #eee);
|
||||
background-image: linear-gradient(to bottom, #fff, #eee);
|
||||
border-color: #ccc;
|
||||
-webkit-box-shadow: inset 0 0 1px 1px rgba(255,255,255, 0.9);
|
||||
box-shadow: inset 0 0 1px 1px rgba(255,255,255, 0.9);
|
||||
color: #464646;
|
||||
text-shadow: 1px 1px 0 #fff;
|
||||
}
|
||||
input[type=button]:hover, input[type=submit]:hover,
|
||||
input[type=button]:focus, input[type=submit]:focus {
|
||||
background: #ececec;
|
||||
background-image: -webkit-gradient(linear, left top, left bottom, from(#fff), to(#eee));
|
||||
background-image: -webkit-linear-gradient(top, #fff, #eee);
|
||||
background-image: -moz-linear-gradient(top, #fff, #eee);
|
||||
background-image: -o-linear-gradient(top, #fff, #eee);
|
||||
background-image: linear-gradient(to bottom, #fff, #eee);
|
||||
border-color: #bbb;
|
||||
-webkit-box-shadow: 0px 1px 1px rgba(0,0,0,.1);
|
||||
box-shadow: 0px 1px 1px rgba(0,0,0,.1);
|
||||
color: #000;
|
||||
}
|
||||
input[type=button]:active, input[type=submit]:active {
|
||||
background: #eee;
|
||||
background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#f9f9f9));
|
||||
background-image: -webkit-linear-gradient(top, #eee, #f9f9f9);
|
||||
background-image: -moz-linear-gradient(top, #eee, #f9f9f9);
|
||||
background-image: -o-linear-gradient(top, #eee, #f9f9f9);
|
||||
background-image: linear-gradient(to bottom, #eee, #f9f9f9);
|
||||
border-color: #999 #ddd #ddd #999;
|
||||
color: #555;
|
||||
-webkit-box-shadow: inset 1px 1px 0 rgba(50,50,50,0.1);
|
||||
box-shadow: inset 1px 1px 0 rgba(50,50,50,0.1);
|
||||
}
|
||||
input[type=button]:focus, input[type=submit]:focus {
|
||||
border-color: #aaa;
|
||||
}
|
||||
input + label input, select + label input {
|
||||
margin-left: 4px;
|
||||
@@ -166,6 +260,11 @@ vertical-align: middle;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
.js .column {
|
||||
position: relative;
|
||||
background: none;
|
||||
padding: 0;
|
||||
}
|
||||
.error {
|
||||
padding: 8px;
|
||||
color: red;
|
||||
@@ -190,17 +289,20 @@ color: red;
|
||||
.jush-sql {
|
||||
padding: 2px 4px;
|
||||
margin-right: 4px;
|
||||
outline: 1px #BBB dashed;
|
||||
font-size: 9pt;
|
||||
font-size: 11px;
|
||||
}
|
||||
.time {
|
||||
color: #333;
|
||||
}
|
||||
|
||||
#content {
|
||||
margin: 2px 0 0 260px;
|
||||
margin: 2px 0 0 270px;
|
||||
padding: 10px 20px 20px 0;
|
||||
}
|
||||
#lang {
|
||||
#lang {
|
||||
font-size:10px;
|
||||
height: 23px;
|
||||
width: 250px;
|
||||
width: 255px;
|
||||
display: block;
|
||||
padding: 1px 0;
|
||||
position: absolute;
|
||||
@@ -212,7 +314,7 @@ border: 1px solid #E3E3E3;
|
||||
line-height: 1.25em;
|
||||
}
|
||||
#lang select {
|
||||
font-size: 8pt;
|
||||
font-size: 10px;
|
||||
}
|
||||
#breadcrumb {
|
||||
margin: 0;
|
||||
@@ -220,7 +322,7 @@ height: 21px;
|
||||
display: block;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 260px;
|
||||
left: 270px;
|
||||
background-color: #f1f1f1;
|
||||
border: 1px solid #E3E3E3;
|
||||
padding: 2px 12px;
|
||||
@@ -230,18 +332,20 @@ position: absolute;
|
||||
margin: 0;
|
||||
top: 28px;
|
||||
left: 0;
|
||||
width: 250px;
|
||||
width: 255px;
|
||||
background-color: #f1f1f1;
|
||||
border: 1px solid #E3E3E3;
|
||||
}
|
||||
#menu form {
|
||||
margin: 0;
|
||||
}
|
||||
#menu p {
|
||||
#menu p, #tables {
|
||||
padding-left: 8px;
|
||||
font-size: 10pt;
|
||||
border-bottom: none;
|
||||
}
|
||||
#dbs {
|
||||
padding: 0 !important;
|
||||
}
|
||||
#menu form p {
|
||||
padding-left: 0;
|
||||
text-align: left;
|
||||
@@ -257,19 +361,15 @@ line-height: 35px;
|
||||
text-shadow: rgba(255,255,255,1) 0 1px 0px;
|
||||
background: none;
|
||||
}
|
||||
h1 {
|
||||
font-size: 12px;
|
||||
}
|
||||
h1 .h1 {
|
||||
font-size: 12px;
|
||||
}
|
||||
h2 {
|
||||
padding: 22px 0 0 10px;
|
||||
}
|
||||
h3 {
|
||||
margin: 40px 0 0;
|
||||
font-weight: 400;
|
||||
font-size: 130%;
|
||||
h3 {
|
||||
font: normal normal normal 18px/22px Georgia, "Times New Roman", "Bitstream Charter", Times, serif;
|
||||
margin: 20px 0 0 5px;
|
||||
}
|
||||
#schema {
|
||||
margin: 1.5em 0 0 220px;
|
||||
@@ -285,8 +385,11 @@ position: absolute;
|
||||
#schema .references {
|
||||
position: absolute;
|
||||
}
|
||||
.js div.hidden {
|
||||
display: inline;
|
||||
.js .hidden {
|
||||
display: hidden;
|
||||
}
|
||||
.js td.hidden, .js input.hidden {
|
||||
display: none;
|
||||
}
|
||||
legend a {
|
||||
color: #333;
|
||||
@@ -299,40 +402,27 @@ color: #333;
|
||||
code {
|
||||
background: transparent;
|
||||
}
|
||||
fieldset, legend, h2, table, .error, .message {
|
||||
-moz-border-radius: 5px;
|
||||
-khtml-border-radius: 5px;
|
||||
-webkit-border-radius: 5px;
|
||||
border-radius: 5px;
|
||||
fieldset, legend, table, thead, tbody, .error, .message {
|
||||
-moz-border-radius: 3px;
|
||||
-khtml-border-radius: 3px;
|
||||
-webkit-border-radius: 3px;
|
||||
border-radius: 3px;
|
||||
}
|
||||
#breadcrumb, #lang, #menu {
|
||||
-moz-border-radius-bottomright: 5px;
|
||||
-khtml-border-bottom-right-radius: 5px;
|
||||
-webkit-border-bottom-right-radius: 5px;
|
||||
border-bottom-right-radius: 5px;
|
||||
-moz-border-radius-bottomright: 3px;
|
||||
-khtml-border-bottom-right-radius: 3px;
|
||||
-webkit-border-bottom-right-radius: 3px;
|
||||
border-bottom-right-radius: 3px;
|
||||
}
|
||||
#breadcrumb {
|
||||
-moz-border-radius-bottomleft: 5px;
|
||||
-khtml-border-bottom-left-radius: 5px;
|
||||
-webkit-border-bottom-left-radius: 5px;
|
||||
border-bottom-left-radius: 5px;
|
||||
-moz-border-radius-bottomleft: 3px;
|
||||
-khtml-border-bottom-left-radius: 3px;
|
||||
-webkit-border-bottom-left-radius: 3px;
|
||||
border-bottom-left-radius: 3px;
|
||||
}
|
||||
#menu {
|
||||
-moz-border-radius-topright: 5px;
|
||||
-khtml-border-top-right-radius: 5px;
|
||||
-webkit-border-top-right-radius: 5px;
|
||||
border-bottom-top-radius: 5px;
|
||||
}
|
||||
.js .column {
|
||||
background: #DFDFDF;
|
||||
}
|
||||
#logout {
|
||||
color: #21759B;
|
||||
}
|
||||
#logout:hover {
|
||||
text-decoration: none;
|
||||
}
|
||||
#logins a, #tables a {
|
||||
background: #F1F1F1;
|
||||
line-height: 1.5em;
|
||||
}
|
||||
-khtml-border-top-right-radius: 3px;
|
||||
-webkit-border-top-right-radius: 3px;
|
||||
border-top-right-radius: 3px;
|
||||
}
|
||||
@@ -173,13 +173,14 @@ h3{
|
||||
margin:0;}
|
||||
#menu form{
|
||||
margin:0;}
|
||||
#menu p{
|
||||
#menu p,#tables{
|
||||
padding-left:8px;
|
||||
border-bottom:none;}
|
||||
#menu form p{
|
||||
padding-left:0;
|
||||
text-align:center;}
|
||||
#tables a,#tables a b{
|
||||
#logins a,#tables a,#tables a b{
|
||||
background: transparent none repeat scroll 0 0;
|
||||
color:#c00;
|
||||
padding:0 0.3ex;}
|
||||
/*#tables a b{background-color:#ff7400;color:black;}*/
|
||||
|
||||
108
designs/flat/adminer.css
Executable file
108
designs/flat/adminer.css
Executable file
@@ -0,0 +1,108 @@
|
||||
/**
|
||||
* Adminer "flat" theme by Israel Viana
|
||||
*
|
||||
* Color palette from https://kuler.adobe.com/Copy-of-Flat-UI-color-theme-3785174/
|
||||
* Navy: 2c3e50
|
||||
* Red: e74c3c
|
||||
* Gray: ecf0f1
|
||||
* Light blue: 3498db
|
||||
* Blue: 2980b9
|
||||
*/
|
||||
|
||||
/*
|
||||
* Basic tags
|
||||
*/
|
||||
|
||||
a {
|
||||
color: #2980b9;
|
||||
}
|
||||
|
||||
a:visited {
|
||||
color: #3498db
|
||||
}
|
||||
|
||||
a:link:hover, a:visited:hover {
|
||||
color: #e74c3c;
|
||||
}
|
||||
|
||||
h1 {
|
||||
border-bottom: 1px solid #e74c3c;
|
||||
background: #ecf0f1;
|
||||
}
|
||||
|
||||
h2 {
|
||||
border-bottom: 1px solid #e74c3c;
|
||||
background: #ecf0f1;
|
||||
}
|
||||
|
||||
/*
|
||||
* Tables
|
||||
*/
|
||||
|
||||
table {
|
||||
border-top: 0;
|
||||
border-left: 1px solid silver;
|
||||
}
|
||||
|
||||
td, th {
|
||||
border-right: 1px solid silver;
|
||||
border-bottom: 1px solid silver;
|
||||
padding: .3em .5em;
|
||||
}
|
||||
|
||||
thead th, thead td {
|
||||
background: #3498db;
|
||||
color: white;
|
||||
border-right: 1px solid white;
|
||||
border-bottom: 1px solid white;
|
||||
padding: .3em .5em;
|
||||
}
|
||||
|
||||
thead th a, thead td a {
|
||||
color: #eee;
|
||||
}
|
||||
|
||||
.js span.column {
|
||||
background: white;
|
||||
}
|
||||
th span.column a.text {
|
||||
color: #2980b9;
|
||||
}
|
||||
|
||||
.js .checkable .checked td, .js .checkable .checked th {
|
||||
background: rgba(52, 152, 219, .3);
|
||||
}
|
||||
|
||||
.pages {
|
||||
border: none;
|
||||
box-shadow: -1px -1px 4px silver;
|
||||
}
|
||||
|
||||
/*
|
||||
* Common sections
|
||||
*/
|
||||
|
||||
#breadcrumb a {
|
||||
color: #e74c3c;
|
||||
}
|
||||
|
||||
#logout {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
/*
|
||||
* Elements
|
||||
*/
|
||||
|
||||
sup {
|
||||
padding: 3px 7px;
|
||||
background: #3498db;
|
||||
color: white;
|
||||
border-radius: 2em;
|
||||
}
|
||||
|
||||
code.jush-sql {
|
||||
display: block;
|
||||
padding: .4em .7em;
|
||||
line-height: 1.5em;
|
||||
}
|
||||
982
designs/galkaev/adminer.css
Normal file
982
designs/galkaev/adminer.css
Normal file
@@ -0,0 +1,982 @@
|
||||
/** theme "easy on the eyes" for Adminer by p.galkaev@miraidenshi-tech.jp */
|
||||
|
||||
@import url(//fonts.googleapis.com/css?family=Source+Sans+Pro:400,900);
|
||||
|
||||
/* reset
|
||||
----------------------------------------------------------------------- */
|
||||
|
||||
*,
|
||||
*:after,
|
||||
*:before {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
outline: none;
|
||||
cursor: default;
|
||||
-webkit-appearance: none;
|
||||
-moz-box-sizing: border-box;
|
||||
-webkit-box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
-webkit-print-color-adjust: exact;
|
||||
}
|
||||
|
||||
/* for font awesome */
|
||||
*:not(.fa) {
|
||||
font-family: 'Source Sans Pro', sans-serif;
|
||||
}
|
||||
|
||||
#logins a, #tables a, #tables span {
|
||||
background: none;
|
||||
}
|
||||
|
||||
p,
|
||||
form
|
||||
{
|
||||
margin: 0;
|
||||
margin-bottom: 20px;
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
p:last-child,
|
||||
form:last-child
|
||||
{
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.type,
|
||||
.options select
|
||||
{
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
sup{
|
||||
display: none;
|
||||
}
|
||||
|
||||
/* js tooltip
|
||||
----------------------------------------------------------------------- */
|
||||
|
||||
.js .column {
|
||||
position: absolute;
|
||||
padding: 0;
|
||||
margin-top: 0;
|
||||
top: 50px;
|
||||
z-index: 9;
|
||||
left: 0px;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.js .column:not(.hidden){
|
||||
display: flex;
|
||||
}
|
||||
|
||||
.js .column a{
|
||||
text-align: center;
|
||||
color: black;
|
||||
font-weight: bold;
|
||||
flex-grow: 1;
|
||||
background: #fb4;
|
||||
height: 40px;
|
||||
line-height: 40px;
|
||||
font-size: 15px;
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
.js .column a:hover{
|
||||
background-color: gold;
|
||||
color: black;
|
||||
}
|
||||
|
||||
#help {
|
||||
position: absolute;
|
||||
border: none;
|
||||
background: #fb4;
|
||||
font-family: monospace;
|
||||
z-index: 1;
|
||||
font-size: 14px;
|
||||
line-height: 30px;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
#help a{
|
||||
color: black;
|
||||
height: 100%;
|
||||
display: block;
|
||||
padding: 0 10px;
|
||||
}
|
||||
|
||||
#help a:hover{
|
||||
background-color: gold;
|
||||
}
|
||||
|
||||
#help, .js .column{
|
||||
display: none;
|
||||
}
|
||||
|
||||
/* error and message
|
||||
----------------------------------------------------------------------- */
|
||||
|
||||
.error, .message {
|
||||
padding: 5px 15px 7px;
|
||||
margin: 10px 0;
|
||||
font-size: 14px;
|
||||
display: table;
|
||||
border-radius: 3px;
|
||||
color: white;
|
||||
}
|
||||
|
||||
.error{
|
||||
background-color: crimson;
|
||||
}
|
||||
|
||||
.message{
|
||||
background-color: seagreen;
|
||||
}
|
||||
|
||||
/* scroll bar
|
||||
----------------------------------------------------------------------- */
|
||||
|
||||
::selection {
|
||||
background-color: #2a65ae;
|
||||
}
|
||||
/*
|
||||
::-moz-selection {
|
||||
background-color: #333;
|
||||
}*/
|
||||
|
||||
/* scroll bar
|
||||
----------------------------------------------------------------------- */
|
||||
|
||||
::-webkit-scrollbar {
|
||||
background-color: black;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
::-webkit-scrollbar-thumb {
|
||||
background-color: #555;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
::-webkit-scrollbar:vertical{
|
||||
width: 6px;
|
||||
}
|
||||
|
||||
::-webkit-scrollbar-thumb:vertical{
|
||||
border-left: 0px solid black;
|
||||
width: 6px;
|
||||
}
|
||||
|
||||
::-webkit-scrollbar:horizontal{
|
||||
height: 6px;
|
||||
}
|
||||
|
||||
::-webkit-scrollbar-thumb:horizontal{
|
||||
border-top: 0px solid black;
|
||||
height: 6px;
|
||||
}
|
||||
|
||||
::-webkit-scrollbar-corner{
|
||||
color: black;
|
||||
background-color: black;
|
||||
border-color: black;
|
||||
}
|
||||
|
||||
::-webkit-resizer{
|
||||
background-color: #555;
|
||||
border-radius: 100%;
|
||||
}
|
||||
|
||||
/* html and body
|
||||
----------------------------------------------------------------------- */
|
||||
|
||||
html,
|
||||
body {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
max-height: 100%;
|
||||
overflow: hidden;
|
||||
|
||||
}
|
||||
|
||||
body{
|
||||
min-height: 100%;
|
||||
font-size: 14px;
|
||||
position: relative;
|
||||
color: #ccc;
|
||||
background-color: black;
|
||||
overflow: hidden;
|
||||
display: flex;
|
||||
flex-wrap: nowrap;
|
||||
font: inherit;
|
||||
}
|
||||
|
||||
/* headings
|
||||
----------------------------------------------------------------------- */
|
||||
|
||||
h1{
|
||||
font-size: 24px;
|
||||
margin: 0;
|
||||
padding: 0 18px;
|
||||
border-bottom: 1px solid #444;
|
||||
font-weight: bold;
|
||||
height: 70px;
|
||||
line-height: 70px;
|
||||
color: #555;
|
||||
background: none;
|
||||
}
|
||||
|
||||
h2{
|
||||
font-size: 24px;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
padding-left: 50px;
|
||||
border-bottom: 1px solid #333;
|
||||
color: #2CC990;
|
||||
font-weight: bold;
|
||||
background: none;
|
||||
height: 70px;
|
||||
line-height: 70px;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
|
||||
h3{
|
||||
font-weight: bold;
|
||||
font-size: 24px;
|
||||
margin: 40px 0 10px;
|
||||
color: #2CC990;
|
||||
padding-bottom: 5px;
|
||||
}
|
||||
|
||||
/* links
|
||||
----------------------------------------------------------------------- */
|
||||
|
||||
a{
|
||||
color: inherit;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
a:hover, a:visited{
|
||||
color: inherit;
|
||||
}
|
||||
|
||||
a:link:hover, a:visited:hover {
|
||||
color: inherit;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
/* table
|
||||
----------------------------------------------------------------------- */
|
||||
|
||||
table{
|
||||
margin: 0;
|
||||
margin-bottom: 20px;
|
||||
border: 0;
|
||||
border-collapse: collapse;
|
||||
font-size: 13px;
|
||||
width: 100%;
|
||||
/*table-layout: fixed;*/
|
||||
}
|
||||
|
||||
tr:hover th,
|
||||
.checked th
|
||||
{
|
||||
background: #333 !important;
|
||||
color: #ddd;
|
||||
border-color: none;
|
||||
}
|
||||
|
||||
tr:hover td,
|
||||
.checked td
|
||||
{
|
||||
background: #222 !important;
|
||||
color: #ddd;
|
||||
border-color: none;
|
||||
}
|
||||
|
||||
.links + table tr:hover th{
|
||||
color: #ddd;
|
||||
background: #336f5a !important;
|
||||
}
|
||||
|
||||
.links + table tr:hover td{
|
||||
background: #2CC990 !important;
|
||||
color: #333;
|
||||
}
|
||||
|
||||
p + table{
|
||||
margin-top: 20px;
|
||||
}
|
||||
|
||||
tr{
|
||||
padding-bottom: 1px;
|
||||
}
|
||||
|
||||
td, th {
|
||||
border: 0;
|
||||
border-right: 1px solid #333;
|
||||
padding: 0 12px;
|
||||
line-height: 30px;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
td:last-child,
|
||||
th:last-child{
|
||||
border-right: none;
|
||||
}
|
||||
|
||||
th{
|
||||
position: relative;
|
||||
background: #222;
|
||||
font-weight: normal;
|
||||
width: 17%;
|
||||
border-left: 5px solid #336f5a;
|
||||
border-bottom: 1px solid rgba(255, 255, 255, .13);
|
||||
color: #999;
|
||||
}
|
||||
|
||||
.checkable td:first-child{
|
||||
background: #222;
|
||||
border-right-style: solid;
|
||||
}
|
||||
|
||||
table.checkable th{
|
||||
border-left: none;
|
||||
}
|
||||
|
||||
td{
|
||||
background: #000;
|
||||
border-bottom: 1px solid rgba(255, 255, 255, .1);
|
||||
}
|
||||
|
||||
.odd th{
|
||||
background: #222;
|
||||
}
|
||||
|
||||
.odd td{
|
||||
background: #000;
|
||||
}
|
||||
|
||||
thead td,
|
||||
thead th
|
||||
{
|
||||
background: transparent !important;
|
||||
color: #ccc;
|
||||
border-right-style: dashed;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
table#edit-fields td,
|
||||
table#edit-fields th
|
||||
{
|
||||
padding: 0;
|
||||
padding-left: 5px;
|
||||
}
|
||||
|
||||
table#edit-fields thead th,
|
||||
table#edit-fields thead td
|
||||
{
|
||||
padding-left: 10px;
|
||||
}
|
||||
|
||||
thead tr:hover th,
|
||||
thead tr:hover td,
|
||||
.links + table thead tr:hover th,
|
||||
.links + table thead tr:hover td,
|
||||
table#edit-fields thead tr:hover th,
|
||||
table#edit-fields thead tr:hover td
|
||||
{
|
||||
background-color: transparent !important;
|
||||
color: inherit !important;
|
||||
border-bottom: 1px solid rgba(255, 255, 255, .1) !important;
|
||||
}
|
||||
|
||||
thead tr:hover th{
|
||||
border-bottom: 1px solid rgba(255, 255, 255, .13) !important;
|
||||
}
|
||||
|
||||
thead th {
|
||||
border-left-color: transparent;
|
||||
text-align: left;
|
||||
padding: 10px;
|
||||
}
|
||||
|
||||
/* form
|
||||
----------------------------------------------------------------------- */
|
||||
|
||||
input,
|
||||
select,
|
||||
textarea
|
||||
{
|
||||
color: #333;
|
||||
font-size: 15px;
|
||||
height: 30px;
|
||||
background-color: #ddd;
|
||||
border: none;
|
||||
border-radius: 3px;
|
||||
line-height: 28px;
|
||||
cursor: pointer;
|
||||
padding: 0;
|
||||
padding-left: 10px;
|
||||
-webkit-appearance: none;
|
||||
outline: none;
|
||||
}
|
||||
|
||||
input:hover,
|
||||
select:hover,
|
||||
input:focus,
|
||||
select:focus
|
||||
{
|
||||
background-color: #bbb;
|
||||
}
|
||||
|
||||
th input,
|
||||
td input,
|
||||
th select,
|
||||
td select,
|
||||
td textarea
|
||||
{
|
||||
background-color: transparent;
|
||||
color: pink;
|
||||
width: 100%;
|
||||
display: inline;
|
||||
border-left: 1px dashed #555;
|
||||
border-radius: 0;
|
||||
}
|
||||
|
||||
th input:hover,
|
||||
th select:hover,
|
||||
td input:hover,
|
||||
td select:hover,
|
||||
th input:focus,
|
||||
th select:focus,
|
||||
td input:focus,
|
||||
td select:focus
|
||||
{
|
||||
background-color: rgba(255, 255, 255, .15);
|
||||
}
|
||||
|
||||
th input[type='checkbox'],
|
||||
th input[type='radio'],
|
||||
td input[type='checkbox'],
|
||||
td input[type='radio']{
|
||||
border-left: none;
|
||||
background-color: transparent !important;
|
||||
}
|
||||
|
||||
|
||||
td input + a,
|
||||
td input + a:visited
|
||||
{
|
||||
text-transform: uppercase;
|
||||
margin-left: 5px;
|
||||
color: dodgerblue;
|
||||
font-size: 12px;
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
td input + a:hover{
|
||||
color: lightskyblue !important;
|
||||
}
|
||||
|
||||
input.icon{
|
||||
padding-left: 0;
|
||||
}
|
||||
|
||||
input.icon::after{
|
||||
content: '';
|
||||
}
|
||||
|
||||
th select,
|
||||
td select
|
||||
{
|
||||
color: lightcoral;
|
||||
}
|
||||
|
||||
input[type='number'] {
|
||||
min-width: 55px;
|
||||
}
|
||||
|
||||
/* radio */
|
||||
input[type='radio']{
|
||||
-webkit-appearance: radio;
|
||||
width: 18px;
|
||||
height: 18px;
|
||||
vertical-align: middle;
|
||||
margin-left: 8px;
|
||||
margin-right: 0;
|
||||
}
|
||||
|
||||
/* checkbox */
|
||||
input[type='checkbox']{
|
||||
width: 30px;
|
||||
height: 30px;
|
||||
margin-right: 6px;
|
||||
position: relative;
|
||||
border-radius: 2px;
|
||||
margin-left: 20px;
|
||||
}
|
||||
|
||||
input[type=checkbox]:hover{
|
||||
border-color: white;
|
||||
}
|
||||
|
||||
input[type=checkbox]::after {
|
||||
cursor: pointer;
|
||||
position: absolute;
|
||||
content: '×';
|
||||
left: 17%;
|
||||
top: 4.5%;
|
||||
color: #ccc;
|
||||
font-size: 35px;
|
||||
font-family: sans-serif;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
input[type=checkbox]:hover::after {
|
||||
color: #aaa;
|
||||
}
|
||||
|
||||
input[type=checkbox]:checked::after {
|
||||
color: #333;
|
||||
}
|
||||
|
||||
td input[type='checkbox'],
|
||||
th input[type='checkbox']
|
||||
{
|
||||
margin-left: 10px;
|
||||
margin-right: 26px;
|
||||
}
|
||||
|
||||
td input[type='checkbox']::after{
|
||||
left: 10%;
|
||||
top: -2px;
|
||||
color: #333;
|
||||
}
|
||||
|
||||
td input[type='checkbox']:hover::after{
|
||||
color: #555;
|
||||
}
|
||||
|
||||
td input[type='checkbox']:checked::after{
|
||||
color: #ddd;
|
||||
}
|
||||
|
||||
p input:first-child{
|
||||
margin-left: 8px;
|
||||
}
|
||||
|
||||
label{
|
||||
line-height: 27px;
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
th label{
|
||||
line-height: 35px;
|
||||
}
|
||||
|
||||
label input {
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
/* submit */
|
||||
input[type='submit']{
|
||||
color: white;
|
||||
background-color: royalblue;
|
||||
padding: 0 25px;
|
||||
margin-right: 20px;
|
||||
border-radius: 2px;
|
||||
}
|
||||
|
||||
input[type='submit']:hover{
|
||||
background-color: #214ac5;
|
||||
}
|
||||
|
||||
/* select */
|
||||
select{
|
||||
padding-left: 6px;
|
||||
}
|
||||
|
||||
/* textarea */
|
||||
textarea{
|
||||
min-height: 150px;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
/* fieldset */
|
||||
fieldset {
|
||||
display: inline;
|
||||
vertical-align: top;
|
||||
padding: 4px 7px 7px;
|
||||
margin: 0 5px 10px;
|
||||
border: 1px dashed #555;
|
||||
border-radius: 2px;
|
||||
min-height: 60px;
|
||||
}
|
||||
|
||||
fieldset > div{
|
||||
display: flex;
|
||||
}
|
||||
|
||||
fieldset > div * + p{
|
||||
margin-left: 10px;
|
||||
}
|
||||
|
||||
fieldset > div > div{
|
||||
margin-left: 10px;
|
||||
}
|
||||
|
||||
fieldset > div > div:first-child{
|
||||
margin-left: 0;
|
||||
}
|
||||
|
||||
fieldset > div input,
|
||||
fieldset > div select
|
||||
{
|
||||
margin-right: 5px;
|
||||
}
|
||||
|
||||
fieldset > div input[type='checkbox']{
|
||||
margin-left: 5px;
|
||||
}
|
||||
|
||||
fieldset input{
|
||||
flex-grow: 1;
|
||||
}
|
||||
|
||||
fieldset input[type='submit']{
|
||||
margin-right: 10px;
|
||||
}
|
||||
|
||||
fieldset input[type='submit']:last-of-type{
|
||||
margin-right: 0;
|
||||
}
|
||||
|
||||
legend{
|
||||
font-size: 14px;
|
||||
background-color: #000;
|
||||
padding: 0 3px;
|
||||
color: #999;
|
||||
}
|
||||
|
||||
/* menu
|
||||
----------------------------------------------------------------------- */
|
||||
|
||||
#menu{
|
||||
height: 100%;
|
||||
width: 300px;
|
||||
background-color: #333;
|
||||
position: relative;
|
||||
order: 1;
|
||||
flex-grow: 0;
|
||||
flex-shrink: 0;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
top: 0;
|
||||
overflow-y: overlay;
|
||||
}
|
||||
|
||||
#menu p {
|
||||
padding: 18px;
|
||||
margin: 0;
|
||||
border-bottom: 1px solid #444;
|
||||
}
|
||||
|
||||
/* logo */
|
||||
#h1{
|
||||
color: #555;
|
||||
text-decoration: none;
|
||||
font-style: inherit;
|
||||
}
|
||||
|
||||
.version {
|
||||
color: #555;
|
||||
font-size: inherit;
|
||||
}
|
||||
|
||||
/* db select */
|
||||
#dbs select{
|
||||
width: 228px;
|
||||
margin-left: 8px;
|
||||
}
|
||||
|
||||
/* links */
|
||||
#menu .links{
|
||||
padding-top: 0;
|
||||
padding-bottom: 10px;
|
||||
}
|
||||
|
||||
#menu .links a:nth-child(even){
|
||||
margin-left: 6px;
|
||||
}
|
||||
|
||||
#menu .links a{
|
||||
display: inline-block;
|
||||
vertical-align: top;
|
||||
width: 127px;
|
||||
height: 31px;
|
||||
margin: 0;
|
||||
margin-bottom: 10px;
|
||||
border: 1px solid #555;
|
||||
line-height: 27px;
|
||||
text-align: center;
|
||||
text-transform: uppercase;
|
||||
font-size: 12px;
|
||||
border-radius: 3px;
|
||||
color: #999;
|
||||
}
|
||||
|
||||
#menu .links a.active,
|
||||
#menu .links a:hover
|
||||
{
|
||||
border: 1px solid #ccc;
|
||||
font-weight: normal;
|
||||
color: inherit;
|
||||
}
|
||||
|
||||
/* tables */
|
||||
#tables{
|
||||
border-bottom: none;
|
||||
line-height: 20px;
|
||||
padding: 18px 0;
|
||||
overflow-y: auto !important;
|
||||
}
|
||||
|
||||
#tables br{
|
||||
display: none;
|
||||
}
|
||||
|
||||
#tables a {
|
||||
float: right;
|
||||
padding: 5px 18px 9px;
|
||||
line-height: 17px;
|
||||
color: #2CC990;
|
||||
font-size: 13px;
|
||||
}
|
||||
|
||||
#tables a[title] {
|
||||
float: none;
|
||||
display: block;
|
||||
color: inherit;
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
#tables a.select.active,
|
||||
#tables a.select:hover
|
||||
{
|
||||
color: #fba;
|
||||
}
|
||||
|
||||
#tables a[title]:hover,
|
||||
#tables a.active,
|
||||
#tables a.select:hover + a,
|
||||
#tables a.select.active + a
|
||||
{
|
||||
background-color: #555;
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
/* content
|
||||
----------------------------------------------------------------------- */
|
||||
|
||||
#content{
|
||||
height: 100%;
|
||||
width: 100%;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
padding-left: 50px;
|
||||
padding-right: 50px;
|
||||
padding-bottom: 30px;
|
||||
overflow-y: auto !important;
|
||||
order: 2;
|
||||
flex-grow: 1;
|
||||
}
|
||||
|
||||
#breadcrumb{
|
||||
position: relative;
|
||||
display: none;
|
||||
}
|
||||
|
||||
#content h2{
|
||||
margin-left: -50px;
|
||||
}
|
||||
|
||||
/* links */
|
||||
#content .links a,
|
||||
code.jush-sql ~ a,
|
||||
#fieldset-history > a:first-child
|
||||
{
|
||||
display: inline-block;
|
||||
height: 32px;
|
||||
line-height: 30px;
|
||||
padding: 0 10px;
|
||||
border: 1px solid #666;
|
||||
border-radius: 3px;
|
||||
font-size: 12px;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
|
||||
#content .links a:hover,
|
||||
code.jush-sql ~ a:hover,
|
||||
#fieldset-history > a:first-child:hover
|
||||
{
|
||||
color: #eee;
|
||||
border-color: #eee;
|
||||
}
|
||||
|
||||
#ajaxstatus + *{
|
||||
margin-top: 18px;
|
||||
}
|
||||
|
||||
#ajaxstatus + *.links {
|
||||
margin-top: 0 !important;
|
||||
height: 65px;
|
||||
line-height: 55px;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
#ajaxstatus + .links a{
|
||||
white-space: nowrap;
|
||||
margin-right: 20px;
|
||||
padding: 0;
|
||||
padding-bottom: 5px;
|
||||
border: 0;
|
||||
border-radius: 0;
|
||||
font-size: 15px;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
#ajaxstatus + .links a.active,
|
||||
#ajaxstatus + .links a:hover
|
||||
{
|
||||
border-bottom: 1px solid;
|
||||
border-color: inherit;
|
||||
color: inherit;
|
||||
}
|
||||
|
||||
/* fieldset search */
|
||||
#fieldset-search > div > *{
|
||||
margin-right: 5px;
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
|
||||
/* fieldset search */
|
||||
#fieldset-partition p{
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
/* feldset history */
|
||||
#fieldset-history{
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
|
||||
#fieldset-history i{
|
||||
display: none;
|
||||
}
|
||||
|
||||
#fieldset-history input[type='submit']{
|
||||
flex-grow: 0;
|
||||
order: 1;
|
||||
margin-top: 1px;
|
||||
margin-left: 17px;
|
||||
}
|
||||
|
||||
#fieldset-history > div a:last-child{
|
||||
order: 2;
|
||||
}
|
||||
|
||||
#fieldset-history > a{
|
||||
flex-grow: 0;
|
||||
flex-basis: 5%;
|
||||
min-width: 45px;
|
||||
text-align: center;
|
||||
margin-bottom: 10px;
|
||||
margin-left: 5px;
|
||||
}
|
||||
|
||||
#fieldset-history > .time{
|
||||
flex-grow: 0;
|
||||
flex-basis: 5%;
|
||||
text-align: center;
|
||||
line-height: 29px;
|
||||
}
|
||||
|
||||
#fieldset-history > code{
|
||||
flex-grow: 1;
|
||||
flex-basis: 89%;
|
||||
line-height: 29px;
|
||||
}
|
||||
|
||||
#fieldset-history > .time{
|
||||
flex-grow: 0;
|
||||
flex-basis: 5%;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
/* sql
|
||||
----------------------------------------------------------------------- */
|
||||
|
||||
.sqlarea{
|
||||
border: 1px solid #444 !important;
|
||||
width: 100% !important;
|
||||
padding: 12px 15px !important;
|
||||
font-size: 15px;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
.jush-sql_code{
|
||||
color: #fafafa !important;
|
||||
font-family: 'Source Sans Pro', sans-serif !important;
|
||||
}
|
||||
|
||||
.jush a, .jush a:visited{
|
||||
color: #fba;
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
.jush a:hover{
|
||||
color: #fba;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.jush-php_quo, .jush-quo, .jush-quo_one, .jush-php_eot, .jush-apo, .jush-sql_apo, .jush-sqlite_apo, .jush-sql_quo, .jush-sql_eot{
|
||||
color: aquamarine;
|
||||
}
|
||||
|
||||
.jush-bac, .jush-php_bac, .jush-bra, .jush-mssql_bra, .jush-sqlite_quo{
|
||||
color: plum;
|
||||
}
|
||||
|
||||
.jush-num, .jush-clr{
|
||||
color: #85E2FF;
|
||||
}
|
||||
|
||||
code {
|
||||
background: #000;
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
code.jush-sql ~ a{
|
||||
position: relative;
|
||||
margin-left: 5px;
|
||||
/*margin-top: 20px;
|
||||
margin-bottom: 20px; */
|
||||
}
|
||||
|
||||
code.jush-sql ~ a:first-of-type{
|
||||
margin-left: 30px;
|
||||
}
|
||||
|
||||
code.jush-sql ~ a:first-of-type::before{
|
||||
content: '◀';
|
||||
color: #555;
|
||||
position: absolute;
|
||||
left: -22px;
|
||||
font-size: 22px;
|
||||
top: -1px;
|
||||
}
|
||||
|
||||
/* logout form
|
||||
----------------------------------------------------------------------- */
|
||||
|
||||
body > form{
|
||||
position: absolute;
|
||||
}
|
||||
@@ -3,7 +3,8 @@
|
||||
*
|
||||
* Klemens Häckel [http://clickdimension.wordpress.com/]
|
||||
*
|
||||
* update 2014-01
|
||||
* update 2017-03
|
||||
* adapted for adminer 4.3.0
|
||||
*
|
||||
* new remaster based on style for WT-NMP 13.12
|
||||
*
|
||||
@@ -77,7 +78,7 @@ html>/**/body input[name="logout"], #logout {
|
||||
right: 8px;
|
||||
text-indent: 8px;
|
||||
top: 6px;
|
||||
width: 80px;
|
||||
width: 120px;
|
||||
position:fixed;
|
||||
z-index: 10;
|
||||
}
|
||||
@@ -146,13 +147,18 @@ html>/**/body table a[href*="&edit="][href*="&where"] {
|
||||
height: 16px;
|
||||
overflow: hidden;
|
||||
padding-left: 24px;
|
||||
}
|
||||
|
||||
/* Hide text in automatic selects */
|
||||
html>/**/body form>table a[href*="&edit="][href*="&where"] {
|
||||
width: 0;
|
||||
}
|
||||
|
||||
/* Select data */
|
||||
html>/**/body #menu p a[href*="&select="], html>/**/body .links a[href*="&select="] {
|
||||
html>/**/body #menu li a[href*="&select="], html>/**/body .links a[href*="&select="] {
|
||||
background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAdVJREFUeNqck8tO21AQhn8bB8ehRe0SUEBOlIsSVFGqqlK3oey6K+9A96wTKU/RFU/AG7CrKhAg7gmKiJKIplFWqItWIQEfuzOT2LmsSo408j+2/5lvjo+1rULhM4AFTLfahuu6i3vF4rdp3F/y+W3DVUrzKNk8BTzPC4IKS3h8Hc0Hz49zr8BeXSml8wu8PsU1uW7EhjpHOmd7wX1fs4e9hnIcTUkBDfs1DzGjS5N1pPOGRR3bLjR6ztoNNJm9ebDXcBxnjMD99YCdzGvJT25v8T6ZFH1QLuNjNiv6++UlESyDvSMEEIKcCZzX6zLvXDiMo0pFZn5hWfhxfS2aF3sCAkUvDwmA1ZUVyS9qNawnEn0aKvQhkxF9WCqBPUIgBSYISnd3QmCZJs6qVekaYZqbmzGCfoGnp2AEnyAdjUpeajTwJh4XfU778S6d7tNQISlA3rFN9AkqzaYQmLOzuKIxuGuYaE4H++F/RvbqVEVXE+cgsbSEFFH0Hh+RtW2sxmLo9npYoy/yNpUajkBeo9ftzkwSVFstIeBVpjH8rhc0xigBe43f9/dmKBTCburv4ISb//VvsYe9mmXbX/VIZHman8ntdH7y0BbFSwrjmX6H4s8/AQYAQChL+KIinhAAAAAASUVORK5CYII=") no-repeat left bottom
|
||||
}
|
||||
html>/**/body #menu p a[href*="&select="] {
|
||||
html>/**/body #menu li a[href*="&select="] {
|
||||
clear: left;
|
||||
display: block;
|
||||
float: left;
|
||||
@@ -311,7 +317,7 @@ fieldset {
|
||||
background: transparent;
|
||||
font-size: .9em;
|
||||
left: auto;
|
||||
right: 90px;
|
||||
right: 120px;
|
||||
position:fixed;
|
||||
z-index: 10;
|
||||
padding-top: 2px;
|
||||
|
||||
@@ -27,11 +27,9 @@ a[href$="&import="] {background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEU
|
||||
#menu .links a:hover {color:red;}
|
||||
}
|
||||
|
||||
#menu p a[href*="&select="] {background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAHISURBVDjLpVPNK0RRFP+9D98syMwUspHkm9I0YkFZWBFKkZ0s7a3Ewh+ilChK7FgoZCJFKYlYKB8zk2+Z5t0P577He29kQU7dd+6575zf+d1zztWklPiPmOozt/U4SThjXIoyIQS4AJjSXO0lGGlvcXAm6Vzsz4xUhm0AIeX4QLig+C+ZpxbOG1wGhGYHr1zMUmZGWRgs0ha3PE1nX/8mWmdgWTzLB+DUYbhm9FfZ35IEyrhXA3VXJfPbsV8B9LQUIeUHYJ8ASobag1jcucNgW8g9W4reYSDi2YnnZDoDiwCokDANct6NwTB0LEdj0HRA/wxa2SN25JNBEdWluUhZ366gqmAaGvrCAXKOozccTGPgt8+vn8GYSGcgyTYp3dpBnBg42nbQPRBTo5bTvqYkmxL6AQhNTWQGBXY3B7BxlEBXozcW64dxRKoKUZBju+P06gl5WaaviMJBM3TNDlbypemIZgHYOnlwASsCmW7nHADGnBoQ3c76YmweJ9BR5zFYjsbRHwm4tmJg6PhWA7pCXXk+bu7fURHKweXtq/sWaksz7SC/CCGFrwtyZ3r+rCnFRZ7qr1qc6mLZj4f9OEyPL8lVpbX/PucPv5QPKHB1TdEAAAAASUVORK5CYII=") no-repeat scroll left bottom; clear:left; display:block; float:left; height:16px; margin-right:8px; padding-top:1px; overflow:hidden; padding-left:16px; width:0; text-decoration:none;}
|
||||
#tables li a[href*="&select="] {background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAHISURBVDjLpVPNK0RRFP+9D98syMwUspHkm9I0YkFZWBFKkZ0s7a3Ewh+ilChK7FgoZCJFKYlYKB8zk2+Z5t0P577He29kQU7dd+6575zf+d1zztWklPiPmOozt/U4SThjXIoyIQS4AJjSXO0lGGlvcXAm6Vzsz4xUhm0AIeX4QLig+C+ZpxbOG1wGhGYHr1zMUmZGWRgs0ha3PE1nX/8mWmdgWTzLB+DUYbhm9FfZ35IEyrhXA3VXJfPbsV8B9LQUIeUHYJ8ASobag1jcucNgW8g9W4reYSDi2YnnZDoDiwCokDANct6NwTB0LEdj0HRA/wxa2SN25JNBEdWluUhZ366gqmAaGvrCAXKOozccTGPgt8+vn8GYSGcgyTYp3dpBnBg42nbQPRBTo5bTvqYkmxL6AQhNTWQGBXY3B7BxlEBXozcW64dxRKoKUZBju+P06gl5WaaviMJBM3TNDlbypemIZgHYOnlwASsCmW7nHADGnBoQ3c76YmweJ9BR5zFYjsbRHwm4tmJg6PhWA7pCXXk+bu7fURHKweXtq/sWaksz7SC/CCGFrwtyZ3r+rCnFRZ7qr1qc6mLZj4f9OEyPL8lVpbX/PucPv5QPKHB1TdEAAAAASUVORK5CYII=") no-repeat scroll left bottom; clear:left; display:block; float:left; height:16px; margin-right:8px; padding-top:1px; overflow:hidden; padding-left:16px; width:0; text-decoration:none;}
|
||||
|
||||
#menu p a[href*="&table="], #menu p a[href*="&view="] {clear:right; margin-left:24px; display:block; height:17px; padding-bottom:1px; text-decoration:none;}
|
||||
|
||||
#menu p#tables br {display:none;}
|
||||
#tables li a[href*="&table="], tables li a[href*="&view="] {clear:right; margin-left:24px; display:block; height:17px; padding-bottom:1px; text-decoration:none;}
|
||||
|
||||
.links a[href*="&create="] {background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAJ6SURBVDjLpZNZSNRRGMV//2XGsjFrMg2z0so2K21xIFpepYUiAsGIICLffI8eWiBBeg3qQV+KwBYKLB8qpHUmrahcKLc0QsxldNSxdPz/79LD1ChBUXTh8sG93POdc75zDa01/7NsgGvPR09rzQmpVZZSCqlAKIWUCqk0QqoZWyKFRir1uvxIbsAGUFqXHQqkpP1L57M3Pm5MMJBKpQHUdF9BKIGQAlcJXOlOVykSdye3leO6MmkGQNyHw+uO/1X3bzGBK+S0B1IqAKqDg3986HeCZPffwvJtoNT7lOZLvUdtAPEDAKBkRzo3QwMUb89InN1uGGD3spdE214xe8MRUnM2MfppNW0Pqy7YAK5UKK2xLbhdP4hlmdxpGMQwwQT8ziNiI534c7cT6WrFazikzF2Eb8HS1IQEDdiWwcHAQmpehTkQSAcgNvSMiYFW5uUUMdV3HW+ywefGNqITJsbUUL75k4FWYJtQ+yaMZcXrk1ANk/33mbdiD7EvlRieETy+FJLkMFcjRRSW3emIAwiF1hqPBfu2LGSWbbA1uZ41SfWkrtxPrPcypsfFiWYzFGzGKTjFV28WEJeIUHETLdOgrmkI1VdHpCdEet5enP4qLK9mKrqMgedv6cyrAP+qxOTiUxAi7oEJi8frELoFoTLpa7nI/HQvscgSRt+0kV1SSW7qYtp7xrBMphm4Mi5h/VIfTcEq1u0oJaknSEdNiMYHET7UvcMpPEN31Ed7zxgASmk1I0g6dK66s8CRak5mVxjnfS05+TsZCw/T9baTx1nnGb47DrQksjE6HrsHYPz6nYt3+Sc3L8+wA2tz0J6pF5OD4WP7Kpq7f5fO79DfSxjdtCtDAAAAAElFTkSuQmCC") no-repeat scroll 2px bottom; padding-left:22px;}
|
||||
.links a[href$="&create="] {background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAIpSURBVDjLpZNPSFRRFMZ/749/Kt3IqFTSRoSMmrGIYTTbpEJtjBCCok1Em9JVG1dRC8FFEES5aGFEgRRZWq1iLKKxBiNqLDcltQgmHR9hY6LOu+feFm+YGVsZXbh8nHO53/nud8+xjDH8z3IB7r5avGgMZ8XoBq01okFpjYhGtEGJLtmCKINo/XbgVFPUBdDG9PVEq0P/UvnSvdlwQYFoHQIY/3obpRVKFL5W+OIXUVThrL91AN+XihKCwIeTu85sqPryqsJXUvRARAMwkshsiKB7fw25UgKVJwA40V7H/cl5jh+oL+RGk/P0xIqxl11dr8AXjTYG14HRNxkcx+ZhMoNlg52/ND6VAWMoc6F5+2Zy/l9PMIDrWByL1jI+tcDRaN06BaXxbDqLUnq9AqPBteHpuwUcJ0AIcgBXH93h+/wEyyuLrPk5cmv7gNY8gdIYYyhz4PDeWuIpj85IsS2ujQ2zJAk6DkZpqGnixcwYyU+PifUOX7Eh6DoAx7aIpzwA4imPeMrj+bTH+88PaNkZQWwhsrULsXxie9oAzgcESgUe2NAZCeE6AXZGQhwKh/Cyc5RZVXQ39wFwoeMmjXVhgMqiB8awe0cVP36u0Fi/iW9zvwuzkF3+xUz6Nal0gv6uWww+O02lUwGwmv8FM3l55EtLTvQWXwm+EkRpfNEoUZRXHCE5PUFbuJ0nH4cot1wSH14C3LA2Os6x3m2DwDmgGlgChpLX0/1/AIu8MA7WsWBMAAAAAElFTkSuQmCC") no-repeat scroll left bottom; padding-left:22px;}
|
||||
|
||||
@@ -18,9 +18,10 @@ img { vertical-align: middle; margin: 0; padding: 0; }
|
||||
.message { color: black; background: #dedede; padding: .5em .8em; border: 1px solid black; }
|
||||
#menu { overflow: scroll; position: absolute; top: 0; left: 0; width: 270px; white-space: nowrap; background: #FFE594 url('data:image/gif;base64,R0lGODlhXgEBAIIAAPzabPzijvzihPzefvzmnPzedPzmlPzadCwAAAAAXgEBAAIDYEi63P5wGTXJvNZew7sJBNiBwWeWaPoFbNq+cCzPs8DaeJDvuGAPOh9wIBgWAwMjMblsOpnQqHRKrRaY1+sguz1sB4esN0wulM+HtNqMZqsBafgBTp/PAfQ8fs/v+/8ACQA7') top left repeat-y; height: 100%; _height: 650px; border: 1px solid #a3a3a3; }
|
||||
#menu form { margin: 0; }
|
||||
#menu p { text-align: center; font-size: 11px; }
|
||||
#menu p a { color: black; }
|
||||
#menu p a:hover { color: #626262; text-decoration: none; }
|
||||
#menu p, #tables li { text-align: center; font-size: 11px; }
|
||||
#menu p a, #tables li a { color: black; }
|
||||
#menu p a:hover, #tables li a:hover { color: #626262; text-decoration: none; }
|
||||
#tables a, #tables span { background: #FFE594; }
|
||||
#content { margin: 1.5em 0 0 293px; padding: 10px 20px 20px 0; }
|
||||
#lang { margin: 0; padding: 0; text-align: center; font-size: 10px; width: 270px; background-color: #d9dadb; border-bottom: 1px solid black; }
|
||||
#lang a { color: black; font-weight: bold; }
|
||||
|
||||
@@ -106,7 +106,7 @@ img {vertical-align: middle; margin: 0; padding: 0;}
|
||||
#breadcrumb {margin: 0; height: 21px; display: block; position: absolute; top: 0; left: 300px; background-color: #f1f1f1; border: 1px solid #E3E3E3; padding: 2px 12px; line-height: 1.25em }
|
||||
#menu {position: absolute; padding: 10px; margin: 0; top: 28px; left: 0; width: 250px; background-color: #f1f1f1; border: 1px solid #E3E3E3;}
|
||||
#menu form {margin: 0;}
|
||||
#menu p {padding-left: 8px; font-size: 10pt; border-bottom: none;}
|
||||
#menu p, #tables {padding-left: 8px; font-size: 10pt; border-bottom: none;}
|
||||
#menu form p {padding-left: 0; text-align: left;}
|
||||
h1 .h1:hover {text-decoration: underline;}
|
||||
h1, h2 {font: italic normal normal 24px/29px Georgia, "Times New Roman", "Bitstream Charter", Times, serif; margin: 0; padding: 14px 15px 3px 10px; line-height: 35px; text-shadow: rgba(255,255,255,1) 0 1px 0px; background: none;}
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user