1
0
mirror of https://github.com/vrana/adminer.git synced 2025-08-31 10:01:50 +02:00

Compare commits

...

219 Commits

Author SHA1 Message Date
Peter Knut
e6fdf2b400 Release 4.9.1 2024-09-09 10:30:14 +02:00
Peter Knut
b542b6613c PostgreSQL: Fix undefined properties on PHP 8
Thanks to FrancoisCapon (https://github.com/vrana/adminer/pull/429)
2024-09-08 23:22:44 +02:00
Peter Knut
374b8ed6a6 PostgreSQL: Fix documentation link for SERIAL type
Thanks to leggiero (https://github.com/vrana/adminer/pull/432)
2024-09-08 23:01:47 +02:00
Michal Paulovic
58cca3f951 MySQL: Add unix_timestamp to functions 2024-09-08 23:01:46 +02:00
caltong
5eecb8e6a3 PostgreSQL: Make data length calculation more accurate 2024-09-08 22:28:06 +02:00
Thomas Daniels
0d0936550c PostgreSQL: Show only accessible databases 2024-09-08 01:02:49 +02:00
Peter Knut
c4ed9500a1 Add support for translations in plugins 2024-09-07 22:54:04 +02:00
Peter Knut
0863766970 Replace deprecated <acronym> with <abbr> 2024-09-07 22:53:18 +02:00
Peter Knut
146a24efad AdminerLoginOtp: Autocomplete hints for OTP input field, code refactoring
Tanks to SGCBB (https://github.com/vrana/adminer/pull/488)
2024-09-07 22:53:08 +02:00
Sneda8
00b9fbda08 PHP 8.3 error suppression
PHP 8.3 has shortened the array access on null error message to "Trying to access array offset on null". This commit changes the regular expression used to circumvent errors.
2024-09-06 00:33:53 +02:00
Peter Knut
8ea329538f Improved displaying of long table names in menu 2024-09-03 00:34:00 +02:00
Peter Knut
a3428cc7ff Fix compiling jush external files 2024-09-02 23:18:44 +02:00
Peter Knut
2a01969c96 Add .editorconfig file
Thanks to cweiske (https://github.com/adminerevo/adminerevo/pull/163).
2024-08-26 00:56:10 +02:00
Peter Knut
9b8d14c3ee Refactor and fix the plugin AdminerEditForeign
Thanks to Amunak (https://github.com/adminerevo/adminerevo/pull/86).
2024-08-25 23:48:02 +02:00
Peter Knut
2ce88d9bdc Fix field selection in Elasticsearch
Thanks to cweiske: https://github.com/adminerevo/adminerevo/pull/159
2024-08-25 22:14:50 +02:00
Peter Knut
593c8e5bcc Bump version to 4.9.1-dev 2024-08-21 00:07:57 +02:00
Peter Knut
a134193afa Release 4.9 2024-08-21 00:07:57 +02:00
Peter Knut
8a60243459 Add script for exporting compiled adminer variants 2024-08-21 00:07:55 +02:00
Peter Knut
b94636f8a7 Properly set PHP required version 2024-08-20 23:58:16 +02:00
Peter Knut
47ccfa2a2e Avoid showing version on login page (and css/js version)
Thanks to MisterDuval (https://github.com/adminerevo/adminerevo/pull/180)
2024-08-20 23:58:16 +02:00
Adrian Jones
949b39b191 Fix uninitialized string offset
This can happen if you include an unpaired single or double quote, eg: SELECT * FROM table_name WHERE field_name = 'test
2024-08-20 23:58:16 +02:00
Denitz
09a946cb99 Skip dump of generated columns 2024-08-20 23:58:16 +02:00
Peter Knut
13258de188 Fix several bugs and security issues in AdminerFileUpload plugin 2024-08-20 23:58:16 +02:00
Peter Knut
5fe25fca67 Improve readability of the code for the query block 2024-08-20 23:58:16 +02:00
Roy Orbitson
a693e75e32 No-verify plugin breaks others
Does not need to block other plugins from using the head() method.
2024-08-20 23:58:16 +02:00
Peter Knut
de7dd4b64f Improve URL and email detection 2024-08-20 23:58:16 +02:00
Peter Knut
8a70474651 Add PHP extensions to Composer suggestions 2024-08-20 23:58:16 +02:00
Peter Knut
43a0305a23 Fix server URL validation for Oracle connections
Every driver can validate URL host and path by its own rules. Path is forbidden by default, HTTP-based drivers allow only '/' as path and Oracle driver validates path according to the EasyConnect URL format.
2024-08-20 23:58:16 +02:00
Peter Knut
bff6f8ca93 Fix linking external dependencies 2024-03-18 00:35:07 +01:00
Peter Knut
f38c0a1f13 Set saving to file as a default export option 2024-03-17 21:12:35 +01:00
Peter Knut
835c10674b Merge branch 'elastic' 2024-03-17 16:47:53 +01:00
Peter Knut
fc5a46549e Update changes.txt 2024-03-17 16:39:20 +01:00
Peter Knut
898dc9e25e Move Elastic drivers to plugins, driver for Elastic 7+ is the default 2024-03-17 16:39:20 +01:00
Peter Knut
32160b48ae Modify tables hierarchy for Elasticsearch 7
- Properly display list of databases, indexes, aliases and fields.
- Fix search and delete queries.
2024-03-17 16:39:20 +01:00
Peter Knut
6beb07a181 New Elasticsearch 7 plugin as a copy of the old one 2024-03-17 13:53:58 +01:00
Peter Knut
ee42077e54 Improve code readability by using of empty lines 2024-03-17 13:52:59 +01:00
Peter Knut
c3e2e6c58f Compatibility with Elasticsearch 7.14
- Removed empty body from requests.
- Fix deleting records.
2024-03-17 13:52:59 +01:00
Peter Knut
49effeff09 Fix global search in all tables 2024-03-17 13:10:18 +01:00
Peter Knut
857cbf03f2 Fix version condition for deprecated mapping types
Mapping types are still supported in version 6, but only one mapping type can be created.
In version 7, mapping types are deprecated and there is only one system '_doc' mapping type.
See: https://www.elastic.co/guide/en/elasticsearch/reference/6.0/removal-of-types.html
2024-03-17 13:10:18 +01:00
Peter Knut
e8c9164a77 Fix searching if "anywhere" field is selected
- Allow to search only in fields with index.
2024-03-17 13:10:18 +01:00
Peter Knut
01fe709b7a Replace deprecated "filtered" query with "bool" query
- Allow to choose "must", "should", "must_not" condition.
- Add system "_id" column to the field list. So it can be used in search condition.
2024-03-17 13:10:18 +01:00
Peter Knut
90addc5e78 Update changes.txt 2024-03-17 13:10:03 +01:00
Peter Knut
b71a456514 Fix undefined $sql variable 2024-03-17 12:38:57 +01:00
Peter Knut
4d7642a624 Merge branch 'field-privileges' 2024-03-16 23:00:11 +01:00
Peter Knut
9f8dadbb40 Add support for "order" field privilege
In Elasticsearch, text fields are not sortable.
2024-03-16 22:55:10 +01:00
Peter Knut
9968851f1e Add support for "where" field privilege
In Elasticsearch, only indexed fields are searchable.
2024-03-16 22:55:10 +01:00
Peter Knut
a5780e58af Move dependencies from submodules to Composer 2024-03-16 22:45:42 +01:00
Peter Knut
e8b40e3b9d Update hydra and pepa-lintha-dark themes 2024-03-16 22:45:42 +01:00
Peter Knut
35afd4f88c Merge branch 'login-fixes' 2024-03-16 19:15:09 +01:00
Peter Knut
38e4b51256 Update changes.txt 2024-03-16 19:14:17 +01:00
Peter Knut
55a7d3864f Change 'Invalid credentials.' message 2024-03-16 18:02:31 +01:00
Peter Knut
e69583a800 Validate server connection in SimpleDB driver 2024-03-16 18:02:31 +01:00
Peter Knut
338c81e2a3 Validate server connection in Elasticsearch and ClickHouse drivers 2024-03-16 18:02:31 +01:00
Peter Knut
9eb4d00564 Disable redirections in HTTP based drivers 2024-03-16 18:02:31 +01:00
Peter Knut
1c5947de50 Validate server input
- Allow only scheme, host and port in the server field.
- Use proper default host and port in Elasticsearch and ClickHouse driver.
2024-03-16 18:02:31 +01:00
Peter Knut
5cfd48bb68 Bump version to 4.9-dev 2024-03-16 13:23:33 +01:00
Peter Knut
20a0e4e113 Release 4.8.2 2024-03-16 13:12:36 +01:00
Peter Knut
bf80612b0d Make jush and JsShring submodules available 2024-03-16 01:03:39 +01:00
Lucas Sandery
8e848bfde4 Allow responsive styles on larger devices
and fix a media query.

Signed-off-by: Lucas Sandery <lucas-sandery@users.noreply.github.com>
(cherry picked from commit 4b0b011b93f9b684e5ab81f493f239f478fc3f2b)
2024-03-16 00:44:56 +01:00
Peter Knut
38f390ae5e Declare minimal PHP version in composer.json 2024-03-16 00:13:46 +01:00
Peter Knut
367a1b979e Merge branch 'translations' 2024-03-15 23:51:56 +01:00
Peter Knut
5dddfbdf12 Fix and complete Slovak translation 2024-03-15 23:47:20 +01:00
Lukáš Rajchl
2928b7beb8 Update Czech translation
(cherry picked from commit 7338eadd7c)
2024-03-15 23:31:07 +01:00
Anastasia
a940f85206 Update Russian translation
(cherry picked from commit 33fcfbc13b)
2024-03-15 23:29:20 +01:00
Gerry Demaret
834380aae9 Update Dutch translation
(cherry picked from commit 6024d73ae6)
2024-03-15 23:25:13 +01:00
Lionel Laffineur
3e94299256 Update French and Italian translations
(cherry picked from commit 496ab9a262)
2024-03-15 23:21:20 +01:00
Peter Knut
e99ed80ad8 Update language files 2024-03-15 23:12:06 +01:00
Hossain Ahmed Saiman
61b84cecd8 Bangla language corrections
Some informal words has been replaced with formal words. Some incorrect words has been corrected.

(cherry picked from commit a4ebae8706)

(cherry picked from commit 965598b640)
2024-03-15 23:10:27 +01:00
@krysits.COM
acf168a6da Add Latvian language translation
(cherry picked from commit fad4ce785b)
2024-03-15 23:04:00 +01:00
Roy-Orbison
2c8dbf49cc Fix misaligned inputs
Signed-off-by: Roy-Orbison <Roy-Orbison@users.noreply.github.com>
(cherry picked from commit 2717333789)
2024-03-15 23:02:41 +01:00
Linus Törngren
88647b93e4 Improved spelling. 2021-05-23 13:40:36 +02:00
Jakub Vrana
b8c5eec46d MS SQL: Support [ in udf_unescape 2021-05-23 12:50:14 +02:00
Jakub Vrana
dadbb37f00 PostgreSQL: Don't reset table comments 2021-05-23 11:45:57 +02:00
Jakub Vrana
ea1acfc8bc Preventively escape name 2021-05-23 11:38:51 +02:00
Jakub Vrana
2dd65f0c0f Support multi-line table comments 2021-05-23 11:38:04 +02:00
Jakub Vrana
473f7264f8 PostgreSQL: Use separator in limit1 2021-05-23 11:08:29 +02:00
Benjamin Cremer
db01282e29 Use ST_SRID() in mysql driver for MySQL 8
`SRID()` is no longer available in MySQL 8 and has been replaced with `ST_SRID`
2021-05-23 09:45:55 +02:00
Jakub Vrana
1f173e18bd Release 4.8.1 2021-05-14 07:39:59 +02:00
Jakub Vrana
4043092ec2 Escape link in doc_link (bug #797) 2021-05-14 07:12:44 +02:00
Jakub Vrana
60ad161178 PostgreSQL: Fix parsing of foreign keys with non-ASCII column names (thanks to Tomas Pecina) 2021-05-14 06:21:09 +02:00
luigifab
a12d31c5a8 Fix editRowPrint for plugin 2021-03-04 10:57:55 +01:00
Vladimír Dudr
f6880b59d6 Prevent adminer to consider MariaDB sequences being views 2021-03-03 11:17:32 +01:00
Jakub Vrana
72beecc0ab PostgreSQL: Support UPDATE OF triggers (bug #789) and triggers with more events (OR) 2021-03-03 11:07:58 +01:00
Jakub Vrana
42de1051a6 Update bug numbers 2021-02-24 09:52:22 +01:00
Jakub Vrana
af1a908f56 Unsubstite constants (PHP 5 is now required) 2021-02-23 12:42:11 +01:00
Jakub Vrana
205305d6b5 Avoid PHP warnings with PDO drivers (bug #786) 2021-02-23 12:33:30 +01:00
Jaume Barber
0e5f39042a Update ca.inc.php
Minor ca translation corrections
2021-02-18 08:52:19 +01:00
Jakub Vrana
f94f29124a Oracle: Fix column name in index (thanks to Shirai Takashi) 2021-02-18 08:44:56 +01:00
Jakub Vrana
28996e2286 PostgreSQL < 10 PDO: Avoid displaying GENERATED ALWAYS BY IDENTITY everywhere (bug #785) 2021-02-15 18:33:19 +01:00
Jakub Vrana
7f8c93a6f1 SQLite: Fix displayed types (bug #784) 2021-02-15 18:33:19 +01:00
Jakub Vrana
25dda09bce Update TODO 2021-02-15 18:33:19 +01:00
Jakub Vrana
ff45b8f7a9 Save bytes 2021-02-15 18:33:19 +01:00
Konstantinos Megas
3a36112a10 Fixes greek language typos and translated strings 2021-02-15 15:40:35 +01:00
Jakub Vrana
e9e61fce26 MySQL: Allow moving views to other DB and renaming DB with views (bug #783) 2021-02-12 11:49:35 +01:00
Jakub Vrana
5a1498d160 Use common code 2021-02-12 11:28:55 +01:00
Jakub Vrana
ccb7442d1b Fix more PHP 8 warnings (bug #781) 2021-02-12 09:53:20 +01:00
Takashi SHIRAI
eebda8695b Oracle: Fix the bugs for indexes.
Signed-off-by: Takashi SHIRAI <shirai@nintendo.co.jp>
2021-02-12 09:08:56 +01:00
Jakub Vrana
94d18d003e Remove version 2021-02-11 12:20:09 +01:00
Jakub Vrana
3881fc1680 Fix designs after 7db10e95 2021-02-11 08:52:33 +01:00
Jakub Vrana
9bd63a1326 Update readme 2021-02-10 19:52:55 +01:00
Jakub Vrana
92d5858b03 Link instructions 2021-02-10 19:52:55 +01:00
Jakub Vrána
d506f1e241 Enable CodeQL Analysis 2021-02-10 19:51:49 +01:00
Jakub Vrána
cd7f06c8b2 Create security policy 2021-02-10 19:43:30 +01:00
Jakub Vrana
b83c61fca3 Release 4.8.0 2021-02-10 17:21:55 +01:00
Jakub Vrana
3882bfaac1 Remove .inc extension from driver plugins 2021-02-10 11:43:56 +01:00
Jakub Vrana
29e2475b5a Oracle: Use correct DB in db_size, fix typo (thanks to Shirai Takashi) 2021-02-10 11:15:18 +01:00
Jakub Vrana
fd1dd4ecf4 MongoDB: Alpha 2021-02-10 09:50:21 +01:00
Jakub Vrana
dc9e87dbd6 MongoDB: Prefer driver used in other functions 2021-02-10 09:45:34 +01:00
Jakub Vrana
66f335fb63 Save bytes 2021-02-09 20:42:25 +01:00
Jakub Vrana
574c07b8f5 MongoDB: Fix edit operations in select 2021-02-09 20:36:23 +01:00
Jakub Vrana
84e4122225 Fix typo 2021-02-09 20:20:19 +01:00
Jakub Vrana
a61a76716b MongoDB: Use ObjectID only if used 2021-02-09 20:19:43 +01:00
Jakub Vrana
5d317111c7 MongoDB: Fix operators 2021-02-09 20:12:41 +01:00
Jakub Vrana
6af375c67d MongoDB: Handle errors 2021-02-09 20:09:11 +01:00
Jakub Vrana
609b8690ec MongoDB: Fix query 2021-02-09 19:47:51 +01:00
Jakub Vrana
13260dcb76 Save bytes 2021-02-09 16:56:16 +01:00
Jakub Vrana
e002a3bc99 MongoDB: Display error when selecting wrong table 2021-02-09 16:53:05 +01:00
Jakub Vrana
f44f186b38 MongoDB: Display arrays as JSON 2021-02-09 16:34:42 +01:00
Jakub Vrana
c24a6a6aef MongoDB: Fix executeQuery 2021-02-09 16:32:38 +01:00
Jakub Vrana
f11a31e0a9 MongoDB: Modern extension doesn't allow connecting with random user/password 2021-02-09 16:13:28 +01:00
Jakub Vrana
38e741054a MongoDB: Add operators 2021-02-09 11:31:37 +01:00
Jakub Vrana
513e1f425f MongoDB: Handle exceptions 2021-02-09 11:30:14 +01:00
Jakub Vrana
a023e98c4d MongoDB: Fix getting binary fields 2021-02-09 11:07:47 +01:00
Jakub Vrana
633e7ced9c MongoDB: Fix num_rows 2021-02-09 11:04:18 +01:00
Jakub Vrana
3a3df6962b MongoDB: Move common code to function 2021-02-09 11:04:17 +01:00
Jakub Vrana
1e4fb073b5 MongoDB: Display Authentication failed instead of exception 2021-02-09 11:04:10 +01:00
Jakub Vrana
08637cee62 Delete duplicate code 2021-02-09 10:29:19 +01:00
Jakub Vrana
4742bde873 Fix operators init 2021-02-09 10:19:05 +01:00
Jakub Vrana
7a89b5a037 PostgreSQL: Fix displaying NULL bytea fields 2021-02-09 10:08:27 +01:00
Takashi SHIRAI
c5b5b61be1 Avoid errors about 'view_trigger'
Signed-off-by: Takashi SHIRAI <shirai@nintendo.co.jp>
2021-02-09 09:57:29 +01:00
Takashi SHIRAI
2b0ac4c0e1 Support unprivileged users for schema list
Signed-off-by: Takashi SHIRAI <shirai@nintendo.co.jp>
2021-02-09 09:57:29 +01:00
Takashi SHIRAI
ef53494df0 Support altering indexes
Signed-off-by: Takashi SHIRAI <shirai@nintendo.co.jp>
2021-02-09 09:57:27 +01:00
Takashi SHIRAI
98458f737d Avoid errors when alter table column
Signed-off-by: Takashi SHIRAI <shirai@nintendo.co.jp>
2021-02-09 09:57:00 +01:00
Takashi SHIRAI
68edea54ea Avoid errors about auto increment
Signed-off-by: Takashi SHIRAI <shirai@nintendo.co.jp>
2021-02-09 09:57:00 +01:00
Takashi SHIRAI
6660789d04 Support granted table to list up indexes
Signed-off-by: Takashi SHIRAI <shirai@nintendo.co.jp>
2021-02-09 09:57:00 +01:00
Takashi SHIRAI
ee4ffe9b65 Correct column size with string type
Signed-off-by: Takashi SHIRAI <shirai@nintendo.co.jp>
2021-02-09 09:56:55 +01:00
Takashi SHIRAI
27de0417fe Sort the DB list
Signed-off-by: Takashi SHIRAI <shirai@nintendo.co.jp>
2021-02-09 09:42:23 +01:00
Takashi SHIRAI
339981b9d6 Support importing table data
Signed-off-by: Takashi SHIRAI <shirai@nintendo.co.jp>
2021-02-09 09:42:18 +01:00
Takashi SHIRAI
53a8496412 The table with another scheme is deleted from the table list
Signed-off-by: Takashi SHIRAI <shirai@nintendo.co.jp>
2021-02-09 09:38:47 +01:00
Takashi SHIRAI
fb38ae2ffd Support computing DB infos
Signed-off-by: Takashi SHIRAI <shirai@nintendo.co.jp>
2021-02-09 09:24:26 +01:00
salacr
91da14b15c PostgreSQL: Do not show triggers from other schemas 2021-02-09 08:59:06 +01:00
Jakub Vrana
51abdcdab9 SimpleDB, Firebird, ClickHouse: Move to plugin 2021-02-08 19:56:15 +01:00
Jakub Vrana
4038144c38 Add comments 2021-02-08 19:35:25 +01:00
Jakub Vrana
50ed4f7ce7 Prepare for moving drivers to plugins 2021-02-08 19:35:22 +01:00
Jakub Vrana
4f8ecd3c11 Support function default values in insert (bug #713) 2021-02-08 17:52:10 +01:00
Jakub Vrana
f2063c92c5 Allow SQL pseudo-function in insert 2021-02-08 17:41:59 +01:00
Jakub Vrana
5db1ea3301 Save bytes 2021-02-08 17:22:53 +01:00
Jakub Vrana
e915f73f18 PostgreSQL: Fix multi-parameter functions in default values (bug #736) 2021-02-08 16:23:36 +01:00
Jakub Vrana
92f197b7c1 Add id to <th> in select (bug #724) 2021-02-08 16:10:37 +01:00
Jakub Vrana
63484fb875 Remove newline before error message 2021-02-08 16:06:22 +01:00
Jakub Vrana
701c5cd73b Fix whitespace 2021-02-08 15:50:02 +01:00
Jakub Vrana
4310d710d9 Add bug number 2021-02-08 15:46:24 +01:00
Jakub Vrana
2bb472d7a6 PostgreSQL: Avoid exporting empty sequence last value 2021-02-08 14:12:39 +01:00
Jakub Vrana
9e74c0632f PostgreSQL: Create PRIMARY KEY for auto increment columns 2021-02-08 14:00:38 +01:00
Jakub Vrana
d4f7e04156 PostgreSQL PDO: Do not select NULL function for false values in edit (thanks to PR #380) 2021-02-08 13:23:48 +01:00
Jakub Vrana
124092fd7c MySQL 8: Fix EXPLAIN in SQL command 2021-02-08 12:26:51 +01:00
Jakub Vrana
144039d0cb Update tests 2021-02-08 11:50:02 +01:00
Jakub Vrana
a8c218f192 Add callback before edit form (bug #759) 2021-02-08 10:57:53 +01:00
Jakub Vrana
2dd3bd0e1a Skip date columns for non-date values in search anywhere (thanks to PR #408) 2021-02-08 10:53:20 +01:00
Jakub Vrana
28209301ca Fix PHP 8 warning 2021-02-08 10:40:38 +01:00
Jakub Vrana
7ccc1e3e15 Add DB version to comment in export 2021-02-08 09:47:10 +01:00
Jakub Vrana
93c7fb248c Release 4.7.9 2021-02-07 18:25:18 +01:00
Jakub Vrana
73934caec8 Reorder changes 2021-02-07 18:23:41 +01:00
Jakub Vrana
4559e7541c Editor: Avoid trailing dot in export filename
Context: https://sourceforge.net/p/adminer/discussion/960418/thread/ca36ed7b66/
2021-02-07 16:40:29 +01:00
Jakub Vrana
d847f0d1aa Skip impossible condition ($link always contains ?username=) 2021-02-07 15:27:53 +01:00
Jakub Vrana
c727231ccd Fix displayed foreign key columns from other DB (bug #766) 2021-02-07 15:19:03 +01:00
Jakub Vrana
3d92eb703b Do not display empty database in the list twice 2021-02-07 14:28:16 +01:00
Jakub Vrana
3d88cc2c8e Display CSRF logout error after connecting
Context: https://sourceforge.net/p/adminer/discussion/960418/thread/74e1d2d4bc/
2021-02-07 14:23:46 +01:00
Peter Knut
922e1d96b0 Fix displaying type mapping for Elasticsearch >= 6.0
Earlier versions of Elasticsearch (<= 5) supported multiple types per index. That meant that you could have different data mappings for each type. With Elasticsearch 6, this was removed and you can only have single mapping type.
2021-02-07 13:24:03 +01:00
Jakub Vrana
52defd6f19 MongoDB: Prefer modern extension 2021-02-07 13:09:09 +01:00
ImDong
318cece1bd Fix MongoDB connect 'Database does not support password.' tips
Add MongoDB Drivers func ping.
2021-02-07 13:08:29 +01:00
Jakub Vrana
5c2f74136c Update bug numbers 2021-02-07 11:34:47 +01:00
Josef Drabek
8c392363b1 Postgres - fix missing partitioned tables in navigation 2021-02-07 11:21:50 +01:00
Albert Peschar
66b01a4b9c Linkify URLs in SQL results 2021-02-07 11:07:56 +01:00
tiso
7db10e95d9 Title for select data link 2021-02-07 11:00:35 +01:00
Jakub Vrana
31e28fbd00 Quote values with leading and trailing zeroes in CSV export (bug #777) 2021-02-07 09:41:07 +01:00
Jakub Vrana
19f23fe9ee MySQL: Don't quote default value of text fields (bug #779) 2021-02-07 09:31:31 +01:00
David Grudl
6e5315349b fixed Unsupported operand types when $port is socket 2021-02-07 09:31:28 +01:00
Jakub Vrana
95729680ef Respect SQL command URL parameters 2021-02-06 19:09:54 +01:00
Jakub Vrana
5c395afc09 Fix XSS in browsers which don't encode URL parameters (bug #775) 2021-02-06 19:09:42 +01:00
Jakub Vrana
cde988853d SQLite: Set busy_timeout to 500 2021-02-06 18:01:39 +01:00
Jakub Vrana
f8288dd227 PostgreSQL 11: Create PRIMARY KEY for auto increment columns 2021-02-06 18:01:24 +01:00
Jakub Vrana
94194aac19 PostgreSQL: Support smallserial 2021-02-06 18:00:22 +01:00
Jakub Vrana
438c7f55be Add comment 2021-02-06 16:58:59 +01:00
Jakub Vrana
7edf80f636 PostgreSQL PDO: Support PgBouncer, unsupport PostgreSQL < 9.1 (bug #771) 2021-02-06 16:45:20 +01:00
Pőcze Bence
b2e0d9f396 fix wrong hungarian translation 2021-02-06 16:22:28 +01:00
Jakub Vrana
cc9ed0939c Editor: Cast to string when searching (bug #325) 2021-02-06 16:11:21 +01:00
Jakub Vrana
ee75df6f15 Don't syntax highlight during IME composition (bug #747) 2021-02-06 16:11:02 +01:00
Jakub Vrana
23fdbedba1 PostgreSQL: Use bigserial for bigint auto increment (bug #765, regression from 3.0.0) 2021-02-06 15:33:50 +01:00
Michal Adamec
8762895bb3 MSSQL: Don't trucate displayed comments to 30 chars (use varchar maximum of 8000 upon casting) 2021-02-06 14:52:26 +01:00
Jakub Vrana
84063fb7cd Update Korean translation (thanks to B. Cansmile Cha) 2021-02-06 14:38:38 +01:00
Douglas Damasio
eb20ba30a1 add alternative design dracula theme 2021-02-06 14:19:30 +01:00
Oliver Tušla
1ce0a9aa94 show correct collation for PostgresSQL 2021-02-06 14:15:32 +01:00
Ivan Masár
96be913994 PostgreSQL: Fix current schema in view definition 2021-02-06 14:03:59 +01:00
shiipou
6f972ff9ab Add external designs as submodules 2021-02-06 13:45:58 +01:00
Lucas Sandery
7c4718ae3d Fixes to lucas-sandery theme 2021-02-06 12:32:32 +01:00
Jakub Vrana
b558ec8ecf Do not export names in quotes with sql_mode='ANSI_QUOTES' (bug #749) 2021-02-06 12:30:39 +01:00
Sartor
5cab8eabb7 Fix PgSQL generated always as identity fix 2021-02-06 12:18:27 +01:00
makss
d888031603 Update Russian translation. 2021-02-06 11:42:57 +01:00
makss
49f365384b Update Ukrainian translation. 2021-02-06 11:42:57 +01:00
Ivan Masár
34345d8071 PostgreSQL: Export all FKs after all CREATE TABLE 2021-02-06 11:37:47 +01:00
Jakub Vrana
97ec60bb5f MySQL, MariaDB: Fix doc links 2021-02-06 11:15:33 +01:00
Jakub Vrana
5a6e5b4443 Do not display SQL function for checkbox 2021-02-06 10:45:56 +01:00
Jakub Vrana
7b524ff5d2 Fix style (bug #743) 2021-02-06 10:45:56 +01:00
Jakub Vrana
64d4818a82 PostgreSQL: Fix dollar-quoted syntax highlighting (bug #738) 2021-02-06 10:45:56 +01:00
Jakub Vrana
ccd2374b0b Elasticsearch, ClickHouse: Do not print response if HTTP code is not 200
Thanks to Adam Crosser and Brian Sizemore
2021-02-06 10:45:56 +01:00
Evgeny Chernyavskiy
1e1c46ac72 Add basic Makefile. 2021-02-06 10:45:48 +01:00
Milan Felix Šulc
75cd1c3f28 Travis: add php 7.4 && 8.0 2020-12-10 09:05:31 +01:00
Jakub Vrana
b89d418dcf Re-enable PHP warnings 2020-12-09 15:45:54 +01:00
Jakub Vrana
190146672f Release 4.7.8 2020-12-06 13:58:20 +01:00
Jakub Vrana
d6e71b5c53 MySQL: Use renamed variable 2020-12-06 13:50:44 +01:00
Jakub Vrana
0618429bce Avoid PDO exceptions in PHP 8 2020-12-06 13:50:13 +01:00
Jakub Vrana
b0a217abdd Fix method call after #406 2020-12-06 13:45:55 +01:00
Jakub Vrana
35bfaa7506 Improve check for numeric ports (bug #769) 2020-12-06 13:14:41 +01:00
Jakub Vrana
e0a3205676 Add missing method 2020-12-06 13:00:17 +01:00
David Grudl
50bb83dbf2 Fix compatibility with PHP 8 2020-12-06 12:56:01 +01:00
Jakub Vrana
697eedc6a1 Avoid each() not available in PHP 8 2020-12-06 12:53:28 +01:00
Jakub Vrana
d94adc09cc Fix style 2020-12-06 12:53:27 +01:00
Jakub Vrana
4e2a448e28 Escape : also in remove_from_param 2020-05-11 12:35:19 +02:00
119 changed files with 6149 additions and 2008 deletions

20
.editorconfig Normal file
View File

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

67
.github/workflows/codeql-analysis.yml vendored Normal file
View File

@@ -0,0 +1,67 @@
# For most projects, this workflow file will not need changing; you simply need
# to commit it to your repository.
#
# You may wish to alter this file to override the set of languages analyzed,
# or to provide custom queries or build logic.
#
# ******** NOTE ********
# We have attempted to detect the languages in your repository. Please check
# the `language` matrix defined below to confirm you have the correct set of
# supported CodeQL languages.
#
name: "CodeQL"
on:
push:
branches: [ master ]
pull_request:
# The branches below must be a subset of the branches above
branches: [ master ]
schedule:
- cron: '20 16 * * 0'
jobs:
analyze:
name: Analyze
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
language: [ 'javascript' ]
# CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python' ]
# Learn more:
# https://docs.github.com/en/free-pro-team@latest/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning#changing-the-languages-that-are-analyzed
steps:
- name: Checkout repository
uses: actions/checkout@v2
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@v1
with:
languages: ${{ matrix.language }}
# If you wish to specify custom queries, you can do so here or in a config file.
# By default, queries listed here will override any specified in a config file.
# Prefix the list here with "+" to use these queries and those in the config file.
# queries: ./path/to/local/query, your-org/your-repo/queries@main
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
# If this step fails, then you should remove it and run the build manually (see below)
- name: Autobuild
uses: github/codeql-action/autobuild@v1
# Command-line programs to run using the OS shell.
# 📚 https://git.io/JvXDl
# ✏️ If the Autobuild fails above, remove it and uncomment the following three lines
# and modify them (or add more) to build your code if your project
# uses a compiled language
#- run: |
# make bootstrap
# make release
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v1

2
.gitignore vendored
View File

@@ -2,3 +2,5 @@
/adminer*.php /adminer*.php
/editor*.php /editor*.php
/vendor/ /vendor/
/composer.lock
/temp

12
.gitmodules vendored
View File

@@ -1,6 +1,6 @@
[submodule "jush"] [submodule "designs/hydra"]
path = externals/jush path = designs/hydra
url = git://github.com/vrana/jush url = https://github.com/Niyko/Hydra-Dark-Theme-for-Adminer
[submodule "JsShrink"] [submodule "designs/pepa-linha-dark"]
path = externals/JsShrink path = designs/pepa-linha-dark
url = git://github.com/vrana/JsShrink url = https://github.com/pepa-linha/Adminer-Design-Dark/

View File

@@ -4,4 +4,6 @@ php:
- 7.1 - 7.1
- 7.2 - 7.2
- 7.3 - 7.3
- 7.4
- 8.0
script: git diff --name-only $TRAVIS_COMMIT_RANGE | grep '\.php$' | xargs -n1 -P8 php -l | grep -v 'No syntax errors'; test $? -eq 1 script: git diff --name-only $TRAVIS_COMMIT_RANGE | grep '\.php$' | xargs -n1 -P8 php -l | grep -v 'No syntax errors'; test $? -eq 1

39
Makefile Normal file
View File

@@ -0,0 +1,39 @@
ROOT_DIRECTORY = $(shell dirname "$(realpath $(lastword $(MAKEFILE_LIST)))")
PHP := $(shell which php)
PORT := 8000
.DEFAULT_GOAL := default
.PHONY: default
default: compile
.PHONY: compile
compile:
$(PHP) $(ROOT_DIRECTORY)/compile.php
.PHONY: server
server:
php \
--server 127.0.0.1:$(PORT) \
--docroot $(ROOT_DIRECTORY)
.PHONY: initialize
initialize:
git \
-C $(ROOT_DIRECTORY) \
submodule \
update \
--init \
--recursive
.PHONY: clean
clean:
rm \
--recursive \
--force \
$(ROOT_DIRECTORY)/adminer.php
.PHONY: clean.all
clean.all: clean

11
SECURITY.md Normal file
View File

@@ -0,0 +1,11 @@
# Security Policy
## Supported Versions
I support only the last published version and the last development version (last commit).
## Reporting a Vulnerability
To report a vulnerability, create a private bug at https://sourceforge.net/p/adminer/bugs-and-features/new/?private=1.
I handle security issues with top priority. If you don't hear from me in a week then please ping the bug. Once I accept the bug, the fix should be available and new version released within days. I will mark the bug as public after releasing a new version or declining the bug.

View File

@@ -54,7 +54,7 @@ if ($_POST && !process_fields($row["fields"]) && !$error) {
} }
$process_field = process_field($field, $type_field); $process_field = process_field($field, $type_field);
$all_fields[] = array($field["orig"], $process_field, $after); $all_fields[] = array($field["orig"], $process_field, $after);
if ($process_field != process_field($orig_field, $orig_field)) { if (!$orig_field || $process_field != process_field($orig_field, $orig_field)) {
$fields[] = array($field["orig"], $process_field, $after); $fields[] = array($field["orig"], $process_field, $after);
if ($field["orig"] != "" || $after) { if ($field["orig"] != "" || $after) {
$use_all_fields = true; $use_all_fields = true;
@@ -185,11 +185,17 @@ edit_fields($row["fields"], $collations, "TABLE", $foreign_keys);
<p> <p>
<?php echo lang('Auto Increment'); ?>: <input type="number" name="Auto_increment" size="6" value="<?php echo h($row["Auto_increment"]); ?>"> <?php echo lang('Auto Increment'); ?>: <input type="number" name="Auto_increment" size="6" value="<?php echo h($row["Auto_increment"]); ?>">
<?php echo checkbox("defaults", 1, ($_POST ? $_POST["defaults"] : adminer_setting("defaults")), lang('Default values'), "columnShow(this.checked, 5)", "jsonly"); ?> <?php echo checkbox("defaults", 1, ($_POST ? $_POST["defaults"] : adminer_setting("defaults")), lang('Default values'), "columnShow(this.checked, 5)", "jsonly"); ?>
<?php echo (support("comment") <?php
? checkbox("comments", 1, ($_POST ? $_POST["comments"] : adminer_setting("comments")), lang('Comment'), "editingCommentsClick(this, true);", "jsonly") $comments = ($_POST ? $_POST["comments"] : adminer_setting("comments"));
. ' <input name="Comment" value="' . h($row["Comment"]) . '" data-maxlength="' . (min_version(5.5) ? 2048 : 60) . '">' echo (support("comment")
? checkbox("comments", 1, $comments, lang('Comment'), "editingCommentsClick(this, true);", "jsonly")
. ' ' . (preg_match('~\n~', $row["Comment"])
? "<textarea name='Comment' rows='2' cols='20'" . ($comments ? "" : " class='hidden'") . ">" . h($row["Comment"]) . "</textarea>"
: '<input name="Comment" value="' . h($row["Comment"]) . '" data-maxlength="' . (min_version(5.5) ? 2048 : 60) . '"' . ($comments ? "" : " class='hidden'") . '>'
)
: '') : '')
; ?> ;
?>
<p> <p>
<input type="submit" value="<?php echo lang('Save'); ?>"> <input type="submit" value="<?php echo lang('Save'); ?>">
<?php } ?> <?php } ?>

View File

@@ -61,7 +61,7 @@ if ($adminer->homepage()) {
echo " <input type='submit' name='search' value='" . lang('Search') . "'>\n"; echo " <input type='submit' name='search' value='" . lang('Search') . "'>\n";
echo "</div></fieldset>\n"; echo "</div></fieldset>\n";
if ($_POST["search"] && $_POST["query"] != "") { if ($_POST["search"] && $_POST["query"] != "") {
$_GET["where"][0]["op"] = "LIKE %%"; $_GET["where"][0]["op"] = $driver->convertOperator("LIKE %%");
search_tables(); search_tables();
} }
} }
@@ -83,7 +83,7 @@ if ($adminer->homepage()) {
$tables = 0; $tables = 0;
foreach ($tables_list as $name => $type) { foreach ($tables_list as $name => $type) {
$view = ($type !== null && !preg_match('~table~i', $type)); $view = ($type !== null && !preg_match('~table|sequence~i', $type));
$id = h("Table-" . $name); $id = h("Table-" . $name);
echo '<tr' . odd() . '><td>' . checkbox(($view ? "views[]" : "tables[]"), $name, in_array($name, $tables_views, true), "", "", "", $id); echo '<tr' . odd() . '><td>' . checkbox(($view ? "views[]" : "tables[]"), $name, in_array($name, $tables_views, true), "", "", "", $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)); echo '<th>' . (support("table") || support("indexes") ? "<a href='" . h(ME) . "table=" . urlencode($name) . "' title='" . lang('Show structure') . "' id='$id'>" . h($name) . '</a>' : h($name));
@@ -112,7 +112,7 @@ if ($adminer->homepage()) {
} }
echo "<tr><td><th>" . lang('%d in total', count($tables_list)); echo "<tr><td><th>" . lang('%d in total', count($tables_list));
echo "<td>" . h($jush == "sql" ? $connection->result("SELECT @@storage_engine") : ""); echo "<td>" . h($jush == "sql" ? $connection->result("SELECT @@default_storage_engine") : "");
echo "<td>" . h(db_collation(DB, collations())); echo "<td>" . h(db_collation(DB, collations()));
foreach (array("Data_length", "Index_length", "Data_free") as $key) { foreach (array("Data_length", "Index_length", "Data_free") as $key) {
echo "<td align='right' id='sum-$key'>"; echo "<td align='right' id='sum-$key'>";

View File

@@ -1,465 +0,0 @@
<?php
$drivers["elastic"] = "Elasticsearch (beta)";
if (isset($_GET["elastic"])) {
$possible_drivers = array("json + allow_url_fopen");
define("DRIVER", "elastic");
if (function_exists('json_decode') && ini_bool('allow_url_fopen')) {
class Min_DB {
var $extension = "JSON", $server_info, $errno, $error, $_url;
/** Performs query
* @param string
* @param array
* @param string
* @return mixed
*/
function rootQuery($path, $content = array(), $method = 'GET') {
@ini_set('track_errors', 1); // @ - may be disabled
$file = @file_get_contents("$this->_url/" . ltrim($path, '/'), false, stream_context_create(array('http' => array(
'method' => $method,
'content' => $content === null ? $content : json_encode($content),
'header' => 'Content-Type: application/json',
'ignore_errors' => 1, // available since PHP 5.2.10
))));
if (!$file) {
$this->error = $php_errormsg;
return $file;
}
if (!preg_match('~^HTTP/[0-9.]+ 2~i', $http_response_header[0])) {
$this->error = $file;
return false;
}
$return = json_decode($file, true);
if ($return === null) {
$this->errno = json_last_error();
if (function_exists('json_last_error_msg')) {
$this->error = json_last_error_msg();
} else {
$constants = get_defined_constants(true);
foreach ($constants['json'] as $name => $value) {
if ($value == $this->errno && preg_match('~^JSON_ERROR_~', $name)) {
$this->error = $name;
break;
}
}
}
}
return $return;
}
/** Performs query relative to actual selected DB
* @param string
* @param array
* @param string
* @return mixed
*/
function query($path, $content = array(), $method = 'GET') {
return $this->rootQuery(($this->_db != "" ? "$this->_db/" : "/") . ltrim($path, '/'), $content, $method);
}
function connect($server, $username, $password) {
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'];
}
return (bool) $return;
}
function select_db($database) {
$this->_db = $database;
return true;
}
function quote($string) {
return $string;
}
}
class Min_Result {
var $num_rows, $_rows;
function __construct($rows) {
$this->num_rows = count($rows);
$this->_rows = $rows;
reset($this->_rows);
}
function fetch_assoc() {
$return = current($this->_rows);
next($this->_rows);
return $return;
}
function fetch_row() {
return array_values($this->fetch_assoc());
}
}
}
class Min_Driver extends Min_SQL {
function select($table, $select, $where, $group, $order = array(), $limit = 1, $page = 0, $print = false) {
global $adminer;
$data = array();
$query = "$table/_search";
if ($select != array("*")) {
$data["fields"] = $select;
}
if ($order) {
$sort = array();
foreach ($order as $col) {
$col = preg_replace('~ DESC$~', '', $col, 1, $count);
$sort[] = ($count ? array($col => "desc") : $col);
}
$data["sort"] = $sort;
}
if ($limit) {
$data["size"] = +$limit;
if ($page) {
$data["from"] = ($page * $limit);
}
}
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"] && !$data["query"]["ids"]) {
$data["query"]["filtered"]["query"] = array("match_all" => array());
}
$start = microtime(true);
$search = $this->_conn->query($query, $data);
if ($print) {
echo $adminer->selectQuery("$query: " . json_encode($data), $start, !$search);
}
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();
foreach ($select as $key) {
$fields[$key] = $hit['fields'][$key];
}
}
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;
}
return new Min_Result($return);
}
function update($type, $record, $queryWhere, $limit = 0, $separator = "\n") {
//! use $limit
$parts = preg_split('~ *= *~', $queryWhere);
if (count($parts) == 2) {
$id = trim($parts[1]);
$query = "$type/$id";
return $this->_conn->query($query, $record, 'POST');
}
return false;
}
function insert($type, $record) {
$id = ""; //! user should be able to inform _id
$query = "$type/$id";
$response = $this->_conn->query($query, $record, 'POST');
$this->_conn->last_id = $response['_id'];
return $response['created'];
}
function delete($type, $queryWhere, $limit = 0) {
//! use $limit
$ids = array();
if (is_array($_GET["where"]) && $_GET["where"]["_id"]) {
$ids[] = $_GET["where"]["_id"];
}
if (is_array($_POST['check'])) {
foreach ($_POST['check'] as $check) {
$parts = preg_split('~ *= *~', $check);
if (count($parts) == 2) {
$ids[] = trim($parts[1]);
}
}
}
$this->_conn->affected_rows = 0;
foreach ($ids as $id) {
$query = "{$type}/{$id}";
$response = $this->_conn->query($query, '{}', 'DELETE');
if (is_array($response) && $response['found'] == true) {
$this->_conn->affected_rows++;
}
}
return $this->_conn->affected_rows;
}
}
function connect() {
global $adminer;
$connection = new Min_DB;
list($server, $username, $password) = $adminer->credentials();
if ($password != "" && $connection->connect($server, $username, "")) {
return lang('Database does not support password.');
}
if ($connection->connect($server, $username, $password)) {
return $connection;
}
return $connection->error;
}
function support($feature) {
return preg_match("~database|table|columns~", $feature);
}
function logged_user() {
global $adminer;
$credentials = $adminer->credentials();
return $credentials[1];
}
function get_databases() {
global $connection;
$return = $connection->rootQuery('_aliases');
if ($return) {
$return = array_keys($return);
sort($return, SORT_STRING);
}
return $return;
}
function collations() {
return array();
}
function db_collation($db, $collations) {
}
function engines() {
return array();
}
function count_tables($databases) {
global $connection;
$return = array();
$result = $connection->query('_stats');
if ($result && $result['indices']) {
$indices = $result['indices'];
foreach ($indices as $indice => $stats) {
$indexing = $stats['total']['indexing'];
$return[$indice] = $indexing['index_total'];
}
}
return $return;
}
function tables_list() {
global $connection;
$return = $connection->query('_mapping');
if ($return) {
$return = array_fill_keys(array_keys($return[$connection->_db]["mappings"]), 'table');
}
return $return;
}
function table_status($name = "", $fast = false) {
global $connection;
$search = $connection->query("_search", array(
"size" => 0,
"aggregations" => array(
"count_by_type" => array(
"terms" => array(
"field" => "_type"
)
)
)
), "POST");
$return = array();
if ($search) {
$tables = $search["aggregations"]["count_by_type"]["buckets"];
foreach ($tables as $table) {
$return[$table["key"]] = array(
"Name" => $table["key"],
"Engine" => "table",
"Rows" => $table["doc_count"],
);
if ($name != "" && $name == $table["key"]) {
return $return[$name];
}
}
}
return $return;
}
function error() {
global $connection;
return h($connection->error);
}
function information_schema() {
}
function is_view($table_status) {
}
function indexes($table, $connection2 = null) {
return array(
array("type" => "PRIMARY", "columns" => array("_id")),
);
}
function fields($table) {
global $connection;
$result = $connection->query("$table/_mapping");
$return = array();
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;
}
function foreign_keys($table) {
return array();
}
function table($idf) {
return $idf;
}
function idf_escape($idf) {
return $idf;
}
function convert_field($field) {
}
function unconvert_field($field, $return) {
return $return;
}
function fk_support($table_status) {
}
function found_rows($table_status, $where) {
return null;
}
/** Create index
* @param string
* @return mixed
*/
function create_database($db) {
global $connection;
return $connection->rootQuery(urlencode($db), null, 'PUT');
}
/** Remove index
* @param array
* @return mixed
*/
function drop_databases($databases) {
global $connection;
return $connection->rootQuery(urlencode(implode(',', $databases)), array(), 'DELETE');
}
/** Alter type
* @param array
* @return mixed
*/
function alter_table($table, $name, $fields, $foreign, $comment, $engine, $collation, $auto_increment, $partitioning) {
global $connection;
$properties = array();
foreach ($fields as $f) {
$field_name = trim($f[1][0]);
$field_type = trim($f[1][1] ? $f[1][1] : "text");
$properties[$field_name] = array(
'type' => $field_type
);
}
if (!empty($properties)) {
$properties = array('properties' => $properties);
}
return $connection->query("_mapping/{$name}", $properties, 'PUT');
}
/** Drop types
* @param array
* @return bool
*/
function drop_tables($tables) {
global $connection;
$return = true;
foreach ($tables as $table) { //! convert to bulk api
$return = $return && $connection->query(urlencode($table), array(), 'DELETE');
}
return $return;
}
function last_id() {
global $connection;
return $connection->last_id;
}
$jush = "elastic";
$operators = array("=", "query");
$functions = array();
$grouping = array();
$edit_functions = array(array("json"));
$types = array(); ///< @var array ($type => $maximum_unsigned_length, ...)
$structured_types = array(); ///< @var array ($description => array($type, ...), ...)
foreach (array(
lang('Numbers') => array("long" => 3, "integer" => 5, "short" => 8, "byte" => 10, "double" => 20, "float" => 66, "half_float" => 12, "scaled_float" => 21),
lang('Date and time') => array("date" => 10),
lang('Strings') => array("string" => 65535, "text" => 65535),
lang('Binary') => array("binary" => 255),
) as $key => $val) {
$types += $val;
$structured_types[$key] = array_keys($val);
}
}

View File

@@ -1,8 +1,7 @@
<?php <?php
$drivers["mongo"] = "MongoDB"; $drivers["mongo"] = "MongoDB (alpha)";
if (isset($_GET["mongo"])) { if (isset($_GET["mongo"])) {
$possible_drivers = array("mongo", "mongodb");
define("DRIVER", "mongo"); define("DRIVER", "mongo");
if (class_exists('MongoDB')) { if (class_exists('MongoDB')) {
@@ -10,7 +9,20 @@ if (isset($_GET["mongo"])) {
var $extension = "Mongo", $server_info = MongoClient::VERSION, $error, $last_id, $_link, $_db; var $extension = "Mongo", $server_info = MongoClient::VERSION, $error, $last_id, $_link, $_db;
function connect($uri, $options) { function connect($uri, $options) {
return @new MongoClient($uri, $options); try {
$this->_link = new MongoClient($uri, $options);
if ($options["password"] != "") {
$options["password"] = "";
try {
new MongoClient($uri, $options);
$this->error = lang('Database does not support password.');
} catch (Exception $e) {
// this is what we want
}
}
} catch (Exception $e) {
$this->error = $e->getMessage();
}
} }
function query($query) { function query($query) {
@@ -30,7 +42,6 @@ if (isset($_GET["mongo"])) {
function quote($string) { function quote($string) {
return $string; return $string;
} }
} }
class Min_Result { class Min_Result {
@@ -44,10 +55,10 @@ if (isset($_GET["mongo"])) {
$this->_charset[$key] = 63; $this->_charset[$key] = 63;
} }
$row[$key] = $row[$key] =
(is_a($val, 'MongoId') ? 'ObjectId("' . strval($val) . '")' : (is_a($val, 'MongoId') ? "ObjectId(\"$val\")" :
(is_a($val, 'MongoDate') ? gmdate("Y-m-d H:i:s", $val->sec) . " GMT" : (is_a($val, 'MongoDate') ? gmdate("Y-m-d H:i:s", $val->sec) . " GMT" :
(is_a($val, 'MongoBinData') ? $val->bin : //! allow downloading (is_a($val, 'MongoBinData') ? $val->bin : //! allow downloading
(is_a($val, 'MongoRegex') ? strval($val) : (is_a($val, 'MongoRegex') ? "$val" :
(is_object($val) ? get_class($val) : // MongoMinKey, MongoMaxKey (is_object($val) ? get_class($val) : // MongoMinKey, MongoMaxKey
$val $val
))))); )))));
@@ -198,14 +209,36 @@ if (isset($_GET["mongo"])) {
} elseif (class_exists('MongoDB\Driver\Manager')) { } elseif (class_exists('MongoDB\Driver\Manager')) {
class Min_DB { class Min_DB {
var $extension = "MongoDB", $server_info = MONGODB_VERSION, $error, $last_id; var $extension = "MongoDB", $server_info = MONGODB_VERSION, $affected_rows, $error, $last_id;
/** @var MongoDB\Driver\Manager */ /** @var MongoDB\Driver\Manager */
var $_link; var $_link;
var $_db, $_db_name; var $_db, $_db_name;
function connect($uri, $options) { function connect($uri, $options) {
$class = 'MongoDB\Driver\Manager'; $class = 'MongoDB\Driver\Manager';
return new $class($uri, $options); $this->_link = new $class($uri, $options);
$this->executeCommand('admin', array('ping' => 1));
}
function executeCommand($db, $command) {
$class = 'MongoDB\Driver\Command';
try {
return $this->_link->executeCommand($db, new $class($command));
} catch (Exception $e) {
$this->error = $e->getMessage();
return array();
}
}
function executeBulkWrite($namespace, $bulk, $counter) {
try {
$results = $this->_link->executeBulkWrite($namespace, $bulk);
$this->affected_rows = $results->$counter();
return true;
} catch (Exception $e) {
$this->error = $e->getMessage();
return false;
}
} }
function query($query) { function query($query) {
@@ -220,7 +253,6 @@ if (isset($_GET["mongo"])) {
function quote($string) { function quote($string) {
return $string; return $string;
} }
} }
class Min_Result { class Min_Result {
@@ -234,13 +266,13 @@ if (isset($_GET["mongo"])) {
$this->_charset[$key] = 63; $this->_charset[$key] = 63;
} }
$row[$key] = $row[$key] =
(is_a($val, 'MongoDB\BSON\ObjectID') ? 'MongoDB\BSON\ObjectID("' . strval($val) . '")' : (is_a($val, 'MongoDB\BSON\ObjectID') ? 'MongoDB\BSON\ObjectID("' . "$val\")" :
(is_a($val, 'MongoDB\BSON\UTCDatetime') ? $val->toDateTime()->format('Y-m-d H:i:s') : (is_a($val, 'MongoDB\BSON\UTCDatetime') ? $val->toDateTime()->format('Y-m-d H:i:s') :
(is_a($val, 'MongoDB\BSON\Binary') ? $val->bin : //! allow downloading (is_a($val, 'MongoDB\BSON\Binary') ? $val->getData() : //! allow downloading
(is_a($val, 'MongoDB\BSON\Regex') ? strval($val) : (is_a($val, 'MongoDB\BSON\Regex') ? "$val" :
(is_object($val) ? json_encode($val, 256) : // 256 = JSON_UNESCAPED_UNICODE (is_object($val) || is_array($val) ? json_encode($val, 256) : // 256 = JSON_UNESCAPED_UNICODE
$val // MongoMinKey, MongoMaxKey $val // MongoMinKey, MongoMaxKey
))))); )))));
} }
$this->_rows[] = $row; $this->_rows[] = $row;
foreach ($row as $key => $val) { foreach ($row as $key => $val) {
@@ -249,7 +281,7 @@ if (isset($_GET["mongo"])) {
} }
} }
} }
$this->num_rows = $result->count; $this->num_rows = count($this->_rows);
} }
function fetch_assoc() { function fetch_assoc() {
@@ -309,9 +341,12 @@ if (isset($_GET["mongo"])) {
$limit = min(200, max(1, (int) $limit)); $limit = min(200, max(1, (int) $limit));
$skip = $page * $limit; $skip = $page * $limit;
$class = 'MongoDB\Driver\Query'; $class = 'MongoDB\Driver\Query';
$query = new $class($where, array('projection' => $select, 'limit' => $limit, 'skip' => $skip, 'sort' => $sort)); try {
$results = $connection->_link->executeQuery("$connection->_db_name.$table", $query); return new Min_Result($connection->_link->executeQuery("$connection->_db_name.$table", new $class($where, array('projection' => $select, 'limit' => $limit, 'skip' => $skip, 'sort' => $sort))));
return new Min_Result($results); } catch (Exception $e) {
$connection->error = $e->getMessage();
return false;
}
} }
function update($table, $set, $queryWhere, $limit = 0, $separator = "\n") { function update($table, $set, $queryWhere, $limit = 0, $separator = "\n") {
@@ -335,9 +370,7 @@ if (isset($_GET["mongo"])) {
$update['$unset'] = $removeFields; $update['$unset'] = $removeFields;
} }
$bulk->update($where, $update, array('upsert' => false)); $bulk->update($where, $update, array('upsert' => false));
$results = $connection->_link->executeBulkWrite("$db.$table", $bulk); return $connection->executeBulkWrite("$db.$table", $bulk, 'getModifiedCount');
$connection->affected_rows = $results->getModifiedCount();
return true;
} }
function delete($table, $queryWhere, $limit = 0) { function delete($table, $queryWhere, $limit = 0) {
@@ -347,9 +380,7 @@ if (isset($_GET["mongo"])) {
$class = 'MongoDB\Driver\BulkWrite'; $class = 'MongoDB\Driver\BulkWrite';
$bulk = new $class(array()); $bulk = new $class(array());
$bulk->delete($where, array('limit' => $limit)); $bulk->delete($where, array('limit' => $limit));
$results = $connection->_link->executeBulkWrite("$db.$table", $bulk); return $connection->executeBulkWrite("$db.$table", $bulk, 'getDeletedCount');
$connection->affected_rows = $results->getDeletedCount();
return true;
} }
function insert($table, $set) { function insert($table, $set) {
@@ -357,24 +388,18 @@ if (isset($_GET["mongo"])) {
$db = $connection->_db_name; $db = $connection->_db_name;
$class = 'MongoDB\Driver\BulkWrite'; $class = 'MongoDB\Driver\BulkWrite';
$bulk = new $class(array()); $bulk = new $class(array());
if (isset($set['_id']) && empty($set['_id'])) { if ($set['_id'] == '') {
unset($set['_id']); unset($set['_id']);
} }
$bulk->insert($set); $bulk->insert($set);
$results = $connection->_link->executeBulkWrite("$db.$table", $bulk); return $connection->executeBulkWrite("$db.$table", $bulk, 'getInsertedCount');
$connection->affected_rows = $results->getInsertedCount();
return true;
} }
} }
function get_databases($flush) { function get_databases($flush) {
/** @var Min_DB */
global $connection; global $connection;
$return = array(); $return = array();
$class = 'MongoDB\Driver\Command'; foreach ($connection->executeCommand('admin', array('listDatabases' => 1)) as $dbs) {
$command = new $class(array('listDatabases' => 1));
$results = $connection->_link->executeCommand('admin', $command);
foreach ($results as $dbs) {
foreach ($dbs->databases as $db) { foreach ($dbs->databases as $db) {
$return[] = $db->name; $return[] = $db->name;
} }
@@ -389,11 +414,8 @@ if (isset($_GET["mongo"])) {
function tables_list() { function tables_list() {
global $connection; global $connection;
$class = 'MongoDB\Driver\Command';
$command = new $class(array('listCollections' => 1));
$results = $connection->_link->executeCommand($connection->_db_name, $command);
$collections = array(); $collections = array();
foreach ($results as $result) { foreach ($connection->executeCommand($connection->_db_name, array('listCollections' => 1)) as $result) {
$collections[$result->name] = 'table'; $collections[$result->name] = 'table';
} }
return $collections; return $collections;
@@ -406,10 +428,7 @@ if (isset($_GET["mongo"])) {
function indexes($table, $connection2 = null) { function indexes($table, $connection2 = null) {
global $connection; global $connection;
$return = array(); $return = array();
$class = 'MongoDB\Driver\Command'; foreach ($connection->executeCommand($connection->_db_name, array('listIndexes' => $table)) as $index) {
$command = new $class(array('listIndexes' => $table));
$results = $connection->_link->executeCommand($connection->_db_name, $command);
foreach ($results as $index) {
$descs = array(); $descs = array();
$columns = array(); $columns = array();
foreach (get_object_vars($index->key) as $column => $type) { foreach (get_object_vars($index->key) as $column => $type) {
@@ -427,24 +446,28 @@ if (isset($_GET["mongo"])) {
} }
function fields($table) { function fields($table) {
global $driver;
$fields = fields_from_edit(); $fields = fields_from_edit();
if (!count($fields)) { if (!$fields) {
global $driver;
$result = $driver->select($table, array("*"), null, null, array(), 10); $result = $driver->select($table, array("*"), null, null, array(), 10);
while ($row = $result->fetch_assoc()) { if ($result) {
foreach ($row as $key => $val) { while ($row = $result->fetch_assoc()) {
$row[$key] = null; foreach ($row as $key => $val) {
$fields[$key] = array( $row[$key] = null;
"field" => $key, $fields[$key] = array(
"type" => "string", "field" => $key,
"null" => ($key != $driver->primary), "type" => "string",
"auto_increment" => ($key == $driver->primary), "null" => ($key != $driver->primary),
"privileges" => array( "auto_increment" => ($key == $driver->primary),
"insert" => 1, "privileges" => array(
"select" => 1, "insert" => 1,
"update" => 1, "select" => 1,
), "update" => 1,
); "where" => 1,
"order" => 1,
),
);
}
} }
} }
} }
@@ -454,16 +477,12 @@ if (isset($_GET["mongo"])) {
function found_rows($table_status, $where) { function found_rows($table_status, $where) {
global $connection; global $connection;
$where = where_to_query($where); $where = where_to_query($where);
$class = 'MongoDB\Driver\Command'; $toArray = $connection->executeCommand($connection->_db_name, array('count' => $table_status['Name'], 'query' => $where))->toArray();
$command = new $class(array('count' => $table_status['Name'], 'query' => $where));
$results = $connection->_link->executeCommand($connection->_db_name, $command);
$toArray = $results->toArray();
return $toArray[0]->n; return $toArray[0]->n;
} }
function sql_query_where_parser($queryWhere) { function sql_query_where_parser($queryWhere) {
$queryWhere = trim(preg_replace('/WHERE[\s]?[(]?\(?/', '', $queryWhere)); $queryWhere = preg_replace('~^\sWHERE \(?\(?(.+?)\)?\)?$~', '\1', $queryWhere);
$queryWhere = preg_replace('/\)\)\)$/', ')', $queryWhere);
$wheres = explode(' AND ', $queryWhere); $wheres = explode(' AND ', $queryWhere);
$wheresOr = explode(') OR (', $queryWhere); $wheresOr = explode(') OR (', $queryWhere);
$where = array(); $where = array();
@@ -485,10 +504,8 @@ if (isset($_GET["mongo"])) {
if (is_array($where)) { if (is_array($where)) {
foreach ($where as $expression) { foreach ($where as $expression) {
list($col, $op, $val) = explode(" ", $expression, 3); list($col, $op, $val) = explode(" ", $expression, 3);
if ($col == "_id") { if ($col == "_id" && preg_match('~^(MongoDB\\\\BSON\\\\ObjectID)\("(.+)"\)$~', $val, $match)) {
$val = str_replace('MongoDB\BSON\ObjectID("', "", $val); list(, $class, $val) = $match;
$val = str_replace('")', "", $val);
$class = 'MongoDB\BSON\ObjectID';
$val = new $class($val); $val = new $class($val);
} }
if (!in_array($op, $adminer->operators)) { if (!in_array($op, $adminer->operators)) {
@@ -560,6 +577,7 @@ if (isset($_GET["mongo"])) {
"(date)>=", "(date)>=",
"(date)<=", "(date)<=",
); );
} }
function table($idf) { function table($idf) {
@@ -621,21 +639,11 @@ if (isset($_GET["mongo"])) {
if (($auth_source = getenv("MONGO_AUTH_SOURCE"))) { if (($auth_source = getenv("MONGO_AUTH_SOURCE"))) {
$options["authSource"] = $auth_source; $options["authSource"] = $auth_source;
} }
try { $connection->connect("mongodb://$server", $options);
$connection->_link = $connection->connect("mongodb://$server", $options); if ($connection->error) {
if ($password != "") { return $connection->error;
$options["password"] = "";
try {
$connection->connect("mongodb://$server", $options);
return lang('Database does not support password.');
} catch (Exception $ex) {
// this is what we want
}
}
return $connection;
} catch (Exception $ex) {
return $ex->getMessage();
} }
return $connection;
} }
function alter_indexes($table, $alter) { function alter_indexes($table, $alter) {
@@ -725,8 +733,15 @@ if (isset($_GET["mongo"])) {
return true; return true;
} }
$jush = "mongo"; function driver_config() {
$functions = array(); global $operators;
$grouping = array(); return array(
$edit_functions = array(array("json")); 'possible_drivers' => array("mongo", "mongodb"),
'jush' => "mongo",
'operators' => $operators,
'functions' => array(),
'grouping' => array(),
'edit_functions' => array(array("json")),
);
}
} }

View File

@@ -8,7 +8,6 @@
$drivers["mssql"] = "MS SQL (beta)"; $drivers["mssql"] = "MS SQL (beta)";
if (isset($_GET["mssql"])) { if (isset($_GET["mssql"])) {
$possible_drivers = array("SQLSRV", "MSSQL", "PDO_DBLIB");
define("DRIVER", "mssql"); define("DRIVER", "mssql");
if (extension_loaded("sqlsrv")) { if (extension_loaded("sqlsrv")) {
class Min_DB { class Min_DB {
@@ -368,7 +367,7 @@ if (isset($_GET["mssql"])) {
} }
function fields($table) { function fields($table) {
$comments = get_key_vals("SELECT objname, cast(value as varchar) FROM fn_listextendedproperty('MS_DESCRIPTION', 'schema', " . q(get_schema()) . ", 'table', " . q($table) . ", 'column', NULL)"); $comments = get_key_vals("SELECT objname, cast(value as varchar(max)) FROM fn_listextendedproperty('MS_DESCRIPTION', 'schema', " . q(get_schema()) . ", 'table', " . q($table) . ", 'column', NULL)");
$return = array(); $return = array();
foreach (get_rows("SELECT c.max_length, c.precision, c.scale, c.name, c.is_nullable, c.is_identity, c.collation_name, t.name type, CAST(d.definition as text) [default] foreach (get_rows("SELECT c.max_length, c.precision, c.scale, c.name, c.is_nullable, c.is_identity, c.collation_name, t.name type, CAST(d.definition as text) [default]
FROM sys.all_columns c FROM sys.all_columns c
@@ -388,7 +387,7 @@ WHERE o.schema_id = SCHEMA_ID(" . q(get_schema()) . ") AND o.type IN ('S', 'U',
"null" => $row["is_nullable"], "null" => $row["is_nullable"],
"auto_increment" => $row["is_identity"], "auto_increment" => $row["is_identity"],
"collation" => $row["collation_name"], "collation" => $row["collation_name"],
"privileges" => array("insert" => 1, "select" => 1, "update" => 1), "privileges" => array("insert" => 1, "select" => 1, "update" => 1, "where" => 1, "order" => 1),
"primary" => $row["is_identity"], //! or indexes.is_primary_key "primary" => $row["is_identity"], //! or indexes.is_primary_key
"comment" => $comments[$row["name"]], "comment" => $comments[$row["name"]],
); );
@@ -495,8 +494,8 @@ WHERE OBJECT_NAME(i.object_id) = " . q($table)
} }
foreach ($comments as $key => $val) { foreach ($comments as $key => $val) {
$comment = substr($val, 9); // 9 - strlen(" COMMENT ") $comment = substr($val, 9); // 9 - strlen(" COMMENT ")
queries("EXEC sp_dropextendedproperty @name = N'MS_Description', @level0type = N'Schema', @level0name = " . q(get_schema()) . ", @level1type = N'Table', @level1name = " . q($name) . ", @level2type = N'Column', @level2name = " . q($key)); queries("EXEC sp_dropextendedproperty @name = N'MS_Description', @level0type = N'Schema', @level0name = " . q(get_schema()) . ", @level1type = N'Table', @level1name = " . q($name) . ", @level2type = N'Column', @level2name = " . q($key));
queries("EXEC sp_addextendedproperty @name = N'MS_Description', @value = " . $comment . ", @level0type = N'Schema', @level0name = " . q(get_schema()) . ", @level1type = N'Table', @level1name = " . q($name) . ", @level2type = N'Column', @level2name = " . q($key)); queries("EXEC sp_addextendedproperty @name = N'MS_Description', @value = " . $comment . ", @level0type = N'Schema', @level0name = " . q(get_schema()) . ", @level1type = N'Table', @level1name = " . q($name) . ", @level2type = N'Column', @level2name = " . q($key));
} }
return true; return true;
} }
@@ -646,28 +645,35 @@ WHERE sys1.xtype = 'TR' AND sys2.name = " . q($table)
return preg_match('~^(comment|columns|database|drop_col|indexes|descidx|scheme|sql|table|trigger|view|view_trigger)$~', $feature); //! routine| return preg_match('~^(comment|columns|database|drop_col|indexes|descidx|scheme|sql|table|trigger|view|view_trigger)$~', $feature); //! routine|
} }
$jush = "mssql"; function driver_config() {
$types = array(); $types = array();
$structured_types = array(); $structured_types = array();
foreach (array( //! use sys.types foreach (array( //! use sys.types
lang('Numbers') => array("tinyint" => 3, "smallint" => 5, "int" => 10, "bigint" => 20, "bit" => 1, "decimal" => 0, "real" => 12, "float" => 53, "smallmoney" => 10, "money" => 20), lang('Numbers') => array("tinyint" => 3, "smallint" => 5, "int" => 10, "bigint" => 20, "bit" => 1, "decimal" => 0, "real" => 12, "float" => 53, "smallmoney" => 10, "money" => 20),
lang('Date and time') => array("date" => 10, "smalldatetime" => 19, "datetime" => 19, "datetime2" => 19, "time" => 8, "datetimeoffset" => 10), lang('Date and time') => array("date" => 10, "smalldatetime" => 19, "datetime" => 19, "datetime2" => 19, "time" => 8, "datetimeoffset" => 10),
lang('Strings') => array("char" => 8000, "varchar" => 8000, "text" => 2147483647, "nchar" => 4000, "nvarchar" => 4000, "ntext" => 1073741823), lang('Strings') => array("char" => 8000, "varchar" => 8000, "text" => 2147483647, "nchar" => 4000, "nvarchar" => 4000, "ntext" => 1073741823),
lang('Binary') => array("binary" => 8000, "varbinary" => 8000, "image" => 2147483647), lang('Binary') => array("binary" => 8000, "varbinary" => 8000, "image" => 2147483647),
) as $key => $val) { ) as $key => $val) {
$types += $val; $types += $val;
$structured_types[$key] = array_keys($val); $structured_types[$key] = array_keys($val);
}
return array(
'possible_drivers' => array("SQLSRV", "MSSQL", "PDO_DBLIB"),
'jush' => "mssql",
'types' => $types,
'structured_types' => $structured_types,
'unsigned' => array(),
'operators' => array("=", "<", ">", "<=", ">=", "!=", "LIKE", "LIKE %%", "IN", "IS NULL", "NOT LIKE", "NOT IN", "IS NOT NULL"),
'functions' => array("len", "lower", "round", "upper"),
'grouping' => array("avg", "count", "count distinct", "max", "min", "sum"),
'edit_functions' => array(
array(
"date|time" => "getdate",
), array(
"int|decimal|real|float|money|datetime" => "+/-",
"char|text" => "+",
)
),
);
} }
$unsigned = array();
$operators = array("=", "<", ">", "<=", ">=", "!=", "LIKE", "LIKE %%", "IN", "IS NULL", "NOT LIKE", "NOT IN", "IS NOT NULL");
$functions = array("len", "lower", "round", "upper");
$grouping = array("avg", "count", "count distinct", "max", "min", "sum");
$edit_functions = array(
array(
"date|time" => "getdate",
), array(
"int|decimal|real|float|money|datetime" => "+/-",
"char|text" => "+",
)
);
} }

View File

@@ -2,7 +2,6 @@
$drivers = array("server" => "MySQL") + $drivers; $drivers = array("server" => "MySQL") + $drivers;
if (!defined("DRIVER")) { if (!defined("DRIVER")) {
$possible_drivers = array("MySQLi", "MySQL", "PDO_MySQL");
define("DRIVER", "server"); // server - backwards compatibility define("DRIVER", "server"); // server - backwards compatibility
// MySQLi supports everything, MySQL doesn't support multiple result sets, PDO_MySQL doesn't support orgtable // MySQLi supports everything, MySQL doesn't support multiple result sets, PDO_MySQL doesn't support orgtable
if (extension_loaded("mysqli")) { if (extension_loaded("mysqli")) {
@@ -267,7 +266,7 @@ if (!defined("DRIVER")) {
} }
function query($query, $unbuffered = false) { function query($query, $unbuffered = false) {
$this->setAttribute(1000, !$unbuffered); // 1000 - PDO::MYSQL_ATTR_USE_BUFFERED_QUERY $this->pdo->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, !$unbuffered);
return parent::query($query, $unbuffered); return parent::query($query, $unbuffered);
} }
} }
@@ -547,12 +546,12 @@ if (!defined("DRIVER")) {
"type" => $match[1], "type" => $match[1],
"length" => $match[2], "length" => $match[2],
"unsigned" => ltrim($match[3] . $match[4]), "unsigned" => ltrim($match[3] . $match[4]),
"default" => ($row["Default"] != "" || preg_match("~char|set~", $match[1]) ? $row["Default"] : null), "default" => ($row["Default"] != "" || preg_match("~char|set~", $match[1]) ? (preg_match('~text~', $match[1]) ? stripslashes(preg_replace("~^'(.*)'\$~", '\1', $row["Default"])) : $row["Default"]) : null),
"null" => ($row["Null"] == "YES"), "null" => ($row["Null"] == "YES"),
"auto_increment" => ($row["Extra"] == "auto_increment"), "auto_increment" => ($row["Extra"] == "auto_increment"),
"on_update" => (preg_match('~^on update (.+)~i', $row["Extra"], $match) ? $match[1] : ""), //! available since MySQL 5.1.23 "on_update" => (preg_match('~^on update (.+)~i', $row["Extra"], $match) ? $match[1] : ""), //! available since MySQL 5.1.23
"collation" => $row["Collation"], "collation" => $row["Collation"],
"privileges" => array_flip(preg_split('~, *~', $row["Privileges"])), "privileges" => array_flip(preg_split('~, *~', $row["Privileges"])) + ["where" => 1, "order" => 1],
"comment" => $row["Comment"], "comment" => $row["Comment"],
"primary" => ($row["Key"] == "PRI"), "primary" => ($row["Key"] == "PRI"),
// https://mariadb.com/kb/en/library/show-columns/, https://github.com/vrana/adminer/pull/359#pullrequestreview-276677186 // https://mariadb.com/kb/en/library/show-columns/, https://github.com/vrana/adminer/pull/359#pullrequestreview-276677186
@@ -679,17 +678,17 @@ if (!defined("DRIVER")) {
function rename_database($name, $collation) { function rename_database($name, $collation) {
$return = false; $return = false;
if (create_database($name, $collation)) { if (create_database($name, $collation)) {
//! move triggers $tables = array();
$rename = array(); $views = array();
foreach (tables_list() as $table => $type) { foreach (tables_list() as $table => $type) {
$rename[] = table($table) . " TO " . idf_escape($name) . "." . table($table); if ($type == 'VIEW') {
$views[] = $table;
} else {
$tables[] = $table;
}
} }
$return = (!$rename || queries("RENAME TABLE " . implode(", ", $rename))); $return = (!$tables && !$views) || move_tables($tables, $views, $name);
if ($return) { drop_databases($return ? array(DB) : array());
queries("DROP DATABASE " . idf_escape(DB));
}
restart_session();
set_session("dbs", null);
} }
return $return; return $return;
} }
@@ -798,12 +797,27 @@ if (!defined("DRIVER")) {
* @return bool * @return bool
*/ */
function move_tables($tables, $views, $target) { function move_tables($tables, $views, $target) {
global $connection;
$rename = array(); $rename = array();
foreach (array_merge($tables, $views) as $table) { // views will report SQL error foreach ($tables as $table) {
$rename[] = table($table) . " TO " . idf_escape($target) . "." . table($table); $rename[] = table($table) . " TO " . idf_escape($target) . "." . table($table);
} }
return queries("RENAME TABLE " . implode(", ", $rename)); if (!$rename || queries("RENAME TABLE " . implode(", ", $rename))) {
$definitions = array();
foreach ($views as $table) {
$definitions[table($table)] = view($table);
}
$connection->select_db($target);
$db = idf_escape(DB);
foreach ($definitions as $name => $view) {
if (!queries("CREATE VIEW $name AS " . str_replace(" $db.", " ", $view["select"])) || !queries("DROP VIEW $db.$name")) {
return false;
}
}
return true;
}
//! move triggers //! move triggers
return false;
} }
/** Copy tables to other schema /** Copy tables to other schema
@@ -950,7 +964,7 @@ if (!defined("DRIVER")) {
* @return Min_Result * @return Min_Result
*/ */
function explain($connection, $query) { function explain($connection, $query) {
return $connection->query("EXPLAIN " . (min_version(5.1) ? "PARTITIONS " : "") . $query); return $connection->query("EXPLAIN " . (min_version(5.1) && !min_version(5.7) ? "PARTITIONS " : "") . $query);
} }
/** Get approximate number of rows /** Get approximate number of rows
@@ -1085,7 +1099,8 @@ if (!defined("DRIVER")) {
$return = "CONV($return, 2, 10) + 0"; $return = "CONV($return, 2, 10) + 0";
} }
if (preg_match("~geometry|point|linestring|polygon~", $field["type"])) { if (preg_match("~geometry|point|linestring|polygon~", $field["type"])) {
$return = (min_version(8) ? "ST_" : "") . "GeomFromText($return, SRID($field[field]))"; $prefix = (min_version(8) ? "ST_" : "");
$return = $prefix . "GeomFromText($return, $prefix" . "SRID($field[field]))";
} }
return $return; return $return;
} }
@@ -1098,47 +1113,67 @@ if (!defined("DRIVER")) {
return !preg_match("~scheme|sequence|type|view_trigger|materializedview" . (min_version(8) ? "" : "|descidx" . (min_version(5.1) ? "" : "|event|partitioning" . (min_version(5) ? "" : "|routine|trigger|view"))) . "~", $feature); return !preg_match("~scheme|sequence|type|view_trigger|materializedview" . (min_version(8) ? "" : "|descidx" . (min_version(5.1) ? "" : "|event|partitioning" . (min_version(5) ? "" : "|routine|trigger|view"))) . "~", $feature);
} }
/** Kill a process
* @param int
* @return bool
*/
function kill_process($val) { function kill_process($val) {
return queries("KILL " . number($val)); return queries("KILL " . number($val));
} }
/** Return query to get connection ID
* @return string
*/
function connection_id(){ function connection_id(){
return "SELECT CONNECTION_ID()"; return "SELECT CONNECTION_ID()";
} }
/** Get maximum number of connections
* @return int
*/
function max_connections() { function max_connections() {
global $connection; global $connection;
return $connection->result("SELECT @@max_connections"); return $connection->result("SELECT @@max_connections");
} }
$jush = "sql"; ///< @var string JUSH identifier /** Get driver config
$types = array(); ///< @var array ($type => $maximum_unsigned_length, ...) * @return array array('possible_drivers' => , 'jush' => , 'types' => , 'structured_types' => , 'unsigned' => , 'operators' => , 'functions' => , 'grouping' => , 'edit_functions' => )
$structured_types = array(); ///< @var array ($description => array($type, ...), ...) */
foreach (array( function driver_config() {
lang('Numbers') => array("tinyint" => 3, "smallint" => 5, "mediumint" => 8, "int" => 10, "bigint" => 20, "decimal" => 66, "float" => 12, "double" => 21), $types = array(); ///< @var array ($type => $maximum_unsigned_length, ...)
lang('Date and time') => array("date" => 10, "datetime" => 19, "timestamp" => 19, "time" => 10, "year" => 4), $structured_types = array(); ///< @var array ($description => array($type, ...), ...)
lang('Strings') => array("char" => 255, "varchar" => 65535, "tinytext" => 255, "text" => 65535, "mediumtext" => 16777215, "longtext" => 4294967295), foreach (array(
lang('Lists') => array("enum" => 65535, "set" => 64), lang('Numbers') => array("tinyint" => 3, "smallint" => 5, "mediumint" => 8, "int" => 10, "bigint" => 20, "decimal" => 66, "float" => 12, "double" => 21),
lang('Binary') => array("bit" => 20, "binary" => 255, "varbinary" => 65535, "tinyblob" => 255, "blob" => 65535, "mediumblob" => 16777215, "longblob" => 4294967295), lang('Date and time') => array("date" => 10, "datetime" => 19, "timestamp" => 19, "time" => 10, "year" => 4),
lang('Geometry') => array("geometry" => 0, "point" => 0, "linestring" => 0, "polygon" => 0, "multipoint" => 0, "multilinestring" => 0, "multipolygon" => 0, "geometrycollection" => 0), lang('Strings') => array("char" => 255, "varchar" => 65535, "tinytext" => 255, "text" => 65535, "mediumtext" => 16777215, "longtext" => 4294967295),
) as $key => $val) { lang('Lists') => array("enum" => 65535, "set" => 64),
$types += $val; lang('Binary') => array("bit" => 20, "binary" => 255, "varbinary" => 65535, "tinyblob" => 255, "blob" => 65535, "mediumblob" => 16777215, "longblob" => 4294967295),
$structured_types[$key] = array_keys($val); lang('Geometry') => array("geometry" => 0, "point" => 0, "linestring" => 0, "polygon" => 0, "multipoint" => 0, "multilinestring" => 0, "multipolygon" => 0, "geometrycollection" => 0),
) as $key => $val) {
$types += $val;
$structured_types[$key] = array_keys($val);
}
return array(
'possible_drivers' => array("MySQLi", "MySQL", "PDO_MySQL"),
'jush' => "sql", ///< @var string JUSH identifier
'types' => $types,
'structured_types' => $structured_types,
'unsigned' => array("unsigned", "zerofill", "unsigned zerofill"), ///< @var array number variants
'operators' => array("=", "<", ">", "<=", ">=", "!=", "LIKE", "LIKE %%", "REGEXP", "IN", "FIND_IN_SET", "IS NULL", "NOT LIKE", "NOT REGEXP", "NOT IN", "IS NOT NULL", "SQL"), ///< @var array operators used in select
'functions' => array("char_length", "date", "from_unixtime", "unix_timestamp", "lower", "round", "floor", "ceil", "sec_to_time", "time_to_sec", "upper"), ///< @var array functions used in select
'grouping' => array("avg", "count", "count distinct", "group_concat", "max", "min", "sum"), ///< @var array grouping functions used in select
'edit_functions' => array( ///< @var array of array("$type|$type2" => "$function/$function2") functions used in editing, [0] - edit and insert, [1] - edit only
array(
"char" => "md5/sha1/password/encrypt/uuid",
"binary" => "md5/sha1",
"date|time" => "now",
), array(
number_type() => "+/-",
"date" => "+ interval/- interval",
"time" => "addtime/subtime",
"char|text" => "concat",
)
),
);
} }
$unsigned = array("unsigned", "zerofill", "unsigned zerofill"); ///< @var array number variants
$operators = array("=", "<", ">", "<=", ">=", "!=", "LIKE", "LIKE %%", "REGEXP", "IN", "FIND_IN_SET", "IS NULL", "NOT LIKE", "NOT REGEXP", "NOT IN", "IS NOT NULL", "SQL"); ///< @var array operators used in select
$functions = array("char_length", "date", "from_unixtime", "lower", "round", "floor", "ceil", "sec_to_time", "time_to_sec", "upper"); ///< @var array functions used in select
$grouping = array("avg", "count", "count distinct", "group_concat", "max", "min", "sum"); ///< @var array grouping functions used in select
$edit_functions = array( ///< @var array of array("$type|$type2" => "$function/$function2") functions used in editing, [0] - edit and insert, [1] - edit only
array(
"char" => "md5/sha1/password/encrypt/uuid",
"binary" => "md5/sha1",
"date|time" => "now",
), array(
number_type() => "+/-",
"date" => "+ interval/- interval",
"time" => "addtime/subtime",
"char|text" => "concat",
)
);
} }

View File

@@ -2,11 +2,11 @@
$drivers["oracle"] = "Oracle (beta)"; $drivers["oracle"] = "Oracle (beta)";
if (isset($_GET["oracle"])) { if (isset($_GET["oracle"])) {
$possible_drivers = array("OCI8", "PDO_OCI");
define("DRIVER", "oracle"); define("DRIVER", "oracle");
if (extension_loaded("oci8")) { if (extension_loaded("oci8")) {
class Min_DB { class Min_DB {
var $extension = "oci8", $_link, $_result, $server_info, $affected_rows, $errno, $error; var $extension = "oci8", $_link, $_result, $server_info, $affected_rows, $errno, $error;
var $_current_db;
function _error($errno, $error) { function _error($errno, $error) {
if (ini_bool("html_errors")) { if (ini_bool("html_errors")) {
@@ -32,6 +32,7 @@ if (isset($_GET["oracle"])) {
} }
function select_db($database) { function select_db($database) {
$this->_current_db = $database;
return true; return true;
} }
@@ -52,6 +53,7 @@ if (isset($_GET["oracle"])) {
return new Min_Result($result); return new Min_Result($result);
} }
$this->affected_rows = oci_num_rows($result); $this->affected_rows = oci_num_rows($result);
oci_free_statement($result);
} }
return $return; return $return;
} }
@@ -119,6 +121,7 @@ if (isset($_GET["oracle"])) {
} elseif (extension_loaded("pdo_oci")) { } elseif (extension_loaded("pdo_oci")) {
class Min_DB extends Min_PDO { class Min_DB extends Min_PDO {
var $extension = "PDO_OCI"; var $extension = "PDO_OCI";
var $_current_db;
function connect($server, $username, $password) { function connect($server, $username, $password) {
$this->dsn("oci:dbname=//$server;charset=AL32UTF8", $username, $password); $this->dsn("oci:dbname=//$server;charset=AL32UTF8", $username, $password);
@@ -126,6 +129,7 @@ if (isset($_GET["oracle"])) {
} }
function select_db($database) { function select_db($database) {
$this->_current_db = $database;
return true; return true;
} }
} }
@@ -142,9 +146,35 @@ if (isset($_GET["oracle"])) {
return true; // automatic start return true; // automatic start
} }
function insertUpdate($table, $rows, $primary) {
global $connection;
foreach ($rows as $set) {
$update = array();
$where = array();
foreach ($set as $key => $val) {
$update[] = "$key = $val";
if (isset($primary[idf_unescape($key)])) {
$where[] = "$key = $val";
}
}
if (!(($where && queries("UPDATE " . table($table) . " SET " . implode(", ", $update) . " WHERE " . implode(" AND ", $where)) && $connection->affected_rows)
|| queries("INSERT INTO " . table($table) . " (" . implode(", ", array_keys($set)) . ") VALUES (" . implode(", ", $set) . ")")
)) {
return false;
}
}
return true;
}
} }
/**
* @param string $hostPath
* @return bool
*/
function is_server_host_valid($hostPath) {
// EasyConnect host+path format: host[/[service_name][:server_type][/instance_name]]
return (bool)preg_match('~^[^/]+(/([^/:]+)?(:[^/:]+)?(/[^/:]+)?)?$~', $hostPath);
}
function idf_escape($idf) { function idf_escape($idf) {
return '"' . str_replace('"', '""', $idf) . '"'; return '"' . str_replace('"', '""', $idf) . '"';
@@ -165,7 +195,7 @@ if (isset($_GET["oracle"])) {
} }
function get_databases() { function get_databases() {
return get_vals("SELECT tablespace_name FROM user_tablespaces"); return get_vals("SELECT tablespace_name FROM user_tablespaces ORDER BY 1");
} }
function limit($query, $where, $limit, $offset = 0, $separator = " ") { function limit($query, $where, $limit, $offset = 0, $separator = " ") {
@@ -193,22 +223,51 @@ if (isset($_GET["oracle"])) {
return $connection->result("SELECT USER FROM DUAL"); return $connection->result("SELECT USER FROM DUAL");
} }
function get_current_db() {
global $connection;
$db = $connection->_current_db ? $connection->_current_db : DB;
unset($connection->_current_db);
return $db;
}
function where_owner($prefix, $owner = "owner") {
if (!$_GET["ns"]) {
return '';
}
return "$prefix$owner = sys_context('USERENV', 'CURRENT_SCHEMA')";
}
function views_table($columns) {
$owner = where_owner('');
return "(SELECT $columns FROM all_views WHERE " . ($owner ? $owner : "rownum < 0") . ")";
}
function tables_list() { function tables_list() {
return get_key_vals("SELECT table_name, 'table' FROM all_tables WHERE tablespace_name = " . q(DB) . " $view = views_table("view_name");
UNION SELECT view_name, 'view' FROM user_views $owner = where_owner(" AND ");
return get_key_vals("SELECT table_name, 'table' FROM all_tables WHERE tablespace_name = " . q(DB) . "$owner
UNION SELECT view_name, 'view' FROM $view
ORDER BY 1" ORDER BY 1"
); //! views don't have schema ); //! views don't have schema
} }
function count_tables($databases) { function count_tables($databases) {
return array(); global $connection;
$return = array();
foreach ($databases as $db) {
$return[$db] = $connection->result("SELECT COUNT(*) FROM all_tables WHERE tablespace_name = " . q($db));
}
return $return;
} }
function table_status($name = "") { function table_status($name = "") {
$return = array(); $return = array();
$search = q($name); $search = q($name);
foreach (get_rows('SELECT table_name "Name", \'table\' "Engine", avg_row_len * num_rows "Data_length", num_rows "Rows" FROM all_tables WHERE tablespace_name = ' . q(DB) . ($name != "" ? " AND table_name = $search" : "") . " $db = get_current_db();
UNION SELECT view_name, 'view', 0, 0 FROM user_views" . ($name != "" ? " WHERE view_name = $search" : "") . " $view = views_table("view_name");
$owner = where_owner(" AND ");
foreach (get_rows('SELECT table_name "Name", \'table\' "Engine", avg_row_len * num_rows "Data_length", num_rows "Rows" FROM all_tables WHERE tablespace_name = ' . q($db) . $owner . ($name != "" ? " AND table_name = $search" : "") . "
UNION SELECT view_name, 'view', 0, 0 FROM $view" . ($name != "" ? " WHERE view_name = $search" : "") . "
ORDER BY 1" ORDER BY 1"
) as $row) { ) as $row) {
if ($name != "") { if ($name != "") {
@@ -229,11 +288,12 @@ ORDER BY 1"
function fields($table) { function fields($table) {
$return = array(); $return = array();
foreach (get_rows("SELECT * FROM all_tab_columns WHERE table_name = " . q($table) . " ORDER BY column_id") as $row) { $owner = where_owner(" AND ");
foreach (get_rows("SELECT * FROM all_tab_columns WHERE table_name = " . q($table) . "$owner ORDER BY column_id") as $row) {
$type = $row["DATA_TYPE"]; $type = $row["DATA_TYPE"];
$length = "$row[DATA_PRECISION],$row[DATA_SCALE]"; $length = "$row[DATA_PRECISION],$row[DATA_SCALE]";
if ($length == ",") { if ($length == ",") {
$length = $row["DATA_LENGTH"]; $length = $row["CHAR_COL_DECL_LENGTH"];
} //! int } //! int
$return[$row["COLUMN_NAME"]] = array( $return[$row["COLUMN_NAME"]] = array(
"field" => $row["COLUMN_NAME"], "field" => $row["COLUMN_NAME"],
@@ -244,7 +304,7 @@ ORDER BY 1"
"null" => ($row["NULLABLE"] == "Y"), "null" => ($row["NULLABLE"] == "Y"),
//! "auto_increment" => false, //! "auto_increment" => false,
//! "collation" => $row["CHARACTER_SET_NAME"], //! "collation" => $row["CHARACTER_SET_NAME"],
"privileges" => array("insert" => 1, "select" => 1, "update" => 1), "privileges" => array("insert" => 1, "select" => 1, "update" => 1, "where" => 1, "order" => 1),
//! "comment" => $row["Comment"], //! "comment" => $row["Comment"],
//! "primary" => ($row["Key"] == "PRI"), //! "primary" => ($row["Key"] == "PRI"),
); );
@@ -254,22 +314,27 @@ ORDER BY 1"
function indexes($table, $connection2 = null) { function indexes($table, $connection2 = null) {
$return = array(); $return = array();
foreach (get_rows("SELECT uic.*, uc.constraint_type $owner = where_owner(" AND ", "aic.table_owner");
FROM user_ind_columns uic foreach (get_rows("SELECT aic.*, ac.constraint_type, atc.data_default
LEFT JOIN user_constraints uc ON uic.index_name = uc.constraint_name AND uic.table_name = uc.table_name FROM all_ind_columns aic
WHERE uic.table_name = " . q($table) . " LEFT JOIN all_constraints ac ON aic.index_name = ac.constraint_name AND aic.table_name = ac.table_name AND aic.index_owner = ac.owner
ORDER BY uc.constraint_type, uic.column_position", $connection2) as $row) { LEFT JOIN all_tab_cols atc ON aic.column_name = atc.column_name AND aic.table_name = atc.table_name AND aic.index_owner = atc.owner
WHERE aic.table_name = " . q($table) . "$owner
ORDER BY ac.constraint_type, aic.column_position", $connection2) as $row) {
$index_name = $row["INDEX_NAME"]; $index_name = $row["INDEX_NAME"];
$column_name = $row["DATA_DEFAULT"];
$column_name = ($column_name ? trim($column_name, '"') : $row["COLUMN_NAME"]); // trim - possibly wrapped in quotes but never contains quotes inside
$return[$index_name]["type"] = ($row["CONSTRAINT_TYPE"] == "P" ? "PRIMARY" : ($row["CONSTRAINT_TYPE"] == "U" ? "UNIQUE" : "INDEX")); $return[$index_name]["type"] = ($row["CONSTRAINT_TYPE"] == "P" ? "PRIMARY" : ($row["CONSTRAINT_TYPE"] == "U" ? "UNIQUE" : "INDEX"));
$return[$index_name]["columns"][] = $row["COLUMN_NAME"]; $return[$index_name]["columns"][] = $column_name;
$return[$index_name]["lengths"][] = ($row["CHAR_LENGTH"] && $row["CHAR_LENGTH"] != $row["COLUMN_LENGTH"] ? $row["CHAR_LENGTH"] : null); $return[$index_name]["lengths"][] = ($row["CHAR_LENGTH"] && $row["CHAR_LENGTH"] != $row["COLUMN_LENGTH"] ? $row["CHAR_LENGTH"] : null);
$return[$index_name]["descs"][] = ($row["DESCEND"] ? '1' : null); $return[$index_name]["descs"][] = ($row["DESCEND"] && $row["DESCEND"] == "DESC" ? '1' : null);
} }
return $return; return $return;
} }
function view($name) { function view($name) {
$rows = get_rows('SELECT text "select" FROM user_views WHERE view_name = ' . q($name)); $view = views_table("view_name, text");
$rows = get_rows('SELECT text "select" FROM ' . $view . ' WHERE view_name = ' . q($name));
return reset($rows); return reset($rows);
} }
@@ -294,13 +359,25 @@ ORDER BY uc.constraint_type, uic.column_position", $connection2) as $row) {
function found_rows($table_status, $where) { function found_rows($table_status, $where) {
} }
function auto_increment() {
return "";
}
function alter_table($table, $name, $fields, $foreign, $comment, $engine, $collation, $auto_increment, $partitioning) { function alter_table($table, $name, $fields, $foreign, $comment, $engine, $collation, $auto_increment, $partitioning) {
$alter = $drop = array(); $alter = $drop = array();
$orig_fields = ($table ? fields($table) : array());
foreach ($fields as $field) { foreach ($fields as $field) {
$val = $field[1]; $val = $field[1];
if ($val && $field[0] != "" && idf_escape($field[0]) != $val[0]) { if ($val && $field[0] != "" && idf_escape($field[0]) != $val[0]) {
queries("ALTER TABLE " . table($table) . " RENAME COLUMN " . idf_escape($field[0]) . " TO $val[0]"); queries("ALTER TABLE " . table($table) . " RENAME COLUMN " . idf_escape($field[0]) . " TO $val[0]");
} }
$orig_field = $orig_fields[$field[0]];
if ($val && $orig_field) {
$old = process_field($orig_field, $orig_field);
if ($val[2] == $old[2]) {
$val[2] = "";
}
}
if ($val) { if ($val) {
$alter[] = ($table != "" ? ($field[0] != "" ? "MODIFY (" : "ADD (") : " ") . implode($val) . ($table != "" ? ")" : ""); //! error with name change only $alter[] = ($table != "" ? ($field[0] != "" ? "MODIFY (" : "ADD (") : " ") . implode($val) . ($table != "" ? ")" : ""); //! error with name change only
} else { } else {
@@ -316,6 +393,35 @@ ORDER BY uc.constraint_type, uic.column_position", $connection2) as $row) {
; ;
} }
function alter_indexes($table, $alter) {
$drop = array();
$queries = array();
foreach ($alter as $val) {
if ($val[0] != "INDEX") {
//! descending UNIQUE indexes results in syntax error
$val[2] = preg_replace('~ DESC$~', '', $val[2]);
$create = ($val[2] == "DROP"
? "\nDROP CONSTRAINT " . idf_escape($val[1])
: "\nADD" . ($val[1] != "" ? " CONSTRAINT " . idf_escape($val[1]) : "") . " $val[0] " . ($val[0] == "PRIMARY" ? "KEY " : "") . "(" . implode(", ", $val[2]) . ")"
);
array_unshift($queries, "ALTER TABLE " . table($table) . $create);
} elseif ($val[2] == "DROP") {
$drop[] = idf_escape($val[1]);
} else {
$queries[] = "CREATE INDEX " . idf_escape($val[1] != "" ? $val[1] : uniqid($table . "_")) . " ON " . table($table) . " (" . implode(", ", $val[2]) . ")";
}
}
if ($drop) {
array_unshift($queries, "DROP INDEX " . implode(", ", $drop));
}
foreach ($queries as $query) {
if (!queries($query)) {
return false;
}
}
return true;
}
function foreign_keys($table) { function foreign_keys($table) {
$return = array(); $return = array();
$query = "SELECT c_list.CONSTRAINT_NAME as NAME, $query = "SELECT c_list.CONSTRAINT_NAME as NAME,
@@ -359,7 +465,8 @@ AND c_src.TABLE_NAME = " . q($table);
} }
function schemas() { function schemas() {
return get_vals("SELECT DISTINCT owner FROM dba_segments WHERE owner IN (SELECT username FROM dba_users WHERE default_tablespace NOT IN ('SYSTEM','SYSAUX'))"); $return = get_vals("SELECT DISTINCT owner FROM dba_segments WHERE owner IN (SELECT username FROM dba_users WHERE default_tablespace NOT IN ('SYSTEM','SYSAUX')) ORDER BY 1");
return ($return ? $return : get_vals("SELECT DISTINCT owner FROM all_tables WHERE tablespace_name = " . q(DB) . " ORDER BY 1"));
} }
function get_schema() { function get_schema() {
@@ -401,33 +508,40 @@ ORDER BY PROCESS
} }
function support($feature) { function support($feature) {
return preg_match('~^(columns|database|drop_col|indexes|descidx|processlist|scheme|sql|status|table|variables|view|view_trigger)$~', $feature); //! return preg_match('~^(columns|database|drop_col|indexes|descidx|processlist|scheme|sql|status|table|variables|view)$~', $feature); //!
} }
$jush = "oracle"; function driver_config() {
$types = array(); $types = array();
$structured_types = array(); $structured_types = array();
foreach (array( foreach (array(
lang('Numbers') => array("number" => 38, "binary_float" => 12, "binary_double" => 21), lang('Numbers') => array("number" => 38, "binary_float" => 12, "binary_double" => 21),
lang('Date and time') => array("date" => 10, "timestamp" => 29, "interval year" => 12, "interval day" => 28), //! year(), day() to second() lang('Date and time') => array("date" => 10, "timestamp" => 29, "interval year" => 12, "interval day" => 28), //! year(), day() to second()
lang('Strings') => array("char" => 2000, "varchar2" => 4000, "nchar" => 2000, "nvarchar2" => 4000, "clob" => 4294967295, "nclob" => 4294967295), lang('Strings') => array("char" => 2000, "varchar2" => 4000, "nchar" => 2000, "nvarchar2" => 4000, "clob" => 4294967295, "nclob" => 4294967295),
lang('Binary') => array("raw" => 2000, "long raw" => 2147483648, "blob" => 4294967295, "bfile" => 4294967296), lang('Binary') => array("raw" => 2000, "long raw" => 2147483648, "blob" => 4294967295, "bfile" => 4294967296),
) as $key => $val) { ) as $key => $val) {
$types += $val; $types += $val;
$structured_types[$key] = array_keys($val); $structured_types[$key] = array_keys($val);
}
return array(
'possible_drivers' => array("OCI8", "PDO_OCI"),
'jush' => "oracle",
'types' => $types,
'structured_types' => $structured_types,
'unsigned' => array(),
'operators' => array("=", "<", ">", "<=", ">=", "!=", "LIKE", "LIKE %%", "IN", "IS NULL", "NOT LIKE", "NOT REGEXP", "NOT IN", "IS NOT NULL", "SQL"),
'functions' => array("length", "lower", "round", "upper"),
'grouping' => array("avg", "count", "count distinct", "max", "min", "sum"),
'edit_functions' => array(
array( //! no parentheses
"date" => "current_date",
"timestamp" => "current_timestamp",
), array(
"number|float|double" => "+/-",
"date|timestamp" => "+ interval/- interval",
"char|clob" => "||",
)
),
);
} }
$unsigned = array();
$operators = array("=", "<", ">", "<=", ">=", "!=", "LIKE", "LIKE %%", "IN", "IS NULL", "NOT LIKE", "NOT REGEXP", "NOT IN", "IS NOT NULL", "SQL");
$functions = array("length", "lower", "round", "upper");
$grouping = array("avg", "count", "count distinct", "max", "min", "sum");
$edit_functions = array(
array( //! no parentheses
"date" => "current_date",
"timestamp" => "current_timestamp",
), array(
"number|float|double" => "+/-",
"date|timestamp" => "+ interval/- interval",
"char|clob" => "||",
)
);
} }

View File

@@ -2,7 +2,6 @@
$drivers["pgsql"] = "PostgreSQL"; $drivers["pgsql"] = "PostgreSQL";
if (isset($_GET["pgsql"])) { if (isset($_GET["pgsql"])) {
$possible_drivers = array("PgSQL", "PDO_PgSQL");
define("DRIVER", "pgsql"); define("DRIVER", "pgsql");
if (extension_loaded("pgsql")) { if (extension_loaded("pgsql")) {
class Min_DB { class Min_DB {
@@ -41,7 +40,7 @@ if (isset($_GET["pgsql"])) {
} }
function value($val, $field) { function value($val, $field) {
return ($field["type"] == "bytea" ? pg_unescape_bytea($val) : $val); return ($field["type"] == "bytea" && $val !== null ? pg_unescape_bytea($val) : $val);
} }
function quoteBinary($string) { function quoteBinary($string) {
@@ -150,8 +149,7 @@ if (isset($_GET["pgsql"])) {
function connect($server, $username, $password) { function connect($server, $username, $password) {
global $adminer; global $adminer;
$db = $adminer->database(); $db = $adminer->database();
$string = "pgsql:host='" . str_replace(":", "' port='", addcslashes($server, "'\\")) . "' options='-c client_encoding=utf8'"; $this->dsn("pgsql:host='" . str_replace(":", "' port='", addcslashes($server, "'\\")) . "' client_encoding=utf8 dbname='" . ($db != "" ? addcslashes($db, "'\\") : "postgres") . "'", $username, $password); //! client_encoding is supported since 9.1 but we can't yet use min_version here
$this->dsn("$string dbname='" . ($db != "" ? addcslashes($db, "'\\") : "postgres") . "'", $username, $password);
//! connect without DB in case of an error //! connect without DB in case of an error
return true; return true;
} }
@@ -276,7 +274,9 @@ if (isset($_GET["pgsql"])) {
} }
function get_databases() { function get_databases() {
return get_vals("SELECT datname FROM pg_database WHERE has_database_privilege(datname, 'CONNECT') ORDER BY datname"); return get_vals("SELECT d.datname FROM pg_database d JOIN pg_roles r ON d.datdba = r.oid
WHERE d.datallowconn = TRUE AND has_database_privilege(d.datname, 'CONNECT') AND pg_has_role(r.rolname, 'USAGE')
ORDER BY d.datname");
} }
function limit($query, $where, $limit, $offset = 0, $separator = " ") { function limit($query, $where, $limit, $offset = 0, $separator = " ") {
@@ -286,13 +286,13 @@ if (isset($_GET["pgsql"])) {
function limit1($table, $query, $where, $separator = "\n") { function limit1($table, $query, $where, $separator = "\n") {
return (preg_match('~^INTO~', $query) return (preg_match('~^INTO~', $query)
? limit($query, $where, 1, 0, $separator) ? limit($query, $where, 1, 0, $separator)
: " $query" . (is_view(table_status1($table)) ? $where : " WHERE ctid = (SELECT ctid FROM " . table($table) . $where . $separator . "LIMIT 1)") : " $query" . (is_view(table_status1($table)) ? $where : $separator . "WHERE ctid = (SELECT ctid FROM " . table($table) . $where . $separator . "LIMIT 1)")
); );
} }
function db_collation($db, $collations) { function db_collation($db, $collations) {
global $connection; global $connection;
return $connection->result("SHOW LC_COLLATE"); //! respect $db return $connection->result("SELECT datcollate FROM pg_database WHERE datname = " . q($db));
} }
function engines() { function engines() {
@@ -306,7 +306,7 @@ if (isset($_GET["pgsql"])) {
function tables_list() { function tables_list() {
$query = "SELECT table_name, table_type FROM information_schema.tables WHERE table_schema = current_schema()"; $query = "SELECT table_name, table_type FROM information_schema.tables WHERE table_schema = current_schema()";
if (support('materializedview')) { if (support('materializedview')) { // ' - support("materializedview") could be removed by compile.php
$query .= " $query .= "
UNION ALL UNION ALL
SELECT matviewname, 'MATERIALIZED VIEW' SELECT matviewname, 'MATERIALIZED VIEW'
@@ -324,10 +324,10 @@ ORDER BY 1";
function table_status($name = "") { function table_status($name = "") {
$return = array(); $return = array();
foreach (get_rows("SELECT c.relname AS \"Name\", CASE c.relkind WHEN 'r' THEN 'table' WHEN 'm' THEN 'materialized view' ELSE 'view' END AS \"Engine\", pg_relation_size(c.oid) AS \"Data_length\", pg_total_relation_size(c.oid) - pg_relation_size(c.oid) AS \"Index_length\", obj_description(c.oid, 'pg_class') AS \"Comment\", " . (min_version(12) ? "''" : "CASE WHEN c.relhasoids THEN 'oid' ELSE '' END") . " AS \"Oid\", c.reltuples as \"Rows\", n.nspname foreach (get_rows("SELECT c.relname AS \"Name\", CASE c.relkind WHEN 'r' THEN 'table' WHEN 'm' THEN 'materialized view' ELSE 'view' END AS \"Engine\", pg_table_size(c.oid) AS \"Data_length\", pg_indexes_size(c.oid) AS \"Index_length\", obj_description(c.oid, 'pg_class') AS \"Comment\", " . (min_version(12) ? "''" : "CASE WHEN c.relhasoids THEN 'oid' ELSE '' END") . " AS \"Oid\", c.reltuples as \"Rows\", n.nspname
FROM pg_class c FROM pg_class c
JOIN pg_namespace n ON(n.nspname = current_schema() AND n.oid = c.relnamespace) JOIN pg_namespace n ON(n.nspname = current_schema() AND n.oid = c.relnamespace)
WHERE relkind IN ('r', 'm', 'v', 'f') WHERE relkind IN ('r', 'm', 'v', 'f', 'p')
" . ($name != "" ? "AND relname = " . q($name) : "ORDER BY relname") " . ($name != "" ? "AND relname = " . q($name) : "ORDER BY relname")
) as $row) { //! Index_length, Auto_increment ) as $row) { //! Index_length, Auto_increment
$return[$row["Name"]] = $row; $return[$row["Name"]] = $row;
@@ -350,9 +350,7 @@ WHERE relkind IN ('r', 'm', 'v', 'f')
'timestamp with time zone' => 'timestamptz', 'timestamp with time zone' => 'timestamptz',
); );
$identity_column = min_version(10) ? "(a.attidentity = 'd')::int" : '0'; foreach (get_rows("SELECT a.attname AS field, format_type(a.atttypid, a.atttypmod) AS full_type, pg_get_expr(d.adbin, d.adrelid) AS default, a.attnotnull::int, col_description(c.oid, a.attnum) AS comment" . (min_version(10) ? ", a.attidentity" : "") . "
foreach (get_rows("SELECT a.attname AS field, format_type(a.atttypid, a.atttypmod) AS full_type, pg_get_expr(d.adbin, d.adrelid) AS default, a.attnotnull::int, col_description(c.oid, a.attnum) AS comment, $identity_column AS identity
FROM pg_class c FROM pg_class c
JOIN pg_namespace n ON c.relnamespace = n.oid JOIN pg_namespace n ON c.relnamespace = n.oid
JOIN pg_attribute a ON c.oid = a.attrelid JOIN pg_attribute a ON c.oid = a.attrelid
@@ -375,14 +373,14 @@ ORDER BY a.attnum"
$row["type"] = $type; $row["type"] = $type;
$row["full_type"] = $row["type"] . $length . $addon . $array; $row["full_type"] = $row["type"] . $length . $addon . $array;
} }
if ($row['identity']) { if (in_array($row['attidentity'], array('a', 'd'))) {
$row['default'] = 'GENERATED BY DEFAULT AS IDENTITY'; $row['default'] = 'GENERATED ' . ($row['attidentity'] == 'd' ? 'BY DEFAULT' : 'ALWAYS') . ' AS IDENTITY';
} }
$row["null"] = !$row["attnotnull"]; $row["null"] = !$row["attnotnull"];
$row["auto_increment"] = $row['identity'] || preg_match('~^nextval\(~i', $row["default"]); $row["auto_increment"] = $row['attidentity'] || preg_match('~^nextval\(~i', $row["default"]);
$row["privileges"] = array("insert" => 1, "select" => 1, "update" => 1); $row["privileges"] = array("insert" => 1, "select" => 1, "update" => 1);
if (preg_match('~(.+)::[^)]+(.*)~', $row["default"], $match)) { if (preg_match('~(.+)::[^,)]+(.*)~', $row["default"], $match)) {
$row["default"] = ($match[1] == "NULL" ? null : (($match[1][0] == "'" ? idf_unescape($match[1]) : $match[1]) . $match[2])); $row["default"] = ($match[1] == "NULL" ? null : idf_unescape($match[1]) . $match[2]);
} }
$return[$row["field"]] = $row; $return[$row["field"]] = $row;
} }
@@ -397,7 +395,7 @@ ORDER BY a.attnum"
$return = array(); $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)); $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); $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 , (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) { 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"]; $relname = $row["relname"];
$return[$relname]["type"] = ($row["indispartial"] ? "INDEX" : ($row["indisprimary"] ? "PRIMARY" : ($row["indisunique"] ? "UNIQUE" : "INDEX"))); $return[$relname]["type"] = ($row["indispartial"] ? "INDEX" : ($row["indisprimary"] ? "PRIMARY" : ($row["indisunique"] ? "UNIQUE" : "INDEX")));
$return[$relname]["columns"] = array(); $return[$relname]["columns"] = array();
@@ -422,12 +420,12 @@ WHERE conrelid = (SELECT pc.oid FROM pg_class AS pc INNER JOIN pg_namespace AS p
AND contype = 'f'::char AND contype = 'f'::char
ORDER BY conkey, conname") as $row) { ORDER BY conkey, conname") as $row) {
if (preg_match('~FOREIGN KEY\s*\((.+)\)\s*REFERENCES (.+)\((.+)\)(.*)$~iA', $row['definition'], $match)) { if (preg_match('~FOREIGN KEY\s*\((.+)\)\s*REFERENCES (.+)\((.+)\)(.*)$~iA', $row['definition'], $match)) {
$row['source'] = array_map('trim', explode(',', $match[1])); $row['source'] = array_map('idf_unescape', array_map('trim', explode(',', $match[1])));
if (preg_match('~^(("([^"]|"")+"|[^"]+)\.)?"?("([^"]|"")+"|[^"]+)$~', $match[2], $match2)) { if (preg_match('~^(("([^"]|"")+"|[^"]+)\.)?"?("([^"]|"")+"|[^"]+)$~', $match[2], $match2)) {
$row['ns'] = str_replace('""', '"', preg_replace('~^"(.+)"$~', '\1', $match2[2])); $row['ns'] = idf_unescape($match2[2]);
$row['table'] = str_replace('""', '"', preg_replace('~^"(.+)"$~', '\1', $match2[4])); $row['table'] = idf_unescape($match2[4]);
} }
$row['target'] = array_map('trim', explode(',', $match[3])); $row['target'] = array_map('idf_unescape', array_map('trim', explode(',', $match[3])));
$row['on_delete'] = (preg_match("~ON DELETE ($on_actions)~", $match[4], $match2) ? $match2[1] : 'NO ACTION'); $row['on_delete'] = (preg_match("~ON DELETE ($on_actions)~", $match[4], $match2) ? $match2[1] : 'NO ACTION');
$row['on_update'] = (preg_match("~ON UPDATE ($on_actions)~", $match[4], $match2) ? $match2[1] : 'NO ACTION'); $row['on_update'] = (preg_match("~ON UPDATE ($on_actions)~", $match[4], $match2) ? $match2[1] : 'NO ACTION');
$return[$row['conname']] = $row; $return[$row['conname']] = $row;
@@ -436,9 +434,26 @@ ORDER BY conkey, conname") as $row) {
return $return; return $return;
} }
function constraints($table) {
global $on_actions;
$return = array();
foreach (get_rows("SELECT conname, consrc
FROM pg_catalog.pg_constraint
INNER JOIN pg_catalog.pg_namespace ON pg_constraint.connamespace = pg_namespace.oid
INNER JOIN pg_catalog.pg_class ON pg_constraint.conrelid = pg_class.oid AND pg_constraint.connamespace = pg_class.relnamespace
WHERE pg_constraint.contype = 'c'
AND conrelid != 0 -- handle only CONSTRAINTs here, not TYPES
AND nspname = current_schema()
AND relname = " . q($table) . "
ORDER BY connamespace, conname") as $row) {
$return[$row['conname']] = $row['consrc'];
}
return $return;
}
function view($name) { function view($name) {
global $connection; global $connection;
return array("select" => trim($connection->result("SELECT pg_get_viewdef(" . $connection->result("SELECT oid FROM pg_class WHERE relname = " . q($name)) . ")"))); return array("select" => trim($connection->result("SELECT pg_get_viewdef(" . $connection->result("SELECT oid FROM pg_class WHERE relnamespace = (SELECT oid FROM pg_namespace WHERE nspname = current_schema()) AND relname = " . q($name)) . ")")));
} }
function collations() { function collations() {
@@ -492,11 +507,14 @@ ORDER BY conkey, conname") as $row) {
} else { } else {
$val5 = $val[5]; $val5 = $val[5];
unset($val[5]); unset($val[5]);
if (isset($val[6]) && $field[0] == "") { // auto_increment
$val[1] = ($val[1] == "bigint" ? " big" : " ") . "serial";
}
if ($field[0] == "") { if ($field[0] == "") {
if (isset($val[6])) { // auto_increment
$val[1] = ($val[1] == " bigint" ? " big" : ($val[1] == " smallint" ? " small" : " ")) . "serial";
}
$alter[] = ($table != "" ? "ADD " : " ") . implode($val); $alter[] = ($table != "" ? "ADD " : " ") . implode($val);
if (isset($val[6])) {
$alter[] = ($table != "" ? "ADD" : " ") . " PRIMARY KEY ($val[0])";
}
} else { } else {
if ($column != $val[0]) { if ($column != $val[0]) {
$queries[] = "ALTER TABLE " . table($name) . " RENAME $column TO $val[0]"; $queries[] = "ALTER TABLE " . table($name) . " RENAME $column TO $val[0]";
@@ -518,7 +536,7 @@ ORDER BY conkey, conname") as $row) {
} elseif ($alter) { } elseif ($alter) {
array_unshift($queries, "ALTER TABLE " . table($table) . "\n" . implode(",\n", $alter)); array_unshift($queries, "ALTER TABLE " . table($table) . "\n" . implode(",\n", $alter));
} }
if ($table != "" || $comment != "") { if ($comment !== null) {
$queries[] = "COMMENT ON TABLE " . table($name) . " IS " . q($comment); $queries[] = "COMMENT ON TABLE " . table($name) . " IS " . q($comment);
} }
if ($auto_increment != "") { if ($auto_increment != "") {
@@ -592,21 +610,34 @@ ORDER BY conkey, conname") as $row) {
return true; return true;
} }
function trigger($name, $table = null) { function trigger($name, $table) {
if ($name == "") { if ($name == "") {
return array("Statement" => "EXECUTE PROCEDURE ()"); return array("Statement" => "EXECUTE PROCEDURE ()");
} }
if ($table === null) { $columns = array();
$table = $_GET['trigger']; $where = "WHERE trigger_schema = current_schema() AND event_object_table = " . q($table) . " AND trigger_name = " . q($name);
foreach (get_rows("SELECT * FROM information_schema.triggered_update_columns $where") as $row) {
$columns[] = $row["event_object_column"];
} }
$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 = array();
return reset($rows); foreach (get_rows('SELECT trigger_name AS "Trigger", action_timing AS "Timing", event_manipulation AS "Event", \'FOR EACH \' || action_orientation AS "Type", action_statement AS "Statement" FROM information_schema.triggers ' . "$where ORDER BY event_manipulation DESC") as $row) {
if ($columns && $row["Event"] == "UPDATE") {
$row["Event"] .= " OF";
}
$row["Of"] = implode(", ", $columns);
if ($return) {
$row["Event"] .= " OR $return[Event]";
}
$return = $row;
}
return $return;
} }
function triggers($table) { function triggers($table) {
$return = array(); $return = array();
foreach (get_rows("SELECT * FROM information_schema.triggers WHERE event_object_table = " . q($table)) as $row) { foreach (get_rows("SELECT * FROM information_schema.triggers WHERE trigger_schema = current_schema() AND event_object_table = " . q($table)) as $row) {
$return[$row["trigger_name"]] = array($row["action_timing"], $row["event_manipulation"]); $trigger = trigger($row["trigger_name"], $table);
$return[$trigger["Trigger"]] = array($trigger["Timing"], $trigger["Event"]);
} }
return $return; return $return;
} }
@@ -614,7 +645,7 @@ ORDER BY conkey, conname") as $row) {
function trigger_options() { function trigger_options() {
return array( return array(
"Timing" => array("BEFORE", "AFTER"), "Timing" => array("BEFORE", "AFTER"),
"Event" => array("INSERT", "UPDATE", "DELETE"), "Event" => array("INSERT", "UPDATE", "UPDATE OF", "DELETE", "INSERT OR UPDATE", "INSERT OR UPDATE OF", "DELETE OR INSERT", "DELETE OR UPDATE", "DELETE OR UPDATE OF", "DELETE OR INSERT OR UPDATE", "DELETE OR INSERT OR UPDATE OF"),
"Type" => array("FOR EACH ROW", "FOR EACH STATEMENT"), "Type" => array("FOR EACH ROW", "FOR EACH STATEMENT"),
); );
} }
@@ -704,6 +735,23 @@ AND typelem = 0"
return $return; return $return;
} }
// create_sql() produces CREATE TABLE without FK CONSTRAINTs
// foreign_keys_sql() produces all FK CONSTRAINTs as ALTER TABLE ... ADD CONSTRAINT
// so that all FKs can be added after all tables have been created, avoiding any need to reorder CREATE TABLE statements in order of their FK dependencies
function foreign_keys_sql($table) {
$return = "";
$status = table_status($table);
$fkeys = foreign_keys($table);
ksort($fkeys);
foreach ($fkeys as $fkey_name => $fkey) {
$return .= "ALTER TABLE ONLY " . idf_escape($status['nspname']) . "." . idf_escape($status['Name']) . " ADD CONSTRAINT " . idf_escape($fkey_name) . " $fkey[definition] " . ($fkey['deferrable'] ? 'DEFERRABLE' : 'NOT DEFERRABLE') . ";\n";
}
return ($return ? "$return\n" : $return);
}
function create_sql($table, $auto_increment, $style) { function create_sql($table, $auto_increment, $style) {
global $connection; global $connection;
$return = ''; $return = '';
@@ -718,8 +766,7 @@ AND typelem = 0"
$fields = fields($table); $fields = fields($table);
$indexes = indexes($table); $indexes = indexes($table);
ksort($indexes); ksort($indexes);
$fkeys = foreign_keys($table); $constraints = constraints($table);
ksort($fkeys);
if (!$status || empty($fields)) { if (!$status || empty($fields)) {
return false; return false;
@@ -742,7 +789,7 @@ AND typelem = 0"
: "SELECT * FROM $sequence_name" : "SELECT * FROM $sequence_name"
)); ));
$sequences[] = ($style == "DROP+CREATE" ? "DROP SEQUENCE IF EXISTS $sequence_name;\n" : "") $sequences[] = ($style == "DROP+CREATE" ? "DROP SEQUENCE IF EXISTS $sequence_name;\n" : "")
. "CREATE SEQUENCE $sequence_name INCREMENT $sq[increment_by] MINVALUE $sq[min_value] MAXVALUE $sq[max_value] START " . ($auto_increment ? $sq['last_value'] : 1) . " CACHE $sq[cache_value];"; . "CREATE SEQUENCE $sequence_name INCREMENT $sq[increment_by] MINVALUE $sq[min_value] MAXVALUE $sq[max_value]" . ($auto_increment && $sq['last_value'] ? " START $sq[last_value]" : "") . " CACHE $sq[cache_value];";
} }
} }
@@ -759,9 +806,8 @@ AND typelem = 0"
} }
} }
// foreign keys foreach ($constraints as $conname => $consrc) {
foreach ($fkeys as $fkey_name => $fkey) { $return_parts[] = "CONSTRAINT " . idf_escape($conname) . " CHECK $consrc";
$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') . ");"; $return .= implode(",\n ", $return_parts) . "\n) WITH (oids = " . ($status['Oid'] ? 'true' : 'false') . ");";
@@ -800,7 +846,7 @@ AND typelem = 0"
$return = ""; $return = "";
foreach (triggers($table) as $trg_id => $trg) { foreach (triggers($table) as $trg_id => $trg) {
$trigger = trigger($trg_id, $status['Name']); $trigger = trigger($trg_id, $status['Name']);
$return .= "\nCREATE TRIGGER " . idf_escape($trigger['Trigger']) . " $trigger[Timing] $trigger[Events] ON " . idf_escape($status["nspname"]) . "." . idf_escape($status['Name']) . " $trigger[Type] $trigger[Statement];;\n"; $return .= "\nCREATE TRIGGER " . idf_escape($trigger['Trigger']) . " $trigger[Timing] $trigger[Event] ON " . idf_escape($status["nspname"]) . "." . idf_escape($status['Name']) . " $trigger[Type] $trigger[Statement];;\n";
} }
return $return; return $return;
} }
@@ -845,32 +891,39 @@ AND typelem = 0"
return $connection->result("SHOW max_connections"); return $connection->result("SHOW max_connections");
} }
$jush = "pgsql"; function driver_config() {
$types = array(); $types = array();
$structured_types = array(); $structured_types = array();
foreach (array( //! arrays foreach (array( //! arrays
lang('Numbers') => array("smallint" => 5, "integer" => 10, "bigint" => 19, "boolean" => 1, "numeric" => 0, "real" => 7, "double precision" => 16, "money" => 20), lang('Numbers') => array("smallint" => 5, "integer" => 10, "bigint" => 19, "boolean" => 1, "numeric" => 0, "real" => 7, "double precision" => 16, "money" => 20),
lang('Date and time') => array("date" => 13, "time" => 17, "timestamp" => 20, "timestamptz" => 21, "interval" => 0), lang('Date and time') => array("date" => 13, "time" => 17, "timestamp" => 20, "timestamptz" => 21, "interval" => 0),
lang('Strings') => array("character" => 0, "character varying" => 0, "text" => 0, "tsquery" => 0, "tsvector" => 0, "uuid" => 0, "xml" => 0), lang('Strings') => array("character" => 0, "character varying" => 0, "text" => 0, "tsquery" => 0, "tsvector" => 0, "uuid" => 0, "xml" => 0),
lang('Binary') => array("bit" => 0, "bit varying" => 0, "bytea" => 0), lang('Binary') => array("bit" => 0, "bit varying" => 0, "bytea" => 0),
lang('Network') => array("cidr" => 43, "inet" => 43, "macaddr" => 17, "txid_snapshot" => 0), lang('Network') => array("cidr" => 43, "inet" => 43, "macaddr" => 17, "txid_snapshot" => 0),
lang('Geometry') => array("box" => 0, "circle" => 0, "line" => 0, "lseg" => 0, "path" => 0, "point" => 0, "polygon" => 0), lang('Geometry') => array("box" => 0, "circle" => 0, "line" => 0, "lseg" => 0, "path" => 0, "point" => 0, "polygon" => 0),
) as $key => $val) { //! can be retrieved from pg_type ) as $key => $val) { //! can be retrieved from pg_type
$types += $val; $types += $val;
$structured_types[$key] = array_keys($val); $structured_types[$key] = array_keys($val);
}
return array(
'possible_drivers' => array("PgSQL", "PDO_PgSQL"),
'jush' => "pgsql",
'types' => $types,
'structured_types' => $structured_types,
'unsigned' => array(),
'operators' => array("=", "<", ">", "<=", ">=", "!=", "~", "!~", "LIKE", "LIKE %%", "ILIKE", "ILIKE %%", "IN", "IS NULL", "NOT LIKE", "NOT IN", "IS NOT NULL"), // no "SQL" to avoid CSRF
'functions' => array("char_length", "lower", "round", "to_hex", "to_timestamp", "upper"),
'grouping' => array("avg", "count", "count distinct", "max", "min", "sum"),
'edit_functions' => array(
array(
"char" => "md5",
"date|time" => "now",
), array(
number_type() => "+/-",
"date|time" => "+ interval/- interval", //! escape
"char|text" => "||",
)
),
);
} }
$unsigned = array();
$operators = array("=", "<", ">", "<=", ">=", "!=", "~", "!~", "LIKE", "LIKE %%", "ILIKE", "ILIKE %%", "IN", "IS NULL", "NOT LIKE", "NOT IN", "IS NOT NULL"); // no "SQL" to avoid CSRF
$functions = array("char_length", "lower", "round", "to_hex", "to_timestamp", "upper");
$grouping = array("avg", "count", "count distinct", "max", "min", "sum");
$edit_functions = array(
array(
"char" => "md5",
"date|time" => "now",
), array(
number_type() => "+/-",
"date|time" => "+ interval/- interval", //! escape
"char|text" => "||",
)
);
} }

View File

@@ -3,7 +3,6 @@ $drivers["sqlite"] = "SQLite 3";
$drivers["sqlite2"] = "SQLite 2"; $drivers["sqlite2"] = "SQLite 2";
if (isset($_GET["sqlite"]) || isset($_GET["sqlite2"])) { if (isset($_GET["sqlite"]) || isset($_GET["sqlite2"])) {
$possible_drivers = array((isset($_GET["sqlite"]) ? "SQLite3" : "SQLite"), "PDO_SQLite");
define("DRIVER", (isset($_GET["sqlite"]) ? "sqlite" : "sqlite2")); define("DRIVER", (isset($_GET["sqlite"]) ? "sqlite" : "sqlite2"));
if (class_exists(isset($_GET["sqlite"]) ? "SQLite3" : "SQLiteDatabase")) { if (class_exists(isset($_GET["sqlite"]) ? "SQLite3" : "SQLiteDatabase")) {
if (isset($_GET["sqlite"])) { if (isset($_GET["sqlite"])) {
@@ -141,7 +140,7 @@ if (isset($_GET["sqlite"]) || isset($_GET["sqlite2"])) {
} }
$return = array(); $return = array();
foreach ($row as $key => $val) { foreach ($row as $key => $val) {
$return[($key[0] == '"' ? idf_unescape($key) : $key)] = $val; $return[idf_unescape($key)] = $val;
} }
return $return; return $return;
} }
@@ -191,6 +190,7 @@ if (isset($_GET["sqlite"]) || isset($_GET["sqlite2"])) {
if (is_readable($filename) && $this->query("ATTACH " . $this->quote(preg_match("~(^[/\\\\]|:)~", $filename) ? $filename : dirname($_SERVER["SCRIPT_FILENAME"]) . "/$filename") . " AS a")) { // is_readable - SQLite 3 if (is_readable($filename) && $this->query("ATTACH " . $this->quote(preg_match("~(^[/\\\\]|:)~", $filename) ? $filename : dirname($_SERVER["SCRIPT_FILENAME"]) . "/$filename") . " AS a")) { // is_readable - SQLite 3
parent::__construct($filename); parent::__construct($filename);
$this->query("PRAGMA foreign_keys = 1"); $this->query("PRAGMA foreign_keys = 1");
$this->query("PRAGMA busy_timeout = 500");
return true; return true;
} }
return false; return false;
@@ -321,7 +321,7 @@ if (isset($_GET["sqlite"]) || isset($_GET["sqlite2"])) {
"full_type" => $type, "full_type" => $type,
"default" => (preg_match("~'(.*)'~", $default, $match) ? str_replace("''", "'", $match[1]) : ($default == "NULL" ? null : $default)), "default" => (preg_match("~'(.*)'~", $default, $match) ? str_replace("''", "'", $match[1]) : ($default == "NULL" ? null : $default)),
"null" => !$row["notnull"], "null" => !$row["notnull"],
"privileges" => array("select" => 1, "insert" => 1, "update" => 1), "privileges" => array("select" => 1, "insert" => 1, "update" => 1, "where" => 1, "order" => 1),
"primary" => $row["pk"], "primary" => $row["pk"],
); );
if ($row["pk"]) { if ($row["pk"]) {
@@ -676,7 +676,7 @@ if (isset($_GET["sqlite"]) || isset($_GET["sqlite2"])) {
return array( return array(
"Timing" => strtoupper($match[1]), "Timing" => strtoupper($match[1]),
"Event" => strtoupper($match[2]) . ($of ? " OF" : ""), "Event" => strtoupper($match[2]) . ($of ? " OF" : ""),
"Of" => ($of[0] == '`' || $of[0] == '"' ? idf_unescape($of) : $of), "Of" => idf_unescape($of),
"Trigger" => $name, "Trigger" => $name,
"Statement" => $match[4], "Statement" => $match[4],
); );
@@ -784,20 +784,26 @@ if (isset($_GET["sqlite"]) || isset($_GET["sqlite2"])) {
return preg_match('~^(columns|database|drop_col|dump|indexes|descidx|move_col|sql|status|table|trigger|variables|view|view_trigger)$~', $feature); return preg_match('~^(columns|database|drop_col|dump|indexes|descidx|move_col|sql|status|table|trigger|variables|view|view_trigger)$~', $feature);
} }
$jush = "sqlite"; function driver_config() {
$types = array("integer" => 0, "real" => 0, "numeric" => 0, "text" => 0, "blob" => 0); $types = array("integer" => 0, "real" => 0, "numeric" => 0, "text" => 0, "blob" => 0);
$structured_types = array_keys($types); return array(
$unsigned = array(); 'possible_drivers' => array((isset($_GET["sqlite"]) ? "SQLite3" : "SQLite"), "PDO_SQLite"),
$operators = array("=", "<", ">", "<=", ">=", "!=", "LIKE", "LIKE %%", "IN", "IS NULL", "NOT LIKE", "NOT IN", "IS NOT NULL", "SQL"); // REGEXP can be user defined function 'jush' => "sqlite",
$functions = array("hex", "length", "lower", "round", "unixepoch", "upper"); 'types' => $types,
$grouping = array("avg", "count", "count distinct", "group_concat", "max", "min", "sum"); 'structured_types' => array_keys($types),
$edit_functions = array( 'unsigned' => array(),
array( 'operators' => array("=", "<", ">", "<=", ">=", "!=", "LIKE", "LIKE %%", "IN", "IS NULL", "NOT LIKE", "NOT IN", "IS NOT NULL", "SQL"), // REGEXP can be user defined function
// "text" => "date('now')/time('now')/datetime('now')", 'functions' => array("hex", "length", "lower", "round", "unixepoch", "upper"),
), array( 'grouping' => array("avg", "count", "count distinct", "group_concat", "max", "min", "sum"),
"integer|real|numeric" => "+/-", 'edit_functions' => array(
// "text" => "date/time/datetime", array(
"text" => "||", // "text" => "date('now')/time('now')/datetime('now')",
) ), array(
); "integer|real|numeric" => "+/-",
// "text" => "date/time/datetime",
"text" => "||",
)
),
);
}
} }

View File

@@ -14,7 +14,7 @@ if ($_POST && !$error) {
$is_sql = preg_match('~sql~', $_POST["format"]); $is_sql = preg_match('~sql~', $_POST["format"]);
if ($is_sql) { if ($is_sql) {
echo "-- Adminer $VERSION " . $drivers[DRIVER] . " dump\n\n"; echo "-- Adminer $VERSION " . $drivers[DRIVER] . " " . str_replace("\n", " ", $connection->server_info) . " dump\n\n";
if ($jush == "sql") { if ($jush == "sql") {
echo "SET NAMES utf8; echo "SET NAMES utf8;
SET time_zone = '+00:00'; SET time_zone = '+00:00';
@@ -22,7 +22,8 @@ SET foreign_key_checks = 0;
" . ($_POST["data_style"] ? "SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO'; " . ($_POST["data_style"] ? "SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO';
" : "") . " " : "") . "
"; ";
$connection->query("SET time_zone = '+00:00';"); $connection->query("SET time_zone = '+00:00'");
$connection->query("SET sql_mode = ''");
} }
} }
@@ -105,6 +106,16 @@ SET foreign_key_checks = 0;
} }
} }
// add FKs after creating tables (except in MySQL which uses SET FOREIGN_KEY_CHECKS=0)
if (function_exists('foreign_keys_sql')) {
foreach (table_status('', true) as $name => $table_status) {
$table = (DB == "" || in_array($name, (array) $_POST["tables"]));
if ($table && !is_view($table_status)) {
echo foreign_keys_sql($name);
}
}
}
foreach ($views as $view) { foreach ($views as $view) {
$adminer->dumpTable($view, $_POST["table_style"], 1); $adminer->dumpTable($view, $_POST["table_style"], 1);
} }
@@ -136,16 +147,14 @@ if ($jush == "sql") { //! use insertUpdate() in all drivers
} }
parse_str($_COOKIE["adminer_export"], $row); parse_str($_COOKIE["adminer_export"], $row);
if (!$row) { if (!$row) {
$row = array("output" => "text", "format" => "sql", "db_style" => (DB != "" ? "" : "CREATE"), "table_style" => "DROP+CREATE", "data_style" => "INSERT"); $row = array("output" => "file", "format" => "sql", "db_style" => (DB != "" ? "" : "CREATE"), "table_style" => "DROP+CREATE", "data_style" => "INSERT");
} }
if (!isset($row["events"])) { // backwards compatibility if (!isset($row["events"])) { // backwards compatibility
$row["routines"] = $row["events"] = ($_GET["dump"] == ""); $row["routines"] = $row["events"] = ($_GET["dump"] == "");
$row["triggers"] = $row["table_style"]; $row["triggers"] = $row["table_style"];
} }
echo "<tr><th>" . lang('Output') . "<td>" . html_select("output", $adminer->dumpOutput(), $row["output"], 0) . "\n"; // 0 - radio echo "<tr><th>" . lang('Format') . "<td>" . html_select("format", $adminer->dumpFormat(), $row["format"], false) . "\n"; // false = radio
echo "<tr><th>" . lang('Format') . "<td>" . html_select("format", $adminer->dumpFormat(), $row["format"], 0) . "\n"; // 0 - radio
echo ($jush == "sqlite" ? "" : "<tr><th>" . lang('Database') . "<td>" . html_select('db_style', $db_style, $row["db_style"]) echo ($jush == "sqlite" ? "" : "<tr><th>" . lang('Database') . "<td>" . html_select('db_style', $db_style, $row["db_style"])
. (support("routine") ? checkbox("routines", 1, $row["routines"], lang('Routines')) : "") . (support("routine") ? checkbox("routines", 1, $row["routines"], lang('Routines')) : "")
@@ -158,6 +167,9 @@ echo "<tr><th>" . lang('Tables') . "<td>" . html_select('table_style', $table_st
; ;
echo "<tr><th>" . lang('Data') . "<td>" . html_select('data_style', $data_style, $row["data_style"]); echo "<tr><th>" . lang('Data') . "<td>" . html_select('data_style', $data_style, $row["data_style"]);
echo "<tr><th>" . lang('Output') . "<td>" . html_select("output", $adminer->dumpOutput(), $row["output"], false) . "\n"; // false = radio
?> ?>
</table> </table>
<p><input type="submit" value="<?php echo lang('Export'); ?>"> <p><input type="submit" value="<?php echo lang('Export'); ?>">

13
adminer/elastic.php Normal file
View File

@@ -0,0 +1,13 @@
<?php
function adminer_object() {
include_once "../plugins/plugin.php";
include_once "../plugins/login-password-less.php";
include_once "../plugins/drivers/elastic.php";
include_once "../plugins/drivers/elastic5.php";
return new AdminerPlugin([
// TODO: inline the result of password_hash() so that the password is not visible in source codes
new AdminerLoginPasswordLess(password_hash("YOUR_PASSWORD_HERE", PASSWORD_DEFAULT)),
]);
}
include "./index.php";

View File

@@ -6,13 +6,13 @@ if ($_GET["file"] == "favicon.ico") {
echo lzw_decompress(compile_file('../adminer/static/favicon.ico', 'lzw_compress')); echo lzw_decompress(compile_file('../adminer/static/favicon.ico', 'lzw_compress'));
} elseif ($_GET["file"] == "default.css") { } elseif ($_GET["file"] == "default.css") {
header("Content-Type: text/css; charset=utf-8"); header("Content-Type: text/css; charset=utf-8");
echo lzw_decompress(compile_file('../adminer/static/default.css;../externals/jush/jush.css', 'minify_css')); echo lzw_decompress(compile_file('../adminer/static/default.css;../vendor/vrana/jush/jush.css', 'minify_css'));
} elseif ($_GET["file"] == "functions.js") { } elseif ($_GET["file"] == "functions.js") {
header("Content-Type: text/javascript; charset=utf-8"); header("Content-Type: text/javascript; charset=utf-8");
echo lzw_decompress(compile_file('../adminer/static/functions.js;static/editing.js', 'minify_js')); echo lzw_decompress(compile_file('../adminer/static/functions.js;static/editing.js', 'minify_js'));
} elseif ($_GET["file"] == "jush.js") { } elseif ($_GET["file"] == "jush.js") {
header("Content-Type: text/javascript; charset=utf-8"); 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-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')); echo lzw_decompress(compile_file('../vendor/vrana/jush/modules/jush.js;../vendor/vrana/jush/modules/jush-textarea.js;../vendor/vrana/jush/modules/jush-txt.js;../vendor/vrana/jush/modules/jush-js.js;../vendor/vrana/jush/modules/jush-sql.js;../vendor/vrana/jush/modules/jush-pgsql.js;../vendor/vrana/jush/modules/jush-sqlite.js;../vendor/vrana/jush/modules/jush-mssql.js;../vendor/vrana/jush/modules/jush-oracle.js;../vendor/vrana/jush/modules/jush-simpledb.js', 'minify_js'));
} else { } else {
header("Content-Type: image/gif"); header("Content-Type: image/gif");
switch ($_GET["file"]) { switch ($_GET["file"]) {

View File

@@ -60,7 +60,7 @@ if ($row["ns"] != "") {
set_schema($row["ns"]); set_schema($row["ns"]);
} }
$referencable = array_keys(array_filter(table_status('', true), 'fk_support')); $referencable = array_keys(array_filter(table_status('', true), 'fk_support'));
$target = ($TABLE === $row["table"] ? $source : array_keys(fields(in_array($row["table"], $referencable) ? $row["table"] : reset($referencable)))); $target = array_keys(fields(in_array($row["table"], $referencable) ? $row["table"] : reset($referencable)));
$onchange = "this.form['change-js'].value = '1'; this.form.submit();"; $onchange = "this.form['change-js'].value = '1'; this.form.submit();";
echo "<p>" . lang('Target table') . ": " . html_select("table", $referencable, $row["table"], $onchange) . "\n"; echo "<p>" . lang('Target table') . ": " . html_select("table", $referencable, $row["table"], $onchange) . "\n";
if ($jush == "pgsql") { if ($jush == "pgsql") {

View File

@@ -96,7 +96,7 @@ class Adminer {
*/ */
function head() { function head() {
?> ?>
<link rel="stylesheet" type="text/css" href="../externals/jush/jush.css"> <link rel="stylesheet" type="text/css" href="../vendor/vrana/jush/jush.css">
<?php <?php
return true; return true;
} }
@@ -231,17 +231,25 @@ class Adminer {
*/ */
function selectQuery($query, $start, $failed = false) { function selectQuery($query, $start, $failed = false) {
global $jush, $driver; global $jush, $driver;
$return = "</p>\n"; // required for IE9 inline edit
$supportSql = support("sql");
$result = "<p>"
. "<code class='jush-$jush'>" . h(str_replace("\n", " ", $query)) . "</code> "
. "<span class='time'>(" . format_time($start) . ")</span>"
. ($supportSql ? " <a href='" . h(ME) . "sql=" . urlencode($query) . "'>" . lang('Edit') . "</a>" : "");
if (!$failed && ($warnings = $driver->warnings())) { if (!$failed && ($warnings = $driver->warnings())) {
$id = "warnings"; $id = "warnings";
$return = ", <a href='#$id'>" . lang('Warnings') . "</a>" . script("qsl('a').onclick = partial(toggle, '$id');", "") $result = ($supportSql ? "," : "")
. "$return<div id='$id' class='hidden'>\n$warnings</div>\n" . " <a href='#$id'>" . lang('Warnings') . "</a>" . script("qsl('a').onclick = partial(toggle, '$id');", "")
; . "</p>\n"
. "<div id='$id' class='hidden'>\n$warnings</div>\n";
} else {
$result .= "</p>\n";
} }
return "<p><code class='jush-$jush'>" . h(str_replace("\n", " ", $query)) . "</code> <span class='time'>(" . format_time($start) . ")</span>"
. (support("sql") ? " <a href='" . h(ME) . "sql=" . urlencode($query) . "'>" . lang('Edit') . "</a>" : "") return $result;
. $return
;
} }
/** Query printed in SQL command before execution /** Query printed in SQL command before execution
@@ -293,7 +301,7 @@ class Adminer {
if (preg_match('~json~', $field["type"])) { if (preg_match('~json~', $field["type"])) {
$return = "<code class='jush-js'>$return</code>"; $return = "<code class='jush-js'>$return</code>";
} }
return ($link ? "<a href='" . h($link) . "'" . (is_url($link) ? target_blank() : "") . ">$return</a>" : $return); return ($link ? "<a href='" . h($link) . "'" . (is_web_url($link) ? target_blank() : "") . ">$return</a>" : $return);
} }
/** Value conversion used in select and edit /** Value conversion used in select and edit
@@ -480,7 +488,7 @@ class Adminer {
echo "</script>\n"; echo "</script>\n";
echo "</div></fieldset>\n"; echo "</div></fieldset>\n";
} }
/** Print command box in select /** Print command box in select
* @return bool whether to print default commands * @return bool whether to print default commands
*/ */
@@ -561,8 +569,10 @@ class Adminer {
// find anywhere // find anywhere
$cols = array(); $cols = array();
foreach ($fields as $name => $field) { foreach ($fields as $name => $field) {
if ((preg_match('~^[-\d.' . (preg_match('~IN$~', $val["op"]) ? ',' : '') . ']+$~', $val["val"]) || !preg_match('~' . number_type() . '|bit~', $field["type"])) if (isset($field["privileges"]["where"])
&& (preg_match('~^[-\d.' . (preg_match('~IN$~', $val["op"]) ? ',' : '') . ']+$~', $val["val"]) || !preg_match('~' . number_type() . '|bit~', $field["type"]))
&& (!preg_match("~[\x80-\xFF]~", $val["val"]) || preg_match('~char|text|enum|set~', $field["type"])) && (!preg_match("~[\x80-\xFF]~", $val["val"]) || preg_match('~char|text|enum|set~', $field["type"]))
&& (!preg_match('~date|timestamp~', $field["type"]) || preg_match('~^\d+-\d+-\d+~', $val["val"]))
) { ) {
$cols[] = $prefix . $driver->convertSearch(idf_escape($name), $val, $field) . $cond; $cols[] = $prefix . $driver->convertSearch(idf_escape($name), $val, $field) . $cond;
} }
@@ -658,6 +668,16 @@ class Adminer {
; ;
} }
/** Print before edit form
* @param string
* @param array
* @param mixed
* @param bool
* @return null
*/
function editRowPrint($table, $fields, $row, $update) {
}
/** Functions displayed in edit form /** Functions displayed in edit form
* @param array single field from fields() * @param array single field from fields()
* @return array * @return array
@@ -665,19 +685,20 @@ class Adminer {
function editFunctions($field) { function editFunctions($field) {
global $edit_functions; global $edit_functions;
$return = ($field["null"] ? "NULL/" : ""); $return = ($field["null"] ? "NULL/" : "");
$update = isset($_GET["select"]) || where($_GET);
foreach ($edit_functions as $key => $functions) { foreach ($edit_functions as $key => $functions) {
if (!$key || (!isset($_GET["call"]) && (isset($_GET["select"]) || where($_GET)))) { // relative functions if (!$key || (!isset($_GET["call"]) && $update)) { // relative functions
foreach ($functions as $pattern => $val) { foreach ($functions as $pattern => $val) {
if (!$pattern || preg_match("~$pattern~", $field["type"])) { if (!$pattern || preg_match("~$pattern~", $field["type"])) {
$return .= "/$val"; $return .= "/$val";
} }
} }
if ($key && !preg_match('~set|blob|bytea|raw|file~', $field["type"])) { }
$return .= "/SQL"; if ($key && !preg_match('~set|blob|bytea|raw|file|bool~', $field["type"])) {
} $return .= "/SQL";
} }
} }
if ($field["auto_increment"] && !isset($_GET["select"]) && !where($_GET)) { if ($field["auto_increment"] && !$update) {
$return = lang('Auto Increment'); $return = lang('Auto Increment');
} }
return explode("/", $return); return explode("/", $return);
@@ -742,10 +763,11 @@ class Adminer {
* @return array * @return array
*/ */
function dumpOutput() { function dumpOutput() {
$return = array('text' => lang('open'), 'file' => lang('save')); $return = array('file' => lang('save'), 'text' => lang('open'));
if (function_exists('gzencode')) { if (function_exists('gzencode')) {
$return['gz'] = 'gzip'; $return['gz'] = 'gzip';
} }
return $return; return $return;
} }
@@ -819,6 +841,7 @@ class Adminer {
$insert = ""; $insert = "";
$buffer = ""; $buffer = "";
$keys = array(); $keys = array();
$generatedKeys = array();
$suffix = ""; $suffix = "";
$fetch_function = ($table != '' ? 'fetch_assoc' : 'fetch_row'); $fetch_function = ($table != '' ? 'fetch_assoc' : 'fetch_row');
while ($row = $result->$fetch_function()) { while ($row = $result->$fetch_function()) {
@@ -826,6 +849,10 @@ class Adminer {
$values = array(); $values = array();
foreach ($row as $val) { foreach ($row as $val) {
$field = $result->fetch_field(); $field = $result->fetch_field();
if (!empty($fields[$field->name]['generated'])) {
$generatedKeys[$field->name] = true;
continue;
}
$keys[] = $field->name; $keys[] = $field->name;
$key = idf_escape($field->name); $key = idf_escape($field->name);
$values[] = "$key = VALUES($key)"; $values[] = "$key = VALUES($key)";
@@ -843,6 +870,10 @@ class Adminer {
$insert = "INSERT INTO " . table($table) . " (" . implode(", ", array_map('idf_escape', $keys)) . ") VALUES"; $insert = "INSERT INTO " . table($table) . " (" . implode(", ", array_map('idf_escape', $keys)) . ") VALUES";
} }
foreach ($row as $key => $val) { foreach ($row as $key => $val) {
if (isset($generatedKeys[$key])) {
unset($row[$key]);
continue;
}
$field = $fields[$key]; $field = $fields[$key];
$row[$key] = ($val !== null $row[$key] = ($val !== null
? unconvert_field($field, preg_match(number_type(), $field["type"]) && !preg_match('~\[~', $field["full_type"]) && is_numeric($val) ? $val : q(($val === false ? 0 : $val))) ? unconvert_field($field, preg_match(number_type(), $field["type"]) && !preg_match('~\[~', $field["full_type"]) && is_numeric($val) ? $val : q(($val === false ? 0 : $val)))
@@ -922,8 +953,11 @@ class Adminer {
global $VERSION, $jush, $drivers, $connection; global $VERSION, $jush, $drivers, $connection;
?> ?>
<h1> <h1>
<?php echo $this->name(); ?> <span class="version"><?php echo $VERSION; ?></span> <?php echo $this->name(); ?>
<a href="https://www.adminer.org/#download"<?php echo target_blank(); ?> id="version"><?php echo (version_compare($VERSION, $_COOKIE["adminer_version"]) < 0 ? h($_COOKIE["adminer_version"]) : ""); ?></a> <?php if ($missing != "auth"): ?>
<span class="version"><?php echo $VERSION; ?></span>
<a href="https://www.adminer.org/#download"<?php echo target_blank(); ?> id="version"><?php echo (version_compare($VERSION, $_COOKIE["adminer_version"]) < 0 ? h($_COOKIE["adminer_version"]) : ""); ?></a>
<?php endif; ?>
</h1> </h1>
<?php <?php
if ($missing == "auth") { if ($missing == "auth") {
@@ -944,16 +978,17 @@ class Adminer {
echo "<ul id='logins'>\n$output</ul>\n" . script("mixin(qs('#logins'), {onmouseover: menuOver, onmouseout: menuOut});"); echo "<ul id='logins'>\n$output</ul>\n" . script("mixin(qs('#logins'), {onmouseover: menuOver, onmouseout: menuOut});");
} }
} else { } else {
$tables = array();
if ($_GET["ns"] !== "" && !$missing && DB != "") { if ($_GET["ns"] !== "" && !$missing && DB != "") {
$connection->select_db(DB); $connection->select_db(DB);
$tables = table_status('', true); $tables = table_status('', true);
} }
echo script_src("../externals/jush/modules/jush.js"); echo script_src("../vendor/vrana/jush/modules/jush.js");
echo script_src("../externals/jush/modules/jush-textarea.js"); echo script_src("../vendor/vrana/jush/modules/jush-textarea.js");
echo script_src("../externals/jush/modules/jush-txt.js"); echo script_src("../vendor/vrana/jush/modules/jush-txt.js");
echo script_src("../externals/jush/modules/jush-js.js"); echo script_src("../vendor/vrana/jush/modules/jush-js.js");
if (support("sql")) { if (support("sql")) {
echo script_src("../externals/jush/modules/jush-$jush.js"); echo script_src("../vendor/vrana/jush/modules/jush-$jush.js");
?> ?>
<script<?php echo nonce(); ?>> <script<?php echo nonce(); ?>>
<?php <?php
@@ -998,7 +1033,7 @@ bodyLoad('<?php echo (is_object($connection) ? preg_replace('~^(\d\.?\d).*~s', '
function databasesPrint($missing) { function databasesPrint($missing) {
global $adminer, $connection; global $adminer, $connection;
$databases = $this->databases(); $databases = $this->databases();
if ($databases && !in_array(DB, $databases)) { if (DB && $databases && !in_array(DB, $databases)) {
array_unshift($databases, DB); array_unshift($databases, DB);
} }
?> ?>
@@ -1012,8 +1047,8 @@ bodyLoad('<?php echo (is_object($connection) ? preg_replace('~^(\d\.?\d).*~s', '
: "<input name='db' value='" . h(DB) . "' autocapitalize='off'>\n" : "<input name='db' value='" . h(DB) . "' autocapitalize='off'>\n"
); );
echo "<input type='submit' value='" . lang('Use') . "'" . ($databases ? " class='hidden'" : "") . ">\n"; echo "<input type='submit' value='" . lang('Use') . "'" . ($databases ? " class='hidden'" : "") . ">\n";
if ($missing != "db" && DB != "" && $connection->select_db(DB)) { if (support("scheme")) {
if (support("scheme")) { if ($missing != "db" && DB != "" && $connection->select_db(DB)) {
echo "<br>" . lang('Schema') . ": <select name='ns'>" . optionlist(array("" => "") + $adminer->schemas(), $_GET["ns"]) . "</select>$db_events"; echo "<br>" . lang('Schema') . ": <select name='ns'>" . optionlist(array("" => "") + $adminer->schemas(), $_GET["ns"]) . "</select>$db_events";
if ($_GET["ns"] != "") { if ($_GET["ns"] != "") {
set_schema($_GET["ns"]); set_schema($_GET["ns"]);
@@ -1038,7 +1073,10 @@ bodyLoad('<?php echo (is_object($connection) ? preg_replace('~^(\d\.?\d).*~s', '
foreach ($tables as $table => $status) { foreach ($tables as $table => $status) {
$name = $this->tableName($status); $name = $this->tableName($status);
if ($name != "") { if ($name != "") {
echo '<li><a href="' . h(ME) . 'select=' . urlencode($table) . '"' . bold($_GET["select"] == $table || $_GET["edit"] == $table, "select") . ">" . lang('select') . "</a> "; echo '<li><a href="' . h(ME) . 'select=' . urlencode($table) . '"'
. bold($_GET["select"] == $table || $_GET["edit"] == $table, "select")
. " title='" . lang('Select data') . "'>" . lang('select') . "</a> "
;
echo (support("table") || support("indexes") echo (support("table") || support("indexes")
? '<a href="' . h(ME) . 'table=' . urlencode($table) . '"' ? '<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")) . bold(in_array($table, array($_GET["table"], $_GET["create"], $_GET["indexes"], $_GET["foreign"], $_GET["trigger"])), (is_view($status) ? "view" : "structure"))
@@ -1051,8 +1089,3 @@ bodyLoad('<?php echo (is_object($connection) ? preg_replace('~^(\d\.?\d).*~s', '
} }
} }
$adminer = (function_exists('adminer_object') ? adminer_object() : new Adminer);
if ($adminer->operators === null) {
$adminer->operators = $operators;
}

View File

@@ -15,6 +15,71 @@ if ($_COOKIE["adminer_permanent"]) {
} }
} }
function validate_server_input() {
if (SERVER == "") {
return;
}
$parts = parse_url(SERVER);
if (!$parts) {
auth_error(lang('Invalid server or credentials.'));
}
// Check proper URL parts.
if (isset($parts['user']) || isset($parts['pass']) || isset($parts['query']) || isset($parts['fragment'])) {
auth_error(lang('Invalid server or credentials.'));
}
// Allow only HTTP/S scheme.
if (isset($parts['scheme']) && !preg_match('~^(https?)$~i', $parts['scheme'])) {
auth_error(lang('Invalid server or credentials.'));
}
// Note that "localhost" and IP address without a scheme is parsed as a path.
$hostPath = (isset($parts['host']) ? $parts['host'] : '') . (isset($parts['path']) ? $parts['path'] : '');
// Validate host.
if (!is_server_host_valid($hostPath)) {
auth_error(lang('Invalid server or credentials.'));
}
// Check privileged ports.
if (isset($parts['port']) && ($parts['port'] < 1024 || $parts['port'] > 65535)) {
auth_error(lang('Connecting to privileged ports is not allowed.'));
}
}
if (!function_exists('is_server_host_valid')) {
/**
* @param string $hostPath
* @return bool
*/
function is_server_host_valid($hostPath)
{
return strpos($hostPath, '/') === false;
}
}
/**
* @param string $server
* @param string $username
* @param string $password
* @param string $defaultServer
* @param int|null $defaultPort
* @return string
*/
function build_http_url($server, $username, $password, $defaultServer, $defaultPort = null) {
if (!preg_match('~^(https?://)?([^:]*)(:\d+)?$~', rtrim($server, '/'), $matches)) {
$this->error = lang('Invalid server or credentials.');
return false;
}
return ($matches[1] ?: "http://") .
($username !== "" || $password !== "" ? "$username:$password@" : "") .
($matches[2] !== "" ? $matches[2] : $defaultServer) .
(isset($matches[3]) ? $matches[3] : ($defaultPort ? ":$defaultPort" : ""));
}
function add_invalid_login() { function add_invalid_login() {
global $adminer; global $adminer;
$fp = file_open_lock(get_temp_dir() . "/adminer.invalid"); $fp = file_open_lock(get_temp_dir() . "/adminer.invalid");
@@ -41,7 +106,7 @@ function add_invalid_login() {
function check_invalid_login() { function check_invalid_login() {
global $adminer; global $adminer;
$invalids = unserialize(@file_get_contents(get_temp_dir() . "/adminer.invalid")); // @ - may not exist $invalids = unserialize(@file_get_contents(get_temp_dir() . "/adminer.invalid")); // @ - may not exist
$invalid = $invalids[$adminer->bruteForceKey()]; $invalid = ($invalids ? $invalids[$adminer->bruteForceKey()] : array());
$next_attempt = ($invalid[1] > 29 ? $invalid[0] - time() : 0); // allow 30 invalid attempts $next_attempt = ($invalid[1] > 29 ? $invalid[0] - time() : 0); // allow 30 invalid attempts
if ($next_attempt > 0) { //! do the same with permanent login 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))); auth_error(lang('Too many unsuccessful logins, try again in %d minute(s).', ceil($next_attempt / 60)));
@@ -52,7 +117,7 @@ $auth = $_POST["auth"];
if ($auth) { if ($auth) {
session_regenerate_id(); // defense against session fixation session_regenerate_id(); // defense against session fixation
$vendor = $auth["driver"]; $vendor = $auth["driver"];
$server = $auth["server"]; $server = trim($auth["server"]);
$username = $auth["username"]; $username = $auth["username"];
$password = (string) $auth["password"]; $password = (string) $auth["password"];
$db = $auth["db"]; $db = $auth["db"];
@@ -72,20 +137,14 @@ if ($auth) {
) { ) {
redirect(auth_url($vendor, $server, $username, $db)); redirect(auth_url($vendor, $server, $username, $db));
} }
} elseif ($_POST["logout"]) { } elseif ($_POST["logout"] && (!$has_token || verify_token())) {
if ($has_token && !verify_token()) { foreach (array("pwds", "db", "dbs", "queries") as $key) {
page_header(lang('Logout'), lang('Invalid CSRF token. Send the form again.')); set_session($key, null);
page_footer("db");
exit;
} else {
foreach (array("pwds", "db", "dbs", "queries") as $key) {
set_session($key, null);
}
unset_permanent();
redirect(substr(preg_replace('~\b(username|db|ns)=[^&]*&~', '', ME), 0, -1), lang('Logout successful.') . ' ' . lang('Thanks for using Adminer, consider <a href="https://www.adminer.org/en/donation/">donating</a>.'));
} }
unset_permanent();
redirect(substr(preg_replace('~\b(username|db|ns)=[^&]*&~', '', ME), 0, -1), lang('Logout successful.') . ' ' . lang('Thanks for using Adminer, consider <a href="https://www.adminer.org/en/donation/">donating</a>.'));
} elseif ($permanent && !$_SESSION["pwds"]) { } elseif ($permanent && !$_SESSION["pwds"]) {
session_regenerate_id(); session_regenerate_id();
$private = $adminer->permanentLogin(); $private = $adminer->permanentLogin();
@@ -125,7 +184,7 @@ function auth_error($error) {
$password = get_password(); $password = get_password();
if ($password !== null) { if ($password !== null) {
if ($password === false) { if ($password === false) {
$error .= '<br>' . lang('Master password expired. <a href="https://www.adminer.org/en/extension/"%s>Implement</a> %s method to make it permanent.', target_blank(), '<code>permanentLogin()</code>'); $error .= ($error ? '<br>' : '') . lang('Master password expired. <a href="https://www.adminer.org/en/extension/"%s>Implement</a> %s method to make it permanent.', target_blank(), '<code>permanentLogin()</code>');
} }
set_password(DRIVER, SERVER, $_GET["username"], null); set_password(DRIVER, SERVER, $_GET["username"], null);
} }
@@ -161,21 +220,25 @@ if (isset($_GET["username"]) && !class_exists("Min_DB")) {
stop_session(true); stop_session(true);
if (isset($_GET["username"]) && is_string(get_password())) { if (isset($_GET["username"]) && is_string(get_password())) {
list($host, $port) = explode(":", SERVER, 2); validate_server_input();
if (is_numeric($port) && ($port < 1024 || $port > 65535)) {
auth_error(lang('Connecting to privileged ports is not allowed.'));
}
check_invalid_login(); check_invalid_login();
$connection = connect(); $connection = connect();
$driver = new Min_Driver($connection); $driver = new Min_Driver($connection);
} }
$login = null; $login = null;
if (!is_object($connection) || ($login = $adminer->login($_GET["username"], get_password())) !== true) { if (!is_object($connection) || ($login = $adminer->login($_GET["username"], get_password())) !== true) {
$error = (is_string($connection) ? h($connection) : (is_string($login) ? $login : lang('Invalid credentials.'))); $error = (is_string($connection) ? h($connection) : (is_string($login) ? $login : lang('Invalid server or credentials.')));
auth_error($error . (preg_match('~^ | $~', get_password()) ? '<br>' . lang('There is a space in the input password which might be the cause.') : '')); auth_error($error . (preg_match('~^ | $~', get_password()) ? '<br>' . lang('There is a space in the input password which might be the cause.') : ''));
} }
if ($_POST["logout"] && $has_token && !verify_token()) {
page_header(lang('Logout'), lang('Invalid CSRF token. Send the form again.'));
page_footer("db");
exit;
}
if ($auth && $_POST["token"]) { if ($auth && $_POST["token"]) {
$_POST["token"] = $token; // reset token after explicit login $_POST["token"] = $token; // reset token after explicit login
} }
@@ -199,7 +262,7 @@ if ($_POST) {
: lang('Invalid CSRF token. Send the form again.') . ' ' . lang('If you did not send this request from Adminer then close this page.') : lang('Invalid CSRF token. Send the form again.') . ' ' . lang('If you did not send this request from Adminer then close this page.')
); );
} }
} elseif ($_SERVER["REQUEST_METHOD"] == "POST") { } elseif ($_SERVER["REQUEST_METHOD"] == "POST") {
// posted form with no data means that post_max_size exceeded because Adminer always sends token at least // posted form with no data means that post_max_size exceeded because Adminer always sends token at least
$error = lang('Too big POST data. Reduce the data or increase the %s configuration directive.', "'post_max_size'"); $error = lang('Too big POST data. Reduce the data or increase the %s configuration directive.', "'post_max_size'");

View File

@@ -1,5 +1,10 @@
<?php <?php
function adminer_errors($errno, $errstr) {
return (bool)preg_match('~^(Trying to access array offset on( value of type)? null|Undefined array key)~', $errstr);
}
error_reporting(6135); // errors and warnings error_reporting(6135); // errors and warnings
set_error_handler('adminer_errors', E_WARNING);
include "../adminer/include/coverage.inc.php"; include "../adminer/include/coverage.inc.php";
@@ -60,7 +65,7 @@ if (!defined("SID")) {
// disable magic quotes to be able to use database escaping function // disable magic quotes to be able to use database escaping function
remove_slashes(array(&$_GET, &$_POST, &$_COOKIE), $filter); remove_slashes(array(&$_GET, &$_POST, &$_COOKIE), $filter);
if (get_magic_quotes_runtime()) { if (function_exists("get_magic_quotes_runtime") && get_magic_quotes_runtime()) {
set_magic_quotes_runtime(false); set_magic_quotes_runtime(false);
} }
@set_time_limit(0); // @ - can be disabled @set_time_limit(0); // @ - can be disabled
@@ -75,16 +80,28 @@ include "../adminer/drivers/sqlite.inc.php";
include "../adminer/drivers/pgsql.inc.php"; include "../adminer/drivers/pgsql.inc.php";
include "../adminer/drivers/oracle.inc.php"; include "../adminer/drivers/oracle.inc.php";
include "../adminer/drivers/mssql.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/mongo.inc.php";
include "../adminer/drivers/elastic.inc.php"; include "./include/adminer.inc.php";
include "../adminer/drivers/clickhouse.inc.php"; $adminer = (function_exists('adminer_object') ? adminer_object() : new Adminer);
include "../adminer/drivers/mysql.inc.php"; // must be included as last driver include "../adminer/drivers/mysql.inc.php"; // must be included as last driver
$config = driver_config();
$possible_drivers = $config['possible_drivers'];
$jush = $config['jush'];
$types = $config['types'];
$structured_types = $config['structured_types'];
$unsigned = $config['unsigned'];
$operators = $config['operators'];
$functions = $config['functions'];
$grouping = $config['grouping'];
$edit_functions = $config['edit_functions'];
if ($adminer->operators === null) {
$adminer->operators = $operators;
}
define("SERVER", $_GET[DRIVER]); // read from pgsql=localhost define("SERVER", $_GET[DRIVER]); // read from pgsql=localhost
define("DB", $_GET["db"]); // for the sake of speed and size define("DB", $_GET["db"]); // for the sake of speed and size
define("ME", str_replace(":", "%3a", preg_replace('~\?.*~', '', relative_uri())) . '?' define("ME", preg_replace('~\?.*~', '', relative_uri()) . '?'
. (sid() ? SID . '&' : '') . (sid() ? SID . '&' : '')
. (SERVER !== null ? DRIVER . "=" . urlencode(SERVER) . '&' : '') . (SERVER !== null ? DRIVER . "=" . urlencode(SERVER) . '&' : '')
. (isset($_GET["username"]) ? "username=" . urlencode($_GET["username"]) . '&' : '') . (isset($_GET["username"]) ? "username=" . urlencode($_GET["username"]) . '&' : '')
@@ -92,7 +109,6 @@ define("ME", str_replace(":", "%3a", preg_replace('~\?.*~', '', relative_uri()))
); );
include "../adminer/include/version.inc.php"; include "../adminer/include/version.inc.php";
include "./include/adminer.inc.php";
include "../adminer/include/design.inc.php"; include "../adminer/include/design.inc.php";
include "../adminer/include/xxtea.inc.php"; include "../adminer/include/xxtea.inc.php";
include "../adminer/include/auth.inc.php"; include "../adminer/include/auth.inc.php";

View File

@@ -89,14 +89,16 @@ if (!(DB != "" ? $connection->select_db(DB) : isset($_GET["sql"]) || isset($_GET
exit; exit;
} }
if (support("scheme") && DB != "" && $_GET["ns"] !== "") { if (support("scheme")) {
if (!isset($_GET["ns"])) { if (DB != "" && $_GET["ns"] !== "") {
redirect(preg_replace('~ns=[^&]*&~', '', ME) . "ns=" . get_schema()); if (!isset($_GET["ns"])) {
} redirect(preg_replace('~ns=[^&]*&~', '', ME) . "ns=" . get_schema());
if (!set_schema($_GET["ns"])) { }
header("HTTP/1.1 404 Not Found"); if (!set_schema($_GET["ns"])) {
page_header(lang('Schema') . ": " . h($_GET["ns"]), lang('Invalid schema.'), true); header("HTTP/1.1 404 Not Found");
page_footer("ns"); page_header(lang('Schema') . ": " . h($_GET["ns"]), lang('Invalid schema.'), true);
exit; page_footer("ns");
exit;
}
} }
} }

View File

@@ -75,7 +75,7 @@ var thousandsSeparator = '<?php echo js_escape(lang(',')); ?>';
if ($breadcrumb === false) { if ($breadcrumb === false) {
echo "$server\n"; echo "$server\n";
} else { } else {
echo "<a href='" . ($link ? h($link) : ".") . "' accesskey='1' title='Alt+Shift+1'>$server</a> &raquo; "; echo "<a href='" . h($link) . "' accesskey='1' title='Alt+Shift+1'>$server</a> &raquo; ";
if ($_GET["ns"] != "" || (DB != "" && is_array($breadcrumb))) { if ($_GET["ns"] != "" || (DB != "" && is_array($breadcrumb))) {
echo '<a href="' . h($link . "&db=" . urlencode(DB) . (support("scheme") ? "&ns=" : "")) . '">' . h(DB) . '</a> &raquo; '; echo '<a href="' . h($link . "&db=" . urlencode(DB) . (support("scheme") ? "&ns=" : "")) . '">' . h(DB) . '</a> &raquo; ';
} }

View File

@@ -1,4 +1,15 @@
<?php <?php
$drivers = array();
/** Add a driver
* @param string
* @param string
* @return null
*/
function add_driver($id, $name) {
global $drivers;
$drivers[$id] = $name;
}
/*abstract*/ class Min_SQL { /*abstract*/ class Min_SQL {
var $_conn; var $_conn;
@@ -131,6 +142,14 @@
return $idf; return $idf;
} }
/** Convert operator so it can be used in search
* @param string $operator
* @return string
*/
function convertOperator($operator) {
return $operator;
}
/** Convert value returned by database to actual value /** Convert value returned by database to actual value
* @param string * @param string
* @param array * @param array

View File

@@ -21,11 +21,11 @@ function select($result, $connection2 = null, $orgtables = array(), $limit = 0)
echo "<table cellspacing='0' class='nowrap'>\n"; echo "<table cellspacing='0' class='nowrap'>\n";
echo "<thead><tr>"; echo "<thead><tr>";
for ($j=0; $j < count($row); $j++) { for ($j=0; $j < count($row); $j++) {
$field = $result->fetch_field(); $field = (array)$result->fetch_field();
$name = $field->name; $name = $field["name"];
$orgtable = $field->orgtable; $orgtable = $field["orgtable"];
$orgname = $field->orgname; $orgname = $field["orgname"];
$return[$field->table] = $orgtable; $return[$field["table"]] = $orgtable;
if ($orgtables && $jush == "sql") { // MySQL EXPLAIN if ($orgtables && $jush == "sql") { // MySQL EXPLAIN
$links[$j] = ($name == "table" ? "table=" : ($name == "possible_keys" ? "indexes=" : null)); $links[$j] = ($name == "table" ? "table=" : ($name == "possible_keys" ? "indexes=" : null));
} elseif ($orgtable != "") { } elseif ($orgtable != "") {
@@ -46,11 +46,11 @@ function select($result, $connection2 = null, $orgtables = array(), $limit = 0)
$links[$j] = $orgtable; $links[$j] = $orgtable;
} }
} }
if ($field->charsetnr == 63) { // 63 - binary if ($field["charsetnr"] == 63) { // 63 - binary
$blobs[$j] = true; $blobs[$j] = true;
} }
$types[$j] = $field->type; $types[$j] = $field["type"];
echo "<th" . ($orgtable != "" || $field->name != $orgname ? " title='" . h(($orgtable != "" ? "$orgtable." : "") . $orgname) . "'" : "") . ">" . h($name) echo "<th" . ($orgtable != "" || $field["name"] != $orgname ? " title='" . h(($orgtable != "" ? "$orgtable." : "") . $orgname) . "'" : "") . ">" . h($name)
. ($orgtables ? doc_link(array( . ($orgtables ? doc_link(array(
'sql' => "explain-output.html#explain_" . strtolower($name), 'sql' => "explain-output.html#explain_" . strtolower($name),
'mariadb' => "explain/#the-columns-in-explain-select", 'mariadb' => "explain/#the-columns-in-explain-select",
@@ -61,6 +61,20 @@ function select($result, $connection2 = null, $orgtables = array(), $limit = 0)
} }
echo "<tr" . odd() . ">"; echo "<tr" . odd() . ">";
foreach ($row as $key => $val) { foreach ($row as $key => $val) {
$link = "";
if (isset($links[$key]) && !$columns[$links[$key]]) {
if ($orgtables && $jush == "sql") { // MySQL EXPLAIN
$table = $row[array_search("table=", $links)];
$link = ME . $links[$key] . urlencode($orgtables[$table] != "" ? $orgtables[$table] : $table);
} else {
$link = ME . "edit=" . urlencode($links[$key]);
foreach ($indexes[$links[$key]] as $col => $j) {
$link .= "&where" . urlencode("[" . bracket_escape($col) . "]") . "=" . urlencode($row[$j]);
}
}
} elseif (is_web_url($val)) {
$link = $val;
}
if ($val === null) { if ($val === null) {
$val = "<i>NULL</i>"; $val = "<i>NULL</i>";
} elseif ($blobs[$key] && !is_utf8($val)) { } elseif ($blobs[$key] && !is_utf8($val)) {
@@ -71,17 +85,8 @@ function select($result, $connection2 = null, $orgtables = array(), $limit = 0)
$val = "<code>$val</code>"; $val = "<code>$val</code>";
} }
} }
if (isset($links[$key]) && !$columns[$links[$key]]) { if ($link) {
if ($orgtables && $jush == "sql") { // MySQL EXPLAIN $val = "<a href='" . h($link) . "'" . (is_web_url($link) ? target_blank() : '') . ">$val</a>";
$table = $row[array_search("table=", $links)];
$link = $links[$key] . urlencode($orgtables[$table] != "" ? $orgtables[$table] : $table);
} else {
$link = "edit=" . urlencode($links[$key]);
foreach ($indexes[$links[$key]] as $col => $j) {
$link .= "&where" . urlencode("[" . bracket_escape($col) . "]") . "=" . urlencode($row[$j]);
}
}
$val = "<a href='" . h(ME . $link) . "'>$val</a>";
} }
echo "<td>$val"; echo "<td>$val";
} }
@@ -146,7 +151,7 @@ function set_adminer_settings($settings) {
*/ */
function textarea($name, $value, $rows = 10, $cols = 80) { function textarea($name, $value, $rows = 10, $cols = 80) {
global $jush; global $jush;
echo "<textarea name='$name' rows='$rows' cols='$cols' class='sqlarea jush-$jush' spellcheck='false' wrap='off'>"; echo "<textarea name='" . h($name) . "' rows='$rows' cols='$cols' class='sqlarea jush-$jush' spellcheck='false' wrap='off'>";
if (is_array($value)) { if (is_array($value)) {
foreach ($value as $val) { // not implode() to save memory foreach ($value as $val) { // not implode() to save memory
echo h($val[0]) . "\n\n\n"; // $val == array($query, $time, $elapsed) echo h($val[0]) . "\n\n\n"; // $val == array($query, $time, $elapsed)
@@ -274,11 +279,11 @@ function edit_fields($fields, $collations, $type = "TABLE", $foreign_keys = arra
<td><?php echo lang('Options'); /* no label required, options have their own label */ ?> <td><?php echo lang('Options'); /* no label required, options have their own label */ ?>
<?php if ($type == "TABLE") { ?> <?php if ($type == "TABLE") { ?>
<td id="label-null">NULL <td id="label-null">NULL
<td><input type="radio" name="auto_increment_col" value=""><acronym id="label-ai" title="<?php echo lang('Auto Increment'); ?>">AI</acronym><?php echo doc_link(array( <td><input type="radio" name="auto_increment_col" value=""><abbr id="label-ai" title="<?php echo lang('Auto Increment'); ?>">AI</abbr><?php echo doc_link(array(
'sql' => "example-auto-increment.html", 'sql' => "example-auto-increment.html",
'mariadb' => "auto_increment/", 'mariadb' => "auto_increment/",
'sqlite' => "autoinc.html", 'sqlite' => "autoinc.html",
'pgsql' => "datatype.html#DATATYPE-SERIAL", 'pgsql' => "datatype-numeric.html#DATATYPE-SERIAL",
'mssql' => "ms186775.aspx", 'mssql' => "ms186775.aspx",
)); ?> )); ?>
<td id="label-default"<?php echo $default_class; ?>><?php echo lang('Default value'); ?> <td id="label-default"<?php echo $default_class; ?>><?php echo lang('Default value'); ?>
@@ -425,7 +430,7 @@ function drop_create($drop, $create, $drop_created, $test, $drop_test, $location
*/ */
function create_trigger($on, $row) { function create_trigger($on, $row) {
global $jush; global $jush;
$timing_event = " $row[Timing] $row[Event]" . ($row["Event"] == "UPDATE OF" ? " " . idf_escape($row["Of"]) : ""); $timing_event = " $row[Timing] $row[Event]" . (preg_match('~ OF~', $row["Event"]) ? " $row[Of]" : ""); // SQL injection
return "CREATE TRIGGER " return "CREATE TRIGGER "
. idf_escape($row["Trigger"]) . idf_escape($row["Trigger"])
. ($jush == "mssql" ? $on . $timing_event : $timing_event . $on) . ($jush == "mssql" ? $on . $timing_event : $timing_event . $on)
@@ -537,7 +542,7 @@ function doc_link($paths, $text = "<sup>?</sup>") {
$urls['sql'] = "https://mariadb.com/kb/en/library/"; $urls['sql'] = "https://mariadb.com/kb/en/library/";
$paths['sql'] = (isset($paths['mariadb']) ? $paths['mariadb'] : str_replace(".html", "/", $paths['sql'])); $paths['sql'] = (isset($paths['mariadb']) ? $paths['mariadb'] : str_replace(".html", "/", $paths['sql']));
} }
return ($paths[$jush] ? "<a href='$urls[$jush]$paths[$jush]'" . target_blank() . ">$text</a>" : ""); return ($paths[$jush] ? "<a href='" . h($urls[$jush] . $paths[$jush]) . "'" . target_blank() . ">$text</a>" : "");
} }
/** Wrap gzencode() for usage in ob_start() /** Wrap gzencode() for usage in ob_start()

View File

@@ -29,6 +29,9 @@ function version() {
* @return string * @return string
*/ */
function idf_unescape($idf) { function idf_unescape($idf) {
if (!preg_match('~^[`\'"[]~', $idf)) {
return $idf;
}
$last = substr($idf, -1); $last = substr($idf, -1);
return str_replace($last . $last, $last, substr($idf, 1, -1)); return str_replace($last . $last, $last, substr($idf, 1, -1));
} }
@@ -62,7 +65,7 @@ function number_type() {
* @return null modified in place * @return null modified in place
*/ */
function remove_slashes($process, $filter = false) { function remove_slashes($process, $filter = false) {
if (get_magic_quotes_gpc()) { if (function_exists("get_magic_quotes_gpc") && get_magic_quotes_gpc()) {
while (list($key, $val) = each($process)) { while (list($key, $val) = each($process)) {
foreach ($val as $k => $v) { foreach ($val as $k => $v) {
unset($process[$key][$k]); unset($process[$key][$k]);
@@ -210,7 +213,7 @@ function optionlist($options, $selected = null, $use_keys = false) {
* @param string * @param string
* @param array * @param array
* @param string * @param string
* @param string true for no onchange, false for radio * @param string|bool true for no onchange, false for radio
* @param string * @param string
* @return string * @return string
*/ */
@@ -725,7 +728,7 @@ function format_time($start) {
* @return string * @return string
*/ */
function relative_uri() { function relative_uri() {
return preg_replace('~^[^?]*/([^?]*)~', '\1', $_SERVER["REQUEST_URI"]); return str_replace(":", "%3a", preg_replace('~^[^?]*/([^?]*)~', '\1', $_SERVER["REQUEST_URI"]));
} }
/** Remove parameter from query string /** Remove parameter from query string
@@ -849,19 +852,18 @@ function friendly_url($val) {
/** Print hidden fields /** Print hidden fields
* @param array * @param array
* @param array * @param array
* @param string
* @return bool * @return bool
*/ */
function hidden_fields($process, $ignore = array()) { function hidden_fields($process, $ignore = array(), $prefix = '') {
$return = false; $return = false;
while (list($key, $val) = each($process)) { foreach ($process as $key => $val) {
if (!in_array($key, $ignore)) { if (!in_array($key, $ignore)) {
if (is_array($val)) { if (is_array($val)) {
foreach ($val as $k => $v) { hidden_fields($val, array(), $key);
$process[$key . "[$k]"] = $v;
}
} else { } else {
$return = true; $return = true;
echo '<input type="hidden" name="' . h($key) . '" value="' . h($val) . '">'; echo '<input type="hidden" name="' . h($prefix ? $prefix . "[$key]" : $key) . '" value="' . h($val) . '">';
} }
} }
} }
@@ -1075,7 +1077,7 @@ function fields_from_edit() {
$name = bracket_escape($key, 1); // 1 - back $name = bracket_escape($key, 1); // 1 - back
$return[$name] = array( $return[$name] = array(
"field" => $name, "field" => $name,
"privileges" => array("insert" => 1, "update" => 1), "privileges" => array("insert" => 1, "update" => 1, "where" => 1, "order" => 1),
"null" => 1, "null" => 1,
"auto_increment" => ($key == $driver->primary), "auto_increment" => ($key == $driver->primary),
); );
@@ -1116,7 +1118,7 @@ function dump_headers($identifier, $multi_table = false) {
$return = $adminer->dumpHeaders($identifier, $multi_table); $return = $adminer->dumpHeaders($identifier, $multi_table);
$output = $_POST["output"]; $output = $_POST["output"];
if ($output != "text") { if ($output != "text") {
header("Content-Disposition: attachment; filename=" . $adminer->dumpFilename($identifier) . ".$return" . ($output != "file" && !preg_match('~[^0-9a-z]~', $output) ? ".$output" : "")); header("Content-Disposition: attachment; filename=" . $adminer->dumpFilename($identifier) . ".$return" . ($output != "file" && preg_match('~^[0-9a-z]+$~', $output) ? ".$output" : ""));
} }
session_write_close(); session_write_close();
ob_flush(); ob_flush();
@@ -1130,7 +1132,7 @@ function dump_headers($identifier, $multi_table = false) {
*/ */
function dump_csv($row) { function dump_csv($row) {
foreach ($row as $key => $val) { foreach ($row as $key => $val) {
if (preg_match("~[\"\n,;\t]~", $val) || $val === "") { if (preg_match('~["\n,;\t]|^0|\.\d*0$~', $val) || $val === "") {
$row[$key] = '"' . str_replace('"', '""', $val) . '"'; $row[$key] = '"' . str_replace('"', '""', $val) . '"';
} }
} }
@@ -1248,7 +1250,7 @@ function select_value($val, $link, $field, $text_length) {
if (is_mail($val)) { if (is_mail($val)) {
$link = "mailto:$val"; $link = "mailto:$val";
} }
if (is_url($val)) { if (is_web_url($val)) {
$link = $val; // IE 11 and all modern browsers hide referrer $link = $val; // IE 11 and all modern browsers hide referrer
} }
} }
@@ -1269,20 +1271,32 @@ function select_value($val, $link, $field, $text_length) {
* @param string * @param string
* @return bool * @return bool
*/ */
function is_mail($email) { function is_mail($value) {
$atom = '[-a-z0-9!#$%&\'*+/=?^_`{|}~]'; // characters of local-name return is_string($value) && filter_var($value, FILTER_VALIDATE_EMAIL);
$domain = '[a-z0-9]([-a-z0-9]{0,61}[a-z0-9])'; // one domain component
$pattern = "$atom+(\\.$atom+)*@($domain?\\.)+$domain";
return is_string($email) && preg_match("(^$pattern(,\\s*$pattern)*\$)i", $email);
} }
/** Check whether the string is URL address /** Check whether the string is web URL address
* @param string * @param string
* @return bool * @return bool
*/ */
function is_url($string) { function is_web_url($value) {
$domain = '[a-z0-9]([-a-z0-9]{0,61}[a-z0-9])'; // one domain component //! IDN if (!is_string($value) || !preg_match('~^https?://~i', $value)) {
return preg_match("~^(https?)://($domain?\\.)+$domain(:\\d+)?(/.*)?(\\?.*)?(#.*)?\$~i", $string); //! restrict path, query and fragment characters return false;
}
$components = parse_url($value);
if (!$components) {
return false;
}
// Encode URL path. If path was encoded already, it will be encoded twice, but we are OK with that.
$encodedParts = array_map('urlencode', explode('/', $components['path']));
$url = str_replace($components['path'], implode('/', $encodedParts), $value);
parse_str($components['query'], $params);
$url = str_replace($components['query'], http_build_query($params), $url);
return (bool)filter_var($url, FILTER_VALIDATE_URL);
} }
/** Check if field should be shortened /** Check if field should be shortened
@@ -1412,15 +1426,16 @@ function on_help($command, $side = 0) {
* @param bool * @param bool
* @return null * @return null
*/ */
function edit_form($TABLE, $fields, $row, $update) { function edit_form($table, $fields, $row, $update) {
global $adminer, $jush, $token, $error; global $adminer, $jush, $token, $error;
$table_name = $adminer->tableName(table_status1($TABLE, true)); $table_name = $adminer->tableName(table_status1($table, true));
page_header( page_header(
($update ? lang('Edit') : lang('Insert')), ($update ? lang('Edit') : lang('Insert')),
$error, $error,
array("select" => array($TABLE, $table_name)), array("select" => array($table, $table_name)),
$table_name $table_name
); );
$adminer->editRowPrint($table, $fields, $row, $update);
if ($row === false) { if ($row === false) {
echo "<p class='error'>" . lang('No rows.') . "\n"; echo "<p class='error'>" . lang('No rows.') . "\n";
} }
@@ -1444,7 +1459,7 @@ function edit_form($TABLE, $fields, $row, $update) {
$value = ($row !== null $value = ($row !== null
? ($row[$name] != "" && $jush == "sql" && preg_match("~enum|set~", $field["type"]) ? ($row[$name] != "" && $jush == "sql" && preg_match("~enum|set~", $field["type"])
? (is_array($row[$name]) ? array_sum($row[$name]) : +$row[$name]) ? (is_array($row[$name]) ? array_sum($row[$name]) : +$row[$name])
: $row[$name] : (is_bool($row[$name]) ? +$row[$name] : $row[$name])
) )
: (!$update && $field["auto_increment"] : (!$update && $field["auto_increment"]
? "" ? ""
@@ -1461,6 +1476,9 @@ function edit_form($TABLE, $fields, $row, $update) {
: ($value === false ? null : ($value !== null ? '' : 'NULL')) : ($value === false ? null : ($value !== null ? '' : 'NULL'))
) )
); );
if (!$_POST && !$update && $value == $field["default"] && preg_match('~^[\w.]+\(~', $value)) {
$function = "SQL";
}
if (preg_match("~time~", $field["type"]) && preg_match('~^CURRENT_TIMESTAMP~i', $value)) { if (preg_match("~time~", $field["type"]) && preg_match('~^CURRENT_TIMESTAMP~i', $value)) {
$value = ""; $value = "";
$function = "now"; $function = "now";

View File

@@ -5,7 +5,7 @@ $langs = array(
'en' => 'English', // Jakub Vrána - https://www.vrana.cz 'en' => 'English', // Jakub Vrána - https://www.vrana.cz
'ar' => 'العربية', // Y.M Amine - Algeria - nbr7@live.fr 'ar' => 'العربية', // Y.M Amine - Algeria - nbr7@live.fr
'bg' => 'Български', // Deyan Delchev 'bg' => 'Български', // Deyan Delchev
'bn' => 'বাংলা', // Dipak Kumar - dipak.ndc@gmail.com 'bn' => 'বাংলা', // Dipak Kumar - dipak.ndc@gmail.com | Hossain Ahmed Saiman - hossain.ahmed@altscope.com
'bs' => 'Bosanski', // Emir Kurtovic 'bs' => 'Bosanski', // Emir Kurtovic
'ca' => 'Català', // Joan Llosas 'ca' => 'Català', // Joan Llosas
'cs' => 'Čeština', // Jakub Vrána - https://www.vrana.cz 'cs' => 'Čeština', // Jakub Vrána - https://www.vrana.cz
@@ -25,7 +25,8 @@ $langs = array(
'ja' => '日本語', // Hitoshi Ozawa - http://sourceforge.jp/projects/oss-ja-jpn/releases/ 'ja' => '日本語', // Hitoshi Ozawa - http://sourceforge.jp/projects/oss-ja-jpn/releases/
'ka' => 'ქართული', // Saba Khmaladze skhmaladze@uglt.org 'ka' => 'ქართული', // Saba Khmaladze skhmaladze@uglt.org
'ko' => '한국어', // dalli - skcha67@gmail.com 'ko' => '한국어', // dalli - skcha67@gmail.com
'lt' => 'Lietuvių', // Paulius Leščinskas - http://www.lescinskas.lt 'lv' => 'Latviešu', // Kristaps Lediņš - https://krysits.com
'lt' => 'Lietuvių', // Paulius Leščinskas - http://www.lescinskas.lt
'ms' => 'Bahasa Melayu', // Pisyek 'ms' => 'Bahasa Melayu', // Pisyek
'nl' => 'Nederlands', // Maarten Balliauw - http://blog.maartenballiauw.be 'nl' => 'Nederlands', // Maarten Balliauw - http://blog.maartenballiauw.be
'no' => 'Norsk', // Iver Odin Kvello, mupublishing.com 'no' => 'Norsk', // Iver Odin Kvello, mupublishing.com

View File

@@ -1,8 +1,8 @@
<?php <?php
// PDO can be used in several database drivers // PDO can be used in several database drivers
if (extension_loaded('pdo')) { if (extension_loaded('pdo')) {
/*abstract*/ class Min_PDO extends PDO { /*abstract*/ class Min_PDO {
var $_result, $server_info, $affected_rows, $errno, $error; var $_result, $server_info, $affected_rows, $errno, $error, $pdo;
function __construct() { function __construct() {
global $adminer; global $adminer;
@@ -13,22 +13,27 @@ if (extension_loaded('pdo')) {
} }
function dsn($dsn, $username, $password, $options = array()) { function dsn($dsn, $username, $password, $options = array()) {
$options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_SILENT;
$options[PDO::ATTR_STATEMENT_CLASS] = array('Min_PDOStatement');
try { try {
parent::__construct($dsn, $username, $password, $options); $this->pdo = new PDO($dsn, $username, $password, $options);
} catch (Exception $ex) { } catch (Exception $ex) {
auth_error(h($ex->getMessage())); auth_error(h($ex->getMessage()));
} }
$this->setAttribute(13, array('Min_PDOStatement')); // 13 - PDO::ATTR_STATEMENT_CLASS $this->server_info = @$this->pdo->getAttribute(PDO::ATTR_SERVER_VERSION);
$this->server_info = @$this->getAttribute(4); // 4 - PDO::ATTR_SERVER_VERSION
} }
/*abstract function select_db($database);*/ /*abstract function select_db($database);*/
function quote($string) {
return $this->pdo->quote($string);
}
function query($query, $unbuffered = false) { function query($query, $unbuffered = false) {
$result = parent::query($query); $result = $this->pdo->query($query);
$this->error = ""; $this->error = "";
if (!$result) { if (!$result) {
list(, $this->errno, $this->error) = $this->errorInfo(); list(, $this->errno, $this->error) = $this->pdo->errorInfo();
if (!$this->error) { if (!$this->error) {
$this->error = lang('Unknown error.'); $this->error = lang('Unknown error.');
} }
@@ -79,11 +84,11 @@ if (extension_loaded('pdo')) {
var $_offset = 0, $num_rows; var $_offset = 0, $num_rows;
function fetch_assoc() { function fetch_assoc() {
return $this->fetch(2); // PDO::FETCH_ASSOC return $this->fetch(PDO::FETCH_ASSOC);
} }
function fetch_row() { function fetch_row() {
return $this->fetch(3); // PDO::FETCH_NUM return $this->fetch(PDO::FETCH_NUM);
} }
function fetch_field() { function fetch_field() {
@@ -95,5 +100,3 @@ if (extension_loaded('pdo')) {
} }
} }
} }
$drivers = array();

View File

@@ -1,2 +1,2 @@
<?php <?php
$VERSION = "4.7.7"; $VERSION = "4.9.1";

View File

@@ -2,7 +2,7 @@
$translations = array( $translations = array(
'Login' => 'تسجيل الدخول', 'Login' => 'تسجيل الدخول',
'Logout successful.' => 'تم تسجيل الخروج بنجاح.', 'Logout successful.' => 'تم تسجيل الخروج بنجاح.',
'Invalid credentials.' => 'بيانات الدخول غير صالحة.', 'Invalid server or credentials.' => null,
'Server' => 'الخادم', 'Server' => 'الخادم',
'Username' => 'اسم المستخدم', 'Username' => 'اسم المستخدم',
'Password' => 'كلمة المرور', 'Password' => 'كلمة المرور',
@@ -264,4 +264,50 @@ $translations = array(
'Permanent link' => 'رابط دائم', 'Permanent link' => 'رابط دائم',
'Edit all' => 'تعديل الكل', 'Edit all' => 'تعديل الكل',
'HH:MM:SS' => 'HH:MM:SS', 'HH:MM:SS' => 'HH:MM:SS',
'Drop %s?' => null,
'Tables have been optimized.' => null,
'Materialized view' => null,
'Vacuum' => null,
'Selected' => null,
'overwrite' => null,
'DB' => null,
'Ctrl+click on a value to modify it.' => null,
'File must be in UTF-8 encoding.' => null,
'Modify' => null,
'Load more data' => null,
'Loading' => null,
'ATTACH queries are not supported.' => null,
'Warnings' => null,
'%d / ' => array(),
'Limit rows' => null,
'Adminer does not support accessing a database without a password, <a href="https://www.adminer.org/en/password/"%s>more information</a>.' => null,
'Default value' => null,
'Full table scan' => null,
'Too many unsuccessful logins, try again in %d minute(s).' => array(),
'Thanks for using Adminer, consider <a href="https://www.adminer.org/en/donation/">donating</a>.' => null,
'Master password expired. <a href="https://www.adminer.org/en/extension/"%s>Implement</a> %s method to make it permanent.' => null,
'The action will be performed after successful login with the same credentials.' => null,
'Connecting to privileged ports is not allowed.' => null,
'There is a space in the input password which might be the cause.' => null,
'If you did not send this request from Adminer then close this page.' => null,
'You can upload a big SQL file via FTP and import it from server.' => null,
'Size' => null,
'Compute' => null,
'You are offline.' => null,
'You have no privileges to update this table.' => null,
'Saving' => null,
'Unknown error.' => null,
'Database does not support password.' => null,
'Disable %s or enable %s or %s extensions.' => null,
'yes' => null,
'no' => null,
'Columns' => null,
'Nullable' => null,
'Default' => null,
'Yes' => null,
'No' => null,
'One Time Password' => null,
'Invalid OTP code.' => null,
); );

View File

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

View File

@@ -1,53 +1,53 @@
<?php <?php
$translations = array( $translations = array(
'Login' => 'লগইন', 'Login' => 'লগইন',
'Logout successful.' => 'লগআউট সম্পন্ন হয়েছে।', 'Logout successful.' => 'সফলভাবে লগআউট হয়েছে।',
'Invalid credentials.' => 'ভুল পাসওয়ার্ড।', 'Invalid server or credentials.' => null,
'Server' => 'সার্ভার', 'Server' => 'সার্ভার',
'Username' => 'ইউজারের নাম', 'Username' => 'ইউজারের নাম',
'Password' => 'পাসওয়ার্ড', 'Password' => 'পাসওয়ার্ড',
'Select database' => 'ডাটাবেজ নির্বাচন কর', 'Select database' => 'ডাটাবেজ নির্বাচন করুন',
'Invalid database.' => 'ভুল ডাটাবেজ।', 'Invalid database.' => 'অকার্যকর ডাটাবেজ।',
'Table has been dropped.' => 'টেবিল মুছে ফেলা হয়েছে।', 'Table has been dropped.' => 'টেবিল মুছে ফেলা হয়েছে।',
'Table has been altered.' => 'টেবিল সম্পাদনা করা হয়েছে।', 'Table has been altered.' => 'টেবিল পরিবর্তন করা হয়েছে।',
'Table has been created.' => 'টেবিল তৈরী করা হয়েছে।', 'Table has been created.' => 'টেবিল তৈরী করা হয়েছে।',
'Alter table' => 'টেবিল সম্পাদনা', 'Alter table' => 'টেবিল পরিবর্তন করুন',
'Create table' => 'টেবিল তৈরী কর', 'Create table' => 'টেবিল তৈরী করুন',
'Table name' => 'টেবিলের নাম', 'Table name' => 'টেবিলের নাম',
'engine' => 'ইন্জিন', 'engine' => 'ইন্জিন',
'collation' => 'কলোকেশন', 'collation' => 'সমষ্টি',
'Column name' => 'কলামের নাম', 'Column name' => 'কলামের নাম',
'Type' => 'টাইপ', 'Type' => 'ধরণ',
'Length' => 'দৈর্ঘ্য', 'Length' => 'দৈর্ঘ্য',
'Auto Increment' => 'স্বয়ংক্রিয় বৃদ্ধি', 'Auto Increment' => 'স্বয়ংক্রিয় বৃদ্ধি',
'Options' => 'অপশন', 'Options' => 'বিকল্পসমূহ',
'Save' => 'সংরক্ষণ', 'Save' => 'সংরক্ষণ করুন',
'Drop' => 'মুছে ফেলো', 'Drop' => 'মুছে ফেলো',
'Database has been dropped.' => 'ডাটাবেজ মুছে ফেলা হয়েছে।', 'Database has been dropped.' => 'ডাটাবেজ মুছে ফেলা হয়েছে।',
'Database has been created.' => 'ডাটাবেজ তৈরী করা হয়েছে।', 'Database has been created.' => 'ডাটাবেজ তৈরী করা হয়েছে।',
'Database has been renamed.' => 'ডাটাবেজের নতুন নামকরণ করা হয়েছে।', 'Database has been renamed.' => 'ডাটাবেজের নতুন নামকরণ করা হয়েছে।',
'Database has been altered.' => 'ডাটাবেজ সম্পাদনা করা হয়েছে।', 'Database has been altered.' => 'ডাটাবেজ পরিবর্তন করা হয়েছে।',
'Alter database' => 'ডাটাবেজ সম্পাদনা', 'Alter database' => 'ডাটাবেজ পরিবর্তন করুন',
'Create database' => 'ডাটাবেজ তৈরী', 'Create database' => 'ডাটাবেজ তৈরী করুন',
'SQL command' => 'SQL-কোয়্যারী', 'SQL command' => 'SQL-কমান্ড',
'Logout' => 'লগআউট', 'Logout' => 'লগআউট',
'database' => 'ডাটাবেজ', 'database' => 'ডাটাবেজ',
'Use' => 'ব্যবহার', 'Use' => 'ব্যবহার',
'No tables.' => 'কোন টেবিল নাই।', 'No tables.' => 'কোন টেবিল নাই।',
'select' => 'নির্বাচন', 'select' => 'নির্বাচন',
'Item has been deleted.' => 'বিষয়বস্তু মুছে ফেলা হয়েছে।', 'Item has been deleted.' => 'বিষয়বস্তু মুছে ফেলা হয়েছে।',
'Item has been updated.' => 'বিষয়বস্তু আপডেট করা হয়েছে।', 'Item has been updated.' => 'বিষয়বস্তু হালনাগাদ করা হয়েছে।',
'Item%s has been inserted.' => 'বিষয়বস্তুসমূহ সংযোজন করা হয়েছে।', 'Item%s has been inserted.' => 'বিষয়বস্তুসমূহ সংযোজন করা হয়েছে।',
'Edit' => 'সম্পাদনা', 'Edit' => 'সম্পাদনা',
'Insert' => 'সংযোজন', 'Insert' => 'সংযোজন',
'Save and insert next' => 'সংরক্ষন ও পরবর্তী সংযোজন', 'Save and insert next' => 'সংরক্ষন ও পরবর্তী সংযোজন করুন',
'Delete' => 'মুছে ফেল', 'Delete' => 'মুছে ফেলুন',
'Database' => 'ডাটাবেজ', 'Database' => 'ডাটাবেজ',
'Routines' => 'রুটিনসমূহ', 'Routines' => 'রুটিনসমূহ',
'Indexes have been altered.' => 'সূচীসমূহ সম্পাদনা করা হয়েছে।', 'Indexes have been altered.' => 'সূচীসমূহ সম্পাদনা করা হয়েছে।',
'Indexes' => 'সূচীসমূহ', 'Indexes' => 'সূচীসমূহ',
'Alter indexes' => 'সূচীসমূহ সম্পাদনা', 'Alter indexes' => 'সূচীসমূহ পরিবর্তন করুন',
'Add next' => 'সংযোজন', 'Add next' => 'পরবর্তী সংযোজন করুন',
'Language' => 'ভাষা', 'Language' => 'ভাষা',
'Select' => 'নির্বাচন', 'Select' => 'নির্বাচন',
'New item' => 'নতুন বিষয়বস্তু', 'New item' => 'নতুন বিষয়বস্তু',
@@ -60,90 +60,90 @@ $translations = array(
'edit' => 'সম্পাদনা', 'edit' => 'সম্পাদনা',
'Page' => 'পৃষ্ঠা', 'Page' => 'পৃষ্ঠা',
'Query executed OK, %d row(s) affected.' => array('কোয়্যারী সম্পাদন হয়েছে, %d সারি প্রভাবিত হয়েছে।', 'কোয়্যারী সম্পাদন হয়েছে, %d সারি প্রভাবিত হয়েছে।'), 'Query executed OK, %d row(s) affected.' => array('কোয়্যারী সম্পাদন হয়েছে, %d সারি প্রভাবিত হয়েছে।', 'কোয়্যারী সম্পাদন হয়েছে, %d সারি প্রভাবিত হয়েছে।'),
'Error in query' => 'কোয়্যারীতে ভুল আছে।', 'Error in query' => 'অনুসন্ধানে ভুল আছে।',
'Execute' => 'সম্পাদন করো', 'Execute' => 'সম্পাদন করো',
'Table' => 'টেবিল', 'Table' => 'টেবিল',
'Foreign keys' => 'ফরেন কী', 'Foreign keys' => 'ফরেন কী',
'Triggers' => 'ট্রিগার', 'Triggers' => 'ট্রিগার',
'View' => 'ভিউ', 'View' => 'ভিউ',
'Unable to select the table' => 'টেবিল নির্বাচন করতে অক্ষম', 'Unable to select the table' => 'টেবিল নির্বাচন করতে অক্ষম',
'Invalid CSRF token. Send the form again.' => 'অবৈধ CSRF টোকেন। ফর্ম আবার পাঠা।', 'Invalid CSRF token. Send the form again.' => 'অবৈধ CSRF টোকেন। ফর্মটি আবার পাঠা।',
'Comment' => 'মন্তব্য', 'Comment' => 'মন্তব্য',
'Default values' => 'ডিফল্ট মান', 'Default values' => 'ডিফল্ট মান',
'%d byte(s)' => array('%d বাইট', '%d বাইটসমূহ'), '%d byte(s)' => array('%d বাইট', '%d বাইটসমূহ'),
'No commands to execute.' => 'সম্পাদন করার মত কোন নির্দেশ নই।', 'No commands to execute.' => 'সম্পাদন করার মত কোন নির্দেশ নই।',
'Unable to upload a file.' => 'ফাইল আপলোড করা সম্ভব হচ্ছে না।', 'Unable to upload a file.' => 'ফাইল আপলোড করা সম্ভব হচ্ছে না।',
'File upload' => 'ফাইল আপলোড', 'File upload' => 'ফাইল আপলোড',
'File uploads are disabled.' => 'ফাইল আপলোড নিষ্ক্রিয় করা আছে।', 'File uploads are disabled.' => 'ফাইল আপলোড নিষ্ক্রিয় করা আছে।',
'Routine has been called, %d row(s) affected.' => array('রুটিন কল করা হয়েছে, %d টি সারি (সমূহ) প্রভাবিত হয়েছে।', 'রুটিন কল করা হয়েছে, %d টি সারি (সমূহ) প্রভাবিত হয়েছে।'), 'Routine has been called, %d row(s) affected.' => array('রুটিন কল করা হয়েছে, %d টি সারি(সমূহ) প্রভাবিত হয়েছে।', 'রুটিন কল করা হয়েছে, %d টি সারি(সমূহ) প্রভাবিত হয়েছে।'),
'Call' => 'কল', 'Call' => 'কল',
'No extension' => 'কোন এক্সটেনশান নাই', 'No extension' => 'কোন এক্সটেনশান নাই',
'None of the supported PHP extensions (%s) are available.' => 'কোন PHP সমর্থিত এক্সটেনশন (%s) পাওয়া যায় নাই।', 'None of the supported PHP extensions (%s) are available.' => 'কোন PHP সমর্থিত এক্সটেনশন (%s) পাওয়া যায় নাই।',
'Session support must be enabled.' => 'সেশন সমর্থন সক্রিয় করা আবশ্যক।', 'Session support must be enabled.' => 'সেশন সমর্থন সক্রিয় করা আবশ্যক।',
'Session expired, please login again.' => 'সেশনের মেয়াদ শেষ হয়েছে, আবার লগইন করুন।', 'Session expired, please login again.' => 'সেশনের মেয়াদ শেষ হয়েছে, আবার লগইন করুন।',
'Text length' => 'টেক্সট দৈর্ঘ্য', 'Text length' => 'টেক্সট দৈর্ঘ্য',
'Foreign key has been dropped.' => 'ফরেন কী মুছে ফেলা হয়েছে।', 'Foreign key has been dropped.' => 'ফরেন কী মুছে ফেলা হয়েছে।',
'Foreign key has been altered.' => 'ফরেন কী সম্পাদনা করা হয়েছে।', 'Foreign key has been altered.' => 'ফরেন কী পরিবর্তন করা হয়েছে।',
'Foreign key has been created.' => 'ফরেন কী তৈরী করা হয়েছে।', 'Foreign key has been created.' => 'ফরেন কী তৈরী করা হয়েছে।',
'Foreign key' => 'ফরেন কী ', 'Foreign key' => 'ফরেন কী ',
'Target table' => 'টার্গেট টেবিল', 'Target table' => 'টার্গেট টেবিল',
'Change' => 'পরিবর্তন', 'Change' => 'পরিবর্তন',
'Source' => 'উৎস', 'Source' => 'উৎস',
'Target' => 'লক্ষ্য', 'Target' => 'লক্ষ্য',
'Add column' => 'কলাম সংযোজন', 'Add column' => 'কলাম সংযোজন করুন',
'Alter' => 'সম্পাদনা', 'Alter' => 'পরিবর্তন',
'Add foreign key' => 'ফরেন কী সংযোজন কর', 'Add foreign key' => 'ফরেন কী সংযোজন করুন',
'ON DELETE' => 'অন ডিলিট', 'ON DELETE' => 'অন ডিলিট',
'ON UPDATE' => 'অন আপডেট', 'ON UPDATE' => 'অন আপডেট',
'Index Type' => 'সূচী-ধরণ', 'Index Type' => 'সূচী-ধরণ',
'Column (length)' => 'কলাম (দৈর্ঘ্য)', 'Column (length)' => 'কলাম (দৈর্ঘ্য)',
'View has been dropped.' => 'ভিউ মুছে ফেলা হয়েছে।', 'View has been dropped.' => 'ভিউ মুছে ফেলা হয়েছে।',
'View has been altered.' => 'ভিউ সম্পাদনা করা হয়েছে।', 'View has been altered.' => 'ভিউ পরিবর্তন করা হয়েছে।',
'View has been created.' => 'ভিউ তৈরী করা হয়েছে।', 'View has been created.' => 'ভিউ তৈরী করা হয়েছে।',
'Alter view' => 'ভিউ সম্পাদনা কর', 'Alter view' => 'ভিউ পরিবর্তন করুন',
'Create view' => 'ভিউ তৈরী কর', 'Create view' => 'ভিউ তৈরী করুন',
'Name' => 'নাম', 'Name' => 'নাম',
'Process list' => 'প্রসেস তালিকা', 'Process list' => 'প্রসেস তালিকা',
'%d process(es) have been killed.' => array('%d টি প্রসেস (সমূহ) বিনষ্ট করা হয়েছে।', '%d টি প্রসেস (সমূহ) বিনষ্ট করা হয়েছে।'), '%d process(es) have been killed.' => array('%d টি প্রসেস(সমূহ) বিনষ্ট করা হয়েছে।', '%d টি প্রসেস(সমূহ) বিনষ্ট করা হয়েছে।'),
'Kill' => 'বিনষ্ট করো', 'Kill' => 'বিনষ্ট করো',
'Parameter name' => 'প্যারামিটারের নাম', 'Parameter name' => 'প্যারামিটারের নাম',
'Database schema' => 'ডাটাবেজ স্কিমা', 'Database schema' => 'ডাটাবেজ স্কিমা',
'Create procedure' => 'প্রসিডিওর তৈরী কর', 'Create procedure' => 'কার্যপ্রণালী তৈরী করুন',
'Create function' => 'ফাংশন তৈরী কর', 'Create function' => 'ফাংশন তৈরী করুন',
'Routine has been dropped.' => 'রুটিন মুছে ফেলা হয়েছে।', 'Routine has been dropped.' => 'রুটিন মুছে ফেলা হয়েছে।',
'Routine has been altered.' => 'রুটিন সম্পাদনা করা হয়েছে।', 'Routine has been altered.' => 'রুটিন পরিবর্তন করা হয়েছে।',
'Routine has been created.' => 'রুটিন তৈরী করা হয়েছে।', 'Routine has been created.' => 'রুটিন তৈরী করা হয়েছে।',
'Alter function' => 'ফাংশন সম্পাদনা কর', 'Alter function' => 'ফাংশন পরিবর্তন করুন',
'Alter procedure' => 'প্রসিডিওর সম্পাদনা কর', 'Alter procedure' => 'কার্যপ্রণালী পরিবর্তন করুন',
'Return type' => 'রিটার্ন টাইপ', 'Return type' => 'রিটার্ন টাইপ',
'Add trigger' => 'ট্রিগার সংযোজন কর', 'Add trigger' => 'ট্রিগার সংযোজন করুন',
'Trigger has been dropped.' => 'ট্রিগার মুছে ফেলা হয়েছে।', 'Trigger has been dropped.' => 'ট্রিগার মুছে ফেলা হয়েছে।',
'Trigger has been altered.' => 'ট্রিগার সম্পাদনা করা হয়েছে।', 'Trigger has been altered.' => 'ট্রিগার পরিবর্তন করা হয়েছে।',
'Trigger has been created.' => 'ট্রিগার তৈরী করা হয়েছে।', 'Trigger has been created.' => 'ট্রিগার তৈরী করা হয়েছে।',
'Alter trigger' => 'ট্রিগার সম্পাদনা কর', 'Alter trigger' => 'ট্রিগার পরিবর্তন করুন',
'Create trigger' => 'ট্রিগার তৈরী কর', 'Create trigger' => 'ট্রিগার তৈরী করুন',
'Time' => 'সময়', 'Time' => 'সময়',
'Event' => 'ইভেন্ট', 'Event' => 'ইভেন্ট',
'%s version: %s through PHP extension %s' => 'ভার্সন %s: %s, %s PHP এক্সটেনশনের মধ্য দিয়ে', '%s version: %s through PHP extension %s' => 'ভার্সন %s: %s, %s PHP এক্সটেনশনের মধ্য দিয়ে',
'%d row(s)' => array('%d সারি', '%d সারি সমূহ'), '%d row(s)' => array('%d সারি', '%d সারি সমূহ'),
'Remove' => 'অপসারণ', 'Remove' => 'মুছে ফেলুন',
'Are you sure?' => 'তুমি কি নিশ্চিত?', 'Are you sure?' => 'আপনি কি নিশ্চিত?',
'Privileges' => 'প্রিভিলেজেস', 'Privileges' => 'প্রিভিলেজেস',
'Create user' => 'ইউজার তৈরী কর', 'Create user' => 'ব্যবহারকারি তৈরী করুন',
'User has been dropped.' => 'ইউজার মুছে ফেলা হয়েছে।', 'User has been dropped.' => 'ব্যবহারকারি মুছে ফেলা হয়েছে।',
'User has been altered.' => 'ইউজার সম্পাদনা করা হয়েছে।', 'User has been altered.' => 'ব্যবহারকারি সম্পাদনা করা হয়েছে।',
'User has been created.' => 'ইউজার তৈরী করা হয়েছে।', 'User has been created.' => 'ব্যবহারকারি তৈরী করা হয়েছে।',
'Hashed' => 'হ্যাড', 'Hashed' => 'হ্যাড',
'Column' => 'কলাম', 'Column' => 'কলাম',
'Routine' => 'রুটিন', 'Routine' => 'রুটিন',
'Grant' => 'গ্র্যান্ট', 'Grant' => 'অনুমতি',
'Revoke' => 'রিভোক', '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 হিসাবে লগড', 'Logged as: %s' => '%s হিসাবে লগড',
'Move up' => 'উপরে স্থানান্তর', 'Move up' => 'উপরে স্থানান্তর',
'Move down' => 'নীচে স্থানান্তর', 'Move down' => 'নীচে স্থানান্তর',
'Functions' => 'ফাংশন সমূহ', 'Functions' => 'ফাংশন সমূহ',
'Aggregation' => 'মোট পরিমাণ', 'Aggregation' => 'সমষ্টি',
'Export' => 'এক্সপোর্ট', 'Export' => 'এক্সপোর্ট',
'Output' => 'আউটপুট', 'Output' => 'আউটপুট',
'open' => 'খোলা', 'open' => 'খোলা',
@@ -162,8 +162,8 @@ $translations = array(
'Schedule' => 'সময়সূচি', 'Schedule' => 'সময়সূচি',
'Start' => 'শুরু', 'Start' => 'শুরু',
'End' => 'সমাপ্তি', 'End' => 'সমাপ্তি',
'Status' => 'স্ট্যাটাস', 'Status' => 'অবস্থা',
'On completion preserve' => 'সমাপ্ত হওয়ার পর সংরক্ষন কর', 'On completion preserve' => 'সমাপ্ত হওয়ার পর সংরক্ষন করুন',
'Tables and views' => 'টেবিল এবং ভিউ সমূহ', 'Tables and views' => 'টেবিল এবং ভিউ সমূহ',
'Data Length' => 'ডাটার দৈর্ঘ্য', 'Data Length' => 'ডাটার দৈর্ঘ্য',
'Index Length' => 'ইনডেক্স এর দৈর্ঘ্য', 'Index Length' => 'ইনডেক্স এর দৈর্ঘ্য',
@@ -175,14 +175,14 @@ $translations = array(
'Repair' => 'মেরামত', 'Repair' => 'মেরামত',
'Truncate' => 'ছাঁটাই', 'Truncate' => 'ছাঁটাই',
'Tables have been truncated.' => 'টেবিল ছাঁটাই করা হয়েছে', 'Tables have been truncated.' => 'টেবিল ছাঁটাই করা হয়েছে',
'Rows' => 'সারি', 'Rows' => 'সারিসমূহ',
',' => ',', ',' => ',',
'0123456789' => '০১২৩৪৫৬৭৮৯', '0123456789' => '০১২৩৪৫৬৭৮৯',
'Tables have been moved.' => 'টেবিল স্থানান্তর করা হয়েছে।', 'Tables have been moved.' => 'টেবিল স্থানান্তর করা হয়েছে।',
'Move to other database' => 'অন্য ডাটাবেজে স্থানান্তর কর', 'Move to other database' => 'অন্য ডাটাবেজে স্থানান্তর করুন',
'Move' => 'স্থানান্তর কর', 'Move' => 'স্থানান্তর করুন',
'Engine' => 'ইঞ্জিন', 'Engine' => 'ইঞ্জিন',
'Save and continue edit' => 'সংরক্ষণ কর এবং সম্পাদনা চালিয়ে যা', 'Save and continue edit' => 'সংরক্ষণ করুন এবং সম্পাদনা চালিয়ে যা',
'original' => 'প্রকৃত', 'original' => 'প্রকৃত',
'Tables have been dropped.' => 'টেবিলসমূহ মুছে ফেলা হয়েছে।', 'Tables have been dropped.' => 'টেবিলসমূহ মুছে ফেলা হয়েছে।',
'%d item(s) have been affected.' => '%d টি বিষয়বস্তু প্রভাবিত হয়েছে', '%d item(s) have been affected.' => '%d টি বিষয়বস্তু প্রভাবিত হয়েছে',
@@ -193,10 +193,10 @@ $translations = array(
'Partitions' => 'পার্টিশন', 'Partitions' => 'পার্টিশন',
'Partition name' => 'পার্টিশনের নাম', 'Partition name' => 'পার্টিশনের নাম',
'Values' => 'মানসমূহ', 'Values' => 'মানসমূহ',
'%d row(s) have been imported.' => array('%d টি সারি (সমূহ) ইমপোর্ট করা হয়েছে।', '%d টি সারি (সমূহ) ইমপোর্ট করা হয়েছে।'), '%d row(s) have been imported.' => array('%d টি সারি(সমূহ) ইমপোর্ট করা হয়েছে।', '%d টি সারি(সমূহ) ইমপোর্ট করা হয়েছে।'),
'anywhere' => 'যে কোন স্থানে', 'anywhere' => 'যে কোন স্থানে',
'Import' => 'ইমপোর্ট', 'Import' => 'ইমপোর্ট',
'Stop on error' => 'ত্রুটি পেলে থেমে যা', 'Stop on error' => 'ত্রুটি পেলে থেমে যা',
'%.3f s' => '%.3f s', '%.3f s' => '%.3f s',
'$1-$3-$5' => '$6.$4.$1', '$1-$3-$5' => '$6.$4.$1',
'[yyyy]-mm-dd' => 't.m.[jjjj]', '[yyyy]-mm-dd' => 't.m.[jjjj]',
@@ -216,14 +216,14 @@ $translations = array(
'E-mail' => '​​ই-মেইল', 'E-mail' => '​​ই-মেইল',
'From' => 'থেকে', 'From' => 'থেকে',
'Subject' => 'বিষয়', 'Subject' => 'বিষয়',
'Send' => 'পাঠা', 'Send' => 'পাঠা',
'%d e-mail(s) have been sent.' => array('%d ইমেইল (গুলি) পাঠানো হয়েছে।', '%d ইমেইল (গুলি) পাঠানো হয়েছে।'), '%d e-mail(s) have been sent.' => array('%d ইমেইল(গুলি) পাঠানো হয়েছে।', '%d ইমেইল(গুলি) পাঠানো হয়েছে।'),
'Webserver file %s' => 'ওয়েবসার্ভার ফাইল %s', 'Webserver file %s' => 'ওয়েবসার্ভার ফাইল %s',
'File does not exist.' => 'ফাইলর কোন অস্তিত্ব নেই।', 'File does not exist.' => 'ফাইলটির কোন অস্তিত্ব নেই।',
'%d in total' => 'সর্বমোটঃ %d টি', '%d in total' => 'সর্বমোটঃ %d টি',
'Permanent login' => 'স্থায়ী লগইন', 'Permanent login' => 'স্থায়ী লগইন',
'Databases have been dropped.' => 'ডাটাবেজসমূহ মুছে ফেলা হয়েছে।', 'Databases have been dropped.' => 'ডাটাবেজসমূহ মুছে ফেলা হয়েছে।',
'Search data in tables' => 'টেবিলে খোঁজ করো', 'Search data in tables' => 'টেবিলে তথ্য খুঁজুন',
'Schema' => 'স্কিমা', 'Schema' => 'স্কিমা',
'Alter schema' => 'স্কিমা পরিবর্তন করো', 'Alter schema' => 'স্কিমা পরিবর্তন করো',
'Create schema' => 'স্কিমা তৈরী করো', 'Create schema' => 'স্কিমা তৈরী করো',
@@ -236,32 +236,78 @@ $translations = array(
'Sequence has been dropped.' => 'অনুক্রম মুছে ফেলা হয়েছে।', 'Sequence has been dropped.' => 'অনুক্রম মুছে ফেলা হয়েছে।',
'Sequence has been created.' => 'অনুক্রম তৈরি করা হয়েছে।', 'Sequence has been created.' => 'অনুক্রম তৈরি করা হয়েছে।',
'Sequence has been altered.' => 'অনুক্রম সম্পাদনা করা হয়েছে।', 'Sequence has been altered.' => 'অনুক্রম সম্পাদনা করা হয়েছে।',
'User types' => 'ইউজারের টাইপ', 'User types' => 'ব্যবহারকারির ধরণ',
'Create type' => 'টাইপ তৈরী কর', 'Create type' => 'ধরণ তৈরী করুন',
'Alter type' => 'টাইপ পরিবর্তন কর', 'Alter type' => 'ধরণ পরিবর্তন করুন',
'Type has been dropped.' => 'টাইপ মুছে ফেলা হয়েছে।', 'Type has been dropped.' => 'ধরণ মুছে ফেলা হয়েছে।',
'Type has been created.' => 'টাইপ তৈরি করা হয়েছে।', 'Type has been created.' => 'ধরণ তৈরি করা হয়েছে।',
'Use edit link to modify this value.' => 'এই মান পরিবর্তনের জন্য সম্পাদনা লিঙ্ক ব্যবহার কর।', 'Use edit link to modify this value.' => 'এই মানটি পরিবর্তনের জন্য সম্পাদনা লিঙ্ক ব্যবহার করুন।',
'last' => 'সর্বশেষ', 'last' => 'সর্বশেষ',
'From server' => 'সার্ভার থেকে', 'From server' => 'সার্ভার থেকে',
'System' => 'সিস্টেম', 'System' => 'সিস্টেম',
'Select data' => 'তথ্য নির্বাচন করো', 'Select data' => 'তথ্য নির্বাচন করো',
'Show structure' => 'গঠন দেখা', 'Show structure' => 'গঠন দেখা',
'empty' => 'খালি', 'empty' => 'খালি',
'Network' => 'নেটওয়ার্ক', 'Network' => 'নেটওয়ার্ক',
'Geometry' => 'জ্যামিতি', 'Geometry' => 'জ্যামিতি',
'File exists.' => 'ফাইল রয়েছে।', 'File exists.' => 'ফাইল রয়েছে।',
'Attachments' => 'সংযুক্তি', 'Attachments' => 'সংযুক্তিগুলো',
'%d query(s) executed OK.' => array('SQL-কোয়্যারী সফলভাবে সম্পন্ন হয়েছে', '%d SQL-কোয়্যারীসমূহ সফলভাবে সম্পন্ন হয়েছে'), '%d query(s) executed OK.' => array('SQL-অনুসন্ধান সফলভাবে সম্পন্ন হয়েছে', '%d SQL-অনুসন্ধানসমূহ সফলভাবে সম্পন্ন হয়েছে'),
'Show only errors' => 'শুধুমাত্র ত্রুটি দেখা', 'Show only errors' => 'শুধুমাত্র ত্রুটিগুলো দেখা',
'Refresh' => 'রিফ্রেশ', 'Refresh' => 'রিফ্রেশ',
'Invalid schema.' => 'অবৈধ স্কিমা।', 'Invalid schema.' => 'অবৈধ স্কিমা।',
'Please use one of the extensions %s.' => 'কোন একটা এক্সটেনশন %s ব্যবহার কর।', 'Please use one of the extensions %s.' => 'কোন একটা এক্সটেনশন %s ব্যবহার করুন।',
'now' => 'এখন', 'now' => 'এখন',
'ltr' => 'ltr', 'ltr' => 'ltr',
'Tables have been copied.' => 'টেবিল কপি করা হয়েছে।', 'Tables have been copied.' => 'টেবিলগুলো কপি করা হয়েছে।',
'Copy' => 'কপি', 'Copy' => 'কপি',
'Permanent link' => 'স্থায়ী লিংক', 'Permanent link' => 'স্থায়ী লিংক',
'Edit all' => 'সকল সম্পাদনা কর', 'Edit all' => 'সবগুলো সম্পাদনা করুন',
'HH:MM:SS' => 'HH:MM:SS', 'HH:MM:SS' => 'HH:MM:SS',
'Drop %s?' => null,
'Tables have been optimized.' => null,
'Materialized view' => null,
'Vacuum' => null,
'Selected' => null,
'overwrite' => null,
'DB' => null,
'Ctrl+click on a value to modify it.' => null,
'File must be in UTF-8 encoding.' => null,
'Modify' => null,
'Load more data' => null,
'Loading' => null,
'ATTACH queries are not supported.' => null,
'Warnings' => null,
'%d / ' => array(),
'Limit rows' => null,
'Adminer does not support accessing a database without a password, <a href="https://www.adminer.org/en/password/"%s>more information</a>.' => null,
'Default value' => null,
'Full table scan' => null,
'Too many unsuccessful logins, try again in %d minute(s).' => array(),
'Thanks for using Adminer, consider <a href="https://www.adminer.org/en/donation/">donating</a>.' => null,
'Master password expired. <a href="https://www.adminer.org/en/extension/"%s>Implement</a> %s method to make it permanent.' => null,
'The action will be performed after successful login with the same credentials.' => null,
'Connecting to privileged ports is not allowed.' => null,
'There is a space in the input password which might be the cause.' => null,
'If you did not send this request from Adminer then close this page.' => null,
'You can upload a big SQL file via FTP and import it from server.' => null,
'Size' => null,
'Compute' => null,
'You are offline.' => null,
'You have no privileges to update this table.' => null,
'Saving' => null,
'Unknown error.' => null,
'Database does not support password.' => null,
'Disable %s or enable %s or %s extensions.' => null,
'yes' => null,
'no' => null,
'Columns' => null,
'Nullable' => null,
'Default' => null,
'Yes' => null,
'No' => null,
'One Time Password' => null,
'Invalid OTP code.' => null,
); );

View File

@@ -10,7 +10,7 @@ $translations = array(
'Logout' => 'Odjava', 'Logout' => 'Odjava',
'Logged as: %s' => 'Prijavi se kao: %s', 'Logged as: %s' => 'Prijavi se kao: %s',
'Logout successful.' => 'Uspešna odjava.', 'Logout successful.' => 'Uspešna odjava.',
'Invalid credentials.' => 'Nevažeće dozvole.', 'Invalid server or credentials.' => null,
'Language' => 'Jezik', 'Language' => 'Jezik',
'Invalid CSRF token. Send the form again.' => 'Nevažeći CSRF kod. Proslijedite ponovo formu.', 'Invalid CSRF token. Send the form again.' => 'Nevažeći CSRF kod. Proslijedite ponovo formu.',
'No extension' => 'Bez dodataka', 'No extension' => 'Bez dodataka',
@@ -318,4 +318,41 @@ $translations = array(
'Type has been dropped.' => 'Tip je izbrisan.', 'Type has been dropped.' => 'Tip je izbrisan.',
'Type has been created.' => 'tip je spašen.', 'Type has been created.' => 'tip je spašen.',
'Alter type' => 'Ažuriraj tip', 'Alter type' => 'Ažuriraj tip',
'Drop %s?' => null,
'Materialized view' => null,
'Vacuum' => null,
'overwrite' => null,
'DB' => null,
'File must be in UTF-8 encoding.' => null,
'ATTACH queries are not supported.' => null,
'Warnings' => null,
'%d / ' => array(),
'Limit rows' => null,
'Adminer does not support accessing a database without a password, <a href="https://www.adminer.org/en/password/"%s>more information</a>.' => null,
'Default value' => null,
'Too many unsuccessful logins, try again in %d minute(s).' => array(),
'Thanks for using Adminer, consider <a href="https://www.adminer.org/en/donation/">donating</a>.' => null,
'Master password expired. <a href="https://www.adminer.org/en/extension/"%s>Implement</a> %s method to make it permanent.' => null,
'The action will be performed after successful login with the same credentials.' => null,
'Connecting to privileged ports is not allowed.' => null,
'There is a space in the input password which might be the cause.' => null,
'If you did not send this request from Adminer then close this page.' => null,
'You can upload a big SQL file via FTP and import it from server.' => null,
'Size' => null,
'Compute' => null,
'You are offline.' => null,
'You have no privileges to update this table.' => null,
'Saving' => null,
'Unknown error.' => null,
'Database does not support password.' => null,
'Disable %s or enable %s or %s extensions.' => null,
'Columns' => null,
'Nullable' => null,
'Default' => null,
'Yes' => 'Da',
'No' => 'Ne',
'One Time Password' => null,
'Invalid OTP code.' => null,
); );

View File

@@ -2,7 +2,7 @@
$translations = array( $translations = array(
'Login' => 'Inicia la sessió', 'Login' => 'Inicia la sessió',
'Logout successful.' => 'Desconnexió correcta.', 'Logout successful.' => 'Desconnexió correcta.',
'Invalid credentials.' => 'Credencials invàlids.', 'Invalid server or credentials.' => null,
'Server' => 'Servidor', 'Server' => 'Servidor',
'Username' => 'Nom d\'usuari', 'Username' => 'Nom d\'usuari',
'Password' => 'Contrasenya', 'Password' => 'Contrasenya',
@@ -35,7 +35,7 @@ $translations = array(
'Use' => 'Utilitza', 'Use' => 'Utilitza',
'No tables.' => 'No hi ha cap taula.', 'No tables.' => 'No hi ha cap taula.',
'select' => 'registres', 'select' => 'registres',
'Item has been deleted.' => 'S\'ha suprmit l\'element.', 'Item has been deleted.' => 'S\'ha suprimit l\'element.',
'Item has been updated.' => 'S\'ha actualitzat l\'element.', 'Item has been updated.' => 'S\'ha actualitzat l\'element.',
'Item%s has been inserted.' => 'S\'ha insertat l\'element%s.', 'Item%s has been inserted.' => 'S\'ha insertat l\'element%s.',
'Edit' => 'Edita', 'Edit' => 'Edita',
@@ -44,9 +44,9 @@ $translations = array(
'Delete' => 'Suprimeix', 'Delete' => 'Suprimeix',
'Database' => 'Base de dades', 'Database' => 'Base de dades',
'Routines' => 'Rutines', 'Routines' => 'Rutines',
'Indexes have been altered.' => 'S\'han modificat els índexs.', 'Indexes have been altered.' => 'S\'han modificat els índex.',
'Indexes' => 'Índexs', 'Indexes' => 'Índexs',
'Alter indexes' => 'Modifica els índexs', 'Alter indexes' => 'Modifica els índex',
'Add next' => 'Afegeix el següent', 'Add next' => 'Afegeix el següent',
'Language' => 'Idioma', 'Language' => 'Idioma',
'Select' => 'Selecciona', 'Select' => 'Selecciona',
@@ -74,11 +74,11 @@ $translations = array(
'No commands to execute.' => 'Cap comanda per executar.', 'No commands to execute.' => 'Cap comanda per executar.',
'Unable to upload a file.' => 'Impossible adjuntar el fitxer.', 'Unable to upload a file.' => 'Impossible adjuntar el fitxer.',
'File upload' => 'Adjunta un fitxer', 'File upload' => 'Adjunta un fitxer',
'File uploads are disabled.' => 'L\'ddjunció de fitxers està desactivada.', 'File uploads are disabled.' => 'La pujada de fitxers està desactivada.',
'Routine has been called, %d row(s) affected.' => array('S\'ha cridat la rutina, %d registre modificat.', 'S\'ha cridat la rutina, %d registres modificats.'), 'Routine has been called, %d row(s) affected.' => array('S\'ha cridat la rutina, %d registre modificat.', 'S\'ha cridat la rutina, %d registres modificats.'),
'Call' => 'Crida', 'Call' => 'Crida',
'No extension' => 'Cap extensió', 'No extension' => 'Cap extensió',
'None of the supported PHP extensions (%s) are available.' => 'No hi ha cap de les extensions PHP soporatades (%s) disponible.', 'None of the supported PHP extensions (%s) are available.' => 'No hi ha cap de les extensions PHP suportades (%s) disponible.',
'Session support must be enabled.' => 'Cal que estigui permès l\'us de sessions.', 'Session support must be enabled.' => 'Cal que estigui permès l\'us de sessions.',
'Session expired, please login again.' => 'La sessió ha expirat, torna a iniciar-ne una.', 'Session expired, please login again.' => 'La sessió ha expirat, torna a iniciar-ne una.',
'Text length' => 'Longitud del text', 'Text length' => 'Longitud del text',
@@ -86,7 +86,7 @@ $translations = array(
'Foreign key has been altered.' => 'S\'ha modificat la clau forana.', 'Foreign key has been altered.' => 'S\'ha modificat la clau forana.',
'Foreign key has been created.' => 'S\'ha creat la clau forana.', 'Foreign key has been created.' => 'S\'ha creat la clau forana.',
'Foreign key' => 'Clau forana', 'Foreign key' => 'Clau forana',
'Target table' => 'Taula de destí', 'Target table' => 'Taula de destinació',
'Change' => 'Canvi', 'Change' => 'Canvi',
'Source' => 'Font', 'Source' => 'Font',
'Target' => 'Destí', 'Target' => 'Destí',
@@ -139,7 +139,7 @@ $translations = array(
'Grant' => 'Grant', 'Grant' => 'Grant',
'Revoke' => 'Revoke', 'Revoke' => 'Revoke',
'Too big POST data. Reduce the data or increase the %s configuration directive.' => 'Les dades POST són massa grans. Redueix les dades o incrementa la directiva de configuració %s.', 'Too big POST data. Reduce the data or increase the %s configuration directive.' => 'Les dades POST són massa grans. Redueix les dades o incrementa la directiva de configuració %s.',
'Logged as: %s' => 'Connectat com: %s', 'Logged as: %s' => 'Connectat com a: %s',
'Move up' => 'Mou a dalt', 'Move up' => 'Mou a dalt',
'Move down' => 'Mou a baix', 'Move down' => 'Mou a baix',
'Functions' => 'Funcions', 'Functions' => 'Funcions',
@@ -204,7 +204,7 @@ $translations = array(
'[yyyy]-mm-dd' => 'dd/mm/[aaaa]', '[yyyy]-mm-dd' => 'dd/mm/[aaaa]',
'History' => 'Història', 'History' => 'Història',
'Variables' => 'Variables', '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.' => 'Les columnes origen i destí han de ser del mateix tipus, la columna destí ha d\'estar indexada i les dades referenciades han d\'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.' => 'Les columnes d\'origen i de destinació han de ser del mateix tipus, la columna de destinació ha d\'estar indexada i les dades referenciades han d\'existir.',
'E-mail' => 'Correu electrònic', 'E-mail' => 'Correu electrònic',
'From' => 'De', 'From' => 'De',
'Subject' => 'Assumpte', 'Subject' => 'Assumpte',
@@ -265,4 +265,49 @@ $translations = array(
'Permanent link' => 'Enllaç permanent', 'Permanent link' => 'Enllaç permanent',
'Edit all' => 'Edita-ho tot', 'Edit all' => 'Edita-ho tot',
'HH:MM:SS' => 'HH:MM:SS', 'HH:MM:SS' => 'HH:MM:SS',
'Drop %s?' => null,
'Tables have been optimized.' => null,
'Materialized view' => null,
'Vacuum' => null,
'Selected' => null,
'overwrite' => null,
'DB' => null,
'File must be in UTF-8 encoding.' => null,
'Modify' => null,
'Load more data' => null,
'Loading' => null,
'ATTACH queries are not supported.' => null,
'Warnings' => null,
'%d / ' => array(),
'Limit rows' => null,
'Adminer does not support accessing a database without a password, <a href="https://www.adminer.org/en/password/"%s>more information</a>.' => null,
'Default value' => null,
'Full table scan' => null,
'Too many unsuccessful logins, try again in %d minute(s).' => array(),
'Thanks for using Adminer, consider <a href="https://www.adminer.org/en/donation/">donating</a>.' => null,
'Master password expired. <a href="https://www.adminer.org/en/extension/"%s>Implement</a> %s method to make it permanent.' => null,
'The action will be performed after successful login with the same credentials.' => null,
'Connecting to privileged ports is not allowed.' => null,
'There is a space in the input password which might be the cause.' => null,
'If you did not send this request from Adminer then close this page.' => null,
'You can upload a big SQL file via FTP and import it from server.' => null,
'Size' => null,
'Compute' => null,
'You are offline.' => null,
'You have no privileges to update this table.' => null,
'Saving' => null,
'Unknown error.' => null,
'Database does not support password.' => null,
'Disable %s or enable %s or %s extensions.' => null,
'yes' => null,
'no' => null,
'Columns' => null,
'Nullable' => null,
'Default' => null,
'Yes' => null,
'No' => null,
'One Time Password' => null,
'Invalid OTP code.' => null,
); );

View File

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

View File

@@ -9,7 +9,7 @@ $translations = array(
'Logout' => 'Log ud', 'Logout' => 'Log ud',
'Logged as: %s' => 'Logget ind som: %s', 'Logged as: %s' => 'Logget ind som: %s',
'Logout successful.' => 'Log af vellykket.', 'Logout successful.' => 'Log af vellykket.',
'Invalid credentials.' => 'Ugyldige log ind oplysninger.', 'Invalid server or credentials.' => null,
'Master password expired. <a href="https://www.adminer.org/en/extension/"%s>Implement</a> %s method to make it permanent.' => 'Master-kodeordet er udløbet. <a href="https://www.adminer.org/en/extension/"%s>Implementer</a> en metode for %s for at gøre det permanent.', 'Master password expired. <a href="https://www.adminer.org/en/extension/"%s>Implement</a> %s method to make it permanent.' => 'Master-kodeordet er udløbet. <a href="https://www.adminer.org/en/extension/"%s>Implementer</a> en metode for %s for at gøre det permanent.',
'Language' => 'Sprog', 'Language' => 'Sprog',
'Invalid CSRF token. Send the form again.' => 'Ugyldigt CSRF-token - Genindsend formen.', 'Invalid CSRF token. Send the form again.' => 'Ugyldigt CSRF-token - Genindsend formen.',
@@ -279,4 +279,35 @@ $translations = array(
'Type has been created.' => 'Typen er oprettet.', 'Type has been created.' => 'Typen er oprettet.',
'Alter type' => 'Ændre type', 'Alter type' => 'Ændre type',
'Saving' => 'Gemmer', 'Saving' => 'Gemmer',
'Drop %s?' => null,
'Materialized view' => null,
'overwrite' => null,
'DB' => null,
'ATTACH queries are not supported.' => null,
'Warnings' => null,
'%d / ' => array(),
'Limit rows' => null,
'Adminer does not support accessing a database without a password, <a href="https://www.adminer.org/en/password/"%s>more information</a>.' => null,
'Default value' => null,
'Too many unsuccessful logins, try again in %d minute(s).' => array(),
'Thanks for using Adminer, consider <a href="https://www.adminer.org/en/donation/">donating</a>.' => null,
'The action will be performed after successful login with the same credentials.' => null,
'Connecting to privileged ports is not allowed.' => null,
'There is a space in the input password which might be the cause.' => null,
'If you did not send this request from Adminer then close this page.' => null,
'Size' => null,
'Compute' => null,
'You are offline.' => null,
'Unknown error.' => null,
'Database does not support password.' => null,
'Disable %s or enable %s or %s extensions.' => null,
'Columns' => null,
'Nullable' => null,
'Default' => null,
'Yes' => 'Ja',
'No' => 'Nej',
'One Time Password' => null,
'Invalid OTP code.' => null,
); );

View File

@@ -3,7 +3,7 @@ $translations = array(
'Login' => 'Login', 'Login' => 'Login',
'Logout successful.' => 'Abmeldung erfolgreich.', 'Logout successful.' => 'Abmeldung erfolgreich.',
'Thanks for using Adminer, consider <a href="https://www.adminer.org/en/donation/">donating</a>.' => 'Danke, dass Sie Adminer genutzt haben. <a href="https://www.adminer.org/de/donation/">Spenden willkommen!</a>', 'Thanks for using Adminer, consider <a href="https://www.adminer.org/en/donation/">donating</a>.' => 'Danke, dass Sie Adminer genutzt haben. <a href="https://www.adminer.org/de/donation/">Spenden willkommen!</a>',
'Invalid credentials.' => 'Ungültige Anmelde-Informationen.', 'Invalid server or credentials.' => 'Ungültige Server oder Anmelde-Informationen.',
'Server' => 'Server', 'Server' => 'Server',
'Username' => 'Benutzer', 'Username' => 'Benutzer',
'Password' => 'Passwort', 'Password' => 'Passwort',
@@ -280,10 +280,34 @@ $translations = array(
'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.', '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 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 are offline.' => 'Sie sind offline.',
'You have no privileges to update this table.' => 'Sie haben keine Rechte, um diese Tabelle zu aktualisieren.' , 'You have no privileges to update this table.' => 'Sie haben keine Rechte, um diese Tabelle zu aktualisieren.',
'Saving' => 'Speichere', 'Saving' => 'Speichere',
'yes' => 'ja', 'yes' => 'ja',
'no' => 'nein', 'no' => 'nein',
'Master password expired. <a href="https://www.adminer.org/en/extension/"%s>Implement</a> %s method to make it permanent.' => 'Das Master-Passwort ist abgelaufen. <a href="https://www.adminer.org/de/extension/"%s>Implementieren</a> Sie die %s Methode, um es permanent zu machen.', 'Master password expired. <a href="https://www.adminer.org/en/extension/"%s>Implement</a> %s method to make it permanent.' => 'Das Master-Passwort ist abgelaufen. <a href="https://www.adminer.org/de/extension/"%s>Implementieren</a> Sie die %s Methode, um es permanent zu machen.',
'%d / ' => '%d / ', '%d / ' => '%d / ',
'Drop %s?' => null,
'Materialized view' => null,
'Vacuum' => null,
'overwrite' => null,
'DB' => null,
'ATTACH queries are not supported.' => null,
'Warnings' => null,
'Adminer does not support accessing a database without a password, <a href="https://www.adminer.org/en/password/"%s>more information</a>.' => null,
'Full table scan' => null,
'The action will be performed after successful login with the same credentials.' => null,
'Connecting to privileged ports is not allowed.' => null,
'There is a space in the input password which might be the cause.' => null,
'Unknown error.' => null,
'Database does not support password.' => null,
'Disable %s or enable %s or %s extensions.' => null,
'Columns' => null,
'Nullable' => null,
'Default' => null,
'Yes' => 'Ja',
'No' => 'Nein',
'One Time Password' => null,
'Invalid OTP code.' => null,
); );

View File

@@ -10,23 +10,23 @@ $translations = array(
'Logout' => 'Αποσύνδεση', 'Logout' => 'Αποσύνδεση',
'Logged as: %s' => 'Συνδεθήκατε ως %s', 'Logged as: %s' => 'Συνδεθήκατε ως %s',
'Logout successful.' => 'Αποσυνδεθήκατε με επιτυχία.', 'Logout successful.' => 'Αποσυνδεθήκατε με επιτυχία.',
'Invalid credentials.' => 'Εσφαλμένα Διαπιστευτήρια.', 'Invalid server or credentials.' => null,
'Too many unsuccessful logins, try again in %d minute(s).' => array('Επανηλημμένες ανεπιτυχείς προσπάθειες σύνδεσης, δοκιμάστε ξανά σε %s λεπτό.', 'Επανηλημμένες ανεπιτυχείς προσπάθειες σύνδεσης, δοκιμάστε ξανά σε %s λεπτά.'), 'Too many unsuccessful logins, try again in %d minute(s).' => array('Επανειλημμένες ανεπιτυχείς προσπάθειες σύνδεσης, δοκιμάστε ξανά σε %s λεπτό.', 'Επανειλημμένες ανεπιτυχείς προσπάθειες σύνδεσης, δοκιμάστε ξανά σε %s λεπτά.'),
'Master password expired. <a href="https://www.adminer.org/en/extension/"%s>Implement</a> %s method to make it permanent.' => 'Έλειξε ο Κύριος Κωδικός. <a href="https://www.adminer.org/en/extension/"%s>Ενεργοποιήστε</a> τη μέθοδο %s για να τον κάνετε μόνιμο.', 'Master password expired. <a href="https://www.adminer.org/en/extension/"%s>Implement</a> %s method to make it permanent.' => 'Έληξε ο Κύριος Κωδικός. <a href="https://www.adminer.org/en/extension/"%s>Ενεργοποιήστε</a> τη μέθοδο %s για να τον κάνετε μόνιμο.',
'Language' => 'Γλώσσα', 'Language' => 'Γλώσσα',
'Invalid CSRF token. Send the form again.' => 'Άκυρο κουπόνι CSRF. Στείλτε τη φόρμα ξανά.', 'Invalid CSRF token. Send the form again.' => 'Άκυρο κουπόνι CSRF. Στείλτε τη φόρμα ξανά.',
'If you did not send this request from Adminer then close this page.' => 'Αν δε στείλατε αυτό το αίτημα από το Adminer, τότε κλείστε αυτή τη σελίδα.', 'If you did not send this request from Adminer then close this page.' => 'Αν δε στείλατε αυτό το αίτημα από το Adminer, τότε κλείστε αυτή τη σελίδα.',
'No extension' => 'Χωρίς Επεκτάσεις', 'No extension' => 'Καμία Επέκταση',
'None of the supported PHP extensions (%s) are available.' => 'Καμία από τις υποστηριζόμενες επεκτάσεις PHP (%s) δεν είναι διαθέσιμη.', 'None of the supported PHP extensions (%s) are available.' => 'Καμία από τις υποστηριζόμενες επεκτάσεις PHP (%s) δεν είναι διαθέσιμη.',
'Session support must be enabled.' => 'Πρέπει να είναι ενεργοποιημένη η υποστήριξη συνεδριών.', 'Session support must be enabled.' => 'Πρέπει να είναι ενεργοποιημένη η υποστήριξη συνεδριών.',
'Session expired, please login again.' => 'Η συνεδρία έληξε, παρακαλώ συνδεθείτε ξανά.', 'Session expired, please login again.' => 'Η συνεδρία έληξε, παρακαλώ συνδεθείτε ξανά.',
'%s version: %s through PHP extension %s' => '%s έκδοση: %s μέσω επέκτασης PHP %s', '%s version: %s through PHP extension %s' => '%s έκδοση: %s μέσω επέκτασης PHP %s',
'Refresh' => 'Ανανέωση', 'Refresh' => 'Ανανέωση',
// text direction - 'ltr' or 'rtl' // text direction - 'ltr' or 'rtl'
'ltr' => 'ltr', 'ltr' => 'ltr',
'Privileges' => 'Προνόμια', 'Privileges' => 'Δικαιώματα',
'Create user' => 'Δημιουργία Χρήστη', 'Create user' => 'Δημιουργία Χρήστη',
'User has been dropped.' => 'Ο Χρήστης διαγράφηκε.', 'User has been dropped.' => 'Ο Χρήστης διαγράφηκε.',
'User has been altered.' => 'Ο Χρήστης τροποποιήθηκε.', 'User has been altered.' => 'Ο Χρήστης τροποποιήθηκε.',
@@ -36,18 +36,18 @@ $translations = array(
'Routine' => 'Ρουτίνα', 'Routine' => 'Ρουτίνα',
'Grant' => 'Παραχώρηση', 'Grant' => 'Παραχώρηση',
'Revoke' => 'Ανάκληση', 'Revoke' => 'Ανάκληση',
'Process list' => 'Λίστα διεργασιών', 'Process list' => 'Λίστα διεργασιών',
'%d process(es) have been killed.' => array('Τερματίστηκαν %d διεργασία.', 'Τερματίστηκαν %d διεργασίες.'), '%d process(es) have been killed.' => array('Τερματίστηκε %d διεργασία.', 'Τερματίστηκαν %d διεργασίες.'),
'Kill' => 'Τερματισμός', 'Kill' => 'Τερματισμός',
'Variables' => 'Μεταβλητές', 'Variables' => 'Μεταβλητές',
'Status' => 'Κατάσταση', 'Status' => 'Κατάσταση',
'SQL command' => 'Εντολή SQL', 'SQL command' => 'Εντολή SQL',
'%d query(s) executed OK.' => array('Το ερώτημα %d εκτελέστηκε ΟΚ.', 'Τα ερώτηματα %d εκτελέστηκαν ΟΚ.'), '%d query(s) executed OK.' => array('Το ερώτημα %d εκτελέστηκε ΟΚ.', 'Τα ερώτηματα %d εκτελέστηκαν ΟΚ.'),
'Query executed OK, %d row(s) affected.' => array('Το ερώτημα εκτελέστηκε ΟΚ, επιρρεάστηκε %d σειρά.', 'Το ερώτημα εκτελέστηκε ΟΚ, επιρρεάστηκαν %d σειρές.'), 'Query executed OK, %d row(s) affected.' => array('Το ερώτημα εκτελέστηκε ΟΚ, επηρεάστηκε %d σειρά.', 'Το ερώτημα εκτελέστηκε ΟΚ, επηρεάστηκαν %d σειρές.'),
'No commands to execute.' => 'Δεν υπάρχει εντολή να εκτελεστεί.', 'No commands to execute.' => 'Δεν υπάρχουν εντολές να εκτελεστούν.',
'Error in query' => 'Σφάλμα στο ερώτημα', 'Error in query' => 'Σφάλμα στο ερώτημα',
'Execute' => 'Εκτέλεση', 'Execute' => 'Εκτέλεση',
'Stop on error' => 'Διακοπή όταν υπάρχει σφάλμα', 'Stop on error' => 'Διακοπή όταν υπάρχει σφάλμα',
@@ -57,19 +57,19 @@ $translations = array(
'History' => 'Ιστορικό', 'History' => 'Ιστορικό',
'Clear' => 'Καθαρισμός', 'Clear' => 'Καθαρισμός',
'Edit all' => 'Επεξεργασία όλων', 'Edit all' => 'Επεξεργασία όλων',
'File upload' => 'Ανέβασμα αρχείου', 'File upload' => 'Μεταφόρτωση αρχείου',
'From server' => 'Από διακομιστή', 'From server' => 'Από διακομιστή',
'Webserver file %s' => 'Αρχείο %s από διακομιστή web', 'Webserver file %s' => 'Αρχείο %s από διακομιστή web',
'Run file' => 'Εκτέλεση αρχείου', 'Run file' => 'Εκτέλεση αρχείου',
'File does not exist.' => 'Το αρχείο δεν υπάρχει.', 'File does not exist.' => 'Το αρχείο δεν υπάρχει.',
'File uploads are disabled.' => 'Έχει απενεργοποιηθεί το ανέβασμα αρχείων.', 'File uploads are disabled.' => 'Έχει απενεργοποιηθεί η μεταφόρτωση αρχείων.',
'Unable to upload a file.' => 'Δεν είναι δυνατόν να ανεβεί το αρχείο.', 'Unable to upload a file.' => 'Αδυναμία μεταφόρτωσης αρχείου.',
'Maximum allowed file size is %sB.' => 'Το μέγιστο επιτρεπόμενο μέγεθος αρχείο για ανέβασμα είναι %sB.', 'Maximum allowed file size is %sB.' => 'Το μέγιστο επιτρεπόμενο μέγεθος αρχείου είναι %sB.',
'Too big POST data. Reduce the data or increase the %s configuration directive.' => 'Πολλά δεδομένα POST. Μείωστε τα περιεχόμενα ή αυξήστε την σχετική ρύθμιση %s.', 'Too big POST data. Reduce the data or increase the %s configuration directive.' => 'Πολλά δεδομένα POST. Μείωστε τα περιεχόμενα ή αυξήστε την σχετική ρύθμιση %s.',
'You can upload a big SQL file via FTP and import it from server.' => 'Μπορείτε να ανεβάσετε ένα μεγάλο αρχείο SQL μέσω FTP και να το εισάγετε από το διακομιστή.', 'You can upload a big SQL file via FTP and import it from server.' => 'Μπορείτε να μεταφορτώσετε ένα μεγάλο αρχείο SQL μέσω FTP και να το εισάγετε από το διακομιστή.',
'You are offline.' => 'Βρίσκεστε εκτός σύνδεσης.', 'You are offline.' => 'Βρίσκεστε εκτός σύνδεσης.',
'Export' => 'Εξαγωγή', 'Export' => 'Εξαγωγή',
'Output' => 'Αποτέλεσμα', 'Output' => 'Αποτέλεσμα',
'open' => 'άνοιγμα', 'open' => 'άνοιγμα',
@@ -77,12 +77,12 @@ $translations = array(
'Saving' => 'Γίνεται Αποθήκευση', 'Saving' => 'Γίνεται Αποθήκευση',
'Format' => 'Μορφή', 'Format' => 'Μορφή',
'Data' => 'Δεδομένα', 'Data' => 'Δεδομένα',
'Database' => 'Β. Δεδομένων', 'Database' => 'Β. Δεδομένων',
'database' => 'β. δεδομένων', 'database' => 'β. δεδομένων',
'Use' => 'χρήση', 'Use' => 'χρήση',
'Select database' => 'Επιλέξτε Β.Δ.', 'Select database' => 'Επιλέξτε Β.Δ.',
'Invalid database.' => 'Άκυρη Β.Δ.', 'Invalid database.' => 'Λανθασμένη Β.Δ.',
'Database has been dropped.' => 'Η Β.Δ. διαγράφηκε.', 'Database has been dropped.' => 'Η Β.Δ. διαγράφηκε.',
'Databases have been dropped.' => 'Οι Β.Δ. διαγράφηκαν.', 'Databases have been dropped.' => 'Οι Β.Δ. διαγράφηκαν.',
'Database has been created.' => 'Η Β.Δ. δημιουργήθηκε.', 'Database has been created.' => 'Η Β.Δ. δημιουργήθηκε.',
@@ -91,10 +91,10 @@ $translations = array(
'Alter database' => 'Τροποποίηση Β.Δ.', 'Alter database' => 'Τροποποίηση Β.Δ.',
'Create database' => 'Δημιουργία Β.Δ.', 'Create database' => 'Δημιουργία Β.Δ.',
'Database schema' => 'Σχήμα Β.Δ.', 'Database schema' => 'Σχήμα Β.Δ.',
// link to current database schema layout // link to current database schema layout
'Permanent link' => 'Μόνιμος Σύνδεσμος', 'Permanent link' => 'Μόνιμος Σύνδεσμος',
// thousands separator - must contain single byte // thousands separator - must contain single byte
',' => '.', ',' => '.',
'0123456789' => '0123456789', '0123456789' => '0123456789',
@@ -111,26 +111,26 @@ $translations = array(
'Check' => 'Έλεγχος', 'Check' => 'Έλεγχος',
'Repair' => 'Επιδιόρθωση', 'Repair' => 'Επιδιόρθωση',
'Truncate' => 'Περικοπή', 'Truncate' => 'Περικοπή',
'Tables have been truncated.' => 'Οι πίνακες περικόπτηκαν.', 'Tables have been truncated.' => 'Οι πίνακες περικόπηκαν.',
'Move to other database' => 'Μεταφορά σε άλλη Β.Δ.', 'Move to other database' => 'Μεταφορά σε άλλη Β.Δ.',
'Move' => 'Μεταφορά', 'Move' => 'Μεταφορά',
'Tables have been moved.' => 'Οι πίνακες μεταφέρθηκαν.', 'Tables have been moved.' => 'Οι πίνακες μεταφέρθηκαν.',
'Copy' => 'Αντιγραφή', 'Copy' => 'Αντιγραφή',
'Tables have been copied.' => 'Οι πίνακες αντιγράφηκαν.', 'Tables have been copied.' => 'Οι πίνακες αντιγράφηκαν.',
'Routines' => 'Ρουτίνες', 'Routines' => 'Ρουτίνες',
'Routine has been called, %d row(s) affected.' => array('Η ρουτίνα εκτελέστηκε, επιρρεάστηκε %d σειρά.', 'Η ρουτίνα εκτελέστηκε, επιρρεάστηκαν %d σειρές.'), 'Routine has been called, %d row(s) affected.' => array('Η ρουτίνα εκτελέστηκε, επηρεάστηκε %d σειρά.', 'Η ρουτίνα εκτελέστηκε, επηρεάστηκαν %d σειρές.'),
'Call' => 'Εκτέλεση', 'Call' => 'Εκτέλεση',
'Parameter name' => 'Όνομα παραμέτρου', 'Parameter name' => 'Όνομα παραμέτρου',
'Create procedure' => 'Δημιουργία διαδικασίας', 'Create procedure' => 'Δημιουργία διαδικασίας',
'Create function' => 'Δημιουργία Λειτουργίας', 'Create function' => 'Δημιουργία Συνάρτησης',
'Routine has been dropped.' => 'Η ρουτίνα διαγράφηκε.', 'Routine has been dropped.' => 'Η ρουτίνα διαγράφηκε.',
'Routine has been altered.' => 'Η ρουτίνα τροποποιήθηκε.', 'Routine has been altered.' => 'Η ρουτίνα τροποποιήθηκε.',
'Routine has been created.' => 'Η ρουτίνα δημιουργήθηκε.', 'Routine has been created.' => 'Η ρουτίνα δημιουργήθηκε.',
'Alter function' => 'Τροποποίηση λειτουργίας', 'Alter function' => 'Τροποποίηση λειτουργίας',
'Alter procedure' => 'Τροποποίηση διαδικασίας', 'Alter procedure' => 'Τροποποίηση διαδικασίας',
'Return type' => 'Επιστρεφόμενος τύπος', 'Return type' => 'Επιστρεφόμενος τύπος',
'Events' => 'Γεγονός', 'Events' => 'Γεγονός',
'Event has been dropped.' => 'Το γεγονός διαγράφηκε.', 'Event has been dropped.' => 'Το γεγονός διαγράφηκε.',
'Event has been altered.' => 'Το γεγονός τροποποιήθηκε.', 'Event has been altered.' => 'Το γεγονός τροποποιήθηκε.',
@@ -143,7 +143,7 @@ $translations = array(
'Start' => 'Έναρξη', 'Start' => 'Έναρξη',
'End' => 'Λήξη', 'End' => 'Λήξη',
'On completion preserve' => 'Κατά την ολοκλήρωση διατήρησε', 'On completion preserve' => 'Κατά την ολοκλήρωση διατήρησε',
'Tables' => 'Πίνακες', 'Tables' => 'Πίνακες',
'Tables and views' => 'Πίνακες και Προβολές', 'Tables and views' => 'Πίνακες και Προβολές',
'Table' => 'Πίνακας', 'Table' => 'Πίνακας',
@@ -151,7 +151,7 @@ $translations = array(
'Alter table' => 'Τροποποίηση πίνακα', 'Alter table' => 'Τροποποίηση πίνακα',
'Create table' => 'Δημιουργία πίνακα', 'Create table' => 'Δημιουργία πίνακα',
'Table has been dropped.' => 'Ο πίνακας διαγράφηκε.', 'Table has been dropped.' => 'Ο πίνακας διαγράφηκε.',
'Tables have been dropped.' => 'Οι πινακες διαγράφηκαν.', 'Tables have been dropped.' => 'Οι πίνακες διαγράφηκαν.',
'Tables have been optimized.' => 'Οι πίνακες βελτιστοποιήθηκαν.', 'Tables have been optimized.' => 'Οι πίνακες βελτιστοποιήθηκαν.',
'Table has been altered.' => 'Ο πίνακας τροποποιήθηκε.', 'Table has been altered.' => 'Ο πίνακας τροποποιήθηκε.',
'Table has been created.' => 'Ο πίνακας δημιουργήθηκε.', 'Table has been created.' => 'Ο πίνακας δημιουργήθηκε.',
@@ -175,12 +175,12 @@ $translations = array(
'Move down' => 'Μετακίνηση προς τα κάτω', 'Move down' => 'Μετακίνηση προς τα κάτω',
'Remove' => 'Αφαίρεση', 'Remove' => 'Αφαίρεση',
'Maximum number of allowed fields exceeded. Please increase %s.' => 'Υπέρβαση μέγιστου επιτρεπόμενου αριθμού πεδίων. Παρακαλώ αυξήστε %s.', 'Maximum number of allowed fields exceeded. Please increase %s.' => 'Υπέρβαση μέγιστου επιτρεπόμενου αριθμού πεδίων. Παρακαλώ αυξήστε %s.',
'Partition by' => 'Τμηματοποίηση ανά', 'Partition by' => 'Τμηματοποίηση ανά',
'Partitions' => 'Τμήματα', 'Partitions' => 'Τμήματα',
'Partition name' => 'Όνομα Τμήματος', 'Partition name' => 'Όνομα Τμήματος',
'Values' => 'Τιμές', 'Values' => 'Τιμές',
'View' => 'Προβολή', 'View' => 'Προβολή',
'Materialized view' => 'Υλοποιημένη προβολή', 'Materialized view' => 'Υλοποιημένη προβολή',
'View has been dropped.' => 'Η προβολή διαγράφηκε.', 'View has been dropped.' => 'Η προβολή διαγράφηκε.',
@@ -188,14 +188,14 @@ $translations = array(
'View has been created.' => 'Η προβολή δημιουργήθηκε.', 'View has been created.' => 'Η προβολή δημιουργήθηκε.',
'Alter view' => 'Τροποποίηση προβολής', 'Alter view' => 'Τροποποίηση προβολής',
'Create view' => 'Δημιουργία προβολής', 'Create view' => 'Δημιουργία προβολής',
'Indexes' => 'Δείκτες', 'Indexes' => 'Δείκτες',
'Indexes have been altered.' => 'Οι δείκτες τροποποιήθηκαν.', 'Indexes have been altered.' => 'Οι δείκτες τροποποιήθηκαν.',
'Alter indexes' => 'Τροποποίηση δεικτών', 'Alter indexes' => 'Τροποποίηση δεικτών',
'Add next' => 'Προσθήκη επόμενου', 'Add next' => 'Προσθήκη επόμενου',
'Index Type' => 'Τύπος δείκτη', 'Index Type' => 'Τύπος δείκτη',
'Column (length)' => 'Στήλη (μήκος)', 'Column (length)' => 'Στήλη (μήκος)',
'Foreign keys' => 'Εξαρτημένα κλειδιά', 'Foreign keys' => 'Εξαρτημένα κλειδιά',
'Foreign key' => 'Εξαρτημένο κλειδί', 'Foreign key' => 'Εξαρτημένο κλειδί',
'Foreign key has been dropped.' => 'Το εξαρτημένο κλειδί διαγράφηκε.', 'Foreign key has been dropped.' => 'Το εξαρτημένο κλειδί διαγράφηκε.',
@@ -210,8 +210,8 @@ $translations = array(
'Add foreign key' => 'Προσθήκη εξαρτημένου κλειδιού', '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' => 'Εναύσματα', 'Triggers' => 'Εναύσματα',
'Add trigger' => 'Προσθήκη εναύσματος', 'Add trigger' => 'Προσθήκη εναύσματος',
'Trigger has been dropped.' => 'Το έναυσμα διαγράφηκε.', 'Trigger has been dropped.' => 'Το έναυσμα διαγράφηκε.',
@@ -222,7 +222,7 @@ $translations = array(
'Time' => 'Ώρα', 'Time' => 'Ώρα',
'Event' => 'Γεγονός', 'Event' => 'Γεγονός',
'Name' => 'Όνομα', 'Name' => 'Όνομα',
'select' => 'επιλογή', 'select' => 'επιλογή',
'Select' => 'Επιλογή', 'Select' => 'Επιλογή',
'Select data' => 'Επιλέξτε δεδομένα', 'Select data' => 'Επιλέξτε δεδομένα',
@@ -248,21 +248,21 @@ $translations = array(
'Loading' => 'Φορτώνει', 'Loading' => 'Φορτώνει',
'Whole result' => 'Όλο το αποτέλεσμα', 'Whole result' => 'Όλο το αποτέλεσμα',
'%d byte(s)' => array('%d byte', '%d bytes'), '%d byte(s)' => array('%d byte', '%d bytes'),
'Import' => 'Εισαγωγή', 'Import' => 'Εισαγωγή',
'%d row(s) have been imported.' => array('$d σειρά εισήχθη.', '%d σειρές εισήχθησαν.'), '%d row(s) have been imported.' => array('$d σειρά εισήχθη.', '%d σειρές εισήχθησαν.'),
'File must be in UTF-8 encoding.' => 'Το αρχείο πρέπει να έχει κωδικοποίηση UTF-8.', 'File must be in UTF-8 encoding.' => 'Το αρχείο πρέπει να έχει κωδικοποίηση UTF-8.',
// in-place editing in select // in-place editing in select
'Modify' => 'Τροποποίηση', 'Modify' => 'Τροποποίηση',
'Ctrl+click on a value to modify it.' => 'Πιέστε Ctrl+click σε μια τιμή για να την τροποποιήσετε.', 'Ctrl+click on a value to modify it.' => 'Πιέστε Ctrl+click σε μια τιμή για να την τροποποιήσετε.',
'Use edit link to modify this value.' => 'Χρησιμοποιήστε το σύνδεσμο επεξεργασία για να τροποποιήσετε την τιμή.', 'Use edit link to modify this value.' => 'Χρησιμοποιήστε το σύνδεσμο επεξεργασία για να τροποποιήσετε την τιμή.',
// %s can contain auto-increment value // %s can contain auto-increment value
'Item%s has been inserted.' => 'Η εγγραφή%s εισήχθη.', 'Item%s has been inserted.' => 'Η εγγραφή%s εισήχθη.',
'Item has been deleted.' => 'Η εγγραφή διαγράφηκε.', 'Item has been deleted.' => 'Η εγγραφή διαγράφηκε.',
'Item has been updated.' => 'Η εγγραφή ενημερώθηκε.', 'Item has been updated.' => 'Η εγγραφή ενημερώθηκε.',
'%d item(s) have been affected.' => array('Επιρρεάστηκε %d εγγραφή.', 'Επιρρεάστηκαν %d εγγραφές.'), '%d item(s) have been affected.' => array('Επηρεάστηκε %d εγγραφή.', 'Επηρεάστηκαν %d εγγραφές.'),
'New item' => 'Νέα εγγραφή', 'New item' => 'Νέα εγγραφή',
'original' => 'πρωτότυπο', 'original' => 'πρωτότυπο',
// label for value '' in enum data type // label for value '' in enum data type
@@ -274,17 +274,17 @@ $translations = array(
'Save and continue edit' => 'Αποθήκευση και συνέχεια επεξεργασίας', 'Save and continue edit' => 'Αποθήκευση και συνέχεια επεξεργασίας',
'Save and insert next' => 'Αποθήκευση και εισαγωγή επόμενου', 'Save and insert next' => 'Αποθήκευση και εισαγωγή επόμενου',
'Selected' => 'Επιλεγμένα', 'Selected' => 'Επιλεγμένα',
'Clone' => 'Κλονοποίηση', 'Clone' => 'Κλωνοποίηση',
'Delete' => 'Διαγραφή', 'Delete' => 'Διαγραφή',
'You have no privileges to update this table.' => 'Δεν έχετε δικαίωμα να τροποποιήσετε αυτό τον πίνακα.', 'You have no privileges to update this table.' => 'Δεν έχετε δικαίωμα να τροποποιήσετε αυτό τον πίνακα.',
'E-mail' => 'E-mail', 'E-mail' => 'E-mail',
'From' => 'Από', 'From' => 'Από',
'Subject' => 'Θέμα', 'Subject' => 'Θέμα',
'Attachments' => 'Συνημμένα', 'Attachments' => 'Συνημμένα',
'Send' => 'Αποστολή', 'Send' => 'Αποστολή',
'%d e-mail(s) have been sent.' => array('%d e-mail απεστάλλει.', '%d e-mail απεστάλλησαν.'), '%d e-mail(s) have been sent.' => array('%d e-mail απεστάλη.', '%d e-mail απεστάλησαν.'),
// data type descriptions // data type descriptions
'Numbers' => 'Αριθμοί', 'Numbers' => 'Αριθμοί',
'Date and time' => 'Ημερομηνία και ώρα', 'Date and time' => 'Ημερομηνία και ώρα',
@@ -294,7 +294,7 @@ $translations = array(
'Network' => 'Δίκτυο', 'Network' => 'Δίκτυο',
'Geometry' => 'Γεωμετρία', 'Geometry' => 'Γεωμετρία',
'Relations' => 'Συσχετήσεις', 'Relations' => 'Συσχετήσεις',
'Editor' => 'Επεξεργαστής', 'Editor' => 'Επεξεργαστής',
// date format in Editor: $1 yyyy, $2 yy, $3 mm, $4 m, $5 dd, $6 d // date format in Editor: $1 yyyy, $2 yy, $3 mm, $4 m, $5 dd, $6 d
'$1-$3-$5' => '$5/$3/$1', '$1-$3-$5' => '$5/$3/$1',
@@ -305,11 +305,11 @@ $translations = array(
'now' => 'τώρα', 'now' => 'τώρα',
'yes' => 'ναι', 'yes' => 'ναι',
'no' => 'όχι', 'no' => 'όχι',
// general SQLite error in create, drop or rename database // general SQLite error in create, drop or rename database
'File exists.' => 'Το αρχείο υπάρχει.', 'File exists.' => 'Το αρχείο υπάρχει.',
'Please use one of the extensions %s.' => 'Παρακαλώ χρησιμοποιείστε μια από τις επεκτάσεις %s.', 'Please use one of the extensions %s.' => 'Παρακαλώ χρησιμοποιείστε μια από τις επεκτάσεις %s.',
// PostgreSQL and MS SQL schema support // PostgreSQL and MS SQL schema support
'Alter schema' => 'Τροποποίηση σχήματος', 'Alter schema' => 'Τροποποίηση σχήματος',
'Create schema' => 'Δημιουργία σχήματος', 'Create schema' => 'Δημιουργία σχήματος',
@@ -318,7 +318,7 @@ $translations = array(
'Schema has been altered.' => 'Το σχήμα τροποποιήθηκε.', 'Schema has been altered.' => 'Το σχήμα τροποποιήθηκε.',
'Schema' => 'Σχήμα', 'Schema' => 'Σχήμα',
'Invalid schema.' => 'Άκυρο σχήμα.', 'Invalid schema.' => 'Άκυρο σχήμα.',
// PostgreSQL sequences support // PostgreSQL sequences support
'Sequences' => 'Αλληλουχία', 'Sequences' => 'Αλληλουχία',
'Create sequence' => 'Δημιουργία αλληλουχίας', 'Create sequence' => 'Δημιουργία αλληλουχίας',
@@ -326,11 +326,33 @@ $translations = array(
'Sequence has been created.' => 'Η αλληλουχία δημιουργήθηκε.', 'Sequence has been created.' => 'Η αλληλουχία δημιουργήθηκε.',
'Sequence has been altered.' => 'Η αλληλουχία τροποποιήθηκε.', 'Sequence has been altered.' => 'Η αλληλουχία τροποποιήθηκε.',
'Alter sequence' => 'Τροποποίηση αλληλουχίας', 'Alter sequence' => 'Τροποποίηση αλληλουχίας',
// PostgreSQL user types support // PostgreSQL user types support
'User types' => 'Τύποι χρήστη', 'User types' => 'Τύποι χρήστη',
'Create type' => 'Δημιουργία τύπου', 'Create type' => 'Δημιουργία τύπου',
'Type has been dropped.' => 'Ο τύπος διαγράφηκε.', 'Type has been dropped.' => 'Ο τύπος διαγράφηκε.',
'Type has been created.' => 'Ο τύπος δημιουργήθηκε.', 'Type has been created.' => 'Ο τύπος δημιουργήθηκε.',
'Alter type' => 'Τροποποίηση τύπου', 'Alter type' => 'Τροποποίηση τύπου',
'Drop %s?' => null,
'overwrite' => null,
'DB' => null,
'ATTACH queries are not supported.' => null,
'Warnings' => null,
'Adminer does not support accessing a database without a password, <a href="https://www.adminer.org/en/password/"%s>more information</a>.' => null,
'Thanks for using Adminer, consider <a href="https://www.adminer.org/en/donation/">donating</a>.' => null,
'The action will be performed after successful login with the same credentials.' => null,
'Connecting to privileged ports is not allowed.' => null,
'There is a space in the input password which might be the cause.' => null,
'Unknown error.' => null,
'Database does not support password.' => null,
'Disable %s or enable %s or %s extensions.' => null,
'Columns' => null,
'Nullable' => null,
'Default' => null,
'Yes' => null,
'No' => null,
'One Time Password' => null,
'Invalid OTP code.' => null,
); );

View File

@@ -2,7 +2,7 @@
$translations = array( $translations = array(
'Login' => 'Login', 'Login' => 'Login',
'Logout successful.' => 'Sesión finalizada con éxito.', 'Logout successful.' => 'Sesión finalizada con éxito.',
'Invalid credentials.' => 'Usuario y/o clave de acceso incorrecta.', 'Invalid server or credentials.' => null,
'Server' => 'Servidor', 'Server' => 'Servidor',
'Username' => 'Usuario', 'Username' => 'Usuario',
'Password' => 'Contraseña', 'Password' => 'Contraseña',
@@ -265,4 +265,49 @@ $translations = array(
'Permanent link' => 'Enlace permanente', 'Permanent link' => 'Enlace permanente',
'Edit all' => 'Editar todos', 'Edit all' => 'Editar todos',
'HH:MM:SS' => 'HH:MM:SS', 'HH:MM:SS' => 'HH:MM:SS',
'Drop %s?' => null,
'Tables have been optimized.' => null,
'Materialized view' => null,
'Vacuum' => null,
'Selected' => null,
'overwrite' => null,
'DB' => null,
'File must be in UTF-8 encoding.' => null,
'Modify' => null,
'Load more data' => null,
'Loading' => null,
'ATTACH queries are not supported.' => null,
'Warnings' => null,
'%d / ' => array(),
'Limit rows' => null,
'Adminer does not support accessing a database without a password, <a href="https://www.adminer.org/en/password/"%s>more information</a>.' => null,
'Default value' => null,
'Full table scan' => null,
'Too many unsuccessful logins, try again in %d minute(s).' => array(),
'Thanks for using Adminer, consider <a href="https://www.adminer.org/en/donation/">donating</a>.' => null,
'Master password expired. <a href="https://www.adminer.org/en/extension/"%s>Implement</a> %s method to make it permanent.' => null,
'The action will be performed after successful login with the same credentials.' => null,
'Connecting to privileged ports is not allowed.' => null,
'There is a space in the input password which might be the cause.' => null,
'If you did not send this request from Adminer then close this page.' => null,
'You can upload a big SQL file via FTP and import it from server.' => null,
'Size' => null,
'Compute' => null,
'You are offline.' => null,
'You have no privileges to update this table.' => null,
'Saving' => null,
'Unknown error.' => null,
'Database does not support password.' => null,
'Disable %s or enable %s or %s extensions.' => null,
'yes' => null,
'no' => null,
'Columns' => null,
'Nullable' => null,
'Default' => null,
'Yes' => null,
'No' => null,
'One Time Password' => null,
'Invalid OTP code.' => null,
); );

View File

@@ -2,7 +2,7 @@
$translations = array( $translations = array(
'Login' => 'Logi sisse', 'Login' => 'Logi sisse',
'Logout successful.' => 'Väljalogimine õnnestus.', 'Logout successful.' => 'Väljalogimine õnnestus.',
'Invalid credentials.' => 'Ebakorrektsed andmed.', 'Invalid server or credentials.' => null,
'Server' => 'Server', 'Server' => 'Server',
'Username' => 'Kasutajanimi', 'Username' => 'Kasutajanimi',
'Password' => 'Parool', 'Password' => 'Parool',
@@ -265,4 +265,49 @@ $translations = array(
'Permanent link' => 'Püsilink', 'Permanent link' => 'Püsilink',
'Edit all' => 'Muuda kõiki', 'Edit all' => 'Muuda kõiki',
'HH:MM:SS' => 'HH:MM:SS', 'HH:MM:SS' => 'HH:MM:SS',
'Drop %s?' => null,
'Tables have been optimized.' => null,
'Materialized view' => null,
'Vacuum' => null,
'Selected' => null,
'overwrite' => null,
'DB' => null,
'File must be in UTF-8 encoding.' => null,
'Modify' => null,
'Load more data' => null,
'Loading' => null,
'ATTACH queries are not supported.' => null,
'Warnings' => null,
'%d / ' => array(),
'Limit rows' => null,
'Adminer does not support accessing a database without a password, <a href="https://www.adminer.org/en/password/"%s>more information</a>.' => null,
'Default value' => null,
'Full table scan' => null,
'Too many unsuccessful logins, try again in %d minute(s).' => array(),
'Thanks for using Adminer, consider <a href="https://www.adminer.org/en/donation/">donating</a>.' => null,
'Master password expired. <a href="https://www.adminer.org/en/extension/"%s>Implement</a> %s method to make it permanent.' => null,
'The action will be performed after successful login with the same credentials.' => null,
'Connecting to privileged ports is not allowed.' => null,
'There is a space in the input password which might be the cause.' => null,
'If you did not send this request from Adminer then close this page.' => null,
'You can upload a big SQL file via FTP and import it from server.' => null,
'Size' => null,
'Compute' => null,
'You are offline.' => null,
'You have no privileges to update this table.' => null,
'Saving' => null,
'Unknown error.' => null,
'Database does not support password.' => null,
'Disable %s or enable %s or %s extensions.' => null,
'yes' => null,
'no' => null,
'Columns' => null,
'Nullable' => null,
'Default' => null,
'Yes' => null,
'No' => null,
'One Time Password' => null,
'Invalid OTP code.' => null,
); );

View File

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

View File

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

View File

@@ -2,7 +2,7 @@
$translations = array( $translations = array(
'Login' => 'Authentification', 'Login' => 'Authentification',
'Logout successful.' => 'Au revoir !', 'Logout successful.' => 'Au revoir !',
'Invalid credentials.' => 'Authentification échouée.', 'Invalid server or credentials.' => null,
'Server' => 'Serveur', 'Server' => 'Serveur',
'Username' => 'Utilisateur', 'Username' => 'Utilisateur',
'Password' => 'Mot de passe', 'Password' => 'Mot de passe',
@@ -288,4 +288,26 @@ $translations = array(
'Default value' => 'Valeur par défaut', '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.', '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.', 'You are offline.' => 'Vous êtes hors ligne.',
'Drop %s?' => 'Supprimer %s?',
'overwrite' => 'écraser',
'DB' => 'BD',
'ATTACH queries are not supported.' => 'Requêtes ATTACH ne sont pas supportées.',
'Warnings' => 'Avertissements',
'Adminer does not support accessing a database without a password, <a href="https://www.adminer.org/en/password/"%s>more information</a>.' => 'Adminer ne supporte pas l\'accès aux bases de données sans mot de passe, <a href="https://www.adminer.org/en/password/"%s>plus d\'information</a>.',
'Thanks for using Adminer, consider <a href="https://www.adminer.org/en/donation/">donating</a>.' => null,
'The action will be performed after successful login with the same credentials.' => 'Cette action sera exécutée après s\'être connecté avec les mêmes données de connexion.',
'Connecting to privileged ports is not allowed.' => 'La connexion aux ports privilégiés n\'est pas autorisée.',
'There is a space in the input password which might be the cause.' => 'Il y a un espace dans le mot de passe entré qui pourrait en être la cause.',
'Unknown error.' => 'Erreur inconnue',
'Database does not support password.' => 'La base de données ne support pas les mots de passe',
'Disable %s or enable %s or %s extensions.' => 'Désactiver %s ou activer %s or %s extensions.',
'Columns' => null,
'Nullable' => null,
'Default' => null,
'Yes' => 'Oui',
'No' => 'Non',
'One Time Password' => null,
'Invalid OTP code.' => null,
); );

View File

@@ -2,7 +2,7 @@
$translations = array( $translations = array(
'Login' => 'Conectar', 'Login' => 'Conectar',
'Logout successful.' => 'Pechouse a sesión con éxito.', 'Logout successful.' => 'Pechouse a sesión con éxito.',
'Invalid credentials.' => 'Credenciais (usuario e/ou contrasinal) inválidos.', 'Invalid server or credentials.' => null,
'Server' => 'Servidor', 'Server' => 'Servidor',
'Username' => 'Usuario', 'Username' => 'Usuario',
'Password' => 'Contrasinal', 'Password' => 'Contrasinal',
@@ -288,4 +288,26 @@ $translations = array(
'Saving' => 'Gardando', 'Saving' => 'Gardando',
'yes' => 'si', 'yes' => 'si',
'no' => 'non', 'no' => 'non',
'Drop %s?' => null,
'overwrite' => null,
'DB' => null,
'ATTACH queries are not supported.' => null,
'Warnings' => null,
'Adminer does not support accessing a database without a password, <a href="https://www.adminer.org/en/password/"%s>more information</a>.' => null,
'Thanks for using Adminer, consider <a href="https://www.adminer.org/en/donation/">donating</a>.' => null,
'The action will be performed after successful login with the same credentials.' => null,
'Connecting to privileged ports is not allowed.' => null,
'There is a space in the input password which might be the cause.' => null,
'Unknown error.' => null,
'Database does not support password.' => null,
'Disable %s or enable %s or %s extensions.' => null,
'Columns' => null,
'Nullable' => null,
'Default' => null,
'Yes' => 'Si',
'No' => 'Non',
'One Time Password' => null,
'Invalid OTP code.' => null,
); );

View File

@@ -2,7 +2,7 @@
$translations = array( $translations = array(
'Login' => 'התחברות', 'Login' => 'התחברות',
'Logout successful.' => 'ההתחברות הצליחה', 'Logout successful.' => 'ההתחברות הצליחה',
'Invalid credentials.' => 'פרטי התחברות שגויים', 'Invalid server or credentials.' => null,
'Server' => 'שרת', 'Server' => 'שרת',
'Username' => 'שם משתמש', 'Username' => 'שם משתמש',
'Password' => 'סיסמה', 'Password' => 'סיסמה',
@@ -290,4 +290,24 @@ $translations = array(
'Saving' => 'שומר', 'Saving' => 'שומר',
'yes' => 'כן', 'yes' => 'כן',
'no' => 'לא', 'no' => 'לא',
'Drop %s?' => null,
'overwrite' => null,
'DB' => null,
'Warnings' => null,
'Adminer does not support accessing a database without a password, <a href="https://www.adminer.org/en/password/"%s>more information</a>.' => null,
'The action will be performed after successful login with the same credentials.' => null,
'Connecting to privileged ports is not allowed.' => null,
'There is a space in the input password which might be the cause.' => null,
'Unknown error.' => null,
'Database does not support password.' => null,
'Disable %s or enable %s or %s extensions.' => null,
'Columns' => null,
'Nullable' => null,
'Default' => null,
'Yes' => null,
'No' => null,
'One Time Password' => null,
'Invalid OTP code.' => null,
); );

View File

@@ -2,7 +2,7 @@
$translations = array( $translations = array(
'Login' => 'Belépés', 'Login' => 'Belépés',
'Logout successful.' => 'Sikeres kilépés.', 'Logout successful.' => 'Sikeres kilépés.',
'Invalid credentials.' => 'Érvénytelen adatok.', 'Invalid server or credentials.' => null,
'Server' => 'Szerver', 'Server' => 'Szerver',
'Username' => 'Felhasználó', 'Username' => 'Felhasználó',
'Password' => 'Jelszó', 'Password' => 'Jelszó',
@@ -175,7 +175,7 @@ $translations = array(
'Repair' => 'Javít', 'Repair' => 'Javít',
'Truncate' => 'Felszabadít', 'Truncate' => 'Felszabadít',
'Tables have been truncated.' => 'A tábla felszabadítva.', 'Tables have been truncated.' => 'A tábla felszabadítva.',
'Rows' => 'Oszlop', 'Rows' => 'Sorok',
',' => ' ', ',' => ' ',
'0123456789' => '0123456789', '0123456789' => '0123456789',
'Tables have been moved.' => 'Táblák áthelyezve.', 'Tables have been moved.' => 'Táblák áthelyezve.',
@@ -264,4 +264,50 @@ $translations = array(
'Permanent link' => 'Hivatkozás', 'Permanent link' => 'Hivatkozás',
'Edit all' => 'Összes szerkesztése', 'Edit all' => 'Összes szerkesztése',
'HH:MM:SS' => 'óó:pp:mm', 'HH:MM:SS' => 'óó:pp:mm',
'Drop %s?' => null,
'Tables have been optimized.' => null,
'Materialized view' => null,
'Vacuum' => null,
'Selected' => null,
'overwrite' => null,
'DB' => null,
'Ctrl+click on a value to modify it.' => null,
'File must be in UTF-8 encoding.' => null,
'Modify' => null,
'Load more data' => null,
'Loading' => null,
'ATTACH queries are not supported.' => null,
'Warnings' => null,
'%d / ' => array(),
'Limit rows' => null,
'Adminer does not support accessing a database without a password, <a href="https://www.adminer.org/en/password/"%s>more information</a>.' => null,
'Default value' => null,
'Full table scan' => null,
'Too many unsuccessful logins, try again in %d minute(s).' => array(),
'Thanks for using Adminer, consider <a href="https://www.adminer.org/en/donation/">donating</a>.' => null,
'Master password expired. <a href="https://www.adminer.org/en/extension/"%s>Implement</a> %s method to make it permanent.' => null,
'The action will be performed after successful login with the same credentials.' => null,
'Connecting to privileged ports is not allowed.' => null,
'There is a space in the input password which might be the cause.' => null,
'If you did not send this request from Adminer then close this page.' => null,
'You can upload a big SQL file via FTP and import it from server.' => null,
'Size' => null,
'Compute' => null,
'You are offline.' => null,
'You have no privileges to update this table.' => null,
'Saving' => null,
'Unknown error.' => null,
'Database does not support password.' => null,
'Disable %s or enable %s or %s extensions.' => null,
'yes' => null,
'no' => null,
'Columns' => null,
'Nullable' => null,
'Default' => null,
'Yes' => null,
'No' => null,
'One Time Password' => null,
'Invalid OTP code.' => null,
); );

View File

@@ -10,7 +10,7 @@ $translations = array(
'Logout' => 'Keluar', 'Logout' => 'Keluar',
'Logged as: %s' => 'Masuk sebagai: %s', 'Logged as: %s' => 'Masuk sebagai: %s',
'Logout successful.' => 'Berhasil keluar.', 'Logout successful.' => 'Berhasil keluar.',
'Invalid credentials.' => 'Akses tidak sah.', 'Invalid server or credentials.' => null,
'Language' => 'Bahasa', 'Language' => 'Bahasa',
'Invalid CSRF token. Send the form again.' => 'Token CSRF tidak sah. Kirim ulang formulir.', 'Invalid CSRF token. Send the form again.' => 'Token CSRF tidak sah. Kirim ulang formulir.',
'No extension' => 'Ekstensi tidak ada', 'No extension' => 'Ekstensi tidak ada',
@@ -313,4 +313,46 @@ $translations = array(
'Type has been dropped.' => 'Jenis berhasil dihapus.', 'Type has been dropped.' => 'Jenis berhasil dihapus.',
'Type has been created.' => 'Jenis berhasil dibuat.', 'Type has been created.' => 'Jenis berhasil dibuat.',
'Alter type' => 'Ubah jenis', 'Alter type' => 'Ubah jenis',
'Drop %s?' => null,
'Materialized view' => null,
'Vacuum' => null,
'Selected' => null,
'overwrite' => null,
'DB' => null,
'Ctrl+click on a value to modify it.' => null,
'File must be in UTF-8 encoding.' => null,
'Modify' => null,
'Load more data' => null,
'Loading' => null,
'ATTACH queries are not supported.' => null,
'Warnings' => null,
'%d / ' => array(),
'Limit rows' => null,
'Adminer does not support accessing a database without a password, <a href="https://www.adminer.org/en/password/"%s>more information</a>.' => null,
'Default value' => null,
'Too many unsuccessful logins, try again in %d minute(s).' => array(),
'Thanks for using Adminer, consider <a href="https://www.adminer.org/en/donation/">donating</a>.' => null,
'Master password expired. <a href="https://www.adminer.org/en/extension/"%s>Implement</a> %s method to make it permanent.' => null,
'The action will be performed after successful login with the same credentials.' => null,
'Connecting to privileged ports is not allowed.' => null,
'There is a space in the input password which might be the cause.' => null,
'If you did not send this request from Adminer then close this page.' => null,
'You can upload a big SQL file via FTP and import it from server.' => null,
'Size' => null,
'Compute' => null,
'You are offline.' => null,
'You have no privileges to update this table.' => null,
'Saving' => null,
'Unknown error.' => null,
'Database does not support password.' => null,
'Disable %s or enable %s or %s extensions.' => null,
'Columns' => null,
'Nullable' => null,
'Default' => null,
'Yes' => null,
'No' => null,
'One Time Password' => null,
'Invalid OTP code.' => null,
); );

View File

@@ -2,7 +2,7 @@
$translations = array( $translations = array(
'Login' => 'Autenticazione', 'Login' => 'Autenticazione',
'Logout successful.' => 'Uscita effettuata con successo.', 'Logout successful.' => 'Uscita effettuata con successo.',
'Invalid credentials.' => 'Credenziali non valide.', 'Invalid server or credentials.' => 'Server o credenziali non valide.',
'Server' => 'Server', 'Server' => 'Server',
'Username' => 'Utente', 'Username' => 'Utente',
'Password' => 'Password', 'Password' => 'Password',
@@ -265,4 +265,49 @@ $translations = array(
'Permanent link' => 'Link permanente', 'Permanent link' => 'Link permanente',
'Edit all' => 'Modifica tutto', 'Edit all' => 'Modifica tutto',
'HH:MM:SS' => 'HH:MM:SS', 'HH:MM:SS' => 'HH:MM:SS',
'Drop %s?' => 'Scartare %s?',
'Tables have been optimized.' => 'Le tabelle sono state ottimizzate',
'Materialized view' => 'Vista materializzata',
'Vacuum' => 'Aspira',
'Selected' => 'Selezionato',
'overwrite' => 'sovrascrivi',
'DB' => 'DB',
'File must be in UTF-8 encoding.' => 'Il file deve avere codifica UTF-8.',
'Modify' => 'Modifica',
'Load more data' => 'Carica piú dati',
'Loading' => 'Caricamento',
'ATTACH queries are not supported.' => 'ATTACH queries non sono supportate.',
'Warnings' => 'Attenzione',
'%d / ' => array('%d / '),
'Limit rows' => 'Limite righe',
'Adminer does not support accessing a database without a password, <a href="https://www.adminer.org/en/password/"%s>more information</a>.' => 'Adminer non supporta accesso a databse senza password, <a href="https://www.adminer.org/it/password/"%s>piú informazioni</a>.',
'Default value' => 'Valore predefinito',
'Full table scan' => 'Analizza intera tabella',
'Too many unsuccessful logins, try again in %d minute(s).' => array('Troppi tentativi infruttuosi di login, si prega di riprovare in %d minuto.', 'Troppi tentativi infruttuosi di login, si prega di riprovare in %d minuti.'),
'Thanks for using Adminer, consider <a href="https://www.adminer.org/en/donation/">donating</a>.' => null,
'Master password expired. <a href="https://www.adminer.org/en/extension/"%s>Implement</a> %s method to make it permanent.' => 'La password principale é scaduta. <a href="https://www.adminer.org/it/extension/"%s>Implementare</a> %s come metodo per renderla permanente.',
'The action will be performed after successful login with the same credentials.' => 'La azione verrá eseguita dopo un login valido con le stesse credenziali.',
'Connecting to privileged ports is not allowed.' => 'LA connessione a porte privilegiate non é permessa.',
'There is a space in the input password which might be the cause.' => 'Esiste uno spazio nella passoword inserita che potrebbe essere la causa.',
'If you did not send this request from Adminer then close this page.' => 'Se non hai inviato tu la richiesta tramite Adminer puoi chiudere la pagina.',
'You can upload a big SQL file via FTP and import it from server.' => 'Puoi caricare un grande file SQL tramite FTP ed impirtarlo dal server.',
'Size' => 'Taglia',
'Compute' => 'Elabora',
'You are offline.' => 'Sei disconnesso.',
'You have no privileges to update this table.' => 'Non hai i privilegi per aggiornare questa tabella.',
'Saving' => 'Salvataggio',
'Unknown error.' => 'Errore sconosciuto',
'Database does not support password.' => 'Il database non supporta password.',
'Disable %s or enable %s or %s extensions.' => 'Disabilita %s o abilita %s oppure %s estensioni.',
'yes' => 'si',
'no' => 'no',
'Columns' => null,
'Nullable' => null,
'Default' => null,
'Yes' => 'Si',
'No' => 'No',
'One Time Password' => null,
'Invalid OTP code.' => null,
); );

View File

@@ -2,7 +2,7 @@
$translations = array( $translations = array(
'Login' => 'ログイン', 'Login' => 'ログイン',
'Logout successful.' => 'ログアウト', 'Logout successful.' => 'ログアウト',
'Invalid credentials.' => '不正なログイン', 'Invalid server or credentials.' => null,
'Server' => 'サーバ', 'Server' => 'サーバ',
'Username' => 'ユーザ名', 'Username' => 'ユーザ名',
'Password' => 'パスワード', 'Password' => 'パスワード',
@@ -274,4 +274,40 @@ $translations = array(
'yes' => 'はい', 'yes' => 'はい',
'no' => 'いいえ', 'no' => 'いいえ',
'Default value' => '既定値', 'Default value' => '既定値',
'Drop %s?' => null,
'Tables have been optimized.' => null,
'Materialized view' => null,
'Vacuum' => null,
'overwrite' => null,
'DB' => null,
'Ctrl+click on a value to modify it.' => null,
'File must be in UTF-8 encoding.' => null,
'ATTACH queries are not supported.' => null,
'Warnings' => null,
'%d / ' => array(),
'Limit rows' => null,
'Adminer does not support accessing a database without a password, <a href="https://www.adminer.org/en/password/"%s>more information</a>.' => null,
'Full table scan' => null,
'Too many unsuccessful logins, try again in %d minute(s).' => array(),
'Thanks for using Adminer, consider <a href="https://www.adminer.org/en/donation/">donating</a>.' => null,
'Master password expired. <a href="https://www.adminer.org/en/extension/"%s>Implement</a> %s method to make it permanent.' => null,
'The action will be performed after successful login with the same credentials.' => null,
'Connecting to privileged ports is not allowed.' => null,
'There is a space in the input password which might be the cause.' => null,
'If you did not send this request from Adminer then close this page.' => null,
'You can upload a big SQL file via FTP and import it from server.' => null,
'You are offline.' => null,
'You have no privileges to update this table.' => null,
'Unknown error.' => null,
'Database does not support password.' => null,
'Disable %s or enable %s or %s extensions.' => null,
'Columns' => null,
'Nullable' => null,
'Default' => null,
'Yes' => null,
'No' => null,
'One Time Password' => null,
'Invalid OTP code.' => null,
); );

View File

@@ -2,7 +2,7 @@
$translations = array( $translations = array(
'Login' => 'შესვლა', 'Login' => 'შესვლა',
'Logout successful.' => 'გამოხვედით სისტემიდან.', 'Logout successful.' => 'გამოხვედით სისტემიდან.',
'Invalid credentials.' => 'არასწორი მომხმარებელი ან პაროლი.', 'Invalid server or credentials.' => null,
'Server' => 'სერვერი', 'Server' => 'სერვერი',
'Username' => 'მომხმარებელი', 'Username' => 'მომხმარებელი',
'Password' => 'პაროლი', 'Password' => 'პაროლი',
@@ -300,4 +300,14 @@ $translations = array(
'Unknown error.' => 'უცნობი შეცდომა.', 'Unknown error.' => 'უცნობი შეცდომა.',
'Database does not support password.' => 'ბაზაში არაა მხარდაჭერილი პაროლი.', 'Database does not support password.' => 'ბაზაში არაა მხარდაჭერილი პაროლი.',
'Disable %s or enable %s or %s extensions.' => 'გათიშეთ %s ან ჩართეთ %s ან %s გაფართოება.', 'Disable %s or enable %s or %s extensions.' => 'გათიშეთ %s ან ჩართეთ %s ან %s გაფართოება.',
'overwrite' => null,
'Columns' => null,
'Nullable' => null,
'Default' => null,
'Yes' => null,
'No' => null,
'One Time Password' => null,
'Invalid OTP code.' => null,
); );

View File

@@ -1,267 +1,313 @@
<?php <?php
$translations = array( $translations = array(
'Login' => '로그인', '$1-$3-$5' => '$1-$3-$5',
'Logout successful.' => '로그아웃', '%.3f s' => '%.3f 초',
'Invalid credentials.' => '잘못된 로그인',
'Server' => '서버',
'Username' => '사용자이름',
'Password' => '비밀번호',
'Select database' => '데이터베이스를 선택하십시오.',
'Invalid database.' => '잘못된 데이터베이스입니다.',
'Table has been dropped.' => '테이블을 삭제했습니다.',
'Table has been altered.' => '테이블을 변경했습니다.',
'Table has been created.' => '테이블을 만들었습니다.',
'Alter table' => '테이블 변경',
'Create table' => '테이블 만들기',
'Table name' => '테이블 이름',
'engine' => '엔진',
'collation' => '정렬',
'Column name' => '열 이름',
'Type' => '형',
'Length' => '길이',
'Auto Increment' => '자동증가',
'Options' => '설정',
'Save' => '저장',
'Drop' => '삭제',
'Database has been dropped.' => '데이터베이스를 삭제했습니다.',
'Database has been created.' => '데이터베이스를 만들었습니다.',
'Database has been renamed.' => '데이터베이스의 이름을 바꾸었습니다.',
'Database has been altered.' => '데이터베이스를 변경했습니다.',
'Alter database' => '데이터베이스 변경',
'Create database' => '데이터베이스 만들기',
'SQL command' => 'SQL 명령',
'Logout' => '로그아웃',
'database' => '데이터베이스',
'Use' => '사용',
'No tables.' => '테이블이 없습니다.',
'select' => '선택',
'Item has been deleted.' => '항목을 삭제했습니다.',
'Item has been updated.' => '항목을 갱신했습니다.',
'Edit' => '편집',
'Insert' => '삽입',
'Save and insert next' => '저장하고 다음에 추가',
'Delete' => '삭제',
'Database' => '데이터베이스',
'Routines' => '루틴',
'Indexes have been altered.' => '인덱스를 변경했습니다.',
'Indexes' => '색인',
'Alter indexes' => '인덱스 변경',
'Add next' => '추가',
'Language' => '언어',
'Select' => '선택',
'New item' => '항목 만들기',
'Search' => '검색',
'Sort' => '정렬',
'descending' => '역순',
'Limit' => '제약',
'No rows.' => '행이 없습니다.',
'Action' => '실행',
'edit' => '편집',
'Page' => '페이지',
'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 토큰. 다시 보내주십시오.',
'Comment' => '코멘트',
'Default values' => '기본값',
'%d byte(s)' => '%d 바이트', '%d byte(s)' => '%d 바이트',
'No commands to execute.' => '실행할 수 있는 명령이 없습니다.', '%d e-mail(s) have been sent.' => '%d개 메일을 보냈습니다.',
'Unable to upload a file.' => '파일을 업로드 할 수 없습니다.', '%d in total' => '총 %d개',
'File upload' => '파일 올리기', '%d item(s) have been affected.' => '%d개 항목을 갱신했습니다.',
'File uploads are disabled.' => '파일 업로드가 잘못되었습니다.', '%d process(es) have been killed.' => '%d개 프로세스를 강제 종료하였습니다.',
'Routine has been called, %d row(s) affected.' => '루틴을 호출했습니다. %d 행을 변경했습니다.', '%d query(s) executed OK.' => '%d개 쿼리를 잘 실행했습니다.',
'Call' => '외침', '%d row(s) have been imported.' => '%d개 행을 가져 왔습니다.',
'No extension' => '확장 기능이 없습니다.', '%d row(s)' => '%d개 행',
'None of the supported PHP extensions (%s) are available.' => 'PHP 확장 (%s)가 설치되어 있지 않습니다.',
'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' => '외부 키',
'Target table' => '테이블',
'Change' => '변경',
'Source' => '소스',
'Target' => '타겟',
'Add column' => '열 추가',
'Alter' => '변경',
'Add foreign key' => '외부 키를 추가',
'ON DELETE' => 'ON DELETE',
'ON UPDATE' => 'ON UPDATE',
'Index Type' => '인덱스 형',
'Column (length)' => '열 (길이)',
'View has been dropped.' => '보기를 삭제했습니다.',
'View has been altered.' => '보기를 변경했습니다.',
'View has been created.' => '보기를 만들었습니다.',
'Alter view' => '보기 변경',
'Create view' => '뷰 만들기',
'Name' => '이름',
'Process list' => '프로세스 목록',
'%d process(es) have been killed.' => '%d 프로세스를 강제 종료되었습니다.',
'Kill' => '강제 종료',
'Parameter name' => '참조 여명',
'Database schema' => '구조',
'Create procedure' => '시저 만들기',
'Create function' => '함수 만들기',
'Routine has been dropped.' => '루틴 만들기',
'Routine has been altered.' => '루틴 변경',
'Routine has been created.' => '루틴 만들기',
'Alter function' => '함수의 변경',
'Alter procedure' => '시저 변경',
'Return type' => '반환 형식',
'Add trigger' => '트리거 추가',
'Trigger has been dropped.' => '트리거를 제거했습니다.',
'Trigger has been altered.' => '트리거를 변경했습니다.',
'Trigger has been created.' => '트리거를 추가했습니다.',
'Alter trigger' => '트리거 변경',
'Create trigger' => '트리거 만들기',
'Time' => '시간',
'Event' => '이벤트',
'%s version: %s through PHP extension %s' => '%s 버전 %s, PHP 확장 %s', '%s version: %s through PHP extension %s' => '%s 버전 %s, PHP 확장 %s',
'%d row(s)' => '%d 행',
'Remove' => '제외',
'Are you sure?' => '실행 하시겠습니까?',
'Privileges' => '권한',
'Create user' => '사용자 만들기',
'User has been dropped.' => '사용자 삭제',
'User has been altered.' => '사용자 변경',
'User has been created.' => '사용자 만들기',
'Hashed' => 'Hashed',
'Column' => '열',
'Routine' => '루틴',
'Grant' => '권한 부여',
'Revoke' => '권한 취소',
'Logged as: %s' => '로그 : %s',
'Too big POST data. Reduce the data or increase the %s configuration directive.' => 'POST 데이터가 너무 큽니다. 데이터 크기를 줄이거나 %s 설정을 늘리십시오.',
'Move up' => '상',
'Move down' => '아래',
'Export' => '내보내기',
'Tables' => '테이블',
'Data' => '데이터',
'Output' => '출력',
'open' => '열',
'save' => '저장',
'Format' => '형식',
'Functions' => '함수',
'Aggregation' => '집합',
'Event has been dropped.' => '삭제했습니다.',
'Event has been altered.' => '변경했습니다.',
'Event has been created.' => '만들었습니다.',
'Alter event' => '변경',
'Create event' => '만들기',
'Start' => '시작',
'End' => '종료',
'Every' => '매번',
'Status' => '상태',
'On completion preserve' => '완성 후 저장',
'Events' => '이벤트',
'Schedule' => '일정',
'At given time' => '지정 시간',
'Tables have been truncated.' => '테이블을 truncate했습니다.',
'Tables have been moved.' => '테이블을 옮겼습니다.',
'Tables and views' => '테이블과 뷰',
'Engine' => '엔진',
'Collation' => '정렬',
'Data Length' => '데이터 길이',
'Index Length' => '인덱스 길이',
'Data Free' => '여유',
'Rows' => '행',
',' => ',', ',' => ',',
'0123456789' => '0123456789', '0123456789' => '0123456789',
'Analyze' => '분석',
'Optimize' => '최적화',
'Check' => '확인',
'Repair' => '복구',
'Truncate' => 'Truncate',
'Move to other database' => '다른 데이터베이스로 이동',
'Move' => '이동',
'Save and continue edit' => '저장하고 계속',
'original' => '원래',
'%d item(s) have been affected.' => '%d를 갱신했습니다.',
'Whole result' => '모든 결과',
'Tables have been dropped.' => '테이블을 삭제했습니다.',
'Clone' => '복제',
'Maximum number of allowed fields exceeded. Please increase %s.' => '정의 가능한 최대 필드 수를 초과했습니다. %s를 늘리십시오.',
'Partition by' => '파티션',
'Partitions' => '파티션',
'Partition name' => '파티션 이름',
'Values' => '값',
'%d row(s) have been imported.' => '%d 행을 가져 왔습니다.',
'Show structure' => '구조',
'anywhere' => '모든',
'Import' => '가져 오기',
'Stop on error' => '오류의 경우 중지',
'Select data' => '데이터',
'%.3f s' => '%.3f 초',
'$1-$3-$5' => '$1-$3-$5',
'[yyyy]-mm-dd' => '[yyyy]-mm-dd', '[yyyy]-mm-dd' => '[yyyy]-mm-dd',
'History' => '역사', 'Action' => '실행',
'Variables' => '변수', 'Add column' => '열 추가',
'Source and target columns must have the same data type, there must be an index on the target columns and referenced data must exist.' => '원본 및 대상 열은 동일한 데이터 형식이어야합니다. 목표 컬럼에 인덱스와 데이터가 존재해야합니다.', 'Add foreign key' => '외부 키를 추가',
'Relations' => '관계', 'Add next' => '다음 추가',
'Run file' => '파일을 실행', 'Add trigger' => '트리거 추가',
'Clear' => '삭제', 'Aggregation' => '집합',
'Maximum allowed file size is %sB.' => '파일의 최대 크기 %sB', 'Alter database' => '데이터베이스 변경',
'Numbers' => '숫자', 'Alter event' => '이벤트 변경',
'Date and time' => '시간', 'Alter function' => '함수 변경',
'Strings' => '문자열', 'Alter indexes' => '색인 변경',
'Binary' => '이진', 'Alter procedure' => '시저 변경',
'Lists' => '목록',
'Editor' => '에디터',
'E-mail' => '메일',
'From' => '보낸 사람',
'Subject' => '제목',
'Send' => '보내기',
'%d e-mail(s) have been sent.' => '%d 메일을 보냈습니다.',
'Webserver file %s' => 'Web 서버 파일 %s',
'File does not exist.' => '파일이 존재하지 않습니다.',
'%d in total' => '총 %d',
'Permanent login' => '영구적으로 로그인',
'Databases have been dropped.' => '데이터베이스를 삭제했습니다.',
'Search data in tables' => '데이터 검색',
'Schema' => '스키마',
'Alter schema' => '스키마 변경', 'Alter schema' => '스키마 변경',
'Create schema' => '스키마 추가',
'Schema has been dropped.' => '스키마를 삭제했습니다.',
'Schema has been created.' => '스키마를 추가했습니다.',
'Schema has been altered.' => '스키마를 변경했습니다.',
'Sequences' => '시퀀스',
'Create sequence' => '시퀀스 만들기',
'Alter sequence' => '순서 변경', 'Alter sequence' => '순서 변경',
'Sequence has been dropped.' => '시퀀스를 제거했습니다.', 'Alter table' => '테이블 변경',
'Sequence has been created.' => '시퀀스를 추가했습니다.', 'Alter trigger' => '트리거 변경',
'Sequence has been altered.' => '순서를 변경했습니다.', 'Alter type' => '형 변경',
'User types' => '사용자 정의 형', 'Alter view' => '보기 변경',
'Create type' => '사용자 정의 형식 만들기', 'Alter' => '변경',
'Alter type' => '사용자 정의 형식 변경', 'Analyze' => '분석',
'Type has been dropped.' => '사용자 정의 형식을 삭제했습니다.', 'anywhere' => '모든',
'Type has been created.' => '사용자 정의 형식을 추가했습니다.', 'Are you sure?' => '실행 하시겠습니까?',
'Use edit link to modify this value.' => '링크 편집', 'At given time' => '지정 시간',
'last' => '마지막',
'From server' => '서버에서 실행',
'System' => '데이터베이스 형식',
'empty' => '하늘',
'Network' => '네트워크 형',
'Geometry' => '기하 형',
'File exists.' => '파일이 이미 있습니다.',
'Attachments' => '첨부 파일', 'Attachments' => '첨부 파일',
'Item%s has been inserted.' => '%s 항목을 삽입했습니다.', 'Auto Increment' => '자동 증가',
'now' => '현재 시간', 'Binary' => '이진',
'%d query(s) executed OK.' => '%d 쿼리를 실행했습니다.', 'Call' => '호출',
'Show only errors' => '오류 만 표시', 'Change' => '변경',
'Refresh' => '새로 고침', 'Check' => '확인',
'Invalid schema.' => '잘못된 스키마', 'Clear' => '삭제',
'Please use one of the extensions %s.' => '하나의 확장 기능을 사용하십시오 %s', 'Clone' => '복제',
'ltr' => 'ltr', 'collation' => '정렬',
'Tables have been copied.' => '테이블을 복사했습니다', 'Collation' => '정렬',
'Column (length)' => '열 (길이)',
'Column name' => '열 이름',
'Column' => '열',
'Comment' => '주석',
'Compute' => '계산하기',
'Copy' => '복사', 'Copy' => '복사',
'Permanent link' => '영구 링크', 'Create database' => '데이터베이스 만들기',
'Edit all' => '모든 편집', 'Create event' => '만들기',
'Create function' => '함수 만들기',
'Create procedure' => '시저 만들기',
'Create schema' => '스키마 추가',
'Create sequence' => '시퀀스 만들기',
'Create table' => '테이블 만들기',
'Create trigger' => '트리거 만들기',
'Create type' => '사용자 정의 형식 만들기',
'Create user' => '사용자 만들기',
'Create view' => '뷰 만들기',
'Data Free' => '데이터 여유',
'Data Length' => '데이터 길이',
'Data' => '데이터',
'Database has been altered.' => '데이터베이스를 변경했습니다.',
'Database has been created.' => '데이터베이스를 만들었습니다.',
'Database has been dropped.' => '데이터베이스를 삭제했습니다.',
'Database has been renamed.' => '데이터베이스의 이름을 바꾸었습니다.',
'Database schema' => '데이터베이스 구조',
'database' => '데이터베이스',
'Database' => '데이터베이스',
'Databases have been dropped.' => '데이터베이스를 삭제했습니다.',
'Date and time' => '시간',
'Default values' => '기본값',
'Delete' => '삭제',
'descending' => '역순',
'Drop' => '삭제',
'E-mail' => '메일',
'Edit all' => '모두 편집',
'Edit' => '편집',
'edit' => '편집',
'Editor' => '에디터',
'empty' => '비어있음',
'End' => '종료',
'engine' => '엔진',
'Engine' => '엔진',
'Error in query' => '쿼리의 오류',
'Event has been altered.' => '변경했습니다.',
'Event has been created.' => '만들었습니다.',
'Event has been dropped.' => '삭제했습니다.',
'Event' => '이벤트',
'Events' => '이벤트',
'Every' => '매 번',
'Execute' => '실행',
'Export' => '내보내기',
'File does not exist.' => '파일이 존재하지 않습니다.',
'File exists.' => '파일이 이미 있습니다.',
'File upload' => '파일 올리기',
'File uploads are disabled.' => '파일 업로드가 잘못되었습니다.',
'Foreign key has been altered.' => '외부 키를 변경했습니다.',
'Foreign key has been created.' => '외부 키를 만들었습니다.',
'Foreign key has been dropped.' => '외부 키를 제거했습니다.',
'Foreign key' => '외부 키',
'Foreign keys' => '외부 키',
'Format' => '형식',
'From server' => '서버에서 실행',
'From' => '보낸 사람',
'Functions' => '함수',
'Geometry' => '기하 형',
'Grant' => '권한 부여',
'Hashed' => 'Hashed',
'HH:MM:SS' => '시:분:초', 'HH:MM:SS' => '시:분:초',
'History' => '이력',
'Import' => '가져 오기',
'Index Length' => '색인 길이',
'Index Type' => '색인 형',
'Indexes have been altered.' => '색인을 변경했습니다.',
'Indexes' => '색인',
'Insert' => '삽입',
'Invalid server or credentials.' => null,
'Invalid CSRF token. Send the form again.' => '잘못된 CSRF 토큰입니다. 다시 보내주십시오.',
'Invalid database.' => '잘못된 데이터베이스입니다.',
'Invalid schema.' => '잘못된 스키마입니다.',
'Item has been deleted.' => '항목을 삭제했습니다.',
'Item has been updated.' => '항목을 갱신했습니다.',
'Item%s has been inserted.' => '%s 항목을 삽입했습니다.',
'Kill' => '강제 종료',
'Language' => '언어',
'last' => '마지막',
'Length' => '길이',
'Limit rows' => '행 제약',
'Limit' => '제약',
'Lists' => '목록',
'Load more data' => '더 많은 데이터 부르기',
'Loading' => '부르는 중',
'Logged as: %s' => '다음으로 로그인했습니다: %s',
'Login' => '로그인',
'Logout successful.' => '로그아웃을 성공했습니다.',
'Logout' => '로그아웃',
'ltr' => 'ltr',
'Maximum allowed file size is %sB.' => '파일의 최대 크기 %sB',
'Maximum number of allowed fields exceeded. Please increase %s.' => '정의 가능한 최대 필드 수를 초과했습니다. %s(을)를 늘리십시오.',
'Modify' => '수정',
'Move down' => '아래로',
'Move to other database' => '다른 데이터베이스로 이동',
'Move up' => '위로',
'Move' => '이동',
'Name' => '이름',
'Network' => '네트워크 형',
'New item' => '항목 만들기',
'No commands to execute.' => '실행할 수 있는 명령이 없습니다.',
'No extension' => '확장이 없습니다.',
'No rows.' => '행이 없습니다.',
'No tables.' => '테이블이 없습니다.',
'None of the supported PHP extensions (%s) are available.' => 'PHP 확장(%s)이 설치되어 있지 않습니다.',
'now' => '현재 시간',
'Numbers' => '숫자',
'On completion preserve' => '완성 후 저장',
'ON DELETE' => '지울 때',
'ON UPDATE' => '업데이트할 때',
'open' => '열',
'Optimize' => '최적화',
'Options' => '설정',
'original' => '원본',
'Output' => '출력',
'overwrite' => '덮어쓰기',
'Page' => '페이지',
'Parameter name' => '매개변수 이름',
'Partition by' => '파티션',
'Partition name' => '파티션 이름',
'Partitions' => '파티션',
'Password' => '비밀번호',
'Permanent link' => '영구적으로 링크',
'Permanent login' => '영구적으로 로그인',
'Please use one of the extensions %s.' => '확장 %s 중 하나를 사용하십시오.',
'Privileges' => '권한',
'Process list' => '프로세스 목록',
'Query executed OK, %d row(s) affected.' => '쿼리를 잘 실행했습니다. %d행을 변경했습니다.',
'Refresh' => '새로 고침',
'Relations' => '관계',
'Remove' => '제거',
'Repair' => '복구',
'Return type' => '반환 형식',
'Revoke' => '권한 취소',
'Routine has been altered.' => '루틴을 변경했습니다.',
'Routine has been called, %d row(s) affected.' => '루틴을 호출했습니다. %d 행을 변경했습니다.',
'Routine has been created.' => '루틴을 추가했습니다.',
'Routine has been dropped.' => '루틴을 제거했습니다.',
'Routine' => '루틴',
'Routines' => '루틴',
'Rows' => '행',
'Run file' => '파일을 실행',
'Save and continue edit' => '저장하고 계속 편집하기',
'Save and insert next' => '저장하고 다음에 추가',
'Save' => '저장',
'save' => '저장',
'Schedule' => '예약',
'Schema has been altered.' => '스키마를 변경했습니다.',
'Schema has been created.' => '스키마를 추가했습니다.',
'Schema has been dropped.' => '스키마를 삭제했습니다.',
'Schema' => '스키마',
'Search data in tables' => '테이블 내 데이터 검색',
'Search' => '검색',
'Select data' => '데이터를 선택하십시오.',
'Select database' => '데이터베이스를 선택하십시오.',
'Select' => '선택',
'select' => '선택',
'Selected' => '선택됨',
'Send' => '보내기',
'Sequence has been altered.' => '시퀀스를 변경했습니다.',
'Sequence has been created.' => '시퀀스를 추가했습니다.',
'Sequence has been dropped.' => '시퀀스를 제거했습니다.',
'Sequences' => '시퀀스',
'Server' => '서버',
'Session expired, please login again.' => '세션이 만료되었습니다. 다시 로그인하십시오.',
'Session support must be enabled.' => '세션 지원을 사용해야만 합니다.',
'Show only errors' => '오류 만 표시',
'Show structure' => '구조 표시',
'Size' => '크기',
'Sort' => '정렬',
'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' => '소스',
'SQL command' => 'SQL 명령',
'Start' => '시작',
'Status' => '상태',
'Stop on error' => '오류의 경우 중지',
'Strings' => '문자열',
'Subject' => '제목',
'System' => '데이터베이스 형식',
'Table has been altered.' => '테이블을 변경했습니다.',
'Table has been created.' => '테이블을 만들었습니다.',
'Table has been dropped.' => '테이블을 삭제했습니다.',
'Table name' => '테이블 이름',
'Table' => '테이블',
'Tables and views' => '테이블과 뷰',
'Tables have been copied.' => '테이블을 복사했습니다',
'Tables have been dropped.' => '테이블을 삭제했습니다.',
'Tables have been moved.' => '테이블을 옮겼습니다.',
'Tables have been truncated.' => '테이블의 데이터 내용만 지웠습니다.',
'Tables' => '테이블',
'Target table' => '테이블',
'Target' => '타겟',
'Text length' => '문자열의 길이',
'Time' => '시간',
'Too big POST data. Reduce the data or increase the %s configuration directive.' => 'POST 데이터가 너무 큽니다. 데이터 크기를 줄이거나 %s 설정을 늘리십시오.',
'Trigger has been altered.' => '트리거를 변경했습니다.',
'Trigger has been created.' => '트리거를 추가했습니다.',
'Trigger has been dropped.' => '트리거를 제거했습니다.',
'Triggers' => '트리거',
'Truncate' => '데이터 내용만 지우기',
'Type has been created.' => '유형을 추가했습니다.',
'Type has been dropped.' => '유형을 삭제했습니다.',
'Type' => '형',
'Unable to select the table' => '테이블을 선택할 수 없습니다.',
'Unable to upload a file.' => '파일을 업로드 할 수 없습니다.',
'Use edit link to modify this value.' => '이 값을 수정하려면 편집 링크를 사용하십시오.',
'Use' => '사용',
'User has been altered.' => '사용자를 변경했습니다.',
'User has been created.' => '사용자를 만들었습니다.',
'User has been dropped.' => '사용자를 제거했습니다.',
'Username' => '사용자이름',
'Vacuum' => '청소',
'Values' => '값',
'Variables' => '변수',
'View has been altered.' => '보기를 변경했습니다.',
'View has been created.' => '보기를 만들었습니다.',
'View has been dropped.' => '보기를 삭제했습니다.',
'View' => '보기',
'Warnings' => '경고',
'Webserver file %s' => '웹서버 파일 %s',
'Whole result' => '모든 결과',
'yes' => '네',
'You are offline.' => '오프라인입니다.',
'You can upload a big SQL file via FTP and import it from server.' => '큰 SQL 파일은 FTP를 통하여 업로드하여 서버에서 가져올 수 있습니다.',
'You have no privileges to update this table.' => '이 테이블을 업데이트할 권한이 없습니다.',
'Drop %s?' => null,
'Tables have been optimized.' => null,
'Materialized view' => null,
'User types' => null,
'DB' => null,
'Ctrl+click on a value to modify it.' => null,
'File must be in UTF-8 encoding.' => null,
'ATTACH queries are not supported.' => null,
'%d / ' => array(),
'Adminer does not support accessing a database without a password, <a href="https://www.adminer.org/en/password/"%s>more information</a>.' => null,
'Default value' => null,
'Full table scan' => null,
'Too many unsuccessful logins, try again in %d minute(s).' => array(),
'Thanks for using Adminer, consider <a href="https://www.adminer.org/en/donation/">donating</a>.' => null,
'Master password expired. <a href="https://www.adminer.org/en/extension/"%s>Implement</a> %s method to make it permanent.' => null,
'The action will be performed after successful login with the same credentials.' => null,
'Connecting to privileged ports is not allowed.' => null,
'There is a space in the input password which might be the cause.' => null,
'If you did not send this request from Adminer then close this page.' => null,
'Saving' => null,
'Unknown error.' => null,
'Database does not support password.' => null,
'Disable %s or enable %s or %s extensions.' => null,
'no' => null,
'Columns' => null,
'Nullable' => null,
'Default' => null,
'Yes' => null,
'No' => null,
'One Time Password' => null,
'Invalid OTP code.' => null,
); );

View File

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

313
adminer/lang/lv.inc.php Normal file
View File

@@ -0,0 +1,313 @@
<?php
$translations = array(
'Login' => 'Ieiet',
'Logout successful.' => 'Jūs veiksmīgi izgājāt no sistēmas.',
'Invalid server or credentials.' => null,
'Server' => 'Serveris',
'Username' => 'Lietotājs',
'Password' => 'Parole',
'Select database' => 'Izvēlēties datubāzi',
'Invalid database.' => 'Nederīga datubāze.',
'Table has been dropped.' => 'Tabula dzēsta.',
'Table has been altered.' => 'Tabula mainīta.',
'Table has been created.' => 'Tabula izveidota.',
'Alter table' => 'Mainīt tabulu',
'Create table' => 'Izveidot tabulu',
'Table name' => 'Tabulas nosaukums',
'engine' => 'Tabulas tips',
'collation' => 'Kolācija',
'Column name' => 'Lauka nosaukums',
'Type' => 'Tips',
'Length' => 'Garums',
'Auto Increment' => 'Auto inkrements',
'Options' => 'Opcijas',
'Save' => 'Saglabāt',
'Drop' => 'Dzēst',
'Database has been dropped.' => 'Datubāze tika nodzēsta.',
'Database has been created.' => 'Datubāze tika izveidota.',
'Database has been renamed.' => 'Datubāze tika pārsaukta.',
'Database has been altered.' => 'Datubāze tika mainīta.',
'Alter database' => 'Mainīt datubāzi',
'Create database' => 'Izveidot datubāzi',
'SQL command' => 'SQL pieprasījums',
'Logout' => 'Iziet',
'database' => 'datubāze',
'Use' => 'Lietot',
'No tables.' => 'Datubāzē nav tabulu.',
'select' => 'izvēlēties',
'Item has been deleted.' => 'Ieraksts dzests.',
'Item has been updated.' => 'Ieraksts atjaunots.',
'Item%s has been inserted.' => 'Ieraksti tika ievietoti.',
'Edit' => 'Rediģēt',
'Insert' => 'Ievietot',
'Save and insert next' => 'Saglabāt un ievietot nākamo',
'Delete' => 'Dzēst',
'Database' => 'Datubāze',
'Routines' => 'Procedūras un funkcijas',
'Indexes have been altered.' => 'Indeksi mainīti.',
'Indexes' => 'Indeksi',
'Alter indexes' => 'Izmainīt indeksus',
'Add next' => 'Pievienot vēl',
'Language' => 'Valoda',
'Select' => 'Izvēlēties',
'New item' => 'Jauns ieraksts',
'Search' => 'Meklēšana',
'Sort' => 'Kārtošana',
'descending' => 'dilstoši',
'Limit' => 'Limits',
'No rows.' => 'Nav rindu.',
'Action' => 'Darbība',
'edit' => 'rediģēt',
'Page' => 'Lapa',
'Query executed OK, %d row(s) affected.' => array('Pieprasījums pabeigts, izmainīts %d ieraksts.', 'Pieprasījums pabeigts, izmainīti %d ieraksti.', 'Pieprasījums pabeigts, izmainīti %d ieraksti.'),
'Error in query' => 'Kļūda pieprasījumā',
'Execute' => 'Izpidīt',
'Table' => 'Tabula',
'Foreign keys' => 'Ārejā atslēgas',
'Triggers' => 'Trigeri',
'View' => 'Skats',
'Unable to select the table' => 'Tabula nav pieejama',
'Invalid CSRF token. Send the form again.' => 'Nederīgs CSRF žetons. Nosūtiet formu vēl vienu reizi.',
'Comment' => 'Komentārs',
'Default values' => 'Noklusētā vērtība',
'%d byte(s)' => array('%d baits', '%d baiti', '%d baiti'),
'No commands to execute.' => 'Nav izpildāmu komandu.',
'Unable to upload a file.' => 'Neizdevās ielādēt failu uz servera.',
'File upload' => 'Augšupielāde',
'File uploads are disabled.' => 'Augšupielādes aizliegtas.',
'Routine has been called, %d row(s) affected.' => array('Procedūra izsaukta, izmainīts %d ieraksts.', 'Procedūra izsaukta, izmainīti %d ieraksti.', 'Procedūra izsaukta, izmainīti %d ieraksti.'),
'Call' => 'Izsaukt',
'No extension' => 'Nav paplašinājuma',
'None of the supported PHP extensions (%s) are available.' => 'Neviens PHP no atbalstītajiem paplašinājumiem (%s) nav pieejams.',
'Session support must be enabled.' => 'Sesiju atbalstam jābūt ieslēgtam.',
'Session expired, please login again.' => 'Sesijas laiks ir beidzies, piesakies no jauna sistēmā.',
'Text length' => 'Teksta garums',
'Foreign key has been dropped.' => 'Ārejā atslēga dzēsta.',
'Foreign key has been altered.' => 'Ārejā atslēga izmainīta.',
'Foreign key has been created.' => 'Ārejā atslēga izveidota.',
'Foreign key' => 'Ārejā atslēga',
'Target table' => 'Mērķa tabula',
'Change' => 'Mainīt',
'Source' => 'Avots',
'Target' => 'Mērķis',
'Add column' => 'Pievienot lauku',
'Alter' => 'Izmainīt',
'Add foreign key' => 'Pievienot ārējo atslēgu',
'ON DELETE' => 'Pie dzēšanas',
'ON UPDATE' => 'Pie atjaunošanas',
'Index Type' => 'Indeksa tips',
'Column (length)' => 'Lauks (garums)',
'View has been dropped.' => 'Skats dzēsts.',
'View has been altered.' => 'Skats izmainīts.',
'View has been created.' => 'Skats izveidots.',
'Alter view' => 'Izmainīt skatu',
'Create view' => 'Izveidot skatu',
'Name' => 'Nosaukums',
'Process list' => 'Procesu saraksts',
'%d process(es) have been killed.' => array('Pabeigts %d process.', 'Pabeigti %d procesi.', 'Pabeigti %d procesi.'),
'Kill' => 'Nobeigt',
'Parameter name' => 'Parametra nosaukums',
'Database schema' => 'Datubāzes shēma',
'Create procedure' => 'Izveidot procedūru',
'Create function' => 'Izveidot funkciju',
'Routine has been dropped.' => 'Procedūru dzēsta.',
'Routine has been altered.' => 'Procedūru izmainīta.',
'Routine has been created.' => 'Procedūru izveidota.',
'Alter function' => 'Mainīt funkciju',
'Alter procedure' => 'Mainīt procedūru',
'Return type' => 'Atgriezt tips',
'Add trigger' => 'Pievienot trigeri',
'Trigger has been dropped.' => 'Trigeris dzēsts.',
'Trigger has been altered.' => 'Trigeris izmainīts.',
'Trigger has been created.' => 'Trigeris izveidots.',
'Alter trigger' => 'Izmainīt trigeri',
'Create trigger' => 'Izveidot trigeri',
'Time' => 'Laiks',
'Event' => 'Notikums',
'%s version: %s through PHP extension %s' => 'Versija %s: %s ar PHP paplašinājumu %s',
'%d row(s)' => array('%d rinda', '%d rindas', '%d rindu'),
'Remove' => 'Noņemt',
'Are you sure?' => 'Vai Tu esi pārliecināts?',
'Privileges' => 'Tiesības',
'Create user' => 'Izveidot lietotāju',
'User has been dropped.' => 'Lietotājs dzests.',
'User has been altered.' => 'Lietotājs izmainīts.',
'User has been created.' => 'Lietotājs izveidots.',
'Hashed' => 'Sajaukts',
'Column' => 'Lauks',
'Routine' => 'Procedūra',
'Grant' => 'Atļaut',
'Revoke' => 'Aizliegt',
'Too big POST data. Reduce the data or increase the %s configuration directive.' => 'POST metodes pieprasījums apjoms par lielu. Atsūtiet mazāka apjoma pieprasījumu kā konfigurācijas %s.',
'Logged as: %s' => 'Ielogojies kā: %s',
'Move up' => 'Pārvietot uz augšu',
'Move down' => 'Pārvietot uz leju',
'Functions' => 'Funkcijas',
'Aggregation' => 'Agregācija',
'Export' => 'Eksports',
'Output' => 'Izejas dati',
'open' => 'atvērt',
'save' => 'saglabāt',
'Format' => 'Formāts',
'Tables' => 'Tabulas',
'Data' => 'Dati',
'Event has been dropped.' => 'Notikums dzēsts.',
'Event has been altered.' => 'Notikums izmainīts.',
'Event has been created.' => 'Notikums izveidots.',
'Alter event' => 'Izmainīt notikumu',
'Create event' => 'Izveidot notikumu',
'At given time' => 'Norāditā laikā',
'Every' => 'Katru',
'Events' => 'Notikumi',
'Schedule' => 'Grafiks',
'Start' => 'Sākums',
'End' => 'Beigas',
'Status' => 'Statuss',
'On completion preserve' => 'Beigās saglabāt',
'Tables and views' => 'Tabulas un skati',
'Data Length' => 'Datu apjoms',
'Index Length' => 'Indeksu izmērs',
'Data Free' => 'Brīvā vieta',
'Collation' => 'Kolācija',
'Analyze' => 'Analizēt',
'Optimize' => 'Optimizēt',
'Check' => 'Pārbaudīt',
'Repair' => 'Salabot',
'Truncate' => 'Iztīrīt',
'Tables have been truncated.' => 'Tabulas iztīrītas.',
'Rows' => 'Rindas',
',' => ' ',
'0123456789' => '0123456789',
'Tables have been moved.' => 'Tabulas pārvietotas.',
'Move to other database' => 'Pārvietot uz citu datubāzi',
'Move' => 'Pārvietot',
'Engine' => 'Dzinējs',
'Save and continue edit' => 'Saglabāt un turpināt rediģēt',
'original' => 'oriģināls',
'%d item(s) have been affected.' => array('Izmainīts %d ieraksts.', 'Izmainīti %d ieraksti.', 'Izmainīti %d ieraksti.'),
'Whole result' => 'Viss rezultāts',
'Tables have been dropped.' => 'Tabulas dzēstas.',
'Clone' => 'Klonēt',
'Partition by' => 'Sadalīt pēc',
'Partitions' => 'Partīcijas',
'Partition name' => 'Partīcijas nosaukums',
'Values' => 'Vērtības',
'%d row(s) have been imported.' => array('Importēta %d rinda.', 'Importētas %d rindas.', 'Importētas %d rindas.'),
'Import' => 'Imports',
'Stop on error' => 'Astāties kļūdas gadījumā',
'Maximum number of allowed fields exceeded. Please increase %s.' => 'Sasniegts maksimālais lauku skaita ierobežojums. Palieliniet %s.',
'anywhere' => 'jebkurā vietā',
'%.3f s' => '%.3f s',
'$1-$3-$5' => '$5.$3.$1',
'[yyyy]-mm-dd' => 'dd.mm.[gggg]',
'History' => 'Vēsture',
'Variables' => 'Mainīgie',
'Source and target columns must have the same data type, there must be an index on the target columns and referenced data must exist.' => 'Lauku tipiem jābūt vienādiem, rezultējošā laukā jābut indeksa datiem.',
'Relations' => 'Relācijas',
'Run file' => 'Izpildīt failu',
'Clear' => 'Notīrīt',
'Maximum allowed file size is %sB.' => 'Faila maksimālais izmērs — %sB.',
'Numbers' => 'Skaitļi',
'Date and time' => 'Datums un laiks',
'Strings' => 'Virknes',
'Binary' => 'Binārie',
'Lists' => 'Saraksti',
'Editor' => 'Redaktors',
'E-mail' => 'Epasts',
'From' => 'No',
'Subject' => 'Tēma',
'Send' => 'Sūtīt',
'%d e-mail(s) have been sent.' => array('Nosūtīts %d epasts.', 'Nosūtīti %d epasti.', 'Nosūtīti %d epasti.'),
'Webserver file %s' => 'Fails %s uz servera',
'File does not exist.' => 'Fails neeksistē.',
'%d in total' => 'Kopā %d',
'Permanent login' => 'Atcerēties mani',
'Databases have been dropped.' => 'Datubāzes dzēstas.',
'Search data in tables' => 'Meklēt tabulās',
'Schema' => 'Shēma',
'Alter schema' => 'Izmainīt shēmu',
'Create schema' => 'Jauna shēma',
'Schema has been dropped.' => 'Shēma dzēsta.',
'Schema has been created.' => 'Izveidota jauna shēma.',
'Schema has been altered.' => 'Shēma izmainīta.',
'Sequences' => 'Virknes',
'Create sequence' => 'Izveidot virkni',
'Alter sequence' => 'Izmainīt virkni',
'Sequence has been dropped.' => 'Virkne dzēsta.',
'Sequence has been created.' => 'Izveidota virkne.',
'Sequence has been altered.' => 'Virkne izmainīta.',
'User types' => 'Lietotāju tipi',
'Create type' => 'Izveidot tipu',
'Alter type' => 'Izmainīt tipu',
'Type has been dropped.' => 'Tips dzēsts.',
'Type has been created.' => 'Tips izveidots.',
'Ctrl+click on a value to modify it.' => 'Lai izmainītu vērtību, izmanto Ctrl + peles klikšķi.',
'Use edit link to modify this value.' => 'Izmainīt vērtību var tikai ar saiti "Izmainīt".',
'last' => 'pēdējā',
'From server' => 'No servera',
'System' => 'Sistēma',
'Select data' => 'Izvēlēties datus',
'Show structure' => 'Parādīt struktūru',
'empty' => 'tukšs',
'Network' => 'Tīkls',
'Geometry' => 'Ģeometrija',
'File exists.' => 'Fails eksistē.',
'Attachments' => 'Pielikumi',
'%d query(s) executed OK.' => array('%d pieprasījums veiksmīgs.', '%d pieprasījumi veiksmīgi.', '%d pieprasījumi veiksmīgi.'),
'Show only errors' => 'Rādīt tikai kļūdas',
'Refresh' => 'Atjaunot',
'Invalid schema.' => 'Nederīga shēma.',
'Please use one of the extensions %s.' => 'Izmainojiet kādu no paplašinājumiem %s.',
'now' => 'tagad',
'ltr' => 'ltr',
'Tables have been copied.' => 'Tabulas nokopētas.',
'Copy' => 'kopēt',
'Permanent link' => 'Pastāvīga saite',
'Edit all' => 'Rediģēt visus',
'HH:MM:SS' => 'HH:MM:SS',
'Tables have been optimized.' => 'Tabulas optimizētas.',
'Materialized view' => 'Matrializēts skats',
'Vacuum' => 'Vakums',
'Selected' => 'Izvēlētie',
'File must be in UTF-8 encoding.' => 'Failam jābūt UTF-8 kodējumam.',
'Modify' => 'Izmainīt',
'Loading' => 'Ielāde',
'Load more data' => 'Ielādēt vēl datus',
'ATTACH queries are not supported.' => 'ATTACH-pieprasījumi nav atbalstīti.',
'%d / ' => '%d / ',
'Limit rows' => 'Rindu limits',
'Default value' => 'Noklusētā vērtība',
'Full table scan' => 'Pilna tabulas analīze',
'Too many unsuccessful logins, try again in %d minute(s).' => array('Pieteikšanās mēģinājumu skaits par lielu. Mēginiet pēc %d minūtes.', 'Pieteikšanās mēģinājumu skaits par lielu. Mēginiet pēc %d minūtēm.', 'Pieteikšanās mēģinājumu skaits par lielu. Mēginiet pēc %d minūtēm.'),
'Master password expired. <a href="https://www.adminer.org/en/extension/"%s>Implement</a> %s method to make it permanent.' => 'Master-parole nav derīga. <a href="https://www.adminer.org/en/extension/"%s>Implementējiet</a> metodi %s, lai padarīgu šo par ierastu metodi.',
'If you did not send this request from Adminer then close this page.' => 'Ja nesūtījāt šo pieprasījumu no Adminer, tad aizveriet pārlūka logu.',
'You can upload a big SQL file via FTP and import it from server.' => 'Varat ielādēt lielu SQL failu uz servera un tad importēt to.',
'Size' => 'Izmērs',
'Compute' => 'Izskaitļot',
'You are offline.' => 'Jūs est bezsasaistē.',
'You have no privileges to update this table.' => 'Jums nav pieejas labot šo tabulu.',
'Saving' => 'Saglabāšana',
'yes' => 'jā',
'no' => 'nē',
'Drop %s?' => 'Dzēst %s?',
'overwrite' => 'pārrakstīt',
'DB' => 'DB',
'Warnings' => 'Brīdinājumi',
'Adminer does not support accessing a database without a password, <a href="https://www.adminer.org/en/password/"%s>more information</a>.' => 'Adminer neatbalsta pieeju bez paroles, <a href="https://www.adminer.org/en/password/"%s>vairāk informācijas šeit</a>.',
'Thanks for using Adminer, consider <a href="https://www.adminer.org/en/donation/">donating</a>.' => 'Paldies, ka izmantoji Adminer, vai vēlies veikt <a href="https://www.adminer.org/en/donation/">ziedojumu</a>.',
'The action will be performed after successful login with the same credentials.' => 'Darbība tiks pabeigta pēc derīgas pieteikšanās sistēmā.',
'Connecting to privileged ports is not allowed.' => 'Pieeja priviliģētiem portiem nav atļauta.',
'There is a space in the input password which might be the cause.' => 'Parole satur atstarpi, kas varētu būt lieka.',
'Unknown error.' => 'Nezināma kļūda.',
'Database does not support password.' => 'Datubāze neatbalsta paroli.',
'Disable %s or enable %s or %s extensions.' => null,
'Columns' => null,
'Nullable' => null,
'Default' => null,
'Yes' => 'Jā',
'No' => 'Nē',
'One Time Password' => null,
'Invalid OTP code.' => null,
);

View File

@@ -11,7 +11,7 @@ $translations = array(
'Logged as: %s' => 'Log masuk sebagai: %s', 'Logged as: %s' => 'Log masuk sebagai: %s',
'Logout successful.' => 'Log keluar berjaya.', 'Logout successful.' => 'Log keluar berjaya.',
'Thanks for using Adminer, consider <a href="https://www.adminer.org/en/donation/">donating</a>.' => 'Terima kasih kerana menggunakan Adminer, pertimbangkan untuk <a href="https://www.adminer.org/en/donation/">menderma</a>.', 'Thanks for using Adminer, consider <a href="https://www.adminer.org/en/donation/">donating</a>.' => 'Terima kasih kerana menggunakan Adminer, pertimbangkan untuk <a href="https://www.adminer.org/en/donation/">menderma</a>.',
'Invalid credentials.' => 'Akses tidak sah.', 'Invalid server or credentials.' => null,
'Too many unsuccessful logins, try again in %d minute(s).' => 'Terlalu banyak percubaan log masuk yang gagal, sila cuba lagi dalam masa %d minit.', 'Too many unsuccessful logins, try again in %d minute(s).' => 'Terlalu banyak percubaan log masuk yang gagal, sila cuba lagi dalam masa %d minit.',
'Master password expired. <a href="https://www.adminer.org/en/extension/"%s>Implement</a> %s method to make it permanent.' => 'Kata laluan utama telah luput. <a href="https://www.adminer.org/en/extension/"%s>Gunakan</a> cara %s untuk mengekalkannya.', 'Master password expired. <a href="https://www.adminer.org/en/extension/"%s>Implement</a> %s method to make it permanent.' => 'Kata laluan utama telah luput. <a href="https://www.adminer.org/en/extension/"%s>Gunakan</a> cara %s untuk mengekalkannya.',
'Language' => 'Bahasa', 'Language' => 'Bahasa',
@@ -337,4 +337,22 @@ $translations = array(
'Type has been dropped.' => 'Jenis telah dijatuhkan.', 'Type has been dropped.' => 'Jenis telah dijatuhkan.',
'Type has been created.' => 'Jenis telah dibuat.', 'Type has been created.' => 'Jenis telah dibuat.',
'Alter type' => 'Ubah jenis', 'Alter type' => 'Ubah jenis',
'overwrite' => null,
'DB' => null,
'Warnings' => null,
'Adminer does not support accessing a database without a password, <a href="https://www.adminer.org/en/password/"%s>more information</a>.' => null,
'The action will be performed after successful login with the same credentials.' => null,
'There is a space in the input password which might be the cause.' => null,
'Unknown error.' => null,
'Database does not support password.' => null,
'Disable %s or enable %s or %s extensions.' => null,
'Columns' => null,
'Nullable' => null,
'Default' => null,
'Yes' => 'Ya',
'No' => 'Tidak',
'One Time Password' => null,
'Invalid OTP code.' => null,
); );

View File

@@ -1,8 +1,8 @@
<?php <?php
$translations = array( $translations = array(
'Login' => 'Inloggen', 'Login' => 'Aanmelden',
'Logout successful.' => 'Uitloggen geslaagd.', 'Logout successful.' => 'Successvol afgemeld.',
'Invalid credentials.' => 'Ongeldige logingegevens.', 'Invalid server or credentials.' => null,
'Server' => 'Server', 'Server' => 'Server',
'Username' => 'Gebruikersnaam', 'Username' => 'Gebruikersnaam',
'Password' => 'Wachtwoord', 'Password' => 'Wachtwoord',
@@ -31,7 +31,7 @@ $translations = array(
'Alter database' => 'Database aanpassen', 'Alter database' => 'Database aanpassen',
'Create database' => 'Database aanmaken', 'Create database' => 'Database aanmaken',
'SQL command' => 'SQL opdracht', 'SQL command' => 'SQL opdracht',
'Logout' => 'Uitloggen', 'Logout' => 'Afmelden',
'database' => 'database', 'database' => 'database',
'Use' => 'Gebruik', 'Use' => 'Gebruik',
'No tables.' => 'Geen tabellen.', 'No tables.' => 'Geen tabellen.',
@@ -41,7 +41,7 @@ $translations = array(
'Item%s has been inserted.' => 'Item%s toegevoegd.', 'Item%s has been inserted.' => 'Item%s toegevoegd.',
'Edit' => 'Bewerk', 'Edit' => 'Bewerk',
'Insert' => 'Toevoegen', 'Insert' => 'Toevoegen',
'Save and insert next' => 'Opslaan, daarna toevoegen', 'Save and insert next' => 'Opslaan en volgende toevoegen',
'Delete' => 'Verwijderen', 'Delete' => 'Verwijderen',
'Database' => 'Database', 'Database' => 'Database',
'Routines' => 'Procedures', 'Routines' => 'Procedures',
@@ -60,7 +60,7 @@ $translations = array(
'Action' => 'Acties', 'Action' => 'Acties',
'edit' => 'bewerk', 'edit' => 'bewerk',
'Page' => 'Pagina', 'Page' => 'Pagina',
'Query executed OK, %d row(s) affected.' => array('Query uitgevoerd, %d rij geraakt.', 'Query uitgevoerd, %d rijen beïnvloed.'), 'Query executed OK, %d row(s) affected.' => array('Query uitgevoerd, %d rij aangepast.', 'Query uitgevoerd, %d rijen aangepast.'),
'Error in query' => 'Fout in query', 'Error in query' => 'Fout in query',
'Execute' => 'Uitvoeren', 'Execute' => 'Uitvoeren',
'Table' => 'Tabel', 'Table' => 'Tabel',
@@ -81,7 +81,7 @@ $translations = array(
'No extension' => 'Geen extensie', 'No extension' => 'Geen extensie',
'None of the supported PHP extensions (%s) are available.' => 'Geen geldige PHP extensies beschikbaar (%s).', 'None of the supported PHP extensions (%s) are available.' => 'Geen geldige PHP extensies beschikbaar (%s).',
'Session support must be enabled.' => 'Sessies moeten geactiveerd zijn.', 'Session support must be enabled.' => 'Sessies moeten geactiveerd zijn.',
'Session expired, please login again.' => 'Uw sessie is verlopen. Gelieve opnieuw in te loggen.', 'Session expired, please login again.' => 'Uw sessie is verlopen. Gelieve opnieuw aan te melden.',
'Text length' => 'Tekst lengte', 'Text length' => 'Tekst lengte',
'Foreign key has been dropped.' => 'Foreign key verwijderd.', 'Foreign key has been dropped.' => 'Foreign key verwijderd.',
'Foreign key has been altered.' => 'Foreign key aangepast.', 'Foreign key has been altered.' => 'Foreign key aangepast.',
@@ -265,4 +265,49 @@ $translations = array(
'Permanent link' => 'Permanente link', 'Permanent link' => 'Permanente link',
'Edit all' => 'Alles bewerken', 'Edit all' => 'Alles bewerken',
'HH:MM:SS' => 'HH:MM:SS', 'HH:MM:SS' => 'HH:MM:SS',
'Drop %s?' => 'Verwijder %s?',
'Tables have been optimized.' => 'Tabellen zijn geoptimaliseerd.',
'Materialized view' => 'Materialized view',
'Vacuum' => 'Vacuum',
'Selected' => 'Geselecteerd',
'overwrite' => 'overschrijven',
'DB' => 'DB',
'File must be in UTF-8 encoding.' => 'Het bestand moet met UTF-8 encodering zijn opgeslagen.',
'Modify' => 'Aanpassen',
'Load more data' => 'Meer data inladen',
'Loading' => 'Aan het laden',
'ATTACH queries are not supported.' => 'ATTACH queries worden niet ondersteund',
'Warnings' => 'Waarschuwingen',
'%d / ' => '%d / ',
'Limit rows' => 'Rijen beperken',
'Adminer does not support accessing a database without a password, <a href="https://www.adminer.org/en/password/"%s>more information</a>.' => 'Adminer ondersteunt geen toegang tot databases zonder wachtwoord, <a href="https://www.adminer.org/en/password/"%s>meer informatie</a>.',
'Default value' => 'Standaardwaarde',
'Full table scan' => 'Full table scan',
'Too many unsuccessful logins, try again in %d minute(s).' => array('Teveel foutieve aanmeldpogingen, probeer opnieuw binnen %d minuut.', 'Teveel foutieve aanmeldpogingen, probeer opnieuw binnen %d minuten.'),
'Thanks for using Adminer, consider <a href="https://www.adminer.org/en/donation/">donating</a>.' => null,
'Master password expired. <a href="https://www.adminer.org/en/extension/"%s>Implement</a> %s method to make it permanent.' => 'Master wachtwoord verlopen. <a href="https://www.adminer.org/en/extension/"%s>Implementeer</a> de %s methode om het permanent te maken.',
'The action will be performed after successful login with the same credentials.' => 'Deze actie zal uitgevoerd worden na het succesvol aanmelden met dezelfde gebruikersgegevens',
'Connecting to privileged ports is not allowed.' => 'Verbindingen naar geprivilegieerde poorten is niet toegestaan.',
'There is a space in the input password which might be the cause.' => 'Er staat een spatie in het wachtwoord, wat misschien de oorzaak is.',
'If you did not send this request from Adminer then close this page.' => 'Als u deze actie niet via Adminer hebt gedaan, gelieve deze pagina dan te sluiten.',
'You can upload a big SQL file via FTP and import it from server.' => 'U kan een groot SQL-bestand uploaden via FTP en het importeren via de server.',
'Size' => 'Grootte',
'Compute' => 'Bereken',
'You are offline.' => 'U bent offline.',
'You have no privileges to update this table.' => 'U bent niet gemachtigd om deze tabel aan te passen.',
'Saving' => 'Opslaan',
'Unknown error.' => 'Onbekende fout',
'Database does not support password.' => 'Database ondersteunt het wachtwoord niet.',
'Disable %s or enable %s or %s extensions.' => 'Schakel %s uit or schakel extensies %s of %s in.',
'yes' => 'ja',
'no' => 'neen',
'Columns' => null,
'Nullable' => null,
'Default' => null,
'Yes' => 'Ja',
'No' => 'Neen',
'One Time Password' => null,
'Invalid OTP code.' => null,
); );

View File

@@ -9,7 +9,7 @@ $translations = array(
'Logout' => 'Logg ut', 'Logout' => 'Logg ut',
'Logged as: %s' => 'Logget inn som: %s', 'Logged as: %s' => 'Logget inn som: %s',
'Logout successful.' => 'Utlogging vellykket.', 'Logout successful.' => 'Utlogging vellykket.',
'Invalid credentials.' => 'Ugylding innloggingsinformasjon.', 'Invalid server or credentials.' => null,
'Master password expired. <a href="https://www.adminer.org/en/extension/"%s>Implement</a> %s method to make it permanent.' => 'Master-passord er utløpt. <a href="https://www.adminer.org/en/extension/"%s>Implementer</a> en metode for %s for å gjøre det permanent.', 'Master password expired. <a href="https://www.adminer.org/en/extension/"%s>Implement</a> %s method to make it permanent.' => 'Master-passord er utløpt. <a href="https://www.adminer.org/en/extension/"%s>Implementer</a> en metode for %s for å gjøre det permanent.',
'Language' => 'Språk', 'Language' => 'Språk',
'Invalid CSRF token. Send the form again.' => 'Ugylding CSRF-token - Send inn skjemaet igjen.', 'Invalid CSRF token. Send the form again.' => 'Ugylding CSRF-token - Send inn skjemaet igjen.',
@@ -279,4 +279,35 @@ $translations = array(
'Type has been created.' => 'Type er opprettet.', 'Type has been created.' => 'Type er opprettet.',
'Alter type' => 'Endre type', 'Alter type' => 'Endre type',
'Saving' => 'Lagrer', 'Saving' => 'Lagrer',
'Drop %s?' => null,
'Materialized view' => null,
'overwrite' => null,
'DB' => null,
'ATTACH queries are not supported.' => null,
'Warnings' => null,
'%d / ' => array(),
'Limit rows' => null,
'Adminer does not support accessing a database without a password, <a href="https://www.adminer.org/en/password/"%s>more information</a>.' => null,
'Default value' => null,
'Too many unsuccessful logins, try again in %d minute(s).' => array(),
'Thanks for using Adminer, consider <a href="https://www.adminer.org/en/donation/">donating</a>.' => null,
'The action will be performed after successful login with the same credentials.' => null,
'Connecting to privileged ports is not allowed.' => null,
'There is a space in the input password which might be the cause.' => null,
'If you did not send this request from Adminer then close this page.' => null,
'Size' => null,
'Compute' => null,
'You are offline.' => null,
'Unknown error.' => null,
'Database does not support password.' => null,
'Disable %s or enable %s or %s extensions.' => null,
'Columns' => null,
'Nullable' => null,
'Default' => null,
'Yes' => 'Ja',
'No' => 'Nei',
'One Time Password' => null,
'Invalid OTP code.' => null,
); );

View File

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

View File

@@ -2,7 +2,7 @@
$translations = array( $translations = array(
'Login' => 'Entrar', 'Login' => 'Entrar',
'Logout successful.' => 'Saída bem sucedida.', 'Logout successful.' => 'Saída bem sucedida.',
'Invalid credentials.' => 'Identificação inválida.', 'Invalid server or credentials.' => null,
'Server' => 'Servidor', 'Server' => 'Servidor',
'Username' => 'Usuário', 'Username' => 'Usuário',
'Password' => 'Senha', 'Password' => 'Senha',
@@ -260,4 +260,54 @@ $translations = array(
'Please use one of the extensions %s.' => 'Por favor use uma das extensões %s.', 'Please use one of the extensions %s.' => 'Por favor use uma das extensões %s.',
'now' => 'agora', 'now' => 'agora',
'ltr' => 'ltr', 'ltr' => 'ltr',
'Drop %s?' => null,
'Tables have been copied.' => null,
'Tables have been optimized.' => null,
'Materialized view' => null,
'Vacuum' => null,
'Selected' => null,
'Copy' => null,
'overwrite' => null,
'DB' => null,
'Permanent link' => null,
'File must be in UTF-8 encoding.' => null,
'Modify' => null,
'Load more data' => null,
'Loading' => null,
'ATTACH queries are not supported.' => null,
'Warnings' => null,
'%d / ' => array(),
'Limit rows' => null,
'Edit all' => null,
'Adminer does not support accessing a database without a password, <a href="https://www.adminer.org/en/password/"%s>more information</a>.' => null,
'Default value' => null,
'Full table scan' => null,
'Too many unsuccessful logins, try again in %d minute(s).' => array(),
'Thanks for using Adminer, consider <a href="https://www.adminer.org/en/donation/">donating</a>.' => null,
'Master password expired. <a href="https://www.adminer.org/en/extension/"%s>Implement</a> %s method to make it permanent.' => null,
'The action will be performed after successful login with the same credentials.' => null,
'Connecting to privileged ports is not allowed.' => null,
'There is a space in the input password which might be the cause.' => null,
'If you did not send this request from Adminer then close this page.' => null,
'You can upload a big SQL file via FTP and import it from server.' => null,
'Size' => null,
'Compute' => null,
'You are offline.' => null,
'You have no privileges to update this table.' => null,
'Saving' => null,
'Unknown error.' => null,
'Database does not support password.' => null,
'Disable %s or enable %s or %s extensions.' => null,
'yes' => null,
'no' => null,
'HH:MM:SS' => null,
'Columns' => null,
'Nullable' => null,
'Default' => null,
'Yes' => null,
'No' => null,
'One Time Password' => null,
'Invalid OTP code.' => null,
); );

View File

@@ -2,7 +2,7 @@
$translations = array( $translations = array(
'Login' => 'Entrar', 'Login' => 'Entrar',
'Logout successful.' => 'Sessão terminada com sucesso.', 'Logout successful.' => 'Sessão terminada com sucesso.',
'Invalid credentials.' => 'Identificação inválida.', 'Invalid server or credentials.' => null,
'Server' => 'Servidor', 'Server' => 'Servidor',
'Username' => 'Nome de utilizador', 'Username' => 'Nome de utilizador',
'Password' => 'Senha', 'Password' => 'Senha',
@@ -260,4 +260,54 @@ $translations = array(
'Please use one of the extensions %s.' => 'Por favor use uma das extensões %s.', 'Please use one of the extensions %s.' => 'Por favor use uma das extensões %s.',
'now' => 'agora', 'now' => 'agora',
'ltr' => 'ltr', 'ltr' => 'ltr',
'Drop %s?' => null,
'Tables have been copied.' => null,
'Tables have been optimized.' => null,
'Materialized view' => null,
'Vacuum' => null,
'Selected' => null,
'Copy' => null,
'overwrite' => null,
'DB' => null,
'Permanent link' => null,
'File must be in UTF-8 encoding.' => null,
'Modify' => null,
'Load more data' => null,
'Loading' => null,
'ATTACH queries are not supported.' => null,
'Warnings' => null,
'%d / ' => array(),
'Limit rows' => null,
'Edit all' => null,
'Adminer does not support accessing a database without a password, <a href="https://www.adminer.org/en/password/"%s>more information</a>.' => null,
'Default value' => null,
'Full table scan' => null,
'Too many unsuccessful logins, try again in %d minute(s).' => array(),
'Thanks for using Adminer, consider <a href="https://www.adminer.org/en/donation/">donating</a>.' => null,
'Master password expired. <a href="https://www.adminer.org/en/extension/"%s>Implement</a> %s method to make it permanent.' => null,
'The action will be performed after successful login with the same credentials.' => null,
'Connecting to privileged ports is not allowed.' => null,
'There is a space in the input password which might be the cause.' => null,
'If you did not send this request from Adminer then close this page.' => null,
'You can upload a big SQL file via FTP and import it from server.' => null,
'Size' => null,
'Compute' => null,
'You are offline.' => null,
'You have no privileges to update this table.' => null,
'Saving' => null,
'Unknown error.' => null,
'Database does not support password.' => null,
'Disable %s or enable %s or %s extensions.' => null,
'yes' => null,
'no' => null,
'HH:MM:SS' => null,
'Columns' => null,
'Nullable' => null,
'Default' => null,
'Yes' => null,
'No' => null,
'One Time Password' => null,
'Invalid OTP code.' => null,
); );

View File

@@ -2,7 +2,7 @@
$translations = array( $translations = array(
'Login' => 'Intră', 'Login' => 'Intră',
'Logout successful.' => 'Ați ieșit cu succes.', 'Logout successful.' => 'Ați ieșit cu succes.',
'Invalid credentials.' => 'Numele de utilizator sau parola este greșită.', 'Invalid server or credentials.' => null,
'Server' => 'Server', 'Server' => 'Server',
'Username' => 'Nume de utilizator', 'Username' => 'Nume de utilizator',
'Password' => 'Parola', 'Password' => 'Parola',
@@ -265,4 +265,49 @@ $translations = array(
'Permanent link' => 'Adresă permanentă', 'Permanent link' => 'Adresă permanentă',
'Edit all' => 'Editează tot', 'Edit all' => 'Editează tot',
'HH:MM:SS' => 'HH:MM:SS', 'HH:MM:SS' => 'HH:MM:SS',
'Drop %s?' => null,
'Tables have been optimized.' => null,
'Materialized view' => null,
'Vacuum' => null,
'Selected' => null,
'overwrite' => null,
'DB' => null,
'File must be in UTF-8 encoding.' => null,
'Modify' => null,
'Load more data' => null,
'Loading' => null,
'ATTACH queries are not supported.' => null,
'Warnings' => null,
'%d / ' => array(),
'Limit rows' => null,
'Adminer does not support accessing a database without a password, <a href="https://www.adminer.org/en/password/"%s>more information</a>.' => null,
'Default value' => null,
'Full table scan' => null,
'Too many unsuccessful logins, try again in %d minute(s).' => array(),
'Thanks for using Adminer, consider <a href="https://www.adminer.org/en/donation/">donating</a>.' => null,
'Master password expired. <a href="https://www.adminer.org/en/extension/"%s>Implement</a> %s method to make it permanent.' => null,
'The action will be performed after successful login with the same credentials.' => null,
'Connecting to privileged ports is not allowed.' => null,
'There is a space in the input password which might be the cause.' => null,
'If you did not send this request from Adminer then close this page.' => null,
'You can upload a big SQL file via FTP and import it from server.' => null,
'Size' => null,
'Compute' => null,
'You are offline.' => null,
'You have no privileges to update this table.' => null,
'Saving' => null,
'Unknown error.' => null,
'Database does not support password.' => null,
'Disable %s or enable %s or %s extensions.' => null,
'yes' => null,
'no' => null,
'Columns' => null,
'Nullable' => null,
'Default' => null,
'Yes' => null,
'No' => null,
'One Time Password' => null,
'Invalid OTP code.' => null,
); );

View File

@@ -2,7 +2,7 @@
$translations = array( $translations = array(
'Login' => 'Войти', 'Login' => 'Войти',
'Logout successful.' => 'Вы успешно покинули систему.', 'Logout successful.' => 'Вы успешно покинули систему.',
'Invalid credentials.' => 'Неправильное имя пользователя или пароль.', 'Invalid server or credentials.' => null,
'Server' => 'Сервер', 'Server' => 'Сервер',
'Username' => 'Имя пользователя', 'Username' => 'Имя пользователя',
'Password' => 'Пароль', 'Password' => 'Пароль',
@@ -287,6 +287,27 @@ $translations = array(
'You are offline.' => 'Вы не выполнили вход.', 'You are offline.' => 'Вы не выполнили вход.',
'You have no privileges to update this table.' => 'У вас нет прав на обновление этой таблицы.', 'You have no privileges to update this table.' => 'У вас нет прав на обновление этой таблицы.',
'Saving' => 'Сохранение', 'Saving' => 'Сохранение',
'yes' => 'Да', 'yes' => 'да',
'no' => 'Нет', 'no' => 'нет',
'Drop %s?' => 'Удалить %s?',
'overwrite' => 'перезаписать',
'DB' => 'DB',
'Warnings' => 'Предупреждения',
'Adminer does not support accessing a database without a password, <a href="https://www.adminer.org/en/password/"%s>more information</a>.' => 'Adminer не поддерживает доступ к базе данных без пароля, <a href="https://www.adminer.org/en/password/"%s>больше информации</a>.',
'Thanks for using Adminer, consider <a href="https://www.adminer.org/en/donation/">donating</a>.' => 'Спасибо за использование Adminer, рассмотрите возможность <a href="https://www.adminer.org/en/donation/">пожертвования</a>.',
'The action will be performed after successful login with the same credentials.' => 'Действие будет выполнено после успешного входа в систему с теми же учетными данными.',
'Connecting to privileged ports is not allowed.' => 'Подключение к привилегированным портам не допускается.',
'There is a space in the input password which might be the cause.' => 'В введеном пароле есть пробел, это может быть причиною.',
'Unknown error.' => 'Неизвестная ошибка.',
'Database does not support password.' => 'База данных не поддерживает пароль.',
'Disable %s or enable %s or %s extensions.' => 'Отключите %s или включите расширения %s или %s.',
'Columns' => null,
'Nullable' => null,
'Default' => null,
'Yes' => 'Да',
'No' => 'Нет',
'One Time Password' => null,
'Invalid OTP code.' => null,
); );

View File

@@ -2,7 +2,7 @@
$translations = array( $translations = array(
'Login' => 'Prihlásiť sa', 'Login' => 'Prihlásiť sa',
'Logout successful.' => 'Odhlásenie prebehlo v poriadku.', 'Logout successful.' => 'Odhlásenie prebehlo v poriadku.',
'Invalid credentials.' => 'Neplatné prihlasovacie údaje.', 'Invalid server or credentials.' => 'Neplatný server alebo prihlasovacie údaje.',
'Server' => 'Server', 'Server' => 'Server',
'Username' => 'Používateľ', 'Username' => 'Používateľ',
'Password' => 'Heslo', 'Password' => 'Heslo',
@@ -70,7 +70,7 @@ $translations = array(
'Unable to select the table' => 'Tabuľku sa nepodarilo vypísať', 'Unable to select the table' => 'Tabuľku sa nepodarilo vypísať',
'Invalid CSRF token. Send the form again.' => 'Neplatný token CSRF. Odošlite formulár znova.', 'Invalid CSRF token. Send the form again.' => 'Neplatný token CSRF. Odošlite formulár znova.',
'Comment' => 'Komentár', 'Comment' => 'Komentár',
'Default values' => 'Východzie hodnoty', 'Default values' => 'Predvolené hodnoty',
'%d byte(s)' => array('%d bajt', '%d bajty', '%d bajtov'), '%d byte(s)' => array('%d bajt', '%d bajty', '%d bajtov'),
'No commands to execute.' => 'Žiadne príkazy na vykonanie.', 'No commands to execute.' => 'Žiadne príkazy na vykonanie.',
'Unable to upload a file.' => 'Súbor sa nepodarilo nahrať.', 'Unable to upload a file.' => 'Súbor sa nepodarilo nahrať.',
@@ -94,8 +94,8 @@ $translations = array(
'Add column' => 'Pridať stĺpec', 'Add column' => 'Pridať stĺpec',
'Alter' => 'Zmeniť', 'Alter' => 'Zmeniť',
'Add foreign key' => 'Pridať cudzí kľúč', 'Add foreign key' => 'Pridať cudzí kľúč',
'ON DELETE' => 'ON DELETE', 'ON DELETE' => 'Pri zmazaní',
'ON UPDATE' => 'ON UPDATE', 'ON UPDATE' => 'Pri aktualizácii',
'Index Type' => 'Typ indexu', 'Index Type' => 'Typ indexu',
'Column (length)' => 'Stĺpec (dĺžka)', 'Column (length)' => 'Stĺpec (dĺžka)',
'View has been dropped.' => 'Pohľad bol odstránený.', 'View has been dropped.' => 'Pohľad bol odstránený.',
@@ -265,4 +265,47 @@ $translations = array(
'Permanent link' => 'Permanentný odkaz', 'Permanent link' => 'Permanentný odkaz',
'Edit all' => 'Upraviť všetko', 'Edit all' => 'Upraviť všetko',
'HH:MM:SS' => 'HH:MM:SS', 'HH:MM:SS' => 'HH:MM:SS',
'Drop %s?' => 'Odstrániť %s?',
'Tables have been optimized.' => 'Tabuľky boli optimalizované.',
'Materialized view' => 'Materializovaný pohľad',
'Vacuum' => 'Vyčistiť',
'Selected' => 'Označené',
'overwrite' => 'prepísať',
'DB' => 'DB',
'File must be in UTF-8 encoding.' => 'Súbor musí byť v kódovaní UTF-8.',
'Modify' => 'Zmeniť',
'Load more data' => 'Nahráť ďalšie dáta',
'Loading' => 'Nahráva sa',
'ATTACH queries are not supported.' => 'Dotazy ATTACH nie sú podporované.',
'Warnings' => 'Varovania',
'%d / ' => '%d / ',
'Limit rows' => 'Limit riadkov',
'Adminer does not support accessing a database without a password, <a href="https://www.adminer.org/en/password/"%s>more information</a>.' => 'Adminer nepodporuje prístup k databáze bez hesla, <a href="https://www.adminer.org/cs/password/"%s>viac informácií</a>.',
'Default value' => 'Predvolená hodnota',
'Full table scan' => 'Prechod celej tabuľky',
'Too many unsuccessful logins, try again in %d minute(s).' => array('Príliš veľa pokusov o prihlásenie, skúste to znova za %d minutu.', 'Príliš veľa pokusov o prihlásenie, skúste to znova za %d minuty.', 'Príliš veľa pokusov o prihlásenie, skúste to znova za %d minút.'),
'Thanks for using Adminer, consider <a href="https://www.adminer.org/en/donation/">donating</a>.' => 'Vďaka za používanie Admineru, <a href="https://www.adminer.org/cs/donation/">prispejte</a> na vývoj.',
'Master password expired. <a href="https://www.adminer.org/en/extension/"%s>Implement</a> %s method to make it permanent.' => 'Platnosť hlavného hesla vypršala. <a href="https://www.adminer.org/cs/extension/"%s>Implementujte</a> metodu %s, aby platilo natrvalo.',
'The action will be performed after successful login with the same credentials.' => 'Akcia sa vykoná po úspešnom prihlásení s rovnakými prihlasovacími údajmi.',
'Connecting to privileged ports is not allowed.' => 'Pripojenie k privilegovaným portom nie je povolené.',
'There is a space in the input password which might be the cause.' => 'V zadanom hesle je medzera, ktorá môže byť príčinou.',
'If you did not send this request from Adminer then close this page.' => 'Pokiaľ ste tento požiadavok neodoslali z Adminera, zatvorte túto stránku.',
'You can upload a big SQL file via FTP and import it from server.' => 'Veľký SQL soubor môžete nahrať pomocou FTP a importovať ho zo servera.',
'Size' => 'Veľkosť',
'Compute' => 'Spočítať',
'You are offline.' => 'Ste offline.',
'You have no privileges to update this table.' => 'Nemáte oprávnenie na aktualizáciu tejto tabuľky.',
'Saving' => 'Ukladá sa',
'Unknown error.' => 'Neznáma chyba.',
'Database does not support password.' => 'Databáza nepodporuje heslo.',
'Disable %s or enable %s or %s extensions.' => 'Zakážte %s alebo povoľte rozšírenie %s alebo %s.',
'yes' => 'áno',
'no' => 'nie',
'Yes' => 'Áno',
'No' => 'Nie',
'Columns' => 'Stĺpce',
'Nullable' => 'Povolené null',
'Default' => 'Predvolené',
'One Time Password' => 'Jednorázové heslo',
'Invalid OTP code.' => 'Neplatný kód OTP.',
); );

View File

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

View File

@@ -10,7 +10,7 @@ $translations = array(
'Logout' => 'Одјава', 'Logout' => 'Одјава',
'Logged as: %s' => 'Пријави се као: %s', 'Logged as: %s' => 'Пријави се као: %s',
'Logout successful.' => 'Успешна одјава.', 'Logout successful.' => 'Успешна одјава.',
'Invalid credentials.' => 'Неважеће дозволе.', 'Invalid server or credentials.' => null,
'Language' => 'Језик', 'Language' => 'Језик',
'Invalid CSRF token. Send the form again.' => 'Неважећи CSRF код. Проследите поново форму.', 'Invalid CSRF token. Send the form again.' => 'Неважећи CSRF код. Проследите поново форму.',
'No extension' => 'Без додатака', 'No extension' => 'Без додатака',
@@ -316,4 +316,43 @@ $translations = array(
'Type has been dropped.' => 'Тип је избрисан.', 'Type has been dropped.' => 'Тип је избрисан.',
'Type has been created.' => 'тип је креиран.', 'Type has been created.' => 'тип је креиран.',
'Alter type' => 'Уреди тип', 'Alter type' => 'Уреди тип',
'Drop %s?' => null,
'Materialized view' => null,
'Vacuum' => null,
'Selected' => null,
'overwrite' => null,
'DB' => null,
'File must be in UTF-8 encoding.' => null,
'Modify' => null,
'ATTACH queries are not supported.' => null,
'Warnings' => null,
'%d / ' => array(),
'Limit rows' => null,
'Adminer does not support accessing a database without a password, <a href="https://www.adminer.org/en/password/"%s>more information</a>.' => null,
'Default value' => null,
'Too many unsuccessful logins, try again in %d minute(s).' => array(),
'Thanks for using Adminer, consider <a href="https://www.adminer.org/en/donation/">donating</a>.' => null,
'Master password expired. <a href="https://www.adminer.org/en/extension/"%s>Implement</a> %s method to make it permanent.' => null,
'The action will be performed after successful login with the same credentials.' => null,
'Connecting to privileged ports is not allowed.' => null,
'There is a space in the input password which might be the cause.' => null,
'If you did not send this request from Adminer then close this page.' => null,
'You can upload a big SQL file via FTP and import it from server.' => null,
'Size' => null,
'Compute' => null,
'You are offline.' => null,
'You have no privileges to update this table.' => null,
'Saving' => null,
'Unknown error.' => null,
'Database does not support password.' => null,
'Disable %s or enable %s or %s extensions.' => null,
'Columns' => null,
'Nullable' => null,
'Default' => null,
'Yes' => 'Да',
'No' => 'Не',
'One Time Password' => null,
'Invalid OTP code.' => null,
); );

View File

@@ -11,10 +11,10 @@ $translations = array(
'Logged as: %s' => 'Inloggad som: %s', 'Logged as: %s' => 'Inloggad som: %s',
'Logout successful.' => 'Du är nu utloggad.', 'Logout successful.' => 'Du är nu utloggad.',
'Thanks for using Adminer, consider <a href="https://www.adminer.org/en/donation/">donating</a>.' => 'Tack för att du använder Adminer, vänligen fundera över att <a href="https://www.adminer.org/en/donation/">donera</a>.', 'Thanks for using Adminer, consider <a href="https://www.adminer.org/en/donation/">donating</a>.' => 'Tack för att du använder Adminer, vänligen fundera över att <a href="https://www.adminer.org/en/donation/">donera</a>.',
'Invalid credentials.' => 'Ogiltiga inloggningsuppgifter.', 'Invalid server or credentials.' => null,
'There is a space in the input password which might be the cause.' => 'Det finns ett mellanslag i lösenordet, vilket kan vara anledningen.', 'There is a space in the input password which might be the cause.' => 'Det finns ett mellanslag i lösenordet, vilket kan vara anledningen.',
'Adminer does not support accessing a database without a password, <a href="https://www.adminer.org/en/password/"%s>more information</a>.' => 'Adminer tillåter inte att ansluta till en databas utan lösenord. <a href="https://www.adminer.org/en/password/"%s>Mer information</a>.', 'Adminer does not support accessing a database without a password, <a href="https://www.adminer.org/en/password/"%s>more information</a>.' => 'Adminer tillåter inte att ansluta till en databas utan lösenord. <a href="https://www.adminer.org/en/password/"%s>Mer information</a>.',
'Database does not support password.' => 'Databasen stöder inte lösenord.', 'Database does not support password.' => 'Databasen stödjer inte lösenord.',
'Too many unsuccessful logins, try again in %d minute(s).' => array('För många misslyckade inloggningar, försök igen om %d minut.', 'För många misslyckade inloggningar, försök igen om %d minuter.'), 'Too many unsuccessful logins, try again in %d minute(s).' => array('För många misslyckade inloggningar, försök igen om %d minut.', 'För många misslyckade inloggningar, försök igen om %d minuter.'),
'Master password expired. <a href="https://www.adminer.org/en/extension/"%s>Implement</a> %s method to make it permanent.' => 'Huvudlösenordet har löpt ut. <a href="https://www.adminer.org/en/extension/"%s>Implementera</a> %s en metod för att göra det permanent.', 'Master password expired. <a href="https://www.adminer.org/en/extension/"%s>Implement</a> %s method to make it permanent.' => 'Huvudlösenordet har löpt ut. <a href="https://www.adminer.org/en/extension/"%s>Implementera</a> %s en metod för att göra det permanent.',
'Language' => 'Språk', 'Language' => 'Språk',
@@ -25,7 +25,7 @@ $translations = array(
'Connecting to privileged ports is not allowed.' => 'Anslutning till privilegierade portar är inte tillåtet.', 'Connecting to privileged ports is not allowed.' => 'Anslutning till privilegierade portar är inte tillåtet.',
'Disable %s or enable %s or %s extensions.' => 'Stäng av %s eller sätt på %s eller %s tilläggen.', 'Disable %s or enable %s or %s extensions.' => 'Stäng av %s eller sätt på %s eller %s tilläggen.',
'Session support must be enabled.' => 'Support för sessioner måste vara på.', 'Session support must be enabled.' => 'Support för sessioner måste vara på.',
'Session expired, please login again.' => 'Session har löpt ur, vänligen logga in igen.', 'Session expired, please login again.' => 'Session har löpt ut, vänligen logga in igen.',
'The action will be performed after successful login with the same credentials.' => 'Åtgärden kommer att utföras efter en lyckad inloggning med samma inloggningsuppgifter.', 'The action will be performed after successful login with the same credentials.' => 'Åtgärden kommer att utföras efter en lyckad inloggning med samma inloggningsuppgifter.',
'%s version: %s through PHP extension %s' => '%s version: %s genom PHP-tillägg %s', '%s version: %s through PHP extension %s' => '%s version: %s genom PHP-tillägg %s',
'Refresh' => 'Ladda om', 'Refresh' => 'Ladda om',
@@ -346,4 +346,12 @@ $translations = array(
'Type has been dropped.' => 'Typ har, typ, tagits bort.', 'Type has been dropped.' => 'Typ har, typ, tagits bort.',
'Type has been created.' => 'Typ har skapats.', 'Type has been created.' => 'Typ har skapats.',
'Alter type' => 'Ändra typ', 'Alter type' => 'Ändra typ',
'Columns' => null,
'Nullable' => null,
'Default' => null,
'Yes' => 'Ja',
'No' => 'Nej',
'One Time Password' => null,
'Invalid OTP code.' => null,
); );

View File

@@ -2,7 +2,7 @@
$translations = array( $translations = array(
'Login' => 'நுழை', 'Login' => 'நுழை',
'Logout successful.' => 'வெற்றிக‌ர‌மாய் வெளியேறியாயிற்று.', 'Logout successful.' => 'வெற்றிக‌ர‌மாய் வெளியேறியாயிற்று.',
'Invalid credentials.' => 'ச‌ரியான‌ விப‌ர‌ங்க‌ள் இல்லை.', 'Invalid server or credentials.' => null,
'Server' => 'வ‌ழ‌ங்கி (Server)', 'Server' => 'வ‌ழ‌ங்கி (Server)',
'Username' => 'ப‌ய‌னாள‌ர் (User)', 'Username' => 'ப‌ய‌னாள‌ர் (User)',
'Password' => 'க‌ட‌வுச்சொல்', 'Password' => 'க‌ட‌வுச்சொல்',
@@ -264,4 +264,50 @@ $translations = array(
'Permanent link' => 'நிரந்தர இணைப்பு', 'Permanent link' => 'நிரந்தர இணைப்பு',
'Edit all' => 'அனைத்தையும் தொகு', 'Edit all' => 'அனைத்தையும் தொகு',
'HH:MM:SS' => 'HH:MM:SS', 'HH:MM:SS' => 'HH:MM:SS',
'Drop %s?' => null,
'Tables have been optimized.' => null,
'Materialized view' => null,
'Vacuum' => null,
'Selected' => null,
'overwrite' => null,
'DB' => null,
'Ctrl+click on a value to modify it.' => null,
'File must be in UTF-8 encoding.' => null,
'Modify' => null,
'Load more data' => null,
'Loading' => null,
'ATTACH queries are not supported.' => null,
'Warnings' => null,
'%d / ' => array(),
'Limit rows' => null,
'Adminer does not support accessing a database without a password, <a href="https://www.adminer.org/en/password/"%s>more information</a>.' => null,
'Default value' => null,
'Full table scan' => null,
'Too many unsuccessful logins, try again in %d minute(s).' => array(),
'Thanks for using Adminer, consider <a href="https://www.adminer.org/en/donation/">donating</a>.' => null,
'Master password expired. <a href="https://www.adminer.org/en/extension/"%s>Implement</a> %s method to make it permanent.' => null,
'The action will be performed after successful login with the same credentials.' => null,
'Connecting to privileged ports is not allowed.' => null,
'There is a space in the input password which might be the cause.' => null,
'If you did not send this request from Adminer then close this page.' => null,
'You can upload a big SQL file via FTP and import it from server.' => null,
'Size' => null,
'Compute' => null,
'You are offline.' => null,
'You have no privileges to update this table.' => null,
'Saving' => null,
'Unknown error.' => null,
'Database does not support password.' => null,
'Disable %s or enable %s or %s extensions.' => null,
'yes' => null,
'no' => null,
'Columns' => null,
'Nullable' => null,
'Default' => null,
'Yes' => null,
'No' => null,
'One Time Password' => null,
'Invalid OTP code.' => null,
); );

View File

@@ -2,7 +2,7 @@
$translations = array( $translations = array(
'Login' => 'เข้าสู่ระบบ', 'Login' => 'เข้าสู่ระบบ',
'Logout successful.' => 'ออกจากระบบเรียบร้อยแล้ว.', 'Logout successful.' => 'ออกจากระบบเรียบร้อยแล้ว.',
'Invalid credentials.' => 'ข้อมูลไม่ถูกต้อง.', 'Invalid server or credentials.' => null,
'Server' => 'เซอเวอร์', 'Server' => 'เซอเวอร์',
'Username' => 'ชื่อผู้ใช้งาน', 'Username' => 'ชื่อผู้ใช้งาน',
'Password' => 'รหัสผ่าน', 'Password' => 'รหัสผ่าน',
@@ -265,4 +265,49 @@ $translations = array(
'Permanent link' => 'ลิงค์ถาวร', 'Permanent link' => 'ลิงค์ถาวร',
'Edit all' => 'แก้ไขทั้งหมด', 'Edit all' => 'แก้ไขทั้งหมด',
'HH:MM:SS' => 'HH:MM:SS', 'HH:MM:SS' => 'HH:MM:SS',
'Drop %s?' => null,
'Tables have been optimized.' => null,
'Materialized view' => null,
'Vacuum' => null,
'Selected' => null,
'overwrite' => null,
'DB' => null,
'File must be in UTF-8 encoding.' => null,
'Modify' => null,
'Load more data' => null,
'Loading' => null,
'ATTACH queries are not supported.' => null,
'Warnings' => null,
'%d / ' => array(),
'Limit rows' => null,
'Adminer does not support accessing a database without a password, <a href="https://www.adminer.org/en/password/"%s>more information</a>.' => null,
'Default value' => null,
'Full table scan' => null,
'Too many unsuccessful logins, try again in %d minute(s).' => array(),
'Thanks for using Adminer, consider <a href="https://www.adminer.org/en/donation/">donating</a>.' => null,
'Master password expired. <a href="https://www.adminer.org/en/extension/"%s>Implement</a> %s method to make it permanent.' => null,
'The action will be performed after successful login with the same credentials.' => null,
'Connecting to privileged ports is not allowed.' => null,
'There is a space in the input password which might be the cause.' => null,
'If you did not send this request from Adminer then close this page.' => null,
'You can upload a big SQL file via FTP and import it from server.' => null,
'Size' => null,
'Compute' => null,
'You are offline.' => null,
'You have no privileges to update this table.' => null,
'Saving' => null,
'Unknown error.' => null,
'Database does not support password.' => null,
'Disable %s or enable %s or %s extensions.' => null,
'yes' => null,
'no' => null,
'Columns' => null,
'Nullable' => null,
'Default' => null,
'Yes' => null,
'No' => null,
'One Time Password' => null,
'Invalid OTP code.' => null,
); );

View File

@@ -11,7 +11,7 @@ $translations = array(
'Logged as: %s' => '%s olarak giriş yapıldı.', 'Logged as: %s' => '%s olarak giriş yapıldı.',
'Logout successful.' => 'Oturum başarıyla sonlandı.', 'Logout successful.' => 'Oturum başarıyla sonlandı.',
'Thanks for using Adminer, consider <a href="https://www.adminer.org/en/donation/">donating</a>.' => 'Adminer kullandığınız için teşekkür ederiz <a href="https://www.adminer.org/en/donation/">bağış yapmayı düşünün</a>.', 'Thanks for using Adminer, consider <a href="https://www.adminer.org/en/donation/">donating</a>.' => 'Adminer kullandığınız için teşekkür ederiz <a href="https://www.adminer.org/en/donation/">bağış yapmayı düşünün</a>.',
'Invalid credentials.' => 'Geçersiz kimlik bilgileri.', 'Invalid server or credentials.' => null,
'Too many unsuccessful logins, try again in %d minute(s).' => array('Çok fazla oturum açma denemesi yapıldı.', '%d Dakika sonra tekrar deneyiniz.'), 'Too many unsuccessful logins, try again in %d minute(s).' => array('Çok fazla oturum açma denemesi yapıldı.', '%d Dakika sonra tekrar deneyiniz.'),
'Master password expired. <a href="https://www.adminer.org/en/extension/"%s>Implement</a> %s method to make it permanent.' => 'Ana şifrenin süresi doldu. Kalıcı olması için <a href="https://www.adminer.org/en/extension/"%s>%s medodunu</a> kullanın.', 'Master password expired. <a href="https://www.adminer.org/en/extension/"%s>Implement</a> %s method to make it permanent.' => 'Ana şifrenin süresi doldu. Kalıcı olması için <a href="https://www.adminer.org/en/extension/"%s>%s medodunu</a> kullanın.',
'Language' => 'Dil', 'Language' => 'Dil',
@@ -340,4 +340,19 @@ $translations = array(
'Type has been dropped.' => 'Tür silindi.', 'Type has been dropped.' => 'Tür silindi.',
'Type has been created.' => 'Tür oluşturuldu.', 'Type has been created.' => 'Tür oluşturuldu.',
'Alter type' => 'Türü değiştir', 'Alter type' => 'Türü değiştir',
'overwrite' => null,
'Adminer does not support accessing a database without a password, <a href="https://www.adminer.org/en/password/"%s>more information</a>.' => null,
'There is a space in the input password which might be the cause.' => null,
'Unknown error.' => null,
'Database does not support password.' => null,
'Disable %s or enable %s or %s extensions.' => null,
'Columns' => null,
'Nullable' => null,
'Default' => null,
'Yes' => 'Evet',
'No' => 'Hayır',
'One Time Password' => null,
'Invalid OTP code.' => null,
); );

View File

@@ -10,7 +10,7 @@ $translations = array(
'Logout' => 'Вийти', 'Logout' => 'Вийти',
'Logged as: %s' => 'Ви увійшли як: %s', 'Logged as: %s' => 'Ви увійшли як: %s',
'Logout successful.' => 'Ви вдало вийшли з системи.', 'Logout successful.' => 'Ви вдало вийшли з системи.',
'Invalid credentials.' => 'Неправильні дані входу.', 'Invalid server or credentials.' => null,
'Language' => 'Мова', 'Language' => 'Мова',
'Invalid CSRF token. Send the form again.' => 'Недійсний CSRF токен. Надішліть форму ще раз.', 'Invalid CSRF token. Send the form again.' => 'Недійсний CSRF токен. Надішліть форму ще раз.',
'No extension' => 'Нема розширень', 'No extension' => 'Нема розширень',
@@ -19,10 +19,10 @@ $translations = array(
'Session expired, please login again.' => 'Сесія закінчилась, будь ласка, увійдіть в систему знову.', 'Session expired, please login again.' => 'Сесія закінчилась, будь ласка, увійдіть в систему знову.',
'%s version: %s through PHP extension %s' => 'Версія %s: %s з PHP-розширенням %s', '%s version: %s through PHP extension %s' => 'Версія %s: %s з PHP-розширенням %s',
'Refresh' => 'Оновити', 'Refresh' => 'Оновити',
// text direction - 'ltr' or 'rtl' // text direction - 'ltr' or 'rtl'
'ltr' => 'ltr', 'ltr' => 'ltr',
'Privileges' => 'Привілеї', 'Privileges' => 'Привілеї',
'Create user' => 'Створити користувача', 'Create user' => 'Створити користувача',
'User has been dropped.' => 'Користувача було видалено.', 'User has been dropped.' => 'Користувача було видалено.',
@@ -33,14 +33,14 @@ $translations = array(
'Routine' => 'Процедура', 'Routine' => 'Процедура',
'Grant' => 'Дозволити', 'Grant' => 'Дозволити',
'Revoke' => 'Заборонити', 'Revoke' => 'Заборонити',
'Process list' => 'Перелік процесів', 'Process list' => 'Перелік процесів',
'%d process(es) have been killed.' => array('Було завершено %d процес.', 'Було завершено %d процеси.', 'Було завершёно %d процесів.'), '%d process(es) have been killed.' => array('Було завершено %d процес.', 'Було завершено %d процеси.', 'Було завершёно %d процесів.'),
'Kill' => 'Завершити процес', 'Kill' => 'Завершити процес',
'Variables' => 'Змінні', 'Variables' => 'Змінні',
'Status' => 'Статус', 'Status' => 'Статус',
'SQL command' => 'SQL запит', 'SQL command' => 'SQL запит',
'%d query(s) executed OK.' => array('%d запит виконано успішно.', '%d запити виконано успішно.', '%d запитів виконано успішно.'), '%d query(s) executed OK.' => array('%d запит виконано успішно.', '%d запити виконано успішно.', '%d запитів виконано успішно.'),
'Query executed OK, %d row(s) affected.' => array('Запит виконано успішно, змінено %d рядок.', 'Запит виконано успішно, змінено %d рядки.', 'Запит виконано успішно, змінено %d рядків.'), 'Query executed OK, %d row(s) affected.' => array('Запит виконано успішно, змінено %d рядок.', 'Запит виконано успішно, змінено %d рядки.', 'Запит виконано успішно, змінено %d рядків.'),
@@ -54,7 +54,7 @@ $translations = array(
'History' => 'Історія', 'History' => 'Історія',
'Clear' => 'Очистити', 'Clear' => 'Очистити',
'Edit all' => 'Редагувати все', 'Edit all' => 'Редагувати все',
'File upload' => 'Завантажити файл', 'File upload' => 'Завантажити файл',
'From server' => 'З сервера', 'From server' => 'З сервера',
'Webserver file %s' => 'Файл %s на вебсервері', 'Webserver file %s' => 'Файл %s на вебсервері',
@@ -64,14 +64,14 @@ $translations = array(
'Unable to upload a file.' => 'Неможливо завантажити файл.', 'Unable to upload a file.' => 'Неможливо завантажити файл.',
'Maximum allowed file size is %sB.' => 'Максимально допустимий розмір файлу %sБ.', 'Maximum allowed file size is %sB.' => 'Максимально допустимий розмір файлу %sБ.',
'Too big POST data. Reduce the data or increase the %s configuration directive.' => 'Занадто великий об\'єм POST-даних. Зменшіть об\'єм або збільшіть параметр директиви %s конфигурації.', 'Too big POST data. Reduce the data or increase the %s configuration directive.' => 'Занадто великий об\'єм POST-даних. Зменшіть об\'єм або збільшіть параметр директиви %s конфигурації.',
'Export' => 'Експорт', 'Export' => 'Експорт',
'Output' => 'Вихідні дані', 'Output' => 'Вихідні дані',
'open' => 'відкрити', 'open' => 'відкрити',
'save' => 'зберегти', 'save' => 'зберегти',
'Format' => 'Формат', 'Format' => 'Формат',
'Data' => 'Дані', 'Data' => 'Дані',
'Database' => 'База даних', 'Database' => 'База даних',
'database' => 'база даних', 'database' => 'база даних',
'Use' => 'Обрати', 'Use' => 'Обрати',
@@ -85,10 +85,10 @@ $translations = array(
'Alter database' => 'Змінити базу даних', 'Alter database' => 'Змінити базу даних',
'Create database' => 'Створити базу даних', 'Create database' => 'Створити базу даних',
'Database schema' => 'Схема бази даних', 'Database schema' => 'Схема бази даних',
// link to current database schema layout // link to current database schema layout
'Permanent link' => 'Постійне посилання', 'Permanent link' => 'Постійне посилання',
// thousands separator - must contain single byte // thousands separator - must contain single byte
',' => ' ', ',' => ' ',
'0123456789' => '0123456789', '0123456789' => '0123456789',
@@ -110,7 +110,7 @@ $translations = array(
'Tables have been moved.' => 'Таблиці було перенесено.', 'Tables have been moved.' => 'Таблиці було перенесено.',
'Copy' => 'копіювати', 'Copy' => 'копіювати',
'Tables have been copied.' => 'Таблиці було зкопійовано.', 'Tables have been copied.' => 'Таблиці було зкопійовано.',
'Routines' => 'Збережені процедури', 'Routines' => 'Збережені процедури',
'Routine has been called, %d row(s) affected.' => array('Була викликана процедура, %d запис було змінено.', 'Була викликана процедура, %d записи було змінено.', 'Була викликана процедура, %d записів було змінено.'), 'Routine has been called, %d row(s) affected.' => array('Була викликана процедура, %d запис було змінено.', 'Була викликана процедура, %d записи було змінено.', 'Була викликана процедура, %d записів було змінено.'),
'Call' => 'Викликати', 'Call' => 'Викликати',
@@ -123,7 +123,7 @@ $translations = array(
'Alter function' => 'Змінити функцію', 'Alter function' => 'Змінити функцію',
'Alter procedure' => 'Змінити процедуру', 'Alter procedure' => 'Змінити процедуру',
'Return type' => 'Тип, що повернеться', 'Return type' => 'Тип, що повернеться',
'Events' => 'Події', 'Events' => 'Події',
'Event has been dropped.' => 'Подію було видалено.', 'Event has been dropped.' => 'Подію було видалено.',
'Event has been altered.' => 'Подію було змінено.', 'Event has been altered.' => 'Подію було змінено.',
@@ -136,7 +136,7 @@ $translations = array(
'Start' => 'Початок', 'Start' => 'Початок',
'End' => 'Кінець', 'End' => 'Кінець',
'On completion preserve' => 'Після завершення зберегти', 'On completion preserve' => 'Після завершення зберегти',
'Tables' => 'Таблиці', 'Tables' => 'Таблиці',
'Tables and views' => 'Таблиці і вигляди', 'Tables and views' => 'Таблиці і вигляди',
'Table' => 'Таблиця', 'Table' => 'Таблиця',
@@ -165,26 +165,26 @@ $translations = array(
'Move down' => 'Пересунути вниз', 'Move down' => 'Пересунути вниз',
'Remove' => 'Видалити', 'Remove' => 'Видалити',
'Maximum number of allowed fields exceeded. Please increase %s.' => 'Досягнута максимальна кількість доступних полів. Будь ласка, збільшіть %s.', 'Maximum number of allowed fields exceeded. Please increase %s.' => 'Досягнута максимальна кількість доступних полів. Будь ласка, збільшіть %s.',
'Partition by' => 'Розділити по', 'Partition by' => 'Розділити по',
'Partitions' => 'Розділи', 'Partitions' => 'Розділи',
'Partition name' => 'Назва розділу', 'Partition name' => 'Назва розділу',
'Values' => 'Значення', 'Values' => 'Значення',
'View' => 'Вигляд', 'View' => 'Вигляд',
'View has been dropped.' => 'Вигляд було видалено.', 'View has been dropped.' => 'Вигляд було видалено.',
'View has been altered.' => 'Вигляд було змінено.', 'View has been altered.' => 'Вигляд було змінено.',
'View has been created.' => 'Вигляд було створено.', 'View has been created.' => 'Вигляд було створено.',
'Alter view' => 'Змінити вигляд', 'Alter view' => 'Змінити вигляд',
'Create view' => 'Створити вигляд', 'Create view' => 'Створити вигляд',
'Indexes' => 'Індекси', 'Indexes' => 'Індекси',
'Indexes have been altered.' => 'Індексування було змінено.', 'Indexes have been altered.' => 'Індексування було змінено.',
'Alter indexes' => 'Змінити індексування', 'Alter indexes' => 'Змінити індексування',
'Add next' => 'Додати ще', 'Add next' => 'Додати ще',
'Index Type' => 'Тип індексу', 'Index Type' => 'Тип індексу',
'Column (length)' => 'Стовпець (довжина)', 'Column (length)' => 'Стовпець (довжина)',
'Foreign keys' => 'Зовнішні ключі', 'Foreign keys' => 'Зовнішні ключі',
'Foreign key' => 'Зовнішній ключ', 'Foreign key' => 'Зовнішній ключ',
'Foreign key has been dropped.' => 'Зовнішній ключ було видалено.', 'Foreign key has been dropped.' => 'Зовнішній ключ було видалено.',
@@ -200,7 +200,7 @@ $translations = array(
'ON DELETE' => 'ПРИ ВИДАЛЕННІ', 'ON DELETE' => 'ПРИ ВИДАЛЕННІ',
'ON UPDATE' => 'ПРИ ЗМІНІ', 'ON UPDATE' => 'ПРИ ЗМІНІ',
'Source and target columns must have the same data type, there must be an index on the target columns and referenced data must exist.' => 'Стовпці повинні мати той самий тип даних, цільові стовпці повинні бути проіндексовані і дані, на які посилаються повинні існувати.', 'Source and target columns must have the same data type, there must be an index on the target columns and referenced data must exist.' => 'Стовпці повинні мати той самий тип даних, цільові стовпці повинні бути проіндексовані і дані, на які посилаються повинні існувати.',
'Triggers' => 'Тригери', 'Triggers' => 'Тригери',
'Add trigger' => 'Додати тригер', 'Add trigger' => 'Додати тригер',
'Trigger has been dropped.' => 'Тригер було видалено.', 'Trigger has been dropped.' => 'Тригер було видалено.',
@@ -211,7 +211,7 @@ $translations = array(
'Time' => 'Час', 'Time' => 'Час',
'Event' => 'Подія', 'Event' => 'Подія',
'Name' => 'Назва', 'Name' => 'Назва',
'select' => 'вибрати', 'select' => 'вибрати',
'Select' => 'Вибрати', 'Select' => 'Вибрати',
'Select data' => 'Вибрати дані', 'Select data' => 'Вибрати дані',
@@ -232,14 +232,14 @@ $translations = array(
'last' => 'остання', 'last' => 'остання',
'Whole result' => 'Весь результат', 'Whole result' => 'Весь результат',
'%d byte(s)' => array('%d байт', '%d байта', '%d байтів'), '%d byte(s)' => array('%d байт', '%d байта', '%d байтів'),
'Import' => 'Імпортувати', 'Import' => 'Імпортувати',
'%d row(s) have been imported.' => array('%d рядок було імпортовано.', '%d рядки було імпортовано.', '%d рядків було імпортовано.'), '%d row(s) have been imported.' => array('%d рядок було імпортовано.', '%d рядки було імпортовано.', '%d рядків було імпортовано.'),
// in-place editing in select // in-place editing in select
'Ctrl+click on a value to modify it.' => 'Ctrl+клікніть на значенні щоб змінити його.', 'Ctrl+click on a value to modify it.' => 'Ctrl+клікніть на значенні щоб змінити його.',
'Use edit link to modify this value.' => 'Використовуйте посилання щоб змінити це значення.', 'Use edit link to modify this value.' => 'Використовуйте посилання щоб змінити це значення.',
// %s can contain auto-increment value // %s can contain auto-increment value
'Item%s has been inserted.' => 'Запис%s було вставлено.', 'Item%s has been inserted.' => 'Запис%s було вставлено.',
'Item has been deleted.' => 'Запис було видалено.', 'Item has been deleted.' => 'Запис було видалено.',
@@ -257,14 +257,14 @@ $translations = array(
'Save and insert next' => 'Зберегти і вставити знову', 'Save and insert next' => 'Зберегти і вставити знову',
'Clone' => 'Клонувати', 'Clone' => 'Клонувати',
'Delete' => 'Видалити', 'Delete' => 'Видалити',
'E-mail' => 'E-mail', 'E-mail' => 'E-mail',
'From' => 'Від', 'From' => 'Від',
'Subject' => 'Заголовок', 'Subject' => 'Заголовок',
'Attachments' => 'Додатки', 'Attachments' => 'Додатки',
'Send' => 'Надіслати', 'Send' => 'Надіслати',
'%d e-mail(s) have been sent.' => array('Було надіслано %d повідомлення.', 'Було надіслано %d повідомлення.', 'Було надіслано %d повідомлень.'), '%d e-mail(s) have been sent.' => array('Було надіслано %d повідомлення.', 'Було надіслано %d повідомлення.', 'Було надіслано %d повідомлень.'),
// data type descriptions // data type descriptions
'Numbers' => 'Числа', 'Numbers' => 'Числа',
'Date and time' => 'Дата і час', 'Date and time' => 'Дата і час',
@@ -274,7 +274,7 @@ $translations = array(
'Network' => 'Мережа', 'Network' => 'Мережа',
'Geometry' => 'Геометрія', 'Geometry' => 'Геометрія',
'Relations' => 'Зв\'язки', 'Relations' => 'Зв\'язки',
'Editor' => 'Редактор', 'Editor' => 'Редактор',
// date format in Editor: $1 yyyy, $2 yy, $3 mm, $4 m, $5 dd, $6 d // date format in Editor: $1 yyyy, $2 yy, $3 mm, $4 m, $5 dd, $6 d
'$1-$3-$5' => '$5.$3.$1', '$1-$3-$5' => '$5.$3.$1',
@@ -285,11 +285,11 @@ $translations = array(
'now' => 'зараз', 'now' => 'зараз',
'yes' => 'так', 'yes' => 'так',
'no' => 'ні', 'no' => 'ні',
// general SQLite error in create, drop or rename database // general SQLite error in create, drop or rename database
'File exists.' => 'Файл існує.', 'File exists.' => 'Файл існує.',
'Please use one of the extensions %s.' => 'Будь ласка, використовуйте одне з розширень %s.', 'Please use one of the extensions %s.' => 'Будь ласка, використовуйте одне з розширень %s.',
// PostgreSQL and MS SQL schema support // PostgreSQL and MS SQL schema support
'Alter schema' => 'Змінити схему', 'Alter schema' => 'Змінити схему',
'Create schema' => 'Створити схему', 'Create schema' => 'Створити схему',
@@ -298,7 +298,7 @@ $translations = array(
'Schema has been altered.' => 'Схему було змінено.', 'Schema has been altered.' => 'Схему було змінено.',
'Schema' => 'Схема', 'Schema' => 'Схема',
'Invalid schema.' => 'Невірна схема.', 'Invalid schema.' => 'Невірна схема.',
// PostgreSQL sequences support // PostgreSQL sequences support
'Sequences' => 'Послідовності', 'Sequences' => 'Послідовності',
'Create sequence' => 'Створити послідовність', 'Create sequence' => 'Створити послідовність',
@@ -306,11 +306,53 @@ $translations = array(
'Sequence has been created.' => 'Послідовність було створено.', 'Sequence has been created.' => 'Послідовність було створено.',
'Sequence has been altered.' => 'Послідовність було змінено.', 'Sequence has been altered.' => 'Послідовність було змінено.',
'Alter sequence' => 'Змінити послідовність', 'Alter sequence' => 'Змінити послідовність',
// PostgreSQL user types support // PostgreSQL user types support
'User types' => 'Типи користувачів', 'User types' => 'Типи користувачів',
'Create type' => 'Створити тип', 'Create type' => 'Створити тип',
'Type has been dropped.' => 'Тип було видалено.', 'Type has been dropped.' => 'Тип було видалено.',
'Type has been created.' => 'Тип було створено.', 'Type has been created.' => 'Тип було створено.',
'Alter type' => 'Змінити тип', 'Alter type' => 'Змінити тип',
'Drop %s?' => 'Вилучити %s?',
'Materialized view' => 'Матеріалізований вигляд',
'Selected' => 'Вибрані',
'overwrite' => 'перезаписати',
'DB' => 'DB',
'File must be in UTF-8 encoding.' => 'Файл повинен бути в кодуванні UTF-8.',
'Modify' => 'Змінити',
'Load more data' => 'Завантажити ще дані',
'Loading' => 'Завантаження',
'ATTACH queries are not supported.' => 'ATTACH-запити не підтримуються.',
'Warnings' => 'Попередження',
'Limit rows' => 'Обмеження рядків',
'Adminer does not support accessing a database without a password, <a href="https://www.adminer.org/en/password/"%s>more information</a>.' => 'Adminer не підтримує доступ до бази даних без пароля, <a href="https://www.adminer.org/en/password/"%s>більше інформації</a>.',
'Default value' => 'Значення за замовчуванням',
'Full table scan' => 'Повне сканування таблиці',
'Too many unsuccessful logins, try again in %d minute(s).' => array('Занадто багато невдалих спроб входу. Спробуйте знову через %d хвилину.', 'Занадто багато невдалих спроб входу. Спробуйте знову через %d хвилини.', 'Занадто багато невдалих спроб входу. Спробуйте знову через %d хвилин.'),
'Thanks for using Adminer, consider <a href="https://www.adminer.org/en/donation/">donating</a>.' => 'Дякуємо, що користуєтесь Adminer, подумайте про <a href="https://www.adminer.org/en/donation/">внесок</a>.',
'Master password expired. <a href="https://www.adminer.org/en/extension/"%s>Implement</a> %s method to make it permanent.' => 'Термін дії майстер пароля минув. <a href="https://www.adminer.org/en/extension/"%s>Реалізуйте</a> метод %s, щоб зробити його постійним.',
'The action will be performed after successful login with the same credentials.' => 'Дія буде виконуватися після успішного входу в систему з тими ж обліковими даними.',
'Connecting to privileged ports is not allowed.' => 'Підключення до привілейованих портів заборонено.',
'There is a space in the input password which might be the cause.' => 'У вхідному паролі є пробіл, який може бути причиною.',
'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' => 'Збереження',
'Unknown error.' => 'Невідома помилка.',
'Database does not support password.' => 'База даних не підтримує пароль.',
'Vacuum' => null,
'%d / ' => array(),
'Disable %s or enable %s or %s extensions.' => null,
'Columns' => null,
'Nullable' => null,
'Default' => null,
'Yes' => 'Так',
'No' => 'Ні',
'One Time Password' => null,
'Invalid OTP code.' => null,
); );

View File

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

View File

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

View File

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

View File

@@ -11,7 +11,7 @@ $translations = array(
'Logged as: %s' => '登录用户:%s', 'Logged as: %s' => '登录用户:%s',
'Logout successful.' => '成功登出。', 'Logout successful.' => '成功登出。',
'Thanks for using Adminer, consider <a href="https://www.adminer.org/en/donation/">donating</a>.' => '感谢使用Adminer请考虑为我们<a href="https://www.adminer.org/en/donation/">捐款(英文页面)</a>.', 'Thanks for using Adminer, consider <a href="https://www.adminer.org/en/donation/">donating</a>.' => '感谢使用Adminer请考虑为我们<a href="https://www.adminer.org/en/donation/">捐款(英文页面)</a>.',
'Invalid credentials.' => '无效凭据。', 'Invalid server or credentials.' => null,
'There is a space in the input password which might be the cause.' => '您输入的密码中有一个空格,这可能是导致问题的原因。', 'There is a space in the input password which might be the cause.' => '您输入的密码中有一个空格,这可能是导致问题的原因。',
'Adminer does not support accessing a database without a password, <a href="https://www.adminer.org/en/password/"%s>more information</a>.' => 'Adminer默认不支持访问没有密码的数据库<a href="https://www.adminer.org/en/password/"%s>详情见这里</a>.', 'Adminer does not support accessing a database without a password, <a href="https://www.adminer.org/en/password/"%s>more information</a>.' => 'Adminer默认不支持访问没有密码的数据库<a href="https://www.adminer.org/en/password/"%s>详情见这里</a>.',
'Database does not support password.' => '数据库不支持密码。', 'Database does not support password.' => '数据库不支持密码。',
@@ -29,7 +29,7 @@ $translations = array(
'The action will be performed after successful login with the same credentials.' => '此操作将在成功使用相同的凭据登录后执行。', 'The action will be performed after successful login with the same credentials.' => '此操作将在成功使用相同的凭据登录后执行。',
'%s version: %s through PHP extension %s' => '%s 版本:%s 使用PHP扩展 %s', '%s version: %s through PHP extension %s' => '%s 版本:%s 使用PHP扩展 %s',
'Refresh' => '刷新', 'Refresh' => '刷新',
// text direction - 'ltr' or 'rtl' // text direction - 'ltr' or 'rtl'
'ltr' => 'ltr', 'ltr' => 'ltr',
@@ -346,4 +346,12 @@ $translations = array(
'Type has been dropped.' => '已删除类型。', 'Type has been dropped.' => '已删除类型。',
'Type has been created.' => '已创建类型。', 'Type has been created.' => '已创建类型。',
'Alter type' => '修改类型', 'Alter type' => '修改类型',
'Columns' => null,
'Nullable' => null,
'Default' => null,
'Yes' => null,
'No' => null,
'One Time Password' => null,
'Invalid OTP code.' => null,
); );

View File

@@ -8,6 +8,9 @@ function adminer_object() {
include_once $filename; include_once $filename;
} }
// enable extra drivers just by including them
//~ include "../plugins/drivers/simpledb.php";
$plugins = array( $plugins = array(
// specify enabled plugins here // specify enabled plugins here
new AdminerDatabaseHide(array('information_schema')), new AdminerDatabaseHide(array('information_schema')),

View File

@@ -1,12 +1,14 @@
<?php <?php
if (support("kill") && $_POST && !$error) { if (support("kill")) {
$killed = 0; if ($_POST && !$error) {
foreach ((array) $_POST["kill"] as $val) { $killed = 0;
if (kill_process($val)) { foreach ((array) $_POST["kill"] as $val) {
$killed++; if (kill_process($val)) {
$killed++;
}
} }
queries_redirect(ME . "processlist=", lang('%d process(es) have been killed.', $killed), $killed || !$_POST["kill"]);
} }
queries_redirect(ME . "processlist=", lang('%d process(es) have been killed.', $killed), $killed || !$_POST["kill"]);
} }
page_header(lang('Process list'), $error); page_header(lang('Process list'), $error);

View File

@@ -12,7 +12,7 @@ if ($_GET["script"] == "db") {
foreach ($sums + array("Auto_increment" => 0, "Rows" => 0) as $key => $val) { foreach ($sums + array("Auto_increment" => 0, "Rows" => 0) as $key => $val) {
if ($table_status[$key] != "") { if ($table_status[$key] != "") {
$val = format_number($table_status[$key]); $val = format_number($table_status[$key]);
json_row("$key-$name", ($key == "Rows" && $val && $table_status["Engine"] == ($sql == "pgsql" ? "table" : "InnoDB") json_row("$key-$name", ($key == "Rows" && $val && $table_status["Engine"] == ($jush == "pgsql" ? "table" : "InnoDB")
? "~ $val" ? "~ $val"
: $val : $val
)); ));

View File

@@ -9,6 +9,8 @@ parse_str($_COOKIE["adminer_import"], $adminer_import);
$rights = array(); // privilege => 0 $rights = array(); // privilege => 0
$columns = array(); // selectable columns $columns = array(); // selectable columns
$search_columns = array(); // searchable columns
$order_columns = array(); // searchable columns
$text_length = null; $text_length = null;
foreach ($fields as $key => $field) { foreach ($fields as $key => $field) {
$name = $adminer->fieldName($field); $name = $adminer->fieldName($field);
@@ -18,6 +20,12 @@ foreach ($fields as $key => $field) {
$text_length = $adminer->selectLengthProcess(); $text_length = $adminer->selectLengthProcess();
} }
} }
if (isset($field["privileges"]["where"]) && $name != "") {
$search_columns[$key] = html_entity_decode(strip_tags($name), ENT_QUOTES);
}
if (isset($field["privileges"]["order"]) && $name != "") {
$order_columns[$key] = html_entity_decode(strip_tags($name), ENT_QUOTES);
}
$rights += $field["privileges"]; $rights += $field["privileges"];
} }
@@ -245,8 +253,8 @@ if (!$columns && support("table")) {
echo '<input type="hidden" name="select" value="' . h($TABLE) . '">'; echo '<input type="hidden" name="select" value="' . h($TABLE) . '">';
echo "</div>\n"; echo "</div>\n";
$adminer->selectColumnsPrint($select, $columns); $adminer->selectColumnsPrint($select, $columns);
$adminer->selectSearchPrint($where, $columns, $indexes); $adminer->selectSearchPrint($where, $search_columns, $indexes);
$adminer->selectOrderPrint($order, $columns, $indexes); $adminer->selectOrderPrint($order, $order_columns, $indexes);
$adminer->selectLimitPrint($limit); $adminer->selectLimitPrint($limit);
$adminer->selectLengthPrint($text_length); $adminer->selectLengthPrint($text_length);
$adminer->selectActionPrint($indexes); $adminer->selectActionPrint($indexes);
@@ -331,12 +339,20 @@ if (!$columns && support("table")) {
$column = idf_escape($key); $column = idf_escape($key);
$href = remove_from_uri('(order|desc)[^=]*|page') . '&order%5B0%5D=' . urlencode($key); $href = remove_from_uri('(order|desc)[^=]*|page') . '&order%5B0%5D=' . urlencode($key);
$desc = "&desc%5B0%5D=1"; $desc = "&desc%5B0%5D=1";
echo "<th>" . script("mixin(qsl('th'), {onmouseover: partial(columnMouse), onmouseout: partial(columnMouse, ' hidden')});", ""); $sortable = isset($field["privileges"]["order"]);
echo '<a href="' . h($href . ($order[0] == $column || $order[0] == $key || (!$order && $is_group && $group[0] == $column) ? $desc : '')) . '">'; // $order[0] == $key - COUNT(*) echo "<th id='th[" . h(bracket_escape($key)) . "]'>" . script("mixin(qsl('th'), {onmouseover: partial(columnMouse), onmouseout: partial(columnMouse, ' hidden')});", "");
echo apply_sql_function($val["fun"], $name) . "</a>"; //! columns looking like functions if ($sortable) {
echo '<a href="' . h($href . ($order[0] == $column || $order[0] == $key || (!$order && $is_group && $group[0] == $column) ? $desc : '')) . '">'; // $order[0] == $key - COUNT(*)
}
echo apply_sql_function($val["fun"], $name); //! columns looking like functions
if ($sortable) {
echo "</a>";
}
echo "<span class='column hidden'>"; echo "<span class='column hidden'>";
echo "<a href='" . h($href . $desc) . "' title='" . lang('descending') . "' class='text'> ↓</a>"; if ($sortable) {
if (!$val["fun"]) { echo "<a href='" . h($href . $desc) . "' title='" . lang('descending') . "' class='text'> ↓</a>";
}
if (!$val["fun"] && isset($field["privileges"]["where"])) {
echo '<a href="#fieldset-search" title="' . lang('Search') . '" class="text jsonly"> =</a>'; echo '<a href="#fieldset-search" title="' . lang('Search') . '" class="text jsonly"> =</a>';
echo script("qsl('a').onclick = partial(selectSearch, '" . js_escape($key) . "');"); echo script("qsl('a').onclick = partial(selectSearch, '" . js_escape($key) . "');");
} }
@@ -382,7 +398,7 @@ if (!$columns && support("table")) {
$key = "MD5(" . ($jush != 'sql' || preg_match("~^utf8~", $fields[$key]["collation"]) ? $key : "CONVERT($key USING " . charset($connection) . ")") . ")"; $key = "MD5(" . ($jush != 'sql' || preg_match("~^utf8~", $fields[$key]["collation"]) ? $key : "CONVERT($key USING " . charset($connection) . ")") . ")";
$val = md5($val); $val = md5($val);
} }
$unique_idf .= "&" . ($val !== null ? urlencode("where[" . bracket_escape($key) . "]") . "=" . urlencode($val) : "null%5B%5D=" . urlencode($key)); $unique_idf .= "&" . ($val !== null ? urlencode("where[" . bracket_escape($key) . "]") . "=" . urlencode($val === false ? "f" : $val) : "null%5B%5D=" . urlencode($key));
} }
echo "<tr" . odd() . ">" . (!$group && $select ? "" : "<td>" echo "<tr" . odd() . ">" . (!$group && $select ? "" : "<td>"
. checkbox("check[]", substr($unique_idf, 1), in_array(substr($unique_idf, 1), (array) $_POST["check"])) . checkbox("check[]", substr($unique_idf, 1), in_array(substr($unique_idf, 1), (array) $_POST["check"]))
@@ -552,9 +568,9 @@ if (!$columns && support("table")) {
} }
if ($format) { if ($format) {
print_fieldset("export", lang('Export') . " <span id='selected2'></span>"); print_fieldset("export", lang('Export') . " <span id='selected2'></span>");
$output = $adminer->dumpOutput();
echo ($output ? html_select("output", $output, $adminer_import["output"]) . " " : "");
echo html_select("format", $format, $adminer_import["format"]); echo html_select("format", $format, $adminer_import["format"]);
$output = $adminer->dumpOutput();
echo ($output ? " " . html_select("output", $output, $adminer_import["output"]) : "");
echo " <input type='submit' name='export' value='" . lang('Export') . "'>\n"; echo " <input type='submit' name='export' value='" . lang('Export') . "'>\n";
echo "</div></fieldset>\n"; echo "</div></fieldset>\n";
} }
@@ -570,7 +586,7 @@ if (!$columns && support("table")) {
echo script("qsl('a').onclick = partial(toggle, 'import');", ""); echo script("qsl('a').onclick = partial(toggle, 'import');", "");
echo "<span id='import' class='hidden'>: "; echo "<span id='import' class='hidden'>: ";
echo "<input type='file' name='csv_file'> "; echo "<input type='file' name='csv_file'> ";
echo html_select("separator", array("csv" => "CSV,", "csv;" => "CSV;", "tsv" => "TSV"), $adminer_import["format"], 1); // 1 - select echo html_select("separator", array("csv" => "CSV,", "csv;" => "CSV;", "tsv" => "TSV"), $adminer_import["format"]);
echo " <input type='submit' name='import' value='" . lang('Import') . "'>"; echo " <input type='submit' name='import' value='" . lang('Import') . "'>";
echo "</span>"; echo "</span>";
echo "</div>"; echo "</div>";

View File

@@ -87,7 +87,7 @@ if (!$error && $_POST) {
$query .= fread($fp, 1e5); $query .= fread($fp, 1e5);
} else { } else {
$offset = $match[0][1] + strlen($s); $offset = $match[0][1] + strlen($s);
if ($s[0] != "\\") { if (!isset($s[0]) || $s[0] != "\\") {
break; break;
} }
} }
@@ -222,7 +222,7 @@ if (!isset($_GET["import"])) {
} }
echo "<p>"; echo "<p>";
textarea("query", $q, 20); textarea("query", $q, 20);
echo script(($_POST ? "" : "qs('textarea').focus();\n") . "qs('#form').onsubmit = partial(sqlSubmit, qs('#form'), '" . remove_from_uri("sql|limit|error_stops|only_errors") . "');"); echo script(($_POST ? "" : "qs('textarea').focus();\n") . "qs('#form').onsubmit = partial(sqlSubmit, qs('#form'), '" . js_escape(remove_from_uri("sql|limit|error_stops|only_errors|history")) . "');");
echo "<p>$execute\n"; echo "<p>$execute\n";
echo lang('Limit rows') . ": <input type='number' name='limit' class='size' value='" . h($_POST ? $_POST["limit"] : $_GET["limit"]) . "'>\n"; echo lang('Limit rows') . ": <input type='number' name='limit' class='size' value='" . h($_POST ? $_POST["limit"] : $_GET["limit"]) . "'>\n";
@@ -244,8 +244,8 @@ if (!isset($_GET["import"])) {
echo "<p>"; echo "<p>";
} }
echo checkbox("error_stops", 1, ($_POST ? $_POST["error_stops"] : isset($_GET["import"])), lang('Stop on error')) . "\n"; echo checkbox("error_stops", 1, ($_POST ? $_POST["error_stops"] : isset($_GET["import"]) || $_GET["error_stops"]), lang('Stop on error')) . "\n";
echo checkbox("only_errors", 1, ($_POST ? $_POST["only_errors"] : isset($_GET["import"])), lang('Show only errors')) . "\n"; echo checkbox("only_errors", 1, ($_POST ? $_POST["only_errors"] : isset($_GET["import"]) || $_GET["only_errors"]), lang('Show only errors')) . "\n";
echo "<input type='hidden' name='token' value='$token'>\n"; echo "<input type='hidden' name='token' value='$token'>\n";
if (!isset($_GET["import"]) && $history) { if (!isset($_GET["import"]) && $history) {

View File

@@ -23,7 +23,7 @@ code { background: #eee; }
tbody tr:hover td, tbody tr:hover th { background: #eee; } tbody tr:hover td, tbody tr:hover th { background: #eee; }
pre { margin: 1em 0 0; } pre { margin: 1em 0 0; }
pre, textarea { font: 100%/1.25 monospace; } pre, textarea { font: 100%/1.25 monospace; }
input { vertical-align: middle; } input, select { vertical-align: middle; }
input.default { box-shadow: 1px 1px 1px #777; } input.default { box-shadow: 1px 1px 1px #777; }
input.required { box-shadow: 1px 1px 1px red; } input.required { box-shadow: 1px 1px 1px red; }
input.maxlength { box-shadow: 1px 1px 1px red; } input.maxlength { box-shadow: 1px 1px 1px red; }
@@ -69,7 +69,7 @@ input.wayoff { left: -1000px; position: absolute; }
#menu p, #logins, #tables { padding: .8em 1em; margin: 0; border-bottom: 1px solid #ccc; } #menu p, #logins, #tables { padding: .8em 1em; margin: 0; border-bottom: 1px solid #ccc; }
#logins li, #tables li { list-style: none; } #logins li, #tables li { list-style: none; }
#dbs { overflow: hidden; } #dbs { overflow: hidden; }
#logins, #tables { white-space: nowrap; overflow: auto; } #logins, #tables { white-space: nowrap; overflow: hidden; }
#logins a, #tables a, #tables span { background: #fff; } #logins a, #tables a, #tables span { background: #fff; }
#content { margin: 2em 0 0 21em; padding: 10px 20px 20px 0; } #content { margin: 2em 0 0 21em; padding: 10px 20px 20px 0; }
#lang { position: absolute; top: 0; left: 0; line-height: 1.8em; padding: .3em 1em; } #lang { position: absolute; top: 0; left: 0; line-height: 1.8em; padding: .3em 1em; }
@@ -90,7 +90,7 @@ input.wayoff { left: -1000px; position: absolute; }
.rtl input.wayoff { left: auto; right: -1000px; } .rtl input.wayoff { left: auto; right: -1000px; }
.rtl #lang, .rtl #menu { left: auto; right: 0; } .rtl #lang, .rtl #menu { left: auto; right: 0; }
@media all and (max-device-width: 880px) { @media all and (max-width: 880px) {
.pages { left: auto; } .pages { left: auto; }
#menu { position: static; width: auto; } #menu { position: static; width: auto; }
#content { margin-left: 10px; } #content { margin-left: 10px; }

View File

@@ -17,14 +17,14 @@ function bodyLoad(version, maria) {
for (var i = 1; i < obj.length; i++) { for (var i = 1; i < obj.length; i++) {
obj[i] = obj[i] obj[i] = obj[i]
.replace(/\.html/, '/') .replace(/\.html/, '/')
.replace(/(numeric)(-type-overview)/, '$1-data$2') .replace(/-type-syntax/, '-data-types')
.replace(/numeric-(data-types)/, '$1-$&')
.replace(/#statvar_.*/, '#$$1') .replace(/#statvar_.*/, '#$$1')
; ;
} }
} }
} }
obj[key] = obj[key] obj[key] = (maria ? obj[key].replace(/dev\.mysql\.com\/doc\/mysql\/en\//, 'mariadb.com/kb/en/library/') : obj[key]) // MariaDB
.replace(/dev\.mysql\.com\/doc\/mysql\/en\//, (maria ? 'mariadb.com/kb/en/library/' : '$&')) // MariaDB
.replace(/\/doc\/mysql/, '/doc/refman/' + version) // MySQL .replace(/\/doc\/mysql/, '/doc/refman/' + version) // MySQL
.replace(/\/docs\/current/, '/docs/' + version) // PostgreSQL .replace(/\/docs\/current/, '/docs/' + version) // PostgreSQL
; ;
@@ -658,7 +658,7 @@ function triggerChange(tableRe, table, form) {
if (tableRe.test(form['Trigger'].value)) { if (tableRe.test(form['Trigger'].value)) {
form['Trigger'].value = table + '_' + (selectValue(form['Timing']).charAt(0) + formEvent.charAt(0)).toLowerCase(); form['Trigger'].value = table + '_' + (selectValue(form['Timing']).charAt(0) + formEvent.charAt(0)).toLowerCase();
} }
alterClass(form['Of'], 'hidden', formEvent != 'UPDATE OF'); alterClass(form['Of'], 'hidden', !/ OF/.test(formEvent));
} }

View File

@@ -366,7 +366,7 @@ function menuOver(event) {
* @this HTMLElement * @this HTMLElement
*/ */
function menuOut() { function menuOut() {
this.style.overflow = 'auto'; this.style.overflow = 'hidden';
} }
@@ -662,7 +662,7 @@ function ajaxForm(form, message, button) {
} }
} }
data = data.join('&'); data = data.join('&');
var url = form.action; var url = form.action;
if (!/post/i.test(form.method)) { if (!/post/i.test(form.method)) {
url = url.replace(/\?.*/, '') + '?' + data; url = url.replace(/\?.*/, '') + '?' + data;

View File

@@ -2,7 +2,7 @@
$TABLE = $_GET["trigger"]; $TABLE = $_GET["trigger"];
$name = $_GET["name"]; $name = $_GET["name"];
$trigger_options = trigger_options(); $trigger_options = trigger_options();
$row = (array) trigger($name) + array("Trigger" => $TABLE . "_bi"); $row = (array) trigger($name, $TABLE) + array("Trigger" => $TABLE . "_bi");
if ($_POST) { if ($_POST) {
if (!$error && in_array($_POST["Timing"], $trigger_options["Timing"]) && in_array($_POST["Event"], $trigger_options["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"])) {

24
bin/export.sh Normal file
View File

@@ -0,0 +1,24 @@
#!/bin/sh
set -e
# Root directory.
BASEDIR=$( cd `dirname $0`/.. ; pwd )
cd "$BASEDIR"
php compile.php
php compile.php en
php compile.php de
php compile.php cs
php compile.php sk
php compile.php mysql
php compile.php mysql en
php compile.php mysql de
php compile.php mysql cs
php compile.php mysql sk
php compile.php editor
php compile.php editor en
php compile.php editor mysql
php compile.php editor mysql en

View File

@@ -1,3 +1,104 @@
Adminer 4.9.1 (released 2024-09-09):
- Compatibility with PHP 8.3.
- Fix compiling jush external files.
- Improved displaying of long table names in menu.
- Replace deprecated <acronym> with <abbr>.
- Add support for translations in plugins.
- Add .editorconfig file.
- MySQL: Add unix_timestamp to functions.
- PostgreSQL: Show only accessible databases.
- PostgreSQL: Make data length calculation more accurate.
- PostgreSQL: Fix documentation link for SERIAL type.
- PostgreSQL: Fix undefined properties on PHP 8.
- Elasticsearch: Fix field selection.
- AdminerEditForeign: Refactor and fix the plugin.
- AdminerLoginOtp: Autocomplete hints for OTP input field, code refactoring.
Adminer 4.9 (released 2024-08-19):
- Validate server input in login form.
- Validate connection to server in HTTP based drivers.
- Move dependencies from submodules to Composer.
- Update hydra and pepa-lintha-dark themes.
- Elasticsearch 5: Make unusable driver usable again, move it to plugins.
- Add new Elasticsearch 7 driver.
- Set saving to file as a default export option.
- Improve URL and email detection.
- Fix AdminerVersionNoverify plugin blocking other plugins to modify HTML head.
- Fix several bugs and security issues in AdminerFileUpload plugin.
- Skip dump of generated columns.
- Update composer.json.
- Add script for exporting compiled adminer variants.
Adminer 4.8.2 (released 2024-03-16):
Support multi-line table comments
MySQL: Use ST_SRID() instead of SRID() for MySQL 8 (PR #418)
PostgreSQL: Don't reset table comments (regression from 4.2.0)
PostgreSQL PDO: Allow editing rows identified by boolean column (PR #380)
Update several translations: lv, bn, fr, it, nl, ru, cs, sk
Allow responsive styles on larger devices
Adminer 4.8.1 (released 2021-05-14):
Internet Explorer or PDO in Adminer 4.7.8-4.8.0: Fix XSS in doc_link (bug #797)
Fix more PHP 8 warnings (bug #781)
Avoid PHP warnings with PDO drivers (bug #786, regression from 4.7.8)
MySQL: Allow moving views to other DB and renaming DB with views (bug #783)
MariaDB: Do not treat sequences as views (PR #416)
PostgreSQL: Support UPDATE OF triggers (bug #789)
PostgreSQL: Support triggers with more events (OR)
PostgreSQL: Fix parsing of foreign keys with non-ASCII column names
PostgreSQL < 10 PDO: Avoid displaying GENERATED ALWAYS BY IDENTITY everywhere (bug #785, regression from 4.7.9)
SQLite: Fix displayed types (bug #784, regression from 4.8.0)
Adminer 4.8.0 (released 2021-02-10):
Support function default values in insert (bug #713)
Allow SQL pseudo-function in insert
Skip date columns for non-date values in search anywhere
Add DB version to comment in export
Support PHP 8 in create table (regression from 4.7.9)
MySQL 8: Fix EXPLAIN in SQL command
PostgreSQL: Create PRIMARY KEY for auto increment columns
PostgreSQL: Avoid exporting empty sequence last value (bug #768)
PostgreSQL: Do not show triggers from other schemas (PR #412)
PostgreSQL: Fix multi-parameter functions in default values (bug #736)
PostgreSQL: Fix displaying NULL bytea fields
PostgreSQL PDO: Do not select NULL function for false values in edit
Oracle: Alter indexes
Oracle: Count tables
Oracle: Import from CSV
Oracle: Fix column size with string type
MongoDB: Handle errors
SimpleDB, Firebird, ClickHouse: Move to plugin
Adminer 4.7.9 (released 2021-02-07):
Fix XSS in browsers which don't encode URL parameters (bug #775, regression from 4.7.0)
Elasticsearch, ClickHouse: Do not print response if HTTP code is not 200
Don't syntax highlight during IME composition (bug #747)
Quote values with leading and trailing zeroes in CSV export (bug #777)
Link URLs in SQL command (PR #411)
Fix displayed foreign key columns from other DB (bug #766)
Re-enable PHP warnings (regression from 4.7.8)
MySQL: Do not export names in quotes with sql_mode='ANSI_QUOTES' (bug #749)
MySQL: Avoid error in PHP 8 when connecting to socket (PR #409)
MySQL: Don't quote default value of text fields (bug #779)
PostgreSQL: Export all FKs after all CREATE TABLE (PR #351)
PostgreSQL: Fix dollar-quoted syntax highlighting (bug #738)
PostgreSQL: Do not show view definition from other schema (PR #392)
PostgreSQL: Use bigserial for bigint auto increment (bug #765, regression from 3.0.0)
PostgreSQL PDO: Support PgBouncer, unsupport PostgreSQL < 9.1 (bug #771)
PostgreSQL 10: Support GENERATED ALWAYS BY IDENTITY (PR #386)
PostgreSQL 10: Support partitioned tables (PR #396)
PostgreSQL 11: Create PRIMARY KEY for auto increment columns
SQLite: Set busy_timeout to 500
MS SQL: Don't truncate comments to 30 chars (PR #376)
Elasticsearch 6: Fix displaying type mapping (PR #402)
MongoDB: Fix password-less check in the mongo extension (PR #405)
Editor: Cast to string when searching (bug #325)
Editor: Avoid trailing dot in export filename
Adminer 4.7.8 (released 2020-12-06):
Support PHP 8
Disallow connecting to privileged ports (bug #769)
Adminer 4.7.7 (released 2020-05-11): Adminer 4.7.7 (released 2020-05-11):
Fix open redirect if Adminer is accessible at //adminer.php%2F@ Fix open redirect if Adminer is accessible at //adminer.php%2F@
@@ -31,7 +132,7 @@ SQLite: Handle error in altering table (bug #697)
SQLite: Allow setting auto increment for empty tables SQLite: Allow setting auto increment for empty tables
SQLite: Preserve auto increment when recreating table SQLite: Preserve auto increment when recreating table
MS SQL: Support foreign keys to other DB MS SQL: Support foreign keys to other DB
MongoDB: Allow setting authSource from environment variable MongoDB: Allow setting authSource from environment variable
Adminer 4.7.2 (released 2019-07-18): Adminer 4.7.2 (released 2019-07-18):
Do not attempt logging in without password (bug #676) Do not attempt logging in without password (bug #676)
@@ -331,7 +432,7 @@ Adminer 3.7.1 (released 2013-06-29):
Increase click target for checkboxes Increase click target for checkboxes
Use shadow for highlighting default button Use shadow for highlighting default button
Don't use LIMIT 1 if inline updating unique row Don't use LIMIT 1 if inline updating unique row
Don't check previous checkbox on added column in create table (bug #3614245) Don't check previous checkbox on added column in create table (bug #326)
Order table list by name Order table list by name
Verify UTF-8 encoding of CSV import Verify UTF-8 encoding of CSV import
Notify user about expired master password for permanent login Notify user about expired master password for permanent login
@@ -342,7 +443,7 @@ Display error on invalid alter table and view pages
MySQL: Speed up updating rows without numeric or UTF-8 primary key MySQL: Speed up updating rows without numeric or UTF-8 primary key
Non-MySQL: Descending indexes Non-MySQL: Descending indexes
PostgreSQL: Fix detecting oid column in PDO PostgreSQL: Fix detecting oid column in PDO
PostgreSQL: Handle timestamp types (bug #3614086) PostgreSQL: Handle timestamp types (bug #324)
Add Korean translation Add Korean translation
Adminer 3.7.0 (released 2013-05-19): Adminer 3.7.0 (released 2013-05-19):
@@ -355,9 +456,9 @@ Disable SQL export when applying functions in select
Allow using lang() in plugins (customization) Allow using lang() in plugins (customization)
Remove bzip2 compression support Remove bzip2 compression support
Constraint memory used in TAR export Constraint memory used in TAR export
Allow exporting views dependent on each other (bug #3459151) Allow exporting views dependent on each other (bug #214)
Fix resetting search (bug #3612507) Fix resetting search (bug #318)
Don't use LIMIT 1 if updating unique row (bug #3613109) Don't use LIMIT 1 if updating unique row (bug #320)
Restrict editing rows without unique identifier to search results Restrict editing rows without unique identifier to search results
Display navigation bellow main content on mobile browsers Display navigation bellow main content on mobile browsers
Get number of rows on export page asynchronously Get number of rows on export page asynchronously
@@ -365,7 +466,7 @@ Respect 'whole result' even if some rows are checked (bug #339 since Adminer 3.7
MySQL: Optimize create table page and Editor navigation MySQL: Optimize create table page and Editor navigation
MySQL: Display bit type as binary number MySQL: Display bit type as binary number
MySQL: Improve export of binary data types MySQL: Improve export of binary data types
MySQL: Fix handling of POINT data type (bug #3582578) MySQL: Fix handling of POINT data type (bug #282)
MySQL: Don't export binary and geometry columns twice in select MySQL: Don't export binary and geometry columns twice in select
MySQL: Fix EXPLAIN in MySQL < 5.1, bug since Adminer 3.6.4 MySQL: Fix EXPLAIN in MySQL < 5.1, bug since Adminer 3.6.4
SQLite: Export views SQLite: Export views
@@ -380,11 +481,11 @@ Recover original view, trigger, routine if creating fails
Do not store plain text password to history in creating user Do not store plain text password to history in creating user
Selectable ON UPDATE CURRENT_TIMESTAMP field in create table Selectable ON UPDATE CURRENT_TIMESTAMP field in create table
Open database to a new window after selecting it with Ctrl Open database to a new window after selecting it with Ctrl
Clear column name after resetting search (bug #3601200) Clear column name after resetting search (bug #296)
Explain partitions in SQL query (bug #3600150) Explain partitions in SQL query (bug #294)
Allow loading more data with inline edit (bug #3605531) Allow loading more data with inline edit (bug #299)
Stay on the same page after deleting rows (bug #3605845) Stay on the same page after deleting rows (bug #301)
Respect checked tables in export filename (bug #3245464) Respect checked tables in export filename (bug #133)
Respect PHP configuration max_input_vars Respect PHP configuration max_input_vars
Fix unsetting permanent login after logout Fix unsetting permanent login after logout
Disable autocapitalize in identifiers on mobile browsers Disable autocapitalize in identifiers on mobile browsers
@@ -469,11 +570,11 @@ Ukrainian translation
Bengali translation Bengali translation
Adminer 3.3.4 (released 2012-03-07): Adminer 3.3.4 (released 2012-03-07):
Foreign keys default actions (bug #3397606) Foreign keys default actions (bug #188)
SET DEFAULT foreign key action SET DEFAULT foreign key action
Fix minor parser bug in SQL command with webserver file Fix minor parser bug in SQL command with webserver file
Ctrl+click on button opens form to a blank window Ctrl+click on button opens form to a blank window
Trim table and column names (bug #3405309) Trim table and column names (bug #195)
Error message with no response from server in AJAX Error message with no response from server in AJAX
Esc to cancel AJAX request Esc to cancel AJAX request
Move AJAX loading indicator to the right Move AJAX loading indicator to the right
@@ -485,9 +586,9 @@ Ability to disable export (customization)
Extensible list of databases (customization) Extensible list of databases (customization)
MySQL: set autocommit after connect MySQL: set autocommit after connect
SQLite, PostgreSQL: vacuum SQLite, PostgreSQL: vacuum
SQLite, PostgreSQL: don't use LIKE for numbers (bug #3420408) SQLite, PostgreSQL: don't use LIKE for numbers (bug #202)
PostgreSQL: fix alter foreign key PostgreSQL: fix alter foreign key
PostgreSQL over PDO: connect if the eponymous database does not exist (bug #3391619) PostgreSQL over PDO: connect if the eponymous database does not exist (bug #185)
Boolean search (Editor) Boolean search (Editor)
Persian translation Persian translation
@@ -515,8 +616,8 @@ Adminer 3.3.0 (released 2011-07-19):
Use Esc to disable in-place edit Use Esc to disable in-place edit
Shortcut for database privileges Shortcut for database privileges
Editable index names Editable index names
Append new index with auto index selection (bug #3282127) Append new index with auto index selection (bug #138)
Preserve original timestamp value in multiple update (bug #3312614) Preserve original timestamp value in multiple update (bug #158)
Bit type default value Bit type default value
Display foreign key name in tooltip Display foreign key name in tooltip
Display default column value in table overview Display default column value in table overview
@@ -530,7 +631,7 @@ Display foreign keys from other schemas (PostgreSQL)
Pagination support (Oracle) Pagination support (Oracle)
Autocomplete for big foreign keys (Editor) Autocomplete for big foreign keys (Editor)
Display name of the referenced record in PostgreSQL (Editor) Display name of the referenced record in PostgreSQL (Editor)
Prefer NULL to empty string (Editor, bug #3323800) Prefer NULL to empty string (Editor, bug #162)
Display searched columns (Editor) Display searched columns (Editor)
Customizable favicon (customization) Customizable favicon (customization)
Method name can return a link (customization) Method name can return a link (customization)
@@ -542,8 +643,8 @@ Fix AJAX history after reload
Adminer 3.2.1 (released 2011-03-23): Adminer 3.2.1 (released 2011-03-23):
Ability to save expression in edit Ability to save expression in edit
Respect default database collation (bug #3191489) Respect default database collation (bug #119)
Don't export triggers without table (bug #3193489) Don't export triggers without table (bug #123)
Esc to focus next field in Tab textarea Esc to focus next field in Tab textarea
Send forms by Ctrl+Enter on <select> Send forms by Ctrl+Enter on <select>
Enum editor and textarea Ctrl+Enter working in IE Enum editor and textarea Ctrl+Enter working in IE
@@ -566,8 +667,8 @@ Get long texts and slow information by AJAX
Most links and forms by AJAX in browsers with support for history.pushState Most links and forms by AJAX in browsers with support for history.pushState
Copy tables Copy tables
Ability to search by expression in select Ability to search by expression in select
Export SQL command result (bug #3116854) Export SQL command result (bug #99)
Focus first field with insert (bug #3126501) Focus first field with insert (bug #106)
Permanent link in schema Permanent link in schema
Display total time in show only errors mode in SQL command Display total time in show only errors mode in SQL command
History: edit all History: edit all
@@ -580,7 +681,7 @@ Utilize oids in PostgreSQL
Homepage customization Homepage customization
Use IN for search in numeric fields (Editor) Use IN for search in numeric fields (Editor)
Use password input for _md5 and _sha1 fields (Editor) Use password input for _md5 and _sha1 fields (Editor)
Work without session.use_cookies (bug #3138640) Work without session.use_cookies (bug #107)
Fix saving schema to cookie in Opera Fix saving schema to cookie in Opera
Portuguese, Slovenian and Turkish translation Portuguese, Slovenian and Turkish translation
@@ -593,10 +694,10 @@ Recognize $$ strings in SQL command (PostgreSQL)
Highlight and edit SQL command in processlist Highlight and edit SQL command in processlist
Always display all drivers Always display all drivers
Timestamp at the end of export Timestamp at the end of export
Link to refresh database cache (bug #3102451) Link to refresh database cache (bug #96)
Support for virtual foreign keys Support for virtual foreign keys
Disable XSS "protection" of IE8 Disable XSS "protection" of IE8
Immunity against zend.ze1_compatibility_mode (bug #3089645) Immunity against zend.ze1_compatibility_mode (bug #86)
Fix last page with empty result set Fix last page with empty result set
Arabic translation and RTL support Arabic translation and RTL support
Dual licensing: Apache or GPL Dual licensing: Apache or GPL
@@ -644,7 +745,7 @@ Add Drop button to Alter pages (regression from 2.0.0)
Link COUNT(*) result to listing Link COUNT(*) result to listing
Newlines in select query edit Newlines in select query edit
Return to referrer after edit Return to referrer after edit
Respect session.auto_start (bug #2967284) Respect session.auto_start (bug #42)
Adminer 2.3.0 (released 2010-02-26): Adminer 2.3.0 (released 2010-02-26):
Support for permanent login (customization required) Support for permanent login (customization required)
@@ -673,7 +774,7 @@ Link URLs in select
Display number of manipulated rows in JS confirm Display number of manipulated rows in JS confirm
Set required memory in SQL command Set required memory in SQL command
Fix removed default in ALTER Fix removed default in ALTER
Display whitespace in texts (bug #2858042) Display whitespace in texts (bug #11)
ClickJacking protection in modern browsers ClickJacking protection in modern browsers
E-mail attachments (Editor) E-mail attachments (Editor)
Optional year in date (Editor) Optional year in date (Editor)
@@ -692,7 +793,7 @@ Use ON DUPLICATE KEY UPDATE for CSV import
Print ALTER export instead of executing it Print ALTER export instead of executing it
Click on row selects it Click on row selects it
Fix Editor date format Fix Editor date format
Fix long SQL query crash (bug #2839231) Fix long SQL query crash (bug #3)
Speed up simple alter table Speed up simple alter table
Traditional Chinese translation Traditional Chinese translation
@@ -748,7 +849,7 @@ Use \n in SQL commands
phpMinAdmin 1.10.1 (released 2009-05-07): phpMinAdmin 1.10.1 (released 2009-05-07):
Highlight odd and hover rows Highlight odd and hover rows
Partition editing comfort (bug #2783446) Partition editing comfort (bug #12)
Allow full length in limited int Allow full length in limited int
phpMinAdmin 1.10.0 (released 2009-04-28): phpMinAdmin 1.10.0 (released 2009-04-28):
@@ -835,7 +936,7 @@ phpMinAdmin 1.4.0 (released 2007-08-15):
Privileges Privileges
New design New design
Dutch translation Dutch translation
Use NULL for auto_increment (bug #1768966) Use NULL for auto_increment (bug #1)
Fix dropping procedure parameters Fix dropping procedure parameters
phpMinAdmin 1.3.2 (released 2007-08-06): phpMinAdmin 1.3.2 (released 2007-08-06):

View File

@@ -1,8 +1,13 @@
#!/usr/bin/env php #!/usr/bin/env php
<?php <?php
function adminer_errors($errno, $errstr) {
return !!preg_match('~^(Trying to access array offset on value of type null|Undefined array key)~', $errstr);
}
error_reporting(6135); // errors and warnings error_reporting(6135); // errors and warnings
set_error_handler('adminer_errors', E_WARNING);
include dirname(__FILE__) . "/adminer/include/version.inc.php"; include dirname(__FILE__) . "/adminer/include/version.inc.php";
include dirname(__FILE__) . "/externals/JsShrink/jsShrink.php"; include dirname(__FILE__) . "/vendor/vrana/jsshrink/jsShrink.php";
function add_apo_slashes($s) { function add_apo_slashes($s) {
return addcslashes($s, "\\'"); return addcslashes($s, "\\'");
@@ -36,7 +41,7 @@ function lang_ids($match) {
} }
function put_file($match) { function put_file($match) {
global $project, $VERSION; global $project, $VERSION, $driver;
if (basename($match[2]) == '$LANG.inc.php') { if (basename($match[2]) == '$LANG.inc.php') {
return $match[0]; // processed later return $match[0]; // processed later
} }
@@ -56,6 +61,9 @@ header("Cache-Control: immutable");
echo "adminer/file.inc.php: Caching headers placeholder not found\n"; echo "adminer/file.inc.php: Caching headers placeholder not found\n";
} }
} }
if ($driver && dirname($match[2]) == "../adminer/drivers") {
$return = preg_replace('~^if \(isset\(\$_GET\["' . $driver . '"]\)\) \{(.*)^}~ms', '\1', $return);
}
if (basename($match[2]) != "lang.inc.php" || !$_SESSION["lang"]) { if (basename($match[2]) != "lang.inc.php" || !$_SESSION["lang"]) {
if (basename($match[2]) == "lang.inc.php") { if (basename($match[2]) == "lang.inc.php") {
$return = str_replace('function lang($idf, $number = null) {', 'function lang($idf, $number = null) { $return = str_replace('function lang($idf, $number = null) {', 'function lang($idf, $number = null) {
@@ -100,7 +108,7 @@ function lzw_compress($string) {
$word = ""; $word = "";
$codes = array(); $codes = array();
for ($i=0; $i <= strlen($string); $i++) { for ($i=0; $i <= strlen($string); $i++) {
$x = $string[$i]; $x = @$string[$i];
if (strlen($x) && isset($dictionary[$word . $x])) { if (strlen($x) && isset($dictionary[$word . $x])) {
$word .= $x; $word .= $x;
} elseif ($i) { } elseif ($i) {
@@ -188,7 +196,7 @@ function php_shrink($input) {
$short_variables = array(); $short_variables = array();
$shortening = true; $shortening = true;
$tokens = token_get_all($input); $tokens = token_get_all($input);
// remove unnecessary { } // remove unnecessary { }
//! change also `while () { if () {;} }` to `while () if () ;` but be careful about `if () { if () { } } else { } //! change also `while () { if () {;} }` to `while () if () ;` but be careful about `if () { if () { } } else { }
$shorten = 0; $shorten = 0;
@@ -215,13 +223,13 @@ function php_shrink($input) {
} }
} }
$tokens = array_values($tokens); $tokens = array_values($tokens);
foreach ($tokens as $i => $token) { foreach ($tokens as $i => $token) {
if ($token[0] === T_VARIABLE && !isset($special_variables[$token[1]])) { if ($token[0] === T_VARIABLE && !isset($special_variables[$token[1]])) {
$short_variables[$token[1]]++; $short_variables[$token[1]]++;
} }
} }
arsort($short_variables); arsort($short_variables);
$chars = implode(range('a', 'z')) . '_' . implode(range('A', 'Z')); $chars = implode(range('a', 'z')) . '_' . implode(range('A', 'Z'));
// preserve variable names between versions if possible // preserve variable names between versions if possible
@@ -232,8 +240,8 @@ function php_shrink($input) {
foreach (array_keys($short_variables) as $number => $key) { foreach (array_keys($short_variables) as $number => $key) {
$short_variables[$key] = short_identifier($number, $chars); // could use also numbers and \x7f-\xff $short_variables[$key] = short_identifier($number, $chars); // could use also numbers and \x7f-\xff
} }
$set = array_flip(preg_split('//', '!"#$%&\'()*+,-./:;<=>?@[\]^`{|}')); $set = array_flip(preg_split('//', '!"#$%&\'()*+,-./:;<=>?@[]^`{|}'));
$space = ''; $space = '';
$output = ''; $output = '';
$in_echo = false; $in_echo = false;
@@ -315,6 +323,14 @@ function compile_file($match) {
return '"' . add_quo_slashes($file) . '"'; return '"' . add_quo_slashes($file) . '"';
} }
if (!function_exists("each")) {
function each(&$arr) {
$key = key($arr);
next($arr);
return $key === null ? false : array($key, $arr[$key]);
}
}
function min_version() { function min_version() {
return true; return true;
} }
@@ -402,7 +418,7 @@ if ($driver) {
if (count($drivers) == 1) { if (count($drivers) == 1) {
$file = str_replace('<?php echo html_select("auth[driver]", $drivers, DRIVER) . "\n"; ?>', "<input type='hidden' name='auth[driver]' value='" . ($driver == "mysql" ? "server" : $driver) . "'>" . reset($drivers), $file); $file = str_replace('<?php echo html_select("auth[driver]", $drivers, DRIVER) . "\n"; ?>', "<input type='hidden' name='auth[driver]' value='" . ($driver == "mysql" ? "server" : $driver) . "'>" . reset($drivers), $file);
} }
$file = preg_replace('(;../externals/jush/modules/jush-(?!textarea\.|txt\.|js\.|' . preg_quote($driver == "mysql" ? "sql" : $driver) . '\.)[^.]+.js)', '', $file); $file = preg_replace('(;\.\./vendor/vrana/jush/modules/jush-(?!textarea\.|txt\.|js\.|' . preg_quote($driver == "mysql" ? "sql" : $driver) . '\.)[^.]+.js)', '', $file);
$file = preg_replace_callback('~doc_link\(array\((.*)\)\)~sU', function ($match) use ($driver) { $file = preg_replace_callback('~doc_link\(array\((.*)\)\)~sU', function ($match) use ($driver) {
list(, $links) = $match; list(, $links) = $match;
$links = preg_replace("~'(?!(" . ($driver == "mysql" ? "sql|mariadb" : $driver) . ")')[^']*' => [^,]*,?~", '', $links); $links = preg_replace("~'(?!(" . ($driver == "mysql" ? "sql|mariadb" : $driver) . ")')[^']*' => [^,]*,?~", '', $links);
@@ -411,8 +427,8 @@ if ($driver) {
//! strip doc_link() definition //! strip doc_link() definition
} }
if ($project == "editor") { if ($project == "editor") {
$file = preg_replace('~;.\.\/externals/jush/jush\.css~', '', $file); $file = preg_replace('~;\.\./vendor/vrana/jush/jush\.css~', '', $file);
$file = preg_replace('~compile_file\(\'\.\./(externals/jush/modules/jush\.js|adminer/static/[^.]+\.gif)[^)]+\)~', "''", $file); $file = preg_replace('~compile_file\(\'\.\./(vendor/vrana/jush/modules/jush\.js|adminer/static/[^.]+\.gif)[^)]+\)~', "''", $file);
} }
$file = preg_replace_callback("~lang\\('((?:[^\\\\']+|\\\\.)*)'([,)])~s", 'lang_ids', $file); $file = preg_replace_callback("~lang\\('((?:[^\\\\']+|\\\\.)*)'([,)])~s", 'lang_ids', $file);
$file = preg_replace_callback('~\b(include|require) "([^"]*\$LANG.inc.php)";~', 'put_file_lang', $file); $file = preg_replace_callback('~\b(include|require) "([^"]*\$LANG.inc.php)";~', 'put_file_lang', $file);
@@ -424,17 +440,18 @@ if ($_SESSION["lang"]) {
$file = str_replace('<?php echo $LANG; ?>', $_SESSION["lang"], $file); $file = str_replace('<?php echo $LANG; ?>', $_SESSION["lang"], $file);
} }
$file = str_replace('<?php echo script_src("static/editing.js"); ?>' . "\n", "", $file); $file = str_replace('<?php echo script_src("static/editing.js"); ?>' . "\n", "", $file);
$file = preg_replace('~\s+echo script_src\("\.\./externals/jush/modules/jush-(textarea|txt|js|\$jush)\.js"\);~', '', $file); $file = preg_replace('~\s+echo script_src\("\.\./vendor/vrana/jush/modules/jush-(textarea|txt|js|\$jush)\.js"\);~', '', $file);
$file = str_replace('<link rel="stylesheet" type="text/css" href="../externals/jush/jush.css">' . "\n", "", $file); $file = str_replace('<link rel="stylesheet" type="text/css" href="../vendor/vrana/jush/jush.css">' . "\n", "", $file);
$file = preg_replace_callback("~compile_file\\('([^']+)'(?:, '([^']*)')?\\)~", 'compile_file', $file); // integrate static files $file = preg_replace_callback("~compile_file\\('([^']+)'(?:, '([^']*)')?\\)~", 'compile_file', $file); // integrate static files
$replace = 'preg_replace("~\\\\\\\\?.*~", "", ME) . "?file=\1&version=' . $VERSION . '"'; $replace = 'preg_replace("~\\\\\\\\?.*~", "", ME) . "?file=\1&version=' . substr(md5(microtime()), 0, 8) . '"';
$file = preg_replace('~\.\./adminer/static/(default\.css|favicon\.ico)~', '<?php echo h(' . $replace . '); ?>', $file); $file = preg_replace('~\.\./adminer/static/(default\.css|favicon\.ico)~', '<?php echo h(' . $replace . '); ?>', $file);
$file = preg_replace('~"\.\./adminer/static/(functions\.js)"~', $replace, $file); $file = preg_replace('~"\.\./adminer/static/(functions\.js)"~', $replace, $file);
$file = preg_replace('~\.\./adminer/static/([^\'"]*)~', '" . h(' . $replace . ') . "', $file); $file = preg_replace('~\.\./adminer/static/([^\'"]*)~', '" . h(' . $replace . ') . "', $file);
$file = preg_replace('~"\.\./externals/jush/modules/(jush\.js)"~', $replace, $file); $file = preg_replace('~"\.\./vendor/vrana/jush/modules/(jush\.js)"~', $replace, $file);
$file = preg_replace("~<\\?php\\s*\\?>\n?|\\?>\n?<\\?php~", '', $file); $file = preg_replace("~<\\?php\\s*\\?>\n?|\\?>\n?<\\?php~", '', $file);
$file = php_shrink($file); $file = php_shrink($file);
$filename = $project . (preg_match('~-dev$~', $VERSION) ? "" : "-$VERSION") . ($driver ? "-$driver" : "") . ($_SESSION["lang"] ? "-$_SESSION[lang]" : "") . ".php"; @mkdir("temp/export", 0777, true);
$filename = "temp/export/$project" . (preg_match('~-dev$~', $VERSION) ? "" : "-$VERSION") . ($driver ? "-$driver" : "") . ($_SESSION["lang"] ? "-$_SESSION[lang]" : "") . ".php";
file_put_contents($filename, $file); file_put_contents($filename, $file);
echo "$filename created (" . strlen($file) . " B).\n"; echo "$filename created (" . strlen($file) . " B).\n";

View File

@@ -25,7 +25,43 @@
"Apache-2.0", "Apache-2.0",
"GPL-2.0-only" "GPL-2.0-only"
], ],
"require": {
"php": "5.6 - 8.3",
"ext-pdo": "*",
"ext-json": "*",
"vrana/jush": "@dev",
"vrana/jsshrink": "@dev"
},
"suggest": {
"ext-zlib": "*",
"ext-suhosin": "*",
"ext-mysqli": "*",
"ext-mysql": "*",
"ext-pgsql": "*",
"ext-mongo": "*",
"ext-sqlsrv": "*",
"ext-mssql": "*",
"ext-oci8": "*",
"ext-interbase": "*",
"ext-pdo_pgsql": "*",
"ext-pdo_dblib": "*",
"ext-pdo_sqlite": "*",
"ext-pdo_oci": "*"
},
"require-dev": {
"ext-xdebug": "*"
},
"scripts": { "scripts": {
"compile": "php compile.php" "compile": "php compile.php"
} },
"repositories": [
{
"type": "vcs",
"url": "https://github.com/vrana/jush.git"
},
{
"type": "vcs",
"url": "https://github.com/vrana/jsshrink.git"
}
]
} }

729
designs/dracula/adminer.css Normal file
View File

@@ -0,0 +1,729 @@
/*
* Theme by Douglas Damasio [http://github.com/douglasdamasio]
* Based on Pepa Linha
* Color syntax inspired by Dracula Theme [https://draculatheme.com/]
* @version 1.0 (June 2020)
*/
@import url('https://fonts.googleapis.com/css2?family=Source+Sans+Pro:wght@300;400;600&family=Ubuntu:wght@500;700&display=swap');
:root {
--color-darkBackground: #282a36;
--color-darkCurrentLine: #44475a;
--color-darkForeground: #f8f8f2;
--color-darkComment: #6272a4;
--color-darkCyan: #8be9fd;
--color-darkGreen: #50fa7b;
--color-darkOrange: #ffb86c;
--color-darkPink: #ff79c6;
--color-darkPurple: #bd93f9;
--color-darkRed: #ff5555;
--color-darkYellow: #f1fa8c;
--color-darkTitleSite: #bcc2cd;
--color-darkDraculaSite: #383a59;
--color-darkDraculaVSCode: #22222c;
}
html,
body {
height: 100%;
background: var(--color-darkBackground);
}
body {
font-family: 'Source Sans Pro', sans-serif;
}
div {
color: var(--color-darkForeground);
}
h1 {
margin: 0;
padding: 0;
background: none;
border: 0;
}
h2 {
margin: 0;
padding: 0;
background: none;
border: 0;
font-family: 'Ubuntu', sans-serif;
font-size: 32px;
font-weight: 700;
color: var(--color-darkPink);
border-bottom: 1px solid var(--color-darkComment);
padding-bottom: 6px;
margin-bottom: 40px;
}
.rtl h2 {
margin: 0;
margin-bottom: 40px;
}
h3 {
font-size: 22px;
margin: 0 0 10px;
border-bottom: 1px solid var(--color-darkComment);
padding: 0;
padding-bottom: 6px;
color: var(--color-darkGreen);
}
p {
margin: 0;
margin-bottom: 15px;
align-items: center;
color: var(--color-darkForeground);
}
a {
color:var(--color-darkPink);
text-decoration:none;
}
a:visited {
color: var(--color-darkPurple);
}
a:link:hover,
a:visited:hover {
color: var(--color-darkPink);
text-decoration:underline;
}
a[href*=charsets] {
display: none;
}
table {
border: 0;
margin: 0;
margin-top: 15px;
}
th, td {
border: 0;
padding: 6px;
color: var(--color-darkOrange);
}
th {
background: none;
color: var(--color-darkCyan);
font-weight: normal;
}
tbody tr:hover td,
tbody tr:hover th {
background: var(--color-darkCurrentLine);
}
table:not(.checkable) th {
min-width: 120px;
}
thead td,
thead th {
background: var(--color-darkComment);
}
thead td,
thead td a,
thead td a:link:hover,
thead td a:visited,
thead td a:visited:hover,
thead th,
thead th a,
thead th a:link:hover,
thead th a:visited,
thead th a:visited:hover {
color: var(--color-darkForeground);
}
table.checkable,
p.links + table,
pre + table,
#edit-fields,
p + table,
h3 + table {
border: 1px solid var(--color-darkCurrentLine);
margin-bottom: 15px;
}
table.checkable tbody tr:hover td,
table.checkable tbody tr:hover th {
background: var(--color-darkCurrentLine);
}
.js .checkable .checked td,
.js .checkable .checked th {
background: var(--color-darkDraculaSite);
}
.js .checkable thead .checked td,
.js .checkable thead .checked th {
background: var(--color-darkPurple);
}
.odd th,
.odd td {
background: var(--color-darkDraculaVSCode);
}
fieldset {
display: inline-block;
padding: 15px;
padding-top: 5px;
margin: 0 0 15px;
border: 0;
background: var(--color-darkBackground);
}
fieldset select {
margin-right: 5px;
}
fieldset input[type=button],
fieldset input[type=submit],
fieldset p {
margin-bottom: 0;
}
fieldset div p {
margin-top: 10px;
}
legend {
display: inline-block;
padding: 6px 15px;
margin: 0 0 0 -15px;
background: var(--color-darkDraculaSite);
font-family: 'Source Sans Pro', sans-serif;
color: var(--color-darkOrange);
}
legend a,
legend a:link:hover {
color: var(--color-darkOrange);
text-decoration: underline;
}
code {
background: none;
}
p code,
pre code,
pre[contenteditable=true] {
padding: 10px 15px;
display: block;
font-size: 17px;
margin-bottom: 15px;
}
p code + a,
p code + a:link:hover,
p code + a:visited:hover {
margin-left: 15px;
position: relative;
top: -20px;
color: var(--color-darkOrange);
font-size: 12px;
text-decoration: underline;
text-transform: lowercase;
}
#content {
margin: 0;
margin-left: 400px;
margin-right: 54px;
padding: 0;
padding-top: 50px;
}
#content > p {
margin-bottom: 15px;
color: var(--color-darkForeground);
}
.rtl #content {
margin: 0;
margin-left: 54px;
margin-right: 400px;
padding: 0;
padding-top: 50px;
}
#menu {
width: 347px;
border-right: 1px solid var(--color-darkBackground);
box-shadow: inset -1px 0 0 #000000b4;
margin: 0;
padding: 0;
top: 0;
background: var(--color-darkDraculaVSCode);
bottom: 0;
position: fixed;
padding: 0 15px;
box-sizing: border-box;
}
#menu h1 {
background: none left top no-repeat;
/* background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAD0AAAAyCAIAAABgVkRrAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYxIDY0LjE0MDk0OSwgMjAxMC8xMi8wNy0xMDo1NzowMSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNS4xIFdpbmRvd3MiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NTA0RDI5NkM5QkRGMTFFMzg4ODNEQjEzNjY5NzJEMEEiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NTA0RDI5NkQ5QkRGMTFFMzg4ODNEQjEzNjY5NzJEMEEiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo1MDREMjk2QTlCREYxMUUzODg4M0RCMTM2Njk3MkQwQSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo1MDREMjk2QjlCREYxMUUzODg4M0RCMTM2Njk3MkQwQSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PnG4emkAAASXSURBVHja7Fk9aNtAFL6EDKKUoqGDySRKB1FC8dDBdCgeOmQoIUMG0yGE0EFT8dDBUwidPJQQQgcNpYROGjKI0sFDB9GhaMhgSgcPpWgqHjqYYsINJfQ7PfV0tmX9JI4Sgx+HI8f26bt3733fe6elIf/LbqwdHbJWS1wYBrMstrXJVg36ZJnNhQWBWMB9k+215gq3tDeHBH3pRseJtC8ee2ezEzd62+ncDH/DhS+ttC88qbMPDntaj952uyvXD3q7ETvyyE77pq5HFz9614r7V8C2GnBezBgp9tGNl3ffzIjvwZ9B//dA7Mz3YPLTyl29UhE+MI0KW9YKh2yjwQZichEAjsNu6WlUqNqkvwHUO+0BJeD2gn4hJFXTwAIw6jUzYxlwHkCTvWqy1+0Ct7FtsPh/3Ofc9brOJ5+8ezHr9gKMcGpWf2SK8bhKk48sA1kIOiODmzc2c8U0DLrzwhI5ypjA3fsZtNrOgPP4y5pmGJXamqHd1kQMTIkENYpwEfQHEW7GsGkYZse393ewb+Y9IwE0PJcOejQ2pFgK3Li3BI14hZM269XKaiXPVPodHUOs6l48o/+t5wO038OcQGztHzd31uPfUEgQdCQi3JkfumLLHa9LoK2tunPQtJ6v5wQ9zWoPzebupms34QKxmZNJAugIDzJE+V4rbTrDSMYtr3AD+H5WFIfZ0lIFPu50otiF7zfW2dlgquKccTFWRxYQ8wlFJOVTdc2gAChq/V99vxdgD7O5CIBO/Yi/P3vsUY2dOOxBdSrzIBm2dxJwq+hlaiId9dua5OlEv/IhH0vKvAYXfvUjvUTFB2STeinJu91Oxo3Eh58onwRXcB7zWkGj/Maa9203+9soPIyWEKBEkQdc8veo+sS4wQkYzV1Bi+A1Ee5DnhO33BxsSw1/wszGPHkXmqI7yIQzPvnvhPqEFjAWtSq7j7n2YplwSctVV8F/FXazbN76nQXu68btfe3Odmqwahl5Ca6tel0UVdnVc6pRBX/JkrgYn0RCY0cdAMhYvGYxHbEklbJ++FoqD8LTUiwTlZLEha55WKOmSybWTCXD1eJG8dnc4XAYqmdgmoRFyp/ZqqHbgMiD8qGXZeAOs1RD9YyhBgBVTgL3cMTHwKd2xyUL50qmTI5p/oK/F7jnEjeycLZTFz02SrKlaSPGbe0fOx+9mbTGcMHhe/fwuFMGn4Dy7BMPA3oBGkZrbIDgcp9JgK37YYtZjmSuqApH9yPRcTp+TM939THOpkaYroMguRuSE14tbuegif11vS58poYm7i1vn6fdxF6hMoNk4leIvTJ0B1FhPQ/PxM45eZ2HGjkY8jHXqptghGJJqqmKVHn1oCr4k93xgr8XuOcZ9zmf7dQym68Et6QFcFaBk7EsQ5fdfuteHW7xPM3asyVh05EkxFJITMHuGDUCukxwvOz3YI31mtWoX7TRXkrDjQhBLeFOHBtQQ6n/f8TDlAd/6mNBP7xO7Ecbz2qNjfrl6qoU3Mr5Qa4j9yyLHqZd7jwjL241QQFdPiJTdT7RsBuapslzi5mqVSHcKXYetcZlSelU3P8EGADW25uhkIE0mQAAAABJRU5ErkJggg==); */
background-image: url();
line-height: 50px;
padding-left: 50px;
padding-top: 9px;
/* text-transform: lowercase; */
margin: 25px 0 10px 16px;
}
#menu h1 a {
font-style: normal;
}
#menu h1 .version {
color: var(--color-darkPurple);
}
#menu a {
color: var(--color-darkForeground);
}
#menu p, #tables {
border: 0;
padding: 0;
}
#menu #dbs {
background: var(--color-darkDraculaVSCode);
padding: 0 15px 15px;
border: 1px solid var(--color-darkForeground);
border-bottom: 0;
box-sizing: border-box;
color: var(--color-darkCyan);
}
#menu #dbs select {
outline: 0;
border-color: var(--color-darkComment);
width: 100%;
}
#menu p.links {
margin: 0 0 15px;
border: 1px solid var(--color-darkForeground);
border-top: 0;
text-align: center;
display: table;
width: 100%;
box-sizing: border-box;
}
#menu p.links a {
padding: 8px;
margin: 0;
display: table-cell;
font-size: 12px;
}
#menu p.links a:hover {
color: var(--color-darkPink);
}
#menu p.links a.active {
font-weight: normal;
background: var(--color-darkCurrentLine);
color: var(--color-darkYellow);
}
#content p.links {
margin: -10px 0 15px;
}
#content p.links a {
padding: 8px;
margin: 0;
display: table-cell;
border: 1px solid var(--color-darkBackground);
}
#content p.links a,
#content p.links a:visited,
#content p.links a:hover {
color: var(--color-darkCyan);
}
#content p.links a.active {
font-weight: normal;
border: 1px solid var(--color-darkTitleSite);
background: var(--color-darkCurrentLine);
}
#tables {
max-height: 100%;
margin: 32px -15px !important;
position: absolute;
left: 15px;
right: 15px;
bottom: 0;
top: 220px;
overflow: hidden !important;
overflow-y: auto !important;
}
.rtl #tables {
overflow: hidden !important;
overflow-y: auto !important;
}
#tables a {
float: right;
padding: 6px 15px;
}
.rtl #tables a {
float: none;
}
#tables .structure, #tables .view {
float: none;
display: block;
}
.rtl #tables a:first-child,
.rtl #tables br + a {
float: left;
display: block;
margin-left: 15px;
}
#tables a:hover,
#tables a:hover + a,
#tables a.active,
#tables a.active + a {
background: var(--color-darkBackground);
color: var(--color-darkPink);
}
#tables br {
display: none;
}
.js .column {
background: var(--color-darkDraculaVSCode);
}
.js .checked .column {
background: var(--color-darkDraculaVSCode);
}
.pages {
left: 400px;
background: var(--color-darkCyan);
color: var(--color-darkBackground);
font-weight: bold;
border: 0;
display: inline-block;
position: static;
}
.pages a,
.pages a:link,
.pages a:link:hover,
.pages a:visited,
.pages a:visited:hover {
color: var(--color-darkBackground);
font-weight: normal;
}
#breadcrumb {
margin: 0;
left: 400px;
background: none;
padding: 0;
padding-top: 25px;
font-size: 12px;
}
#breadcrumb a {
color: var(--color-darkForeground);
text-decoration: underline;
}
#breadcrumb,
#breadcrumb a:hover {
color: var(--color-darkTitleSite);
}
.rtl #breadcrumb {
margin: 0;
padding: 0;
padding-top: 25px;
right: 400px;
}
.logout,
.rtl .logout {
top: 30px;
right: 54px;
margin: 0;
}
.rtl .logout {
right: auto;
left: 54px;
}
input:not([type]),
input[type="color"],
input[type="email"],
input[type="number"],
input[type="password"],
input[type="tel"],
input[type="url"],
input[type="text"],
input[type="search"] {
border: 1px solid var(--color-darkCurrentLine);
background-color: var(--color-darkBackground);
padding: 6px;
margin: 0;
box-sizing: border-box;
color: var(--color-darkForeground);
}
table:not(#table) input:not([type]),
table:not(#table) input[type="color"],
table:not(#table) input[type="email"],
table:not(#table) input[type="number"],
table:not(#table) input[type="password"],
table:not(#table) input[type="tel"],
table:not(#table) input[type="url"],
table:not(#table) input[type="text"],
table:not(#table) input[type="search"] {
min-width: 280px;
}
input[type=submit],
input[type=button] {
border: 0;
padding: 7px 12px;
cursor: pointer;
outline: 0;
box-shadow: none;
background: var(--color-darkGreen);
color: var(--color-darkBackground);
font-weight: bold;
margin-bottom: 5px;
transition: background .4s ease;
border-radius: 5px;
margin-top: 20px;
}
input[type=submit][disabled],
input[type=button][disabled] {
background: var(--color-darkTitleSite) !important;
color: var(--color-darkBackground);
cursor: not-allowed;
}
input[type=submit]:hover,
input[type=button]:hover,
input[type=submit]:focus,
input[type=button]:focus {
background: var(--color-darkGreen);
opacity: 0.8;
}
.logout input[type=submit] {
background: var(--color-darkRed);
color: var(--color-darkForeground);
}
.logout input[type=submit]:hover {
background: var(--color-darkRed);
opacity: 0.8;
}
input.default,
input.default {
box-shadow: none;
background: var(--color-darkGreen);
color: var(--color-darkDraculaVSCode);
font-weight: bold;
}
select {
box-sizing: border-box;
margin: 0;
padding: 6px 0;
border: 1px solid var(--color-darkCurrentLine);
background-color: var(--color-darkBackground);
color: var(--color-darkForeground);
}
label {
cursor: pointer;
margin: 18px;
color: var(--color-darkOrange);
}
.error,
.message {
margin: 0;
margin-bottom: 15px;
background: var(--color-darkCurrentLine);
color: var(--color-darkRed);
}
#logins a,
#tables a,
#tables span {
background: none;
}
#form > p {
margin-bottom: 15px;
color: var(--color-darkForeground);
}
#schema .table {
padding: 6px;
}
#schema .table a {
display: block;
margin: -6px;
margin-bottom: 6px;
padding: 6px;
color: var(--color-darkBackground);
background: var(--color-darkPurple);
}
#schema .table br {
display: none;
}
#schema .table span {
display: block;
margin-bottom: 1px solid var(--color-darkDraculaVSCode);
}
#lang {
position: fixed;
top: 55px;
right: 100%;
z-index: 10;
margin-right: -340px;
line-height: normal;
padding: 0;
left: auto;
font-size: 0;
}
#lang select {
font-size: 12px;
padding: 0;
text-align: right;
border: 0;
background: none;
-webkit-appearance: none;
-moz-appearance: none;
appearance: none;
cursor: pointer;
outline: 0;
}
#lang select option {
text-align: right;
}
.rtl #lang {
margin-right: 0;
left: 100%;
margin-left: -261px;
right: auto;
}
.jush {
color: var(--color-darkForeground);
}
.jush a {
color: var(--color-darkPurple);
}
.jush-sql a,
.jush-sql_code a,
.jush-sqlite a,
.jush-pgsql a,
.jush-mssql a,
.jush-oracle a,
.jush-simpledb a {
font-weight: normal;
}
.jush-bac,
.jush-php_bac,
.jush-bra,
.jush-mssql_bra,
.jush-sqlite_quo {
color: var(--color-darkYellow);
}
.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: var(--color-darkOrange);
}
.jush-num,
.jush-clr {
color: var(--color-darkPurple);
}
@media print {
.logout {
display: none;
}
#breadcrumb {
position: static;
}
#content {
margin: 0;
}
}
.footer {
position: sticky;
bottom: 0;
margin-right: -20px;
border-top: 20px solid var(--color-darkBackground);
border-image: var(--color-darkBackground) 100% 0;
border-image-source: var(--color-darkBackground);
border-image-slice: 100% 0;
border-image-width: 1;
border-image-outset: 0;
border-image-repeat: stretch;
}
.footer > div {
background: var(--color-darkBackground);
padding: 0 0 .5em;
}

View File

@@ -752,7 +752,7 @@ legend{
font-size: 13px; font-size: 13px;
} }
#tables a[title] { #tables .structure, #tables .view {
float: none; float: none;
display: block; display: block;
color: inherit; color: inherit;

View File

@@ -18,7 +18,7 @@ a[href$="&dump="] {background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgA
a[href*="&import="] {background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH3gEJFDQPlDJUDwAAAiNJREFUOMutk0tI1FEUh7//Y9TJghyc1KQ20lMthRAlgoKgVkWte6wid0EICUHUQjdBErRqHYmQghgU5KLQGB8FKVEMCi0G1JmRbPLJ/O89p8XYOAMZBB24HM5dfL/fOfdcB6Aj1j6kqm2qWv/o5NMk/xBOR6z9dVVpzbmQEyKxPMcBc5svbheHs91YK1hRjJWCY7FGsSKT3VcPtviquqaqVJVVY6xlZu0hYpRrpyJ/Vb7fN3sMwAG4965Hw+ElKrzdlPphPqTHaYw0EdiAQEwuW4MRg7GGzrYu7j6L8/hGg+MD7DNXmF7tpDpSg6MOYpWbzbe2VV/dMATGAuADTLt3UFEmU+OICCpK72hqW8CFExGymwAAnrya15X1QJ+PJFVVtW90QQvjRay4TmfW9XrPpOYdBFYQVXwP+mMpPM9lYCyF44K7KTI4kQJVQj4cqd1BNihowVpBAd9zuNQSZXAizcWWPXmH/WPJonp27ifGCEUOVMB34eXHNJ6Xy5C7+w3xHRDg6N4ylEKAEVSVkAfnm6MMTy1y9nhlXvHNpzSthyrYFfYBiCcylJf6WwAjOZrnOgxPLQLks+tAIDDydSkPrIuWYG2BA2NMbgYunGms5O3nRU43bDkYGEtzuTWar+OJDN5ma1szUKVh/07mv69TVxXm28JK/i/U15YQT2SKdkFEpeAV9P2D3pmmrJXywFgCY7FGCKxgrPnjMv1Y3hjif8QvwdlGGi2XXTgAAAAASUVORK5CYII=") no-repeat scroll 2px bottom; padding-left:22px;} a[href*="&import="] {background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH3gEJFDQPlDJUDwAAAiNJREFUOMutk0tI1FEUh7//Y9TJghyc1KQ20lMthRAlgoKgVkWte6wid0EICUHUQjdBErRqHYmQghgU5KLQGB8FKVEMCi0G1JmRbPLJ/O89p8XYOAMZBB24HM5dfL/fOfdcB6Aj1j6kqm2qWv/o5NMk/xBOR6z9dVVpzbmQEyKxPMcBc5svbheHs91YK1hRjJWCY7FGsSKT3VcPtviquqaqVJVVY6xlZu0hYpRrpyJ/Vb7fN3sMwAG4965Hw+ElKrzdlPphPqTHaYw0EdiAQEwuW4MRg7GGzrYu7j6L8/hGg+MD7DNXmF7tpDpSg6MOYpWbzbe2VV/dMATGAuADTLt3UFEmU+OICCpK72hqW8CFExGymwAAnrya15X1QJ+PJFVVtW90QQvjRay4TmfW9XrPpOYdBFYQVXwP+mMpPM9lYCyF44K7KTI4kQJVQj4cqd1BNihowVpBAd9zuNQSZXAizcWWPXmH/WPJonp27ifGCEUOVMB34eXHNJ6Xy5C7+w3xHRDg6N4ylEKAEVSVkAfnm6MMTy1y9nhlXvHNpzSthyrYFfYBiCcylJf6WwAjOZrnOgxPLQLks+tAIDDydSkPrIuWYG2BA2NMbgYunGms5O3nRU43bDkYGEtzuTWar+OJDN5ma1szUKVh/07mv69TVxXm28JK/i/U15YQT2SKdkFEpeAV9P2D3pmmrJXywFgCY7FGCKxgrPnjMv1Y3hjif8QvwdlGGi2XXTgAAAAASUVORK5CYII=") no-repeat scroll 2px bottom; padding-left:22px;}
a[href$="&import="] {background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH3gEJFDMETKEbQAAAAjZJREFUOMuVkjFoU2EUhc//3gsvptFCIdRHh2CrQ1AcmsUYHTKJDkJrFUdx6uJkpuLspCI4xaJLNik4SMGlOKgEdekQ0EEwFhJqCw+a16RJ//+/x0Heo6XN4B0v537nHLgKAKqNxXckSyTPPyu//IP/GFVtLL6f9INrKZXC791f3UvDysPP3tryjcHt7yTPkRQRaZL8KSKvRGRtbm7OxgCPZJ8kJtOnYaw99ZUfl8UQ5XK5kMlkQBI7OzuzURTNbmxs3Nne3v60srJyd2FhoQ0AztPLtflOv/22tdtCVo3hwvhFUATZbBaO48B1XUxMTCCfz6NUKmF6evqKtfZxnMABgOdXl+c7vTZ87wQUFcRyZOepqSmIyPWkAgA8+HCfFMG3rS8QEVCIvb09pFIpkES/30cYhmi325iZmYGI4BDgReW1Wl1d3apUKrler4coitBqtUASxhh0u10Mh0N4ngeSRwEAQBIk4bou0uk0PM+D53nQWsMYA/JfLRGBtfYoQEQSx/hIKQVrbbJzHGd0ghgQHxhj4LourLXQWkNrDdd1E81IQCy21iaAOEFcU2t9PEBEEvcYeDBZrNvf38ehPwAAay3CMEQul4Pv+4f/XSkEQYBisYhOpzMywb1Go/GmUCiM5fN5+L4PpRRIIggCRFGEZrOJ9fX1TWPMzQR+0Kler58RkUcicstxnPFMJgNjDMIwxGAw2DTG1K21T5aWlraOBRycWq120hhz1hgjWusf1Wp1eJzuL3uxkTGLHB98AAAAAElFTkSuQmCC") no-repeat scroll 2px bottom; padding-left:22px;} a[href$="&import="] {background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH3gEJFDMETKEbQAAAAjZJREFUOMuVkjFoU2EUhc//3gsvptFCIdRHh2CrQ1AcmsUYHTKJDkJrFUdx6uJkpuLspCI4xaJLNik4SMGlOKgEdekQ0EEwFhJqCw+a16RJ//+/x0Heo6XN4B0v537nHLgKAKqNxXckSyTPPyu//IP/GFVtLL6f9INrKZXC791f3UvDysPP3tryjcHt7yTPkRQRaZL8KSKvRGRtbm7OxgCPZJ8kJtOnYaw99ZUfl8UQ5XK5kMlkQBI7OzuzURTNbmxs3Nne3v60srJyd2FhoQ0AztPLtflOv/22tdtCVo3hwvhFUATZbBaO48B1XUxMTCCfz6NUKmF6evqKtfZxnMABgOdXl+c7vTZ87wQUFcRyZOepqSmIyPWkAgA8+HCfFMG3rS8QEVCIvb09pFIpkES/30cYhmi325iZmYGI4BDgReW1Wl1d3apUKrler4coitBqtUASxhh0u10Mh0N4ngeSRwEAQBIk4bou0uk0PM+D53nQWsMYA/JfLRGBtfYoQEQSx/hIKQVrbbJzHGd0ghgQHxhj4LourLXQWkNrDdd1E81IQCy21iaAOEFcU2t9PEBEEvcYeDBZrNvf38ehPwAAay3CMEQul4Pv+4f/XSkEQYBisYhOpzMywb1Go/GmUCiM5fN5+L4PpRRIIggCRFGEZrOJ9fX1TWPMzQR+0Kler58RkUcicstxnPFMJgNjDMIwxGAw2DTG1K21T5aWlraOBRycWq120hhz1hgjWusf1Wp1eJzuL3uxkTGLHB98AAAAAElFTkSuQmCC") no-repeat scroll 2px bottom; padding-left:22px;}
@media all and (min-device-width: 881px) { @media all and (min-width: 881px) {
#menu .links {height:22px; transition:.2s;} #menu .links {height:22px; transition:.2s;}
#menu .links:hover {height:5em;} #menu .links:hover {height:5em;}
#menu .links a {color:transparent; transition:.2s; display:block; margin-bottom:-1.25em;} #menu .links a {color:transparent; transition:.2s; display:block; margin-bottom:-1.25em;}

1
designs/hydra Submodule

Submodule designs/hydra added at f8aa49777e

View File

@@ -19,9 +19,9 @@ html/*\*/>/*/*/body a[href$="dump="] {background:url("data:image/png;base64,iVBO
html/*\*/>/*/*/body select[name="db"] {background:white url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAQAAAC1+jfqAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAEYSURBVBgZBcHPio5hGAfg6/2+R980k6wmJgsJ5U/ZOAqbSc2GnXOwUg7BESgLUeIQ1GSjLFnMwsKGGg1qxJRmPM97/1zXFAAAAEADdlfZzr26miup2svnelq7d2aYgt3rebl585wN6+K3I1/9fJe7O/uIePP2SypJkiRJ0vMhr55FLCA3zgIAOK9uQ4MS361ZOSX+OrTvkgINSjS/HIvhjxNNFGgQsbSmabohKDNoUGLohsls6BaiQIMSs2FYmnXdUsygQYmumy3Nhi6igwalDEOJEjPKP7CA2aFNK8Bkyy3fdNCg7r9/fW3jgpVJbDmy5+PB2IYp4MXFelQ7izPrhkPHB+P5/PjhD5gCgCenx+VR/dODEwD+A3T7nqbxwf1HAAAAAElFTkSuQmCC") no-repeat scroll left bottom; padding-left:16px;} html/*\*/>/*/*/body select[name="db"] {background:white url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAQAAAC1+jfqAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAEYSURBVBgZBcHPio5hGAfg6/2+R980k6wmJgsJ5U/ZOAqbSc2GnXOwUg7BESgLUeIQ1GSjLFnMwsKGGg1qxJRmPM97/1zXFAAAAEADdlfZzr26miup2svnelq7d2aYgt3rebl585wN6+K3I1/9fJe7O/uIePP2SypJkiRJ0vMhr55FLCA3zgIAOK9uQ4MS361ZOSX+OrTvkgINSjS/HIvhjxNNFGgQsbSmabohKDNoUGLohsls6BaiQIMSs2FYmnXdUsygQYmumy3Nhi6igwalDEOJEjPKP7CA2aFNK8Bkyy3fdNCg7r9/fW3jgpVJbDmy5+PB2IYp4MXFelQ7izPrhkPHB+P5/PjhD5gCgCenx+VR/dODEwD+A3T7nqbxwf1HAAAAAElFTkSuQmCC") no-repeat scroll left bottom; padding-left:16px;}
html/*\*/>/*/*/body select[name="db"] option {padding-left:18px;} html/*\*/>/*/*/body select[name="db"] option {padding-left:18px;}
html/*\*/>/*/*/body #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;} html/*\*/>/*/*/body #menu 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;}
html/*\*/>/*/*/body #menu p a[href*="&table="], html/*\*/>/*/*/body #menu p a[href*="&view="] {clear:right; margin-left:24px; display:block; height:17px; padding-bottom:1px; text-decoration:none;} html/*\*/>/*/*/body #menu li a[href*="&table="], html/*\*/>/*/*/body #menu li a[href*="&view="] {clear:right; margin-left:24px; display:block; height:17px; padding-bottom:1px; text-decoration:none;}
html/*\*/>/*/*/body #menu p#tables br {display:none;} html/*\*/>/*/*/body #menu p#tables br {display:none;}

View File

@@ -1,6 +1,6 @@
/* /*
A colourful RTL-friendly theme. A colourful, RTL-friendly theme.
Update from https://github.com/vrana/adminer/raw/master/designs/lucas-sandery/adminer.css Update from https://github.com/lucas-sandery/adminer/raw/master/designs/lucas-sandery/adminer.css
Icons from http://FlatIcon.com: Icons from http://FlatIcon.com:
"Translation" by Freepik "Translation" by Freepik
@@ -13,7 +13,7 @@ Icons from http://FlatIcon.com:
"Forbidden Mark" by Pavel Kozlov "Forbidden Mark" by Pavel Kozlov
"Search" by Freepik "Search" by Freepik
Background from "All Work and No Play", http://thenewcode.com/1008/SVG-Movie-Backgrounds-Andys-Room-and-Overlook-Hotel Background adapted from "All Work and No Play", http://thenewcode.com/1008/SVG-Movie-Backgrounds-Andys-Room-and-Overlook-Hotel
*/ */
html { html {
height: 100%; height: 100%;
@@ -23,6 +23,7 @@ body {
min-height: 100%; min-height: 100%;
display: flex; display: flex;
background: #41658a; background: #41658a;
box-sizing: border-box;
} }
p { p {
margin-right: 0; margin-right: 0;
@@ -133,6 +134,9 @@ thead a:visited:focus,
.message p > a:visited:focus { .message p > a:visited:focus {
color: #f39561; color: #f39561;
} }
pre {
overflow-x: auto;
}
code.jush-sql { code.jush-sql {
display: inline-block; display: inline-block;
padding: 0.3em 0.5em 0.2em; padding: 0.3em 0.5em 0.2em;
@@ -164,6 +168,11 @@ th > code {
.footer { .footer {
background: #fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 340.6 491.8' width='56px' height='81px'%3E%3Cpolygon fill='%2370a37f' fill-opacity='0.05' points='229.9,208.7 170.5,243 111,208.7 111,140 170.5,105.7 229.9,140'/%3E%3Cpolygon fill='%2370a37f' fill-opacity='0.05' points='0,305.3 59.5,339.6 59.5,408.3 0,442.6'/%3E%3Cpolygon fill='%2370a37f' fill-opacity='0.05' points='342.8,442.6 283.3,408.3 283.3,339.6 342.8,305.3'/%3E%3Cpolygon fill='%2379b473' fill-opacity='0.05' points='91.6,0 0,52.9 0,0'/%3E%3Cpolygon fill='%2379b473' fill-opacity='0.05' points='340.6,0 340.6,52.9 248.8,0'/%3E%3Cpolygon fill='%2379b473' fill-opacity='0.05' points='21.4,264.6 102.8,311.6 102.8,431.7 -1.2,491.8 0,544.5 149.7,458.1 149.1,285.1 68.2,236.7 68.2,116.6 172.2,56.5 276.2,116.6 276.2,236.7 192.5,285 192.5,337.1 192.5,337.1 192.5,458.1 342.2,544.5 341,491.8 237,431.7 237,311.6 320.8,263.3 320.8,90.2 171.1,3.8 21.4,90.2'/%3E%3C/svg%3E") fixed; background: #fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 340.6 491.8' width='56px' height='81px'%3E%3Cpolygon fill='%2370a37f' fill-opacity='0.05' points='229.9,208.7 170.5,243 111,208.7 111,140 170.5,105.7 229.9,140'/%3E%3Cpolygon fill='%2370a37f' fill-opacity='0.05' points='0,305.3 59.5,339.6 59.5,408.3 0,442.6'/%3E%3Cpolygon fill='%2370a37f' fill-opacity='0.05' points='342.8,442.6 283.3,408.3 283.3,339.6 342.8,305.3'/%3E%3Cpolygon fill='%2379b473' fill-opacity='0.05' points='91.6,0 0,52.9 0,0'/%3E%3Cpolygon fill='%2379b473' fill-opacity='0.05' points='340.6,0 340.6,52.9 248.8,0'/%3E%3Cpolygon fill='%2379b473' fill-opacity='0.05' points='21.4,264.6 102.8,311.6 102.8,431.7 -1.2,491.8 0,544.5 149.7,458.1 149.1,285.1 68.2,236.7 68.2,116.6 172.2,56.5 276.2,116.6 276.2,236.7 192.5,285 192.5,337.1 192.5,337.1 192.5,458.1 342.2,544.5 341,491.8 237,431.7 237,311.6 320.8,263.3 320.8,90.2 171.1,3.8 21.4,90.2'/%3E%3C/svg%3E") fixed;
} }
@supports (-ms-ime-align: auto) {
.footer {
background: #fff;
}
}
.scrollable { .scrollable {
overflow: auto; overflow: auto;
} }
@@ -202,6 +211,7 @@ h2 {
padding: 2em 20px 0.5em; padding: 2em 20px 0.5em;
border-bottom-style: none; border-bottom-style: none;
color: #fff; color: #fff;
overflow-wrap: break-word;
} }
h1, h1,
h2, h2,
@@ -247,7 +257,7 @@ input.required {
} }
table { table {
border-style: none; border-style: none;
background: rgba(255, 255, 255, 0.8); background: rgba(255, 255, 255, 0.6);
} }
td, td,
th { th {
@@ -275,20 +285,27 @@ thead th,
thead td { thead td {
border-color: #fff; border-color: #fff;
padding: 0.5em 0.8em 0.6em; padding: 0.5em 0.8em 0.6em;
background: #414073;
color: #fff; color: #fff;
} }
thead th { thead th {
text-align: left; text-align: left;
font-weight: normal; font-weight: normal;
} }
.js .checkable thead .checked th,
thead th {
background: #414073;
position: relative;
background-clip: padding-box;
}
.rtl thead th { .rtl thead th {
text-align: right; text-align: right;
} }
.js .checkable thead .checked td,
thead td { thead td {
background: #41658a; background: #41658a;
} }
.js .column { .js .column {
z-index: 1;
background: transparent; background: transparent;
padding: 0; padding: 0;
margin-top: 0; margin-top: 0;
@@ -325,20 +342,20 @@ tbody tr:nth-child(n):hover td {
tbody tr:nth-child(n):hover th { tbody tr:nth-child(n):hover th {
background: rgba(236, 72, 18, 0.2); background: rgba(236, 72, 18, 0.2);
} }
.js .checkable .checked td { .js .checkable tbody .checked td {
background: rgba(236, 72, 18, 0.25); background: rgba(236, 72, 18, 0.25);
} }
.js .checkable .checked:nth-child(even) td, .js .checkable tbody .checked:nth-child(even) td,
.js .checkable .checked th { .js .checkable tbody .checked th {
background: rgba(236, 72, 18, 0.3); background: rgba(236, 72, 18, 0.3);
} }
.js .checkable .checked:nth-child(even) th { .js .checkable tbody .checked:nth-child(even) th {
background: rgba(236, 72, 18, 0.35); background: rgba(236, 72, 18, 0.35);
} }
.js .checkable .checked:hover td { .js .checkable tbody .checked:hover td {
background: rgba(236, 72, 18, 0.4); background: rgba(236, 72, 18, 0.4);
} }
.js .checkable .checked:hover th { .js .checkable tbody .checked:hover th {
background: rgba(236, 72, 18, 0.45); background: rgba(236, 72, 18, 0.45);
} }
.icon { .icon {
@@ -368,12 +385,9 @@ tbody tr:nth-child(n):hover th {
.column a[href="#fieldset-search"] { .column a[href="#fieldset-search"] {
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' version='1.1' viewBox='0 0 310.088 310.088' enable-background='new 0 0 310.088 310.088' width='512px' height='512px'%3E%3Cg%3E%3Cpath d='m299.85,250.413l-62.808-62.808c-3.982-3.982-10.437-3.982-14.418,0l-3.539,3.539-18.586-18.586c29.709-42.872 25.472-102.152-12.716-140.34-42.958-42.958-112.606-42.958-155.563,0s-42.958,112.606 0,155.563c38.189,38.188 97.468,42.425 140.34,12.716l18.586,18.586-3.539,3.539c-3.982,3.981-3.982,10.437 0,14.418l62.808,62.808c13.651,13.651 35.785,13.651 49.436,0s13.65-35.784-0.001-49.435zm-251.368-78.895c-33.921-33.921-33.921-89.115-0.001-123.036 33.922-33.921 89.117-33.922 123.037-0.001v0.001c33.922,33.921 33.922,89.115 0,123.036-16.96,16.961-39.239,25.441-61.518,25.441-22.279,0-44.558-8.48-61.518-25.441z' fill='%23FFFFFF'/%3E%3C/g%3E%3C/svg%3E"); background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' version='1.1' viewBox='0 0 310.088 310.088' enable-background='new 0 0 310.088 310.088' width='512px' height='512px'%3E%3Cg%3E%3Cpath d='m299.85,250.413l-62.808-62.808c-3.982-3.982-10.437-3.982-14.418,0l-3.539,3.539-18.586-18.586c29.709-42.872 25.472-102.152-12.716-140.34-42.958-42.958-112.606-42.958-155.563,0s-42.958,112.606 0,155.563c38.189,38.188 97.468,42.425 140.34,12.716l18.586,18.586-3.539,3.539c-3.982,3.981-3.982,10.437 0,14.418l62.808,62.808c13.651,13.651 35.785,13.651 49.436,0s13.65-35.784-0.001-49.435zm-251.368-78.895c-33.921-33.921-33.921-89.115-0.001-123.036 33.922-33.921 89.117-33.922 123.037-0.001v0.001c33.922,33.921 33.922,89.115 0,123.036-16.96,16.961-39.239,25.441-61.518,25.441-22.279,0-44.558-8.48-61.518-25.441z' fill='%23FFFFFF'/%3E%3C/g%3E%3C/svg%3E");
} }
.loadmore { .loadmore,
margin-right: -0.4em;
}
.rtl .loadmore { .rtl .loadmore {
margin-right: 0; margin: 0;
margin-left: -0.4em;
} }
.footer { .footer {
margin: 0; margin: 0;
@@ -386,6 +400,9 @@ tbody tr:nth-child(n):hover th {
background: transparent; background: transparent;
padding: 0; padding: 0;
} }
.footer ~ div {
margin-top: 0.8em;
}
#lang, #lang,
.logout { .logout {
z-index: 3; z-index: 3;
@@ -394,6 +411,7 @@ tbody tr:nth-child(n):hover th {
overflow: hidden; overflow: hidden;
width: 2em; width: 2em;
height: 2em; height: 2em;
position: fixed;
} }
#lang { #lang {
left: 18em; left: 18em;
@@ -403,8 +421,6 @@ tbody tr:nth-child(n):hover th {
} }
.rtl .logout { .rtl .logout {
margin: 0; margin: 0;
left: 0;
right: auto;
} }
#lang select, #lang select,
#logout { #logout {
@@ -417,8 +433,8 @@ tbody tr:nth-child(n):hover th {
cursor: pointer; cursor: pointer;
z-index: 1; z-index: 1;
} }
#lang:after, #lang:before,
.logout:after { .logout:before {
position: absolute; position: absolute;
top: 0; top: 0;
left: 0; left: 0;
@@ -430,15 +446,16 @@ tbody tr:nth-child(n):hover th {
background: #2d3047 center no-repeat; background: #2d3047 center no-repeat;
background-size: 70%; background-size: 70%;
} }
#lang:after { #lang:before {
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' version='1.1' viewBox='0 0 470 470' enable-background='new 0 0 470 470' width='512px' height='512px'%3E%3Cg%3E%3Cpath d='m432.5,227.5h-77.031c-0.611-37.438-5.782-73.616-14.771-105.694h50.518c4.143,0 7.5-3.357 7.5-7.5s-3.357-7.5-7.5-7.5h-55.112c-8.018-24.165-18.316-45.521-30.553-62.656-2.408-3.371-7.093-4.153-10.462-1.745-3.371,2.407-4.152,7.092-1.745,10.462 10.618,14.868 19.688,33.199 26.965,53.939h-77.809v-69.306c0-4.143-3.357-7.5-7.5-7.5s-7.5,3.357-7.5,7.5v69.306h-77.81c7.277-20.74 16.347-39.071 26.965-53.939 2.407-3.37 1.626-8.055-1.745-10.462-3.372-2.407-8.055-1.625-10.462,1.745-12.237,17.135-22.535,38.492-30.553,62.656h-55.112c-4.143,0-7.5,3.357-7.5,7.5s3.357,7.5 7.5,7.5h50.518c-8.988,32.078-14.159,68.256-14.771,105.694h-77.03c-4.143,0-7.5,3.357-7.5,7.5s3.357,7.5 7.5,7.5h77.031c0.611,37.438 5.782,73.616 14.771,105.694h-50.519c-4.143,0-7.5,3.357-7.5,7.5s3.357,7.5 7.5,7.5h55.112c8.019,24.169 18.32,45.529 30.56,62.666 1.464,2.049 3.77,3.142 6.11,3.142 1.508,0 3.031-0.454 4.353-1.397 3.37-2.408 4.151-7.092 1.744-10.463-10.621-14.869-19.693-33.204-26.972-53.947h77.81v69.305c0,4.143 3.357,7.5 7.5,7.5s7.5-3.357 7.5-7.5v-69.306h77.81c-7.278,20.744-16.351,39.078-26.972,53.947-2.407,3.371-1.626,8.055 1.744,10.463 1.321,0.943 2.844,1.397 4.353,1.397 2.341,0 4.646-1.093 6.11-3.142 12.24-17.137 22.54-38.497 30.56-62.666h55.112c4.143,0 7.5-3.357 7.5-7.5s-3.357-7.5-7.5-7.5h-50.519c8.989-32.078 14.16-68.256 14.771-105.694h77.031c4.143,0 7.5-3.357 7.5-7.5s-3.357-7.499-7.5-7.499zm-107.36-105.694c9.313,31.683 14.695,67.958 15.326,105.694h-97.966v-105.694h82.64zm-180.28,0h82.64v105.694h-97.966c0.632-37.737 6.013-74.011 15.326-105.694zm0,226.388c-9.313-31.683-14.695-67.958-15.326-105.694h97.966v105.694h-82.64zm180.28,0h-82.64v-105.694h97.966c-0.632,37.737-6.013,74.012-15.326,105.694z' fill='%23ECEBE4'/%3E%3Cpath d='M401.17,68.83C356.784,24.444,297.771,0,235,0S113.216,24.444,68.83,68.83S0,172.229,0,235.001 c0,46.271,13.391,90.899,38.764,129.316l-28.718,86.148c-0.898,2.695-0.197,5.667,1.812,7.676c2.009,2.008,4.979,2.708,7.676,1.812 l86.15-28.716C144.102,456.609,188.729,470,235,470c62.771,0,121.784-24.444,166.17-68.83S470,297.771,470,235.001 C470,172.229,445.556,113.216,401.17,68.83z M235,455c-44.491,0-87.355-13.222-123.961-38.235 c-1.262-0.862-2.739-1.308-4.231-1.308c-0.797,0-1.598,0.127-2.372,0.385L29.02,440.979l25.14-75.414 c0.741-2.225,0.399-4.668-0.923-6.604C28.222,322.357,15,279.492,15,235.001C15,113.692,113.691,15,235,15s220,98.692,220,220.001 C455,356.309,356.309,455,235,455z' fill='%23ECEBE4'/%3E%3C/g%3E%3C/svg%3E"); background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' version='1.1' viewBox='0 0 470 470' enable-background='new 0 0 470 470' width='512px' height='512px'%3E%3Cg%3E%3Cpath d='m432.5,227.5h-77.031c-0.611-37.438-5.782-73.616-14.771-105.694h50.518c4.143,0 7.5-3.357 7.5-7.5s-3.357-7.5-7.5-7.5h-55.112c-8.018-24.165-18.316-45.521-30.553-62.656-2.408-3.371-7.093-4.153-10.462-1.745-3.371,2.407-4.152,7.092-1.745,10.462 10.618,14.868 19.688,33.199 26.965,53.939h-77.809v-69.306c0-4.143-3.357-7.5-7.5-7.5s-7.5,3.357-7.5,7.5v69.306h-77.81c7.277-20.74 16.347-39.071 26.965-53.939 2.407-3.37 1.626-8.055-1.745-10.462-3.372-2.407-8.055-1.625-10.462,1.745-12.237,17.135-22.535,38.492-30.553,62.656h-55.112c-4.143,0-7.5,3.357-7.5,7.5s3.357,7.5 7.5,7.5h50.518c-8.988,32.078-14.159,68.256-14.771,105.694h-77.03c-4.143,0-7.5,3.357-7.5,7.5s3.357,7.5 7.5,7.5h77.031c0.611,37.438 5.782,73.616 14.771,105.694h-50.519c-4.143,0-7.5,3.357-7.5,7.5s3.357,7.5 7.5,7.5h55.112c8.019,24.169 18.32,45.529 30.56,62.666 1.464,2.049 3.77,3.142 6.11,3.142 1.508,0 3.031-0.454 4.353-1.397 3.37-2.408 4.151-7.092 1.744-10.463-10.621-14.869-19.693-33.204-26.972-53.947h77.81v69.305c0,4.143 3.357,7.5 7.5,7.5s7.5-3.357 7.5-7.5v-69.306h77.81c-7.278,20.744-16.351,39.078-26.972,53.947-2.407,3.371-1.626,8.055 1.744,10.463 1.321,0.943 2.844,1.397 4.353,1.397 2.341,0 4.646-1.093 6.11-3.142 12.24-17.137 22.54-38.497 30.56-62.666h55.112c4.143,0 7.5-3.357 7.5-7.5s-3.357-7.5-7.5-7.5h-50.519c8.989-32.078 14.16-68.256 14.771-105.694h77.031c4.143,0 7.5-3.357 7.5-7.5s-3.357-7.499-7.5-7.499zm-107.36-105.694c9.313,31.683 14.695,67.958 15.326,105.694h-97.966v-105.694h82.64zm-180.28,0h82.64v105.694h-97.966c0.632-37.737 6.013-74.011 15.326-105.694zm0,226.388c-9.313-31.683-14.695-67.958-15.326-105.694h97.966v105.694h-82.64zm180.28,0h-82.64v-105.694h97.966c-0.632,37.737-6.013,74.012-15.326,105.694z' fill='%23ECEBE4'/%3E%3Cpath d='M401.17,68.83C356.784,24.444,297.771,0,235,0S113.216,24.444,68.83,68.83S0,172.229,0,235.001 c0,46.271,13.391,90.899,38.764,129.316l-28.718,86.148c-0.898,2.695-0.197,5.667,1.812,7.676c2.009,2.008,4.979,2.708,7.676,1.812 l86.15-28.716C144.102,456.609,188.729,470,235,470c62.771,0,121.784-24.444,166.17-68.83S470,297.771,470,235.001 C470,172.229,445.556,113.216,401.17,68.83z M235,455c-44.491,0-87.355-13.222-123.961-38.235 c-1.262-0.862-2.739-1.308-4.231-1.308c-0.797,0-1.598,0.127-2.372,0.385L29.02,440.979l25.14-75.414 c0.741-2.225,0.399-4.668-0.923-6.604C28.222,322.357,15,279.492,15,235.001C15,113.692,113.691,15,235,15s220,98.692,220,220.001 C455,356.309,356.309,455,235,455z' fill='%23ECEBE4'/%3E%3C/g%3E%3C/svg%3E");
} }
.logout:after { .logout:before {
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' version='1.1' viewBox='0 0 512 512' enable-background='new 0 0 512 512' width='512px' height='512px'%3E%3Cg%3E%3Cpath d='m256,501c-129.6,0-235-102.2-235-227.8 0-87.8 50.6-166.3 132.1-204.9 10.2-4.8 22.4-0.5 27.2,9.7 4.8,10.2 0.5,22.4-9.7,27.2-67.1,31.8-108.7,96.1-108.7,168-7.10543e-15,103.1 87.1,187 194.1,187 107,0 194.1-83.9 194.1-187 0-72.4-44-138.9-112.2-169.5-10.3-4.6-14.9-16.7-10.3-27 4.6-10.3 16.7-14.9 27-10.2 82.9,37.1 136.4,118.3 136.4,206.7 0,125.6-105.4,227.8-235,227.8z' fill='%23FFFFFF'/%3E%3Cpath d='m256,287.9c-11.3,0-20.4-9.1-20.4-20.4v-236.1c0-11.3 9.2-20.4 20.4-20.4 11.3,0 20.4,9.1 20.4,20.4v236.1c0,11.3-9.1,20.4-20.4,20.4z' fill='%23FFFFFF'/%3E%3C/g%3E%3C/svg%3E"); background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' version='1.1' viewBox='0 0 512 512' enable-background='new 0 0 512 512' width='512px' height='512px'%3E%3Cg%3E%3Cpath d='m256,501c-129.6,0-235-102.2-235-227.8 0-87.8 50.6-166.3 132.1-204.9 10.2-4.8 22.4-0.5 27.2,9.7 4.8,10.2 0.5,22.4-9.7,27.2-67.1,31.8-108.7,96.1-108.7,168-7.10543e-15,103.1 87.1,187 194.1,187 107,0 194.1-83.9 194.1-187 0-72.4-44-138.9-112.2-169.5-10.3-4.6-14.9-16.7-10.3-27 4.6-10.3 16.7-14.9 27-10.2 82.9,37.1 136.4,118.3 136.4,206.7 0,125.6-105.4,227.8-235,227.8z' fill='%23FFFFFF'/%3E%3Cpath d='m256,287.9c-11.3,0-20.4-9.1-20.4-20.4v-236.1c0-11.3 9.2-20.4 20.4-20.4 11.3,0 20.4,9.1 20.4,20.4v236.1c0,11.3-9.1,20.4-20.4,20.4z' fill='%23FFFFFF'/%3E%3C/g%3E%3C/svg%3E");
} }
/* need a real element for :focus ~ styling */ #lang:focus-within:before,
#lang:hover:after, #lang:hover:before,
.logout:hover:after { .logout:focus-within:before,
.logout:hover:before {
background-color: #ec5f12; background-color: #ec5f12;
} }
#menu { #menu {
@@ -447,6 +464,7 @@ tbody tr:nth-child(n):hover th {
width: auto; width: auto;
flex: 0 0 20em; flex: 0 0 20em;
max-width: 20em; max-width: 20em;
z-index: 1;
} }
h1 { h1 {
background: #414073; background: #414073;
@@ -526,6 +544,70 @@ button:disabled {
background-color: rgba(76, 57, 87, 0.35); background-color: rgba(76, 57, 87, 0.35);
cursor: not-allowed; cursor: not-allowed;
} }
input[type="file"]::-ms-browse {
display: inline-block;
font-size: 85%;
text-align: center;
background: #4c3957;
color: #fff;
padding: 0.5em 0.8em 0.6em;
margin: 0;
border-style: none;
cursor: pointer;
}
input[type="file"]:hover::-ms-browse,
input[type="file"]:focus::-ms-browse {
color: #fff;
background: #ec5f12;
text-decoration: none;
}
input[type="file"]:disabled::-ms-browse {
background-color: rgba(76, 57, 87, 0.35);
cursor: not-allowed;
}
input[type="file"]::-webkit-file-upload-button {
-webkit-appearance: none;
display: inline-block;
font-size: 85%;
text-align: center;
background: #4c3957;
color: #fff;
padding: 0.5em 0.8em 0.6em;
margin: 0;
border-style: none;
cursor: pointer;
}
input[type="file"]:hover::-webkit-file-upload-button,
input[type="file"]:focus::-webkit-file-upload-button {
color: #fff;
background: #ec5f12;
text-decoration: none;
}
input[type="file"]:disabled::-webkit-file-upload-button {
background-color: rgba(76, 57, 87, 0.35);
cursor: not-allowed;
}
input[type="file"]::-moz-file-upload-button {
display: inline-block;
font-size: 85%;
text-align: center;
background: #4c3957;
color: #fff;
padding: 0.5em 0.8em 0.6em;
margin: 0;
border-style: none;
cursor: pointer;
}
input[type="file"]:hover::-moz-file-upload-button,
input[type="file"]:focus::-moz-file-upload-button {
color: #fff;
background: #ec5f12;
text-decoration: none;
}
input[type="file"]:disabled::-moz-file-upload-button {
background-color: rgba(76, 57, 87, 0.35);
cursor: not-allowed;
}
.links .active { .links .active {
font-weight: normal; font-weight: normal;
background-color: #414073; background-color: #414073;
@@ -626,7 +708,7 @@ button:disabled {
margin-left: 0; margin-left: 0;
} }
@media all and (max-device-width: 880px) { @media all and (max-width: 880px) {
body { body {
padding-bottom: 2em; padding-bottom: 2em;
} }
@@ -679,6 +761,9 @@ button:disabled {
-o-box-decoration-break: clone; -o-box-decoration-break: clone;
box-decoration-break: clone; box-decoration-break: clone;
} }
.logout {
position: absolute;
}
#lang { #lang {
margin-left: auto; margin-left: auto;
position: relative; position: relative;

View File

@@ -819,7 +819,7 @@ legend{
font-size: 13px; font-size: 13px;
} }
#tables a[title] { #tables .structure, #tables .view {
float: none; float: none;
display: block; display: block;
color: #F1E5B3; color: #F1E5B3;

View File

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

View File

@@ -368,7 +368,7 @@ td.nowrap {
right: 0; right: 0;
left: auto; left: auto;
} }
@media all and (max-device-width:880px) { @media all and (max-width: 880px) {
.pages { .pages {
left: auto; left: auto;
} }

View File

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

View File

@@ -1,7 +1,6 @@
/* /*
* Theme by Pepa Linha [http://webdream.cz] * Theme by Pepa Linha [http://webdream.cz]
* JUSH color syntax inspired by NetBeans * JUSH color syntax inspired by NetBeans
* @version 0.2 (February 2014)
*/ */
html, html,
@@ -360,7 +359,7 @@ p code + a:visited:hover {
float: none; float: none;
} }
#tables a[title] { #tables .structure, #tables .view {
float: none; float: none;
display: block; display: block;
} }

Some files were not shown because too many files have changed in this diff Show More