mirror of
https://github.com/vrana/adminer.git
synced 2026-03-25 05:50:04 +01:00
Compare commits
977 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
81e337bed1 | ||
|
|
18ddbf1d60 | ||
|
|
e4235d21e5 | ||
|
|
10dfc54bf4 | ||
|
|
af3c863be3 | ||
|
|
6cd5495c1b | ||
|
|
78ad8381ab | ||
|
|
87fc82f88e | ||
|
|
0519a0b985 | ||
|
|
f61cf1ba0c | ||
|
|
fc2e025603 | ||
|
|
659e72b692 | ||
|
|
123373ca82 | ||
|
|
e99f2d90cf | ||
|
|
bdabc5aa13 | ||
|
|
92f3e0ca00 | ||
|
|
aa1266e4f2 | ||
|
|
b7bbd07155 | ||
|
|
1ff6f246e8 | ||
|
|
555e2e76b7 | ||
|
|
7883e0bd99 | ||
|
|
18e26a3b68 | ||
|
|
25a1ccf75b | ||
|
|
b9cdf52ec5 | ||
|
|
7997331b77 | ||
|
|
3bb75dc036 | ||
|
|
441e7f050c | ||
|
|
c41cb51ede | ||
|
|
42d92875c5 | ||
|
|
df0e5b59bb | ||
|
|
de9f572112 | ||
|
|
dd9a4a2b65 | ||
|
|
91d44f4a9f | ||
|
|
f993acb538 | ||
|
|
a87b606918 | ||
|
|
3e81c3871f | ||
|
|
13752c0498 | ||
|
|
e378f7d817 | ||
|
|
6f789eac0a | ||
|
|
9ed4c859ed | ||
|
|
62246338bf | ||
|
|
e5a7f75807 | ||
|
|
279337aa65 | ||
|
|
bf1d16cdb7 | ||
|
|
1de9275f11 | ||
|
|
0f2e04730f | ||
|
|
ae629f8ac7 | ||
|
|
0797cb6a10 | ||
|
|
dd122a1056 | ||
|
|
96c0177422 | ||
|
|
7d6c7998d8 | ||
|
|
3df88d4a24 | ||
|
|
2d4b73653b | ||
|
|
a63fadd503 | ||
|
|
a494827dc5 | ||
|
|
8ac486a57c | ||
|
|
bfcc6d8297 | ||
|
|
29fd200ef5 | ||
|
|
b6058368d3 | ||
|
|
fd38c4261a | ||
|
|
507f335371 | ||
|
|
ea314b8103 | ||
|
|
e250470768 | ||
|
|
2fa42d50eb | ||
|
|
a366b7af09 | ||
|
|
b039a39e4d | ||
|
|
08e48c8641 | ||
|
|
78c2041cfd | ||
|
|
5d7c5fa268 | ||
|
|
8f1db4cf6f | ||
|
|
9daa88acca | ||
|
|
aa519b78ca | ||
|
|
aee800efed | ||
|
|
06d0f957d5 | ||
|
|
3f0bc24e01 | ||
|
|
4863f48d33 | ||
|
|
9ea8f44919 | ||
|
|
fa791b5461 | ||
|
|
203162b203 | ||
|
|
e4e76b6384 | ||
|
|
353cd452a3 | ||
|
|
5bc4ac6c18 | ||
|
|
aec8275502 | ||
|
|
7d5077e687 | ||
|
|
91d0d8538f | ||
|
|
2439369143 | ||
|
|
d5bce9b3e9 | ||
|
|
b42762e4dc | ||
|
|
695a720403 | ||
|
|
e6fdf2b400 | ||
|
|
b542b6613c | ||
|
|
374b8ed6a6 | ||
|
|
58cca3f951 | ||
|
|
5eecb8e6a3 | ||
|
|
0d0936550c | ||
|
|
c4ed9500a1 | ||
|
|
0863766970 | ||
|
|
146a24efad | ||
|
|
00b9fbda08 | ||
|
|
8ea329538f | ||
|
|
a3428cc7ff | ||
|
|
2a01969c96 | ||
|
|
9b8d14c3ee | ||
|
|
2ce88d9bdc | ||
|
|
593c8e5bcc | ||
|
|
a134193afa | ||
|
|
8a60243459 | ||
|
|
b94636f8a7 | ||
|
|
47ccfa2a2e | ||
|
|
949b39b191 | ||
|
|
09a946cb99 | ||
|
|
13258de188 | ||
|
|
5fe25fca67 | ||
|
|
a693e75e32 | ||
|
|
de7dd4b64f | ||
|
|
8a70474651 | ||
|
|
43a0305a23 | ||
|
|
bff6f8ca93 | ||
|
|
f38c0a1f13 | ||
|
|
835c10674b | ||
|
|
fc5a46549e | ||
|
|
898dc9e25e | ||
|
|
32160b48ae | ||
|
|
6beb07a181 | ||
|
|
ee42077e54 | ||
|
|
c3e2e6c58f | ||
|
|
49effeff09 | ||
|
|
857cbf03f2 | ||
|
|
e8c9164a77 | ||
|
|
01fe709b7a | ||
|
|
90addc5e78 | ||
|
|
b71a456514 | ||
|
|
4d7642a624 | ||
|
|
9f8dadbb40 | ||
|
|
9968851f1e | ||
|
|
a5780e58af | ||
|
|
e8b40e3b9d | ||
|
|
35afd4f88c | ||
|
|
38e4b51256 | ||
|
|
55a7d3864f | ||
|
|
e69583a800 | ||
|
|
338c81e2a3 | ||
|
|
9eb4d00564 | ||
|
|
1c5947de50 | ||
|
|
5cfd48bb68 | ||
|
|
20a0e4e113 | ||
|
|
bf80612b0d | ||
|
|
8e848bfde4 | ||
|
|
38f390ae5e | ||
|
|
367a1b979e | ||
|
|
5dddfbdf12 | ||
|
|
2928b7beb8 | ||
|
|
a940f85206 | ||
|
|
834380aae9 | ||
|
|
3e94299256 | ||
|
|
e99ed80ad8 | ||
|
|
61b84cecd8 | ||
|
|
acf168a6da | ||
|
|
2c8dbf49cc | ||
|
|
88647b93e4 | ||
|
|
b8c5eec46d | ||
|
|
dadbb37f00 | ||
|
|
ea1acfc8bc | ||
|
|
2dd65f0c0f | ||
|
|
473f7264f8 | ||
|
|
db01282e29 | ||
|
|
1f173e18bd | ||
|
|
4043092ec2 | ||
|
|
60ad161178 | ||
|
|
a12d31c5a8 | ||
|
|
f6880b59d6 | ||
|
|
72beecc0ab | ||
|
|
42de1051a6 | ||
|
|
af1a908f56 | ||
|
|
205305d6b5 | ||
|
|
0e5f39042a | ||
|
|
f94f29124a | ||
|
|
28996e2286 | ||
|
|
7f8c93a6f1 | ||
|
|
25dda09bce | ||
|
|
ff45b8f7a9 | ||
|
|
3a36112a10 | ||
|
|
e9e61fce26 | ||
|
|
5a1498d160 | ||
|
|
ccb7442d1b | ||
|
|
eebda8695b | ||
|
|
94d18d003e | ||
|
|
3881fc1680 | ||
|
|
9bd63a1326 | ||
|
|
92d5858b03 | ||
|
|
d506f1e241 | ||
|
|
cd7f06c8b2 | ||
|
|
b83c61fca3 | ||
|
|
3882bfaac1 | ||
|
|
29e2475b5a | ||
|
|
fd1dd4ecf4 | ||
|
|
dc9e87dbd6 | ||
|
|
66f335fb63 | ||
|
|
574c07b8f5 | ||
|
|
84e4122225 | ||
|
|
a61a76716b | ||
|
|
5d317111c7 | ||
|
|
6af375c67d | ||
|
|
609b8690ec | ||
|
|
13260dcb76 | ||
|
|
e002a3bc99 | ||
|
|
f44f186b38 | ||
|
|
c24a6a6aef | ||
|
|
f11a31e0a9 | ||
|
|
38e741054a | ||
|
|
513e1f425f | ||
|
|
a023e98c4d | ||
|
|
633e7ced9c | ||
|
|
3a3df6962b | ||
|
|
1e4fb073b5 | ||
|
|
08637cee62 | ||
|
|
4742bde873 | ||
|
|
7a89b5a037 | ||
|
|
c5b5b61be1 | ||
|
|
2b0ac4c0e1 | ||
|
|
ef53494df0 | ||
|
|
98458f737d | ||
|
|
68edea54ea | ||
|
|
6660789d04 | ||
|
|
ee4ffe9b65 | ||
|
|
27de0417fe | ||
|
|
339981b9d6 | ||
|
|
53a8496412 | ||
|
|
fb38ae2ffd | ||
|
|
91da14b15c | ||
|
|
51abdcdab9 | ||
|
|
4038144c38 | ||
|
|
50ed4f7ce7 | ||
|
|
4f8ecd3c11 | ||
|
|
f2063c92c5 | ||
|
|
5db1ea3301 | ||
|
|
e915f73f18 | ||
|
|
92f197b7c1 | ||
|
|
63484fb875 | ||
|
|
701c5cd73b | ||
|
|
4310d710d9 | ||
|
|
2bb472d7a6 | ||
|
|
9e74c0632f | ||
|
|
d4f7e04156 | ||
|
|
124092fd7c | ||
|
|
144039d0cb | ||
|
|
a8c218f192 | ||
|
|
2dd3bd0e1a | ||
|
|
28209301ca | ||
|
|
7ccc1e3e15 | ||
|
|
93c7fb248c | ||
|
|
73934caec8 | ||
|
|
4559e7541c | ||
|
|
d847f0d1aa | ||
|
|
c727231ccd | ||
|
|
3d92eb703b | ||
|
|
3d88cc2c8e | ||
|
|
922e1d96b0 | ||
|
|
52defd6f19 | ||
|
|
318cece1bd | ||
|
|
5c2f74136c | ||
|
|
8c392363b1 | ||
|
|
66b01a4b9c | ||
|
|
7db10e95d9 | ||
|
|
31e28fbd00 | ||
|
|
19f23fe9ee | ||
|
|
6e5315349b | ||
|
|
95729680ef | ||
|
|
5c395afc09 | ||
|
|
cde988853d | ||
|
|
f8288dd227 | ||
|
|
94194aac19 | ||
|
|
438c7f55be | ||
|
|
7edf80f636 | ||
|
|
b2e0d9f396 | ||
|
|
cc9ed0939c | ||
|
|
ee75df6f15 | ||
|
|
23fdbedba1 | ||
|
|
8762895bb3 | ||
|
|
84063fb7cd | ||
|
|
eb20ba30a1 | ||
|
|
1ce0a9aa94 | ||
|
|
96be913994 | ||
|
|
6f972ff9ab | ||
|
|
7c4718ae3d | ||
|
|
b558ec8ecf | ||
|
|
5cab8eabb7 | ||
|
|
d888031603 | ||
|
|
49f365384b | ||
|
|
34345d8071 | ||
|
|
97ec60bb5f | ||
|
|
5a6e5b4443 | ||
|
|
7b524ff5d2 | ||
|
|
64d4818a82 | ||
|
|
ccd2374b0b | ||
|
|
1e1c46ac72 | ||
|
|
75cd1c3f28 | ||
|
|
b89d418dcf | ||
|
|
190146672f | ||
|
|
d6e71b5c53 | ||
|
|
0618429bce | ||
|
|
b0a217abdd | ||
|
|
35bfaa7506 | ||
|
|
e0a3205676 | ||
|
|
50bb83dbf2 | ||
|
|
697eedc6a1 | ||
|
|
d94adc09cc | ||
|
|
4e2a448e28 | ||
|
|
ac40be998d | ||
|
|
6a2de873e1 | ||
|
|
a9c1004232 | ||
|
|
37fa4de650 | ||
|
|
1d1f11504c | ||
|
|
3f38b61366 | ||
|
|
9ab205776d | ||
|
|
681b5e7b7a | ||
|
|
9c5efb9f8c | ||
|
|
2373409631 | ||
|
|
ad16cb8581 | ||
|
|
0293613c21 | ||
|
|
fe9ea18d2e | ||
|
|
6d39f290cc | ||
|
|
1bfffbf26b | ||
|
|
f09003ea4b | ||
|
|
2f7f0df09f | ||
|
|
5da5b75536 | ||
|
|
8706bc7c0f | ||
|
|
c2b7d38f2c | ||
|
|
fcd90a74f6 | ||
|
|
05cddd38e5 | ||
|
|
c7550bf68f | ||
|
|
6ae81cd0ea | ||
|
|
677774405c | ||
|
|
39375b82d8 | ||
|
|
5944ca09a3 | ||
|
|
5a507ec586 | ||
|
|
c24dd79c22 | ||
|
|
08c132cbea | ||
|
|
a4e997fe60 | ||
|
|
0678ce1222 | ||
|
|
5acdc55a4a | ||
|
|
fd5f5b8805 | ||
|
|
d90d06e832 | ||
|
|
feb59fa8cf | ||
|
|
1bcb440698 | ||
|
|
b9594d13d6 | ||
|
|
789ebc07bd | ||
|
|
3310e18efa | ||
|
|
965fe2e8ae | ||
|
|
acb3f9b9d1 | ||
|
|
8ae059d2ac | ||
|
|
2a3de78a8e | ||
|
|
cb37a141f4 | ||
|
|
32955f7802 | ||
|
|
5ffec58a8f | ||
|
|
34a0bfd939 | ||
|
|
b07908282b | ||
|
|
bce0e8d54a | ||
|
|
c6fc6b63e8 | ||
|
|
03961bbe1b | ||
|
|
f37a878b62 | ||
|
|
021e3f900d | ||
|
|
3d32470b87 | ||
|
|
f692b6498f | ||
|
|
3b056fe308 | ||
|
|
d6ec4ca0b3 | ||
|
|
903de0e889 | ||
|
|
48f33f6255 | ||
|
|
1b33729110 | ||
|
|
788d383609 | ||
|
|
364e032b69 | ||
|
|
b7641a2d13 | ||
|
|
5f4af56f68 | ||
|
|
95a92ceb95 | ||
|
|
306e8733e7 | ||
|
|
67b84d1167 | ||
|
|
ab76024da7 | ||
|
|
4a27882a97 | ||
|
|
00d36efcf1 | ||
|
|
92d443dac0 | ||
|
|
d71cb127cf | ||
|
|
fd1691cb1d | ||
|
|
d5bf51b2a7 | ||
|
|
b7b4157bcb | ||
|
|
10b00e13b1 | ||
|
|
45caae1660 | ||
|
|
36e9a4d6e1 | ||
|
|
9b58ecf925 | ||
|
|
36ade4e197 | ||
|
|
6a5b0abbb4 | ||
|
|
33234fef19 | ||
|
|
4b6833ba65 | ||
|
|
d846eac97e | ||
|
|
0eab60c338 | ||
|
|
7f32e26759 | ||
|
|
327041874e | ||
|
|
37a3dd6c6b | ||
|
|
02f5cbdc4d | ||
|
|
deea21dd2d | ||
|
|
f00f7a0e19 | ||
|
|
48292b70e8 | ||
|
|
15900301ee | ||
|
|
0e6f1972e9 | ||
|
|
4e91550b14 | ||
|
|
333da64cdb | ||
|
|
a2ec51e948 | ||
|
|
d114535911 | ||
|
|
7247f801bd | ||
|
|
21f0481a1d | ||
|
|
7defb7787d | ||
|
|
659003e07f | ||
|
|
2cb426b464 | ||
|
|
2117f224b6 | ||
|
|
7ea6266482 | ||
|
|
edb79998a9 | ||
|
|
41043f8dad | ||
|
|
31bbadb479 | ||
|
|
a2fbcbe28e | ||
|
|
a623cd69de | ||
|
|
ed346be313 | ||
|
|
7eaa57fc0b | ||
|
|
c275362c30 | ||
|
|
b2606cda0e | ||
|
|
da76e6b9b8 | ||
|
|
83fe083f2f | ||
|
|
85e6f2ac9e | ||
|
|
e148db4b0f | ||
|
|
660703e422 | ||
|
|
55f11df052 | ||
|
|
ea6370ef77 | ||
|
|
0ad6a1e578 | ||
|
|
e546b483a1 | ||
|
|
5b443a4e7d | ||
|
|
e4837a0564 | ||
|
|
83a0776e8d | ||
|
|
5bebb439a1 | ||
|
|
9f0ee9cf41 | ||
|
|
c002009bfe | ||
|
|
a592ad52f1 | ||
|
|
3127c0d95e | ||
|
|
9447d97a6a | ||
|
|
c8e41ee649 | ||
|
|
b327a76fc0 | ||
|
|
7f2dd73670 | ||
|
|
c8975a151c | ||
|
|
150841e5d7 | ||
|
|
ae03bdd4c4 | ||
|
|
01e08cc053 | ||
|
|
a426fefd40 | ||
|
|
90df1b14f0 | ||
|
|
cd3231b4af | ||
|
|
65c52735fb | ||
|
|
93ccc7502b | ||
|
|
84e86cf572 | ||
|
|
1ce5b5ad31 | ||
|
|
941bf22e52 | ||
|
|
a5c54563c6 | ||
|
|
0234fe4a66 | ||
|
|
1883e250ff | ||
|
|
56d8b89bee | ||
|
|
4d66e42817 | ||
|
|
94f6a45a2a | ||
|
|
0f08592bc0 | ||
|
|
a5cbad504c | ||
|
|
d581f3dedb | ||
|
|
e8e4934e97 | ||
|
|
e959e46fa5 | ||
|
|
bb3d2957e1 | ||
|
|
ea408aa530 | ||
|
|
df90d9f68c | ||
|
|
cf76ad529b | ||
|
|
3d84dcf859 | ||
|
|
4b9d88545e | ||
|
|
26a39ac243 | ||
|
|
3676b7fb71 | ||
|
|
c564a8ef50 | ||
|
|
2780eb01f5 | ||
|
|
b98d0bcc55 | ||
|
|
e856e28892 | ||
|
|
8f269d66b0 | ||
|
|
3de94b67ca | ||
|
|
a9a7488454 | ||
|
|
36f13031f7 | ||
|
|
6f25b1b5cf | ||
|
|
659c34f7c5 | ||
|
|
11f24a52e4 | ||
|
|
3c3d861f41 | ||
|
|
7b60b03e6a | ||
|
|
84c65fcca6 | ||
|
|
733fe9e430 | ||
|
|
5c3fb875e1 | ||
|
|
60d1b7b3b4 | ||
|
|
db11fa4c1a | ||
|
|
c3cfc0e69b | ||
|
|
5f4d407f2e | ||
|
|
70afe70b72 | ||
|
|
75f43a4454 | ||
|
|
78f4513d9d | ||
|
|
89c66ccabe | ||
|
|
6ba77b7899 | ||
|
|
d271d0b481 | ||
|
|
af7ac6f06a | ||
|
|
19034c35fe | ||
|
|
88438cd607 | ||
|
|
34c792bb59 | ||
|
|
6ed94f1f6d | ||
|
|
8c4726bb61 | ||
|
|
8ab2c7e03b | ||
|
|
665fafb297 | ||
|
|
67c2a91c67 | ||
|
|
78b8707bd0 | ||
|
|
7c15940be8 | ||
|
|
8c5603a822 | ||
|
|
4e7c31a589 | ||
|
|
cf9cad66e2 | ||
|
|
26a3967cf9 | ||
|
|
6c63c2f91e | ||
|
|
acee5c0011 | ||
|
|
36b75b4203 | ||
|
|
4a24ee7672 | ||
|
|
e21ddd9767 | ||
|
|
f844fc499e | ||
|
|
52d7c38ef1 | ||
|
|
53dd78f5af | ||
|
|
ea1dad584b | ||
|
|
910bb39424 | ||
|
|
14db884471 | ||
|
|
3410836c12 | ||
|
|
cd503f6a0d | ||
|
|
00721402e0 | ||
|
|
4355aaa96f | ||
|
|
b1cdc7902b | ||
|
|
3f4f3454f8 | ||
|
|
846435aef8 | ||
|
|
d7982e0b29 | ||
|
|
7b35ebd82e | ||
|
|
5b359263eb | ||
|
|
6ebbd8c719 | ||
|
|
8bb51bec36 | ||
|
|
fc5ddddf92 | ||
|
|
d3a429314a | ||
|
|
b4392b3f91 | ||
|
|
2021ea8fd7 | ||
|
|
7cb3e768bb | ||
|
|
baf7225602 | ||
|
|
0cfc68e6c6 | ||
|
|
03dfea2943 | ||
|
|
54f6806339 | ||
|
|
ee4f7db641 | ||
|
|
b53762ae5f | ||
|
|
866d109a9b | ||
|
|
37c57c386a | ||
|
|
1f5ca321b6 | ||
|
|
059d6266e2 | ||
|
|
0e1d8c67fc | ||
|
|
a113a25123 | ||
|
|
49a865d106 | ||
|
|
026b362e7d | ||
|
|
7c32360c67 | ||
|
|
8a94bc6f41 | ||
|
|
3f901cfe30 | ||
|
|
c8fd73d70a | ||
|
|
30d0060b96 | ||
|
|
8b157a673e | ||
|
|
ce381aaf48 | ||
|
|
d3eac979d4 | ||
|
|
f19e23c98b | ||
|
|
705d3a910f | ||
|
|
d18c7b3587 | ||
|
|
1f12ea4e4a | ||
|
|
71a6a1269d | ||
|
|
6a3bce1174 | ||
|
|
28acee861f | ||
|
|
42b15654c4 | ||
|
|
e2d858d638 | ||
|
|
879963dec1 | ||
|
|
daa19b0a6e | ||
|
|
d27ee7a388 | ||
|
|
1ec4637ade | ||
|
|
ea1ff7e902 | ||
|
|
2761f44cf4 | ||
|
|
557b8b178e | ||
|
|
07d1bc4291 | ||
|
|
7ac96dd0b2 | ||
|
|
eeb7ce1939 | ||
|
|
ea4ac5c8f3 | ||
|
|
3906231dc5 | ||
|
|
fad20d1065 | ||
|
|
ffb4ee3a61 | ||
|
|
34d338b185 | ||
|
|
1b148bc08c | ||
|
|
f4983dfd5f | ||
|
|
800fbb9b9e | ||
|
|
4b1960f498 | ||
|
|
e299e9d82d | ||
|
|
cf7fe88990 | ||
|
|
60e5d24116 | ||
|
|
a1927d5b71 | ||
|
|
76d7560d27 | ||
|
|
f0b7d8ccd0 | ||
|
|
d322e0165b | ||
|
|
4009ede3ee | ||
|
|
cddd61c214 | ||
|
|
8b8cfd9f04 | ||
|
|
99d7b88341 | ||
|
|
2db1c74310 | ||
|
|
fb2d34f739 | ||
|
|
6e2f681faa | ||
|
|
686865bc10 | ||
|
|
996ebf61d7 | ||
|
|
6a7ee5a2f3 | ||
|
|
4b45722fad | ||
|
|
14998e12b6 | ||
|
|
718f9d3791 | ||
|
|
964a988fef | ||
|
|
66e7ec56bb | ||
|
|
ca336427f5 | ||
|
|
8a75cbc630 | ||
|
|
c8bb112a5d | ||
|
|
06660882b5 | ||
|
|
42eec7d728 | ||
|
|
cac523402a | ||
|
|
02cd416093 | ||
|
|
33f0023d37 | ||
|
|
f09d26a51d | ||
|
|
b500a46f9a | ||
|
|
19653de764 | ||
|
|
29c127e94a | ||
|
|
4417a8b220 | ||
|
|
17b110f0d5 | ||
|
|
b649fb2f3f | ||
|
|
d3914ea58e | ||
|
|
31d8803db2 | ||
|
|
d43b773214 | ||
|
|
f09a04ed09 | ||
|
|
d7f9b6b5de | ||
|
|
197abdcb70 | ||
|
|
c2de3b8ec1 | ||
|
|
c52fb951b0 | ||
|
|
14429ff355 | ||
|
|
a7632fd9fd | ||
|
|
967d5c64a3 | ||
|
|
c34ada5368 | ||
|
|
2d7bda4d1e | ||
|
|
6cfb3676a7 | ||
|
|
11a7fc0277 | ||
|
|
de539cf0c7 | ||
|
|
880902da17 | ||
|
|
89ceb06208 | ||
|
|
d2ed0f7810 | ||
|
|
7b0c58af32 | ||
|
|
d3cdfc17de | ||
|
|
f097817386 | ||
|
|
3b55c4c0f7 | ||
|
|
6636434378 | ||
|
|
dd3e57086b | ||
|
|
473b60361b | ||
|
|
f128c2d1ea | ||
|
|
c75096f173 | ||
|
|
c0b2c506bc | ||
|
|
0ebf710d41 | ||
|
|
fa41126c37 | ||
|
|
09920e0056 | ||
|
|
685bf29abc | ||
|
|
0866c79afb | ||
|
|
e8e3ced948 | ||
|
|
52d98e16fa | ||
|
|
763e66a148 | ||
|
|
8868b48e4c | ||
|
|
4961588f7d | ||
|
|
f4625da53d | ||
|
|
dc94b2ec38 | ||
|
|
f8af8c9cbf | ||
|
|
e55f0d7cb2 | ||
|
|
5b7f2d9086 | ||
|
|
6d55395d9e | ||
|
|
2e6190fdf1 | ||
|
|
b9ad864b75 | ||
|
|
7296f017fb | ||
|
|
ae91088cb3 | ||
|
|
51a574926d | ||
|
|
532a4ee083 | ||
|
|
6b9c0dee14 | ||
|
|
be75939344 | ||
|
|
d667f585e0 | ||
|
|
ebb23a7a88 | ||
|
|
e9add6d985 | ||
|
|
e3346fb0bc | ||
|
|
ae2ea56681 | ||
|
|
080fd0f374 | ||
|
|
e32f90f8ff | ||
|
|
7ad09d2cb4 | ||
|
|
40038d4210 | ||
|
|
2adc174541 | ||
|
|
2fb2d208c0 | ||
|
|
4de6e3180d | ||
|
|
8829ccdf93 | ||
|
|
0320bcdda6 | ||
|
|
851700516d | ||
|
|
d542843fdd | ||
|
|
4bb2f806b1 | ||
|
|
cc31a69b65 | ||
|
|
78f0a1152e | ||
|
|
1f21cd4329 | ||
|
|
9f69160797 | ||
|
|
e81334ef87 | ||
|
|
6c3e1e2768 | ||
|
|
92739f48ce | ||
|
|
d28d01e76c | ||
|
|
75450548b3 | ||
|
|
c3b4208853 | ||
|
|
d38c673e2a | ||
|
|
93686eab65 | ||
|
|
224ddb5a33 | ||
|
|
4db23fd471 | ||
|
|
a003866a55 | ||
|
|
0d90f1f1dd | ||
|
|
ef5a76392d | ||
|
|
8d0cbb6eb4 | ||
|
|
536999d4dc | ||
|
|
827a2b8a54 | ||
|
|
a954f7d4b4 | ||
|
|
a137f248f7 | ||
|
|
95d02bb924 | ||
|
|
921e57b9aa | ||
|
|
25f9655a38 | ||
|
|
919204dd38 | ||
|
|
34f25afe90 | ||
|
|
8b29ae910f | ||
|
|
6c96b060e7 | ||
|
|
f4662d5e27 | ||
|
|
b15618fcfd | ||
|
|
03e3f517a8 | ||
|
|
f0d2af329a | ||
|
|
452b9ad7f1 | ||
|
|
fb18e814de | ||
|
|
75413c56d2 | ||
|
|
c3d83d5412 | ||
|
|
b14aa75a98 | ||
|
|
dbc76a2b1e | ||
|
|
6d774794c8 | ||
|
|
81be5edb97 | ||
|
|
e30e5dd059 | ||
|
|
0cdd8beab1 | ||
|
|
7b9d5a29aa | ||
|
|
5cc831c1e1 | ||
|
|
72aa3c5127 | ||
|
|
43ccfcef8f | ||
|
|
c789c147b7 | ||
|
|
a2adb67d2f | ||
|
|
34e2f47761 | ||
|
|
0d2b232bd7 | ||
|
|
83e16e059f | ||
|
|
6e4dc3911f | ||
|
|
2a08a11e89 | ||
|
|
993dce398d | ||
|
|
eee9a62c8f | ||
|
|
ce17b6cf46 | ||
|
|
923c0ffc87 | ||
|
|
48ed20323f | ||
|
|
9a4cd8936d | ||
|
|
019ada8da5 | ||
|
|
6a95b71164 | ||
|
|
3b4ce4a0b4 | ||
|
|
a414896885 | ||
|
|
47734d8ff4 | ||
|
|
fef1808288 | ||
|
|
d2c82fdeca | ||
|
|
e657cdbc3a | ||
|
|
bc14e8432f | ||
|
|
34b03ef835 | ||
|
|
329b7de9cc | ||
|
|
2dcad1f284 | ||
|
|
1b98a10100 | ||
|
|
187dd56b1c | ||
|
|
ba9099f084 | ||
|
|
16e05167a4 | ||
|
|
756e304c92 | ||
|
|
e762a6aa95 | ||
|
|
b3d5c9affe | ||
|
|
0268aba85a | ||
|
|
9ca92309a1 | ||
|
|
0fae40fb61 | ||
|
|
0e5df34ea8 | ||
|
|
f3938c1a66 | ||
|
|
07aa80048a | ||
|
|
c57e7ac3e3 | ||
|
|
6d14b47d02 | ||
|
|
ef3b468626 | ||
|
|
4d38c09db5 | ||
|
|
3ba99a1c2a | ||
|
|
9cbdb6262b | ||
|
|
cc268428b8 | ||
|
|
80d030f51a | ||
|
|
e23da5da0e | ||
|
|
9d532fc0a1 | ||
|
|
144c7de27f | ||
|
|
b7fcebfba8 | ||
|
|
d39a6e59c7 | ||
|
|
fc559a1cf6 | ||
|
|
f457053d85 | ||
|
|
e255ba9aa4 | ||
|
|
3fe0d88f98 | ||
|
|
68c6b1c942 | ||
|
|
001c37e240 | ||
|
|
b6cc584f48 | ||
|
|
af1ad47a64 | ||
|
|
2eaac2e94e | ||
|
|
40abffe8de | ||
|
|
259a465125 | ||
|
|
6c1fbf13c6 | ||
|
|
6353a89816 | ||
|
|
38aac7ada2 | ||
|
|
24245867d7 | ||
|
|
1459df56bc | ||
|
|
dc3a0e1a32 | ||
|
|
0411495d20 | ||
|
|
3d69fbf5f7 | ||
|
|
5e9df49fd1 | ||
|
|
565a5ca0eb | ||
|
|
9061583538 | ||
|
|
35b1db6974 | ||
|
|
068ee71bf7 | ||
|
|
efcf37d162 | ||
|
|
e645693147 | ||
|
|
12fbfc9847 | ||
|
|
6b2ba65084 | ||
|
|
a5ee3451ac | ||
|
|
da671df728 | ||
|
|
650221357d | ||
|
|
d996b48cfa | ||
|
|
22b4322710 | ||
|
|
36edd445a6 | ||
|
|
7305783c21 | ||
|
|
ee3a88d574 | ||
|
|
e5c52589ec | ||
|
|
3b0e1cf289 | ||
|
|
767fc0e47e | ||
|
|
63581af0f6 | ||
|
|
813ada6661 | ||
|
|
4be72a2a0d | ||
|
|
541c3c1fed | ||
|
|
3408d4ad78 | ||
|
|
e614ae08c4 | ||
|
|
552d2a6be4 | ||
|
|
415253b1b1 | ||
|
|
d07b7e3773 | ||
|
|
3de101dff4 | ||
|
|
48dacd1e97 | ||
|
|
14778165a8 | ||
|
|
72b199378a | ||
|
|
329fa55af5 | ||
|
|
ecf34769ad | ||
|
|
dc85ba2d86 | ||
|
|
741b76fbd4 | ||
|
|
58b2904d62 | ||
|
|
9cb281868f | ||
|
|
67f6aea77f | ||
|
|
7bcba262df | ||
|
|
75c0786d2e | ||
|
|
c4f6cbb32e | ||
|
|
b10e9e127e | ||
|
|
32f1e856ad | ||
|
|
17e45e9a9c | ||
|
|
e1f43da8df | ||
|
|
70aef8a55a | ||
|
|
0b824dad29 | ||
|
|
65fa4b4e31 | ||
|
|
c0a3f30060 | ||
|
|
7af1ee3702 | ||
|
|
3cbece1ec0 | ||
|
|
0d73372c50 | ||
|
|
fb7bd02713 | ||
|
|
fb71941daa | ||
|
|
504c56216c | ||
|
|
88803c6d0e | ||
|
|
b585ee8261 | ||
|
|
f4817e8568 | ||
|
|
105aca9b04 | ||
|
|
f556f6acb1 | ||
|
|
22d0cf4171 | ||
|
|
fa0963f370 | ||
|
|
ba28845651 | ||
|
|
8fd7ff0187 | ||
|
|
e040b296c5 | ||
|
|
b616c57352 | ||
|
|
50390ea38c | ||
|
|
9d7d30891e | ||
|
|
4cf73abccd | ||
|
|
2d6451b99a | ||
|
|
40d1feec9f | ||
|
|
e40d9692c7 | ||
|
|
770fc9673c | ||
|
|
56b6590a4f | ||
|
|
f8fd4dd6e3 | ||
|
|
d8c28d1c91 | ||
|
|
46f39f3cdb | ||
|
|
8a9df8ede1 | ||
|
|
e4d35f9591 | ||
|
|
346353153d | ||
|
|
9df33e82e6 | ||
|
|
fa09eba15e | ||
|
|
d5b329a1a4 | ||
|
|
0cd02bb98a | ||
|
|
a7cbf66347 | ||
|
|
fa6865da6a | ||
|
|
63b6b99365 | ||
|
|
a0a1476e5b | ||
|
|
8a9d803137 | ||
|
|
4588af77ac | ||
|
|
91bd2e84f5 | ||
|
|
2a534798fa | ||
|
|
a062e9cc58 | ||
|
|
6c84764334 | ||
|
|
a01ca3ade4 | ||
|
|
6ee4692afd | ||
|
|
b8cd3b317d | ||
|
|
64a49e95e8 | ||
|
|
8dd971ca5e | ||
|
|
c9801e2e24 | ||
|
|
4578d47409 | ||
|
|
12aaf506b8 | ||
|
|
4cfe6263d9 | ||
|
|
b8bea7fc56 | ||
|
|
cd8ff96a09 | ||
|
|
4a69059e1b | ||
|
|
842ea0bd46 | ||
|
|
1d0607177d | ||
|
|
9e4d9fda65 | ||
|
|
47c582acb3 | ||
|
|
32334f1106 | ||
|
|
a10238516c | ||
|
|
4801da091b | ||
|
|
76612b1e8a | ||
|
|
eb8c9929d3 | ||
|
|
cf10398104 | ||
|
|
d00927ce66 | ||
|
|
28a84fec18 | ||
|
|
2c8eff9b53 | ||
|
|
5f26d3a1b8 | ||
|
|
3344fae96e | ||
|
|
dedbd01f64 | ||
|
|
4c78976cba | ||
|
|
1a6186648c | ||
|
|
36f42d0fda | ||
|
|
45712a5d4c | ||
|
|
73690164b7 | ||
|
|
3fa1eadf2c | ||
|
|
3a1c251065 | ||
|
|
d0268c69da | ||
|
|
fd3d1c7e2e | ||
|
|
cbd3adc564 | ||
|
|
86e26846a8 | ||
|
|
6860478950 | ||
|
|
dc9ae77e2f | ||
|
|
8f60870d9a | ||
|
|
d6c3430607 | ||
|
|
2cee788ad3 | ||
|
|
647cab7c69 | ||
|
|
9bb75e1230 | ||
|
|
7099560add | ||
|
|
14cb9ca1ef | ||
|
|
31057f0ef2 | ||
|
|
fa09962ab1 | ||
|
|
bad3c6b086 | ||
|
|
0922b312d3 | ||
|
|
949b913d4f | ||
|
|
af25827ff4 | ||
|
|
9872229e11 | ||
|
|
682e86d236 | ||
|
|
f0a5fb56a5 | ||
|
|
53dfafd2ea | ||
|
|
7a33661b72 | ||
|
|
a5b65fba5b | ||
|
|
63f2a041ed | ||
|
|
3289eca040 | ||
|
|
c5a7174a2a |
20
.editorconfig
Normal file
20
.editorconfig
Normal 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
|
||||||
2
.github/FUNDING.yml
vendored
Normal file
2
.github/FUNDING.yml
vendored
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
patreon: jakubvrana
|
||||||
|
custom: ["https://sourceforge.net/p/adminer/donate/"]
|
||||||
67
.github/workflows/codeql-analysis.yml
vendored
Normal file
67
.github/workflows/codeql-analysis.yml
vendored
Normal 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
2
.gitignore
vendored
@@ -2,3 +2,5 @@
|
|||||||
/adminer*.php
|
/adminer*.php
|
||||||
/editor*.php
|
/editor*.php
|
||||||
/vendor/
|
/vendor/
|
||||||
|
/composer.lock
|
||||||
|
/temp
|
||||||
|
|||||||
15
.gitmodules
vendored
15
.gitmodules
vendored
@@ -1,9 +1,6 @@
|
|||||||
[submodule "jush"]
|
[submodule "designs/hydra"]
|
||||||
path = externals/jush
|
path = designs/hydra
|
||||||
url = git://git.code.sf.net/p/jush/git
|
url = https://github.com/Niyko/Hydra-Dark-Theme-for-Adminer
|
||||||
[submodule "wymeditor"]
|
[submodule "designs/pepa-linha-dark"]
|
||||||
path = externals/wymeditor
|
path = designs/pepa-linha-dark
|
||||||
url = git://github.com/wymeditor/wymeditor.git
|
url = https://github.com/pepa-linha/Adminer-Design-Dark/
|
||||||
[submodule "JsShrink"]
|
|
||||||
path = externals/JsShrink
|
|
||||||
url = git://github.com/vrana/JsShrink.git
|
|
||||||
|
|||||||
9
.travis.yml
Normal file
9
.travis.yml
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
language: php
|
||||||
|
php:
|
||||||
|
- 5.6
|
||||||
|
- 7.1
|
||||||
|
- 7.2
|
||||||
|
- 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
|
||||||
1064
CHANGELOG.md
Normal file
1064
CHANGELOG.md
Normal file
File diff suppressed because it is too large
Load Diff
7
LICENSE.md
Normal file
7
LICENSE.md
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
# Licenses
|
||||||
|
|
||||||
|
You may use Adminer under the terms of either the Apache License Version 2.0
|
||||||
|
or the GNU General Public License (GPL) version 2.
|
||||||
|
|
||||||
|
- [Apache License, Version 2.0](https://www.apache.org/licenses/LICENSE-2.0)
|
||||||
|
- [GPL version 2](http://www.gnu.org/licenses/gpl-2.0.html)
|
||||||
39
Makefile
Normal file
39
Makefile
Normal 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
|
||||||
153
README.md
Normal file
153
README.md
Normal file
@@ -0,0 +1,153 @@
|
|||||||
|
# Adminer
|
||||||
|
|
||||||
|
**Adminer** is a full-featured database management tool written in PHP. It consists of a single file ready to deploy to
|
||||||
|
the target server. As a companion, **Adminer Editor** offers data manipulation for end-users.
|
||||||
|
|
||||||
|
Supported database drivers:
|
||||||
|
- MySQL, MariaDB, PostgreSQL, SQLite, MS SQL, Oracle, MongoDB
|
||||||
|
- With plugin: SimpleDB, Elasticsearch (beta), Firebird (alpha), ClickHouse (alpha)
|
||||||
|
|
||||||
|
## Requirements
|
||||||
|
|
||||||
|
- PHP 5.6+ with enabled sessions.
|
||||||
|
|
||||||
|
## Migration from original Adminer
|
||||||
|
|
||||||
|
No action is needed for now. But please, read 👉 **[What to expect](#what-to-expect)** section before you decide to
|
||||||
|
switch to this project.
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
Download one for the latest [release files](https://github.com/pematon/adminer/releases), upload to the HTTP server
|
||||||
|
with PHP and enjoy 😉 If you are not satisfied with any combination of the database driver and language, you can
|
||||||
|
download the source code and compile your own Adminer:
|
||||||
|
|
||||||
|
- Download the source code.
|
||||||
|
- Run `composer install` to install dependencies.
|
||||||
|
- Run compile.php:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
# Adminer
|
||||||
|
php compile.php <driver> <language>
|
||||||
|
|
||||||
|
# Editor
|
||||||
|
php compile.php editor <driver> <language>
|
||||||
|
```
|
||||||
|
|
||||||
|
For example:
|
||||||
|
```shell
|
||||||
|
php compile.php pgsql cs
|
||||||
|
```
|
||||||
|
|
||||||
|
[Available drivers](https://github.com/pematon/adminer/tree/master/adminer/drivers),
|
||||||
|
[languages](https://github.com/pematon/adminer/tree/master/adminer/lang).
|
||||||
|
|
||||||
|
## Security
|
||||||
|
|
||||||
|
Adminer does not allow connecting to databases without a password and it rate-limits the connection attempts to protect
|
||||||
|
against brute-force attacks. Still, it is highly recommended to 🔒 **restrict access to Adminer** 🔒 by whitelisting IP
|
||||||
|
addresses allowed to connect to it, by password-protecting the access in your web server or by enabling security plugins
|
||||||
|
(e.g. to require an OTP).
|
||||||
|
|
||||||
|
## Plugins
|
||||||
|
|
||||||
|
* Download plugins you want and place them into the `plugins` folder.
|
||||||
|
* Create `index.php` file specifying which plugins do you want to use.
|
||||||
|
|
||||||
|
File structure will be:
|
||||||
|
|
||||||
|
```
|
||||||
|
- plugins
|
||||||
|
- drivers
|
||||||
|
- elastic.php
|
||||||
|
- dump-xml.php
|
||||||
|
- tinymce.php
|
||||||
|
- file-upload.php
|
||||||
|
- ...
|
||||||
|
- adminer.php
|
||||||
|
- index.php
|
||||||
|
```
|
||||||
|
|
||||||
|
Index.php:
|
||||||
|
```php
|
||||||
|
<?php
|
||||||
|
function adminer_object() {
|
||||||
|
// Required to run any plugin.
|
||||||
|
include_once "./plugins/plugin.php";
|
||||||
|
|
||||||
|
// Autoloader.
|
||||||
|
foreach (glob("plugins/*.php") as $filename) {
|
||||||
|
include_once "./$filename";
|
||||||
|
}
|
||||||
|
|
||||||
|
// Enable extra drivers just by including them.
|
||||||
|
include_once "./plugins/drivers/elastic.php";
|
||||||
|
|
||||||
|
// Specify enabled plugins.
|
||||||
|
$plugins = [
|
||||||
|
new AdminerDumpXml(),
|
||||||
|
new AdminerTinymce(),
|
||||||
|
new AdminerFileUpload("data/"),
|
||||||
|
// ...
|
||||||
|
];
|
||||||
|
|
||||||
|
// It is possible to combine customization and plugins.
|
||||||
|
// class AdminerCustomization extends AdminerPlugin {
|
||||||
|
// }
|
||||||
|
// return new AdminerCustomization($plugins);
|
||||||
|
|
||||||
|
return new AdminerPlugin($plugins);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Include original Adminer or Adminer Editor.
|
||||||
|
include "./adminer.php";
|
||||||
|
```
|
||||||
|
|
||||||
|
[Available plugins](https://github.com/pematon/adminer/tree/master/plugins).
|
||||||
|
|
||||||
|
## Main project files
|
||||||
|
- adminer/index.php - Run development version of Adminer.
|
||||||
|
- editor/index.php - Run development version of Adminer Editor.
|
||||||
|
- editor/example.php - Example customization.
|
||||||
|
- plugins/readme.txt - Plugins for Adminer and Adminer Editor.
|
||||||
|
- adminer/plugin.php - Plugin demo.
|
||||||
|
- adminer/sqlite.php - Development version of Adminer with SQLite allowed.
|
||||||
|
- editor/sqlite.php - Development version of Editor with SQLite allowed.
|
||||||
|
- adminer/designs.php - Development version of Adminer with adminer.css switcher.
|
||||||
|
- compile.php - Create a single file version.
|
||||||
|
- lang.php - Update translations.
|
||||||
|
- tests/katalon.html - Katalon Automation Recorder test suite.
|
||||||
|
|
||||||
|
## Project history
|
||||||
|
|
||||||
|
Adminer was originally developed by Jakub Vrana, and it can be still found on [official pages](https://www.adminer.org/).
|
||||||
|
Unfortunately, it is not maintained for several years. In the meantime, I (@peterpp) created for my company a set of
|
||||||
|
custom plugins, modern theme, fixed some bugs and practically rewrote the Elasticsearch driver. I also looked closely
|
||||||
|
and contributed to the [AdminerEvo](https://www.adminerevo.org/) project that looked promising. However, I finally
|
||||||
|
decided to continue working on this fork and fulfill my own vision.
|
||||||
|
|
||||||
|
## What to expect
|
||||||
|
|
||||||
|
Our top priority is fixing the security issues and reported bugs. But we really want to move forward and transform
|
||||||
|
Adminer to a tool that will keep its simplicity, yet looks much better, is even easier to use and can be configured
|
||||||
|
without requirement of additional plugins.
|
||||||
|
|
||||||
|
### Version 4.x
|
||||||
|
Original design and backward compatibility is kept. Many issues were fixed, and we introduced several functional and
|
||||||
|
UI improvements.
|
||||||
|
|
||||||
|
### Version 5
|
||||||
|
Bridges will be burned 🔥🔥🔥. It's in development already, so you [can check](https://github.com/pematon/adminer/tree/version-5)
|
||||||
|
what's going on. Or you can become the early adopter and help us with testing 😉
|
||||||
|
|
||||||
|
Our goals are:
|
||||||
|
|
||||||
|
- **Requirements** - Bump minimal PHP to 7.1, maybe even higher.
|
||||||
|
- **Themes** – Modernize the current old-school theme, add new default theme based on our [Adminer theme](https://github.com/pematon/adminer-theme),
|
||||||
|
support dark mode, configurable color variants for production/devel environment. All current designs will be removed.
|
||||||
|
- **Plugins** - Integrate several basic plugins, enable them by optional configuration.
|
||||||
|
- **Codebase** - Prefer code readability before minimalism, use PER coding style, add namespaces.
|
||||||
|
- **Compilation** - Allow to export selected drivers, themes, languages and plugins into a single adminer.php file.
|
||||||
|
|
||||||
|
We are also thinking to change the project's name, so people will clearly distinguish between original Adminer and
|
||||||
|
other forks. Any suggestions are welcome.
|
||||||
11
SECURITY.md
Normal file
11
SECURITY.md
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
# Reporting security issues
|
||||||
|
|
||||||
|
To report a security issue, please [open a draft security advisory](https://github.com/pematon/adminer/security/advisories).
|
||||||
|
|
||||||
|
Security issues are handled with top priority. Once acknowledged, a fix should be available and new version released
|
||||||
|
as soon as possible. Security advisories will be made public after a fix and new version have been released,
|
||||||
|
or the advisory has been declined.
|
||||||
|
|
||||||
|
## Supported versions
|
||||||
|
|
||||||
|
Only the last published version and the last development version (last commit) are supported.
|
||||||
@@ -1,8 +1,8 @@
|
|||||||
<?php
|
<?php
|
||||||
$PROCEDURE = $_GET["call"];
|
$PROCEDURE = ($_GET["name"] ? $_GET["name"] : $_GET["call"]);
|
||||||
page_header(lang('Call') . ": " . h($PROCEDURE), $error);
|
page_header(lang('Call') . ": " . h($PROCEDURE), $error);
|
||||||
|
|
||||||
$routine = routine($PROCEDURE, (isset($_GET["callf"]) ? "FUNCTION" : "PROCEDURE"));
|
$routine = routine($_GET["call"], (isset($_GET["callf"]) ? "FUNCTION" : "PROCEDURE"));
|
||||||
$in = array();
|
$in = array();
|
||||||
$out = array();
|
$out = array();
|
||||||
foreach ($routine["fields"] as $i => $field) {
|
foreach ($routine["fields"] as $i => $field) {
|
||||||
@@ -29,10 +29,13 @@ if (!$error && $_POST) {
|
|||||||
$call[] = (isset($out[$key]) ? "@" . idf_escape($field["field"]) : $val);
|
$call[] = (isset($out[$key]) ? "@" . idf_escape($field["field"]) : $val);
|
||||||
}
|
}
|
||||||
|
|
||||||
$query = (isset($_GET["callf"]) ? "SELECT" : "CALL") . " " . idf_escape($PROCEDURE) . "(" . implode(", ", $call) . ")";
|
$query = (isset($_GET["callf"]) ? "SELECT" : "CALL") . " " . table($PROCEDURE) . "(" . implode(", ", $call) . ")";
|
||||||
echo "<p><code class='jush-$jush'>" . h($query) . "</code> <a href='" . h(ME) . "sql=" . urlencode($query) . "'>" . lang('Edit') . "</a>\n";
|
$start = microtime(true);
|
||||||
|
$result = $connection->multi_query($query);
|
||||||
|
$affected = $connection->affected_rows; // getting warnigns overwrites this
|
||||||
|
echo $adminer->selectQuery($query, $start, !$result);
|
||||||
|
|
||||||
if (!$connection->multi_query($query)) {
|
if (!$result) {
|
||||||
echo "<p class='error'>" . error() . "\n";
|
echo "<p class='error'>" . error() . "\n";
|
||||||
} else {
|
} else {
|
||||||
$connection2 = connect();
|
$connection2 = connect();
|
||||||
@@ -45,7 +48,9 @@ if (!$error && $_POST) {
|
|||||||
if (is_object($result)) {
|
if (is_object($result)) {
|
||||||
select($result, $connection2);
|
select($result, $connection2);
|
||||||
} else {
|
} else {
|
||||||
echo "<p class='message'>" . lang('Routine has been called, %d row(s) affected.', $connection->affected_rows) . "\n";
|
echo "<p class='message'>" . lang('Routine has been called, %d row(s) affected.', $affected)
|
||||||
|
. " <span class='time'>" . @date("H:i:s") . "</span>\n" // @ - time zone may be not set
|
||||||
|
;
|
||||||
}
|
}
|
||||||
} while ($connection->next_result());
|
} while ($connection->next_result());
|
||||||
|
|
||||||
@@ -59,7 +64,7 @@ if (!$error && $_POST) {
|
|||||||
<form action="" method="post">
|
<form action="" method="post">
|
||||||
<?php
|
<?php
|
||||||
if ($in) {
|
if ($in) {
|
||||||
echo "<table cellspacing='0'>\n";
|
echo "<table cellspacing='0' class='layout'>\n";
|
||||||
foreach ($in as $key) {
|
foreach ($in as $key) {
|
||||||
$field = $routine["fields"][$key];
|
$field = $routine["fields"][$key];
|
||||||
$name = $field["field"];
|
$name = $field["field"];
|
||||||
|
|||||||
@@ -27,6 +27,10 @@ if ($row["auto_increment_col"]) {
|
|||||||
$row["fields"][$row["auto_increment_col"]]["auto_increment"] = true;
|
$row["fields"][$row["auto_increment_col"]]["auto_increment"] = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ($_POST) {
|
||||||
|
set_adminer_settings(array("comments" => $_POST["comments"], "defaults" => $_POST["defaults"]));
|
||||||
|
}
|
||||||
|
|
||||||
if ($_POST && !process_fields($row["fields"]) && !$error) {
|
if ($_POST && !process_fields($row["fields"]) && !$error) {
|
||||||
if ($_POST["drop"]) {
|
if ($_POST["drop"]) {
|
||||||
queries_redirect(substr(ME, 0, -1), lang('Table has been dropped.'), drop_tables(array($TABLE)));
|
queries_redirect(substr(ME, 0, -1), lang('Table has been dropped.'), drop_tables(array($TABLE)));
|
||||||
@@ -35,7 +39,6 @@ if ($_POST && !process_fields($row["fields"]) && !$error) {
|
|||||||
$all_fields = array();
|
$all_fields = array();
|
||||||
$use_all_fields = false;
|
$use_all_fields = false;
|
||||||
$foreign = array();
|
$foreign = array();
|
||||||
ksort($row["fields"]);
|
|
||||||
$orig_field = reset($orig_fields);
|
$orig_field = reset($orig_fields);
|
||||||
$after = " FIRST";
|
$after = " FIRST";
|
||||||
|
|
||||||
@@ -51,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;
|
||||||
@@ -79,20 +82,39 @@ if ($_POST && !process_fields($row["fields"]) && !$error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
$partitioning = "";
|
$partitioning = "";
|
||||||
if ($partition_by[$row["partition_by"]]) {
|
if (support("partitioning")) {
|
||||||
$partitions = array();
|
if (isset($partition_by[$row["partition_by"]])) {
|
||||||
if ($row["partition_by"] == 'RANGE' || $row["partition_by"] == 'LIST') {
|
$params = array_filter($row, function ($key) {
|
||||||
foreach (array_filter($row["partition_names"]) as $key => $val) {
|
return preg_match('~^partition~', $key);
|
||||||
$value = $row["partition_values"][$key];
|
}, ARRAY_FILTER_USE_KEY);
|
||||||
$partitions[] = "\n PARTITION " . idf_escape($val) . " VALUES " . ($row["partition_by"] == 'RANGE' ? "LESS THAN" : "IN") . ($value != "" ? " ($value)" : " MAXVALUE"); //! SQL injection
|
|
||||||
|
foreach ($params["partition_names"] as $key => $name) {
|
||||||
|
if ($name === "") {
|
||||||
|
unset($params["partition_names"][$key]);
|
||||||
|
unset($params["partition_values"][$key]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ($params != get_partitions_info($TABLE)) {
|
||||||
|
$partitions = [];
|
||||||
|
if ($params["partition_by"] == 'RANGE' || $params["partition_by"] == 'LIST') {
|
||||||
|
foreach ($params["partition_names"] as $key => $name) {
|
||||||
|
$value = $params["partition_values"][$key];
|
||||||
|
$partitions[] = "\n PARTITION " . idf_escape($name) . " VALUES " . ($params["partition_by"] == 'RANGE' ? "LESS THAN" : "IN") . ($value != "" ? " ($value)" : " MAXVALUE"); //! SQL injection
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// $params["partition"] can be expression, not only column
|
||||||
|
$partitioning .= "\nPARTITION BY {$params["partition_by"]}({$params["partition"]})";
|
||||||
|
if ($partitions) {
|
||||||
|
$partitioning .= " (" . implode(",", $partitions) . "\n)";
|
||||||
|
} elseif ($params["partitions"]) {
|
||||||
|
$partitioning .= " PARTITIONS " . (int)$params["partitions"];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} elseif (preg_match("~partitioned~", $table_status["Create_options"])) {
|
||||||
|
$partitioning .= "\nREMOVE PARTITIONING";
|
||||||
}
|
}
|
||||||
$partitioning .= "\nPARTITION BY $row[partition_by]($row[partition])" . ($partitions // $row["partition"] can be expression, not only column
|
|
||||||
? " (" . implode(",", $partitions) . "\n)"
|
|
||||||
: ($row["partitions"] ? " PARTITIONS " . (+$row["partitions"]) : "")
|
|
||||||
);
|
|
||||||
} elseif (support("partitioning") && preg_match("~partitioned~", $table_status["Create_options"])) {
|
|
||||||
$partitioning .= "\nREMOVE PARTITIONING";
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$message = lang('Table has been altered.');
|
$message = lang('Table has been altered.');
|
||||||
@@ -121,7 +143,7 @@ page_header(($TABLE != "" ? lang('Alter table') : lang('Create table')), $error,
|
|||||||
if (!$_POST) {
|
if (!$_POST) {
|
||||||
$row = array(
|
$row = array(
|
||||||
"Engine" => $_COOKIE["adminer_engine"],
|
"Engine" => $_COOKIE["adminer_engine"],
|
||||||
"fields" => array(array("field" => "", "type" => (isset($types["int"]) ? "int" : (isset($types["integer"]) ? "integer" : "")))),
|
"fields" => array(array("field" => "", "type" => (isset($types["int"]) ? "int" : (isset($types["integer"]) ? "integer" : "")), "on_update" => "")),
|
||||||
"partition_names" => array(""),
|
"partition_names" => array(""),
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -138,13 +160,9 @@ if (!$_POST) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (support("partitioning")) {
|
if (support("partitioning")) {
|
||||||
$from = "FROM information_schema.PARTITIONS WHERE TABLE_SCHEMA = " . q(DB) . " AND TABLE_NAME = " . q($TABLE);
|
$row += get_partitions_info($TABLE);
|
||||||
$result = $connection->query("SELECT PARTITION_METHOD, PARTITION_ORDINAL_POSITION, PARTITION_EXPRESSION $from ORDER BY PARTITION_ORDINAL_POSITION DESC LIMIT 1");
|
$row["partition_names"][] = "";
|
||||||
list($row["partition_by"], $row["partitions"], $row["partition"]) = $result->fetch_row();
|
$row["partition_values"][] = "";
|
||||||
$partitions = get_key_vals("SELECT PARTITION_NAME, PARTITION_DESCRIPTION $from AND PARTITION_NAME != '' ORDER BY PARTITION_ORDINAL_POSITION");
|
|
||||||
$partitions[""] = "";
|
|
||||||
$row["partition_names"] = array_keys($partitions);
|
|
||||||
$row["partition_values"] = array_values($partitions);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -163,49 +181,47 @@ foreach ($engines as $engine) {
|
|||||||
<form action="" method="post" id="form">
|
<form action="" method="post" id="form">
|
||||||
<p>
|
<p>
|
||||||
<?php if (support("columns") || $TABLE == "") { ?>
|
<?php if (support("columns") || $TABLE == "") { ?>
|
||||||
<?php echo lang('Table name'); ?>: <input name="name" maxlength="64" value="<?php echo h($row["name"]); ?>" autocapitalize="off">
|
<?php echo lang('Table name'); ?>: <input name="name" data-maxlength="64" value="<?php echo h($row["name"]); ?>" autocapitalize="off">
|
||||||
<?php if ($TABLE == "" && !$_POST) { ?><script type='text/javascript'>focus(document.getElementById('form')['name']);</script><?php } ?>
|
<?php if ($TABLE == "" && !$_POST) { echo script("focus(gid('form')['name']);"); } ?>
|
||||||
<?php echo ($engines ? "<select name='Engine' onchange='helpClose();'" . on_help("getTarget(event).value", 1) . ">" . optionlist(array("" => "(" . lang('engine') . ")") + $engines, $row["Engine"]) . "</select>" : ""); ?>
|
<?php echo ($engines ? "<select name='Engine'>" . optionlist(array("" => "(" . lang('engine') . ")") + $engines, $row["Engine"]) . "</select>" . help_script_command("value", true) : ""); ?>
|
||||||
<?php echo ($collations && !preg_match("~sqlite|mssql~", $jush) ? html_select("Collation", array("" => "(" . lang('collation') . ")") + $collations, $row["Collation"]) : ""); ?>
|
<?php echo ($collations && !preg_match("~sqlite|mssql~", $jush) ? html_select("Collation", array("" => "(" . lang('collation') . ")") + $collations, $row["Collation"]) : ""); ?>
|
||||||
<input type="submit" value="<?php echo lang('Save'); ?>">
|
<input type="submit" value="<?php echo lang('Save'); ?>">
|
||||||
<?php } ?>
|
<?php } ?>
|
||||||
|
|
||||||
<?php if (support("columns")) { ?>
|
<?php if (support("columns")) { ?>
|
||||||
|
<div class="scrollable">
|
||||||
<table cellspacing="0" id="edit-fields" class="nowrap">
|
<table cellspacing="0" id="edit-fields" class="nowrap">
|
||||||
<?php
|
<?php
|
||||||
$comments = ($_POST ? $_POST["comments"] : $row["Comment"] != "");
|
edit_fields($row["fields"], $collations, "TABLE", $foreign_keys);
|
||||||
if (!$_POST && !$comments) {
|
|
||||||
foreach ($row["fields"] as $field) {
|
|
||||||
if ($field["comment"] != "") {
|
|
||||||
$comments = true;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
edit_fields($row["fields"], $collations, "TABLE", $foreign_keys, $comments);
|
|
||||||
?>
|
?>
|
||||||
</table>
|
</table>
|
||||||
|
<?php echo script("editFields();"); ?>
|
||||||
|
</div>
|
||||||
<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, true, lang('Default values'), "columnShow(this.checked, 5)", "jsonly"); ?>
|
<?php
|
||||||
<?php if (!$_POST["defaults"]) { ?><script type="text/javascript">editingHideDefaults()</script><?php } ?>
|
$comments = ($_POST ? $_POST["comments"] : adminer_setting("comments"));
|
||||||
<?php echo (support("comment")
|
echo (support("comment")
|
||||||
? "<label><input type='checkbox' name='comments' value='1' class='jsonly' onclick=\"columnShow(this.checked, 6); toggle('Comment'); if (this.checked) this.form['Comment'].focus();\"" . ($comments ? " checked" : "") . ">" . lang('Comment') . "</label>"
|
? checkbox("comments", 1, $comments, lang('Comment'), "editingCommentsClick(this, true);", "jsonly")
|
||||||
. ' <input name="Comment" id="Comment" value="' . h($row["Comment"]) . '" maxlength="' . ($connection->server_info >= 5.5 ? 2048 : 60) . '"' . ($comments ? '' : ' class="hidden"') . '>'
|
. ' ' . (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 } ?>
|
||||||
|
|
||||||
<?php if ($TABLE != "") { ?><input type="submit" name="drop" value="<?php echo lang('Drop'); ?>"<?php echo confirm(); ?>><?php } ?>
|
<?php if ($TABLE != "") { ?><input type="submit" name="drop" value="<?php echo lang('Drop'); ?>"><?php echo confirm(lang('Drop %s?', $TABLE)); ?><?php } ?>
|
||||||
<?php
|
<?php
|
||||||
if (support("partitioning")) {
|
if (support("partitioning")) {
|
||||||
$partition_table = preg_match('~RANGE|LIST~', $row["partition_by"]);
|
$partition_table = preg_match('~RANGE|LIST~', $row["partition_by"]);
|
||||||
print_fieldset("partition", lang('Partition by'), $row["partition_by"]);
|
print_fieldset("partition", lang('Partition by'), $row["partition_by"]);
|
||||||
?>
|
?>
|
||||||
<p>
|
<p>
|
||||||
<?php echo "<select name='partition_by' onchange='partitionByChange(this);'" . on_help("getTarget(event).value.replace(/./, 'PARTITION BY \$&')", 1) . ">" . optionlist(array("" => "") + $partition_by, $row["partition_by"]) . "</select>"; ?>
|
<?php echo "<select name='partition_by'>" . optionlist(array("" => "") + $partition_by, $row["partition_by"]) . "</select>" . help_script_command("value.replace(/./, 'PARTITION BY \$&')", true) . script("qsl('select').onchange = partitionByChange;"); ?>
|
||||||
(<input name="partition" value="<?php echo h($row["partition"]); ?>">)
|
(<input name="partition" value="<?php echo h($row["partition"]); ?>">)
|
||||||
<?php echo lang('Partitions'); ?>: <input type="number" name="partitions" class="size<?php echo ($partition_table || !$row["partition_by"] ? " hidden" : ""); ?>" value="<?php echo h($row["partitions"]); ?>">
|
<?php echo lang('Partitions'); ?>: <input type="number" name="partitions" class="size<?php echo ($partition_table || !$row["partition_by"] ? " hidden" : ""); ?>" value="<?php echo h($row["partitions"]); ?>">
|
||||||
<table cellspacing="0" id="partition-table"<?php echo ($partition_table ? "" : " class='hidden'"); ?>>
|
<table cellspacing="0" id="partition-table"<?php echo ($partition_table ? "" : " class='hidden'"); ?>>
|
||||||
@@ -213,7 +229,8 @@ if (support("partitioning")) {
|
|||||||
<?php
|
<?php
|
||||||
foreach ($row["partition_names"] as $key => $val) {
|
foreach ($row["partition_names"] as $key => $val) {
|
||||||
echo '<tr>';
|
echo '<tr>';
|
||||||
echo '<td><input name="partition_names[]" value="' . h($val) . '"' . ($key == count($row["partition_names"]) - 1 ? ' onchange="partitionNameChange(this);"' : '') . ' autocapitalize="off">';
|
echo '<td><input name="partition_names[]" value="' . h($val) . '" autocapitalize="off">';
|
||||||
|
echo ($key == count($row["partition_names"]) - 1 ? script("qsl('input').oninput = partitionNameChange;") : '');
|
||||||
echo '<td><input name="partition_values[]" value="' . h($row["partition_values"][$key]) . '">';
|
echo '<td><input name="partition_values[]" value="' . h($row["partition_values"][$key]) . '">';
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
|
|||||||
@@ -47,7 +47,7 @@ if ($_POST) {
|
|||||||
} elseif ($jush == "sql") {
|
} elseif ($jush == "sql") {
|
||||||
// propose database name with limited privileges
|
// propose database name with limited privileges
|
||||||
foreach (get_vals("SHOW GRANTS") as $grant) {
|
foreach (get_vals("SHOW GRANTS") as $grant) {
|
||||||
if (preg_match('~ ON (`(([^\\\\`]|``|\\\\.)*)%`\\.\\*)?~', $grant, $match) && $match[1]) {
|
if (preg_match('~ ON (`(([^\\\\`]|``|\\\\.)*)%`\.\*)?~', $grant, $match) && $match[1]) {
|
||||||
$name = stripcslashes(idf_unescape("`$match[2]`"));
|
$name = stripcslashes(idf_unescape("`$match[2]`"));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -60,17 +60,18 @@ if ($_POST) {
|
|||||||
<?php
|
<?php
|
||||||
echo ($_POST["add_x"] || strpos($name, "\n")
|
echo ($_POST["add_x"] || strpos($name, "\n")
|
||||||
? '<textarea id="name" name="name" rows="10" cols="40">' . h($name) . '</textarea><br>'
|
? '<textarea id="name" name="name" rows="10" cols="40">' . h($name) . '</textarea><br>'
|
||||||
: '<input name="name" id="name" value="' . h($name) . '" maxlength="64" autocapitalize="off">'
|
: '<input name="name" id="name" value="' . h($name) . '" data-maxlength="64" autocapitalize="off">'
|
||||||
) . "\n" . ($collations ? html_select("collation", array("" => "(" . lang('collation') . ")") + $collations, $row["collation"]) . doc_link(array(
|
) . "\n" . ($collations ? html_select("collation", array("" => "(" . lang('collation') . ")") + $collations, $row["collation"]) . doc_link(array(
|
||||||
'sql' => "charset-charsets.html",
|
'sql' => "charset-charsets.html",
|
||||||
|
'mariadb' => "supported-character-sets-and-collations/",
|
||||||
'mssql' => "ms187963.aspx",
|
'mssql' => "ms187963.aspx",
|
||||||
)) : "");
|
)) : "");
|
||||||
|
echo script("focus(gid('name'));");
|
||||||
?>
|
?>
|
||||||
<script type='text/javascript'>focus(document.getElementById('name'));</script>
|
|
||||||
<input type="submit" value="<?php echo lang('Save'); ?>">
|
<input type="submit" value="<?php echo lang('Save'); ?>">
|
||||||
<?php
|
<?php
|
||||||
if (DB != "") {
|
if (DB != "") {
|
||||||
echo "<input type='submit' name='drop' value='" . lang('Drop') . "'" . confirm() . ">\n";
|
echo "<input type='submit' name='drop' value='" . lang('Drop') . "'>" . confirm(lang('Drop %s?', DB)) . "\n";
|
||||||
} elseif (!$_POST["add_x"] && $_GET["db"] == "") {
|
} elseif (!$_POST["add_x"] && $_GET["db"] == "") {
|
||||||
echo "<input type='image' class='icon' name='add' src='../adminer/static/plus.gif' alt='+' title='" . lang('Add next') . "'>\n";
|
echo "<input type='image' class='icon' name='add' src='../adminer/static/plus.gif' alt='+' title='" . lang('Add next') . "'>\n";
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ $tables_views = array_merge((array) $_POST["tables"], (array) $_POST["views"]);
|
|||||||
if ($tables_views && !$error && !$_POST["search"]) {
|
if ($tables_views && !$error && !$_POST["search"]) {
|
||||||
$result = true;
|
$result = true;
|
||||||
$message = "";
|
$message = "";
|
||||||
if ($jush == "sql" && count($_POST["tables"]) > 1 && ($_POST["drop"] || $_POST["truncate"] || $_POST["copy"])) {
|
if ($jush == "sql" && $_POST["tables"] && count($_POST["tables"]) > 1 && ($_POST["drop"] || $_POST["truncate"] || $_POST["copy"])) {
|
||||||
queries("SET foreign_key_checks = 0"); // allows to truncate or drop several tables at once
|
queries("SET foreign_key_checks = 0"); // allows to truncate or drop several tables at once
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -47,7 +47,28 @@ if ($tables_views && !$error && !$_POST["search"]) {
|
|||||||
page_header(($_GET["ns"] == "" ? lang('Database') . ": " . h(DB) : lang('Schema') . ": " . h($_GET["ns"])), $error, true);
|
page_header(($_GET["ns"] == "" ? lang('Database') . ": " . h(DB) : lang('Schema') . ": " . h($_GET["ns"])), $error, true);
|
||||||
|
|
||||||
if ($adminer->homepage()) {
|
if ($adminer->homepage()) {
|
||||||
if ($_GET["ns"] !== "") {
|
if ($_GET["ns"] === "") {
|
||||||
|
echo "<h3 id='schemas'>" . lang('Schemas') . "</h3>\n";
|
||||||
|
$schemas = schemas();
|
||||||
|
if (!$schemas) {
|
||||||
|
echo "<p class='message'>" . lang('No schemas.') . "\n";
|
||||||
|
} else {
|
||||||
|
// TODO: Checkboxes for batch dropping of schemas.
|
||||||
|
echo "<div class='scrollable'>\n",
|
||||||
|
"<table class='nowrap'>\n",
|
||||||
|
'<thead><tr class="wrap">',
|
||||||
|
'<th>', lang('Schema'), "</th>",
|
||||||
|
'</tr></thead>';
|
||||||
|
|
||||||
|
foreach ($schemas as $name) {
|
||||||
|
echo "<tr", odd(), ">",
|
||||||
|
"<th><a href='", h(ME), "ns=" . urlencode($name), "' title='", lang('Show schema'), "'>" . h($name) . "</a></th>",
|
||||||
|
"</tr>";
|
||||||
|
}
|
||||||
|
|
||||||
|
echo '</table></div>';
|
||||||
|
}
|
||||||
|
} else {
|
||||||
echo "<h3 id='tables-views'>" . lang('Tables and views') . "</h3>\n";
|
echo "<h3 id='tables-views'>" . lang('Tables and views') . "</h3>\n";
|
||||||
$tables_list = tables_list();
|
$tables_list = tables_list();
|
||||||
if (!$tables_list) {
|
if (!$tables_list) {
|
||||||
@@ -56,34 +77,43 @@ if ($adminer->homepage()) {
|
|||||||
echo "<form action='' method='post'>\n";
|
echo "<form action='' method='post'>\n";
|
||||||
if (support("table")) {
|
if (support("table")) {
|
||||||
echo "<fieldset><legend>" . lang('Search data in tables') . " <span id='selected2'></span></legend><div>";
|
echo "<fieldset><legend>" . lang('Search data in tables') . " <span id='selected2'></span></legend><div>";
|
||||||
echo "<input type='search' name='query' value='" . h($_POST["query"]) . "'> <input type='submit' name='search' value='" . lang('Search') . "'>\n";
|
echo "<input type='search' name='query' value='" . h($_POST["query"]) . "'>";
|
||||||
|
echo script("qsl('input').onkeydown = partialArg(bodyKeydown, 'search');", "");
|
||||||
|
echo " <input type='submit' name='search' value='" . lang('Search') . "'>\n";
|
||||||
|
if ($adminer->operator_regexp !== null) {
|
||||||
|
echo "<p><label><input type='checkbox' name='regexp' value='1'" . (empty($_POST['regexp']) ? '' : ' checked') . '>' . lang('as a regular expression') . '</label>';
|
||||||
|
echo doc_link(['sql' => 'regexp.html', 'pgsql' => 'functions-matching.html#FUNCTIONS-POSIX-REGEXP', 'elastic' => "regexp-syntax.html"]) . "</p>\n";
|
||||||
|
}
|
||||||
echo "</div></fieldset>\n";
|
echo "</div></fieldset>\n";
|
||||||
if ($_POST["search"] && $_POST["query"] != "") {
|
if ($_POST["search"] && $_POST["query"] != "") {
|
||||||
|
$_GET["where"][0]["op"] = $adminer->operator_regexp !== null && !empty($_POST['regexp']) ? $adminer->operator_regexp : $adminer->operator_like;
|
||||||
search_tables();
|
search_tables();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
echo "<table cellspacing='0' class='nowrap checkable' onclick='tableClick(event);' ondblclick='tableClick(event, true);'>\n";
|
echo "<div class='scrollable'>\n";
|
||||||
|
echo "<table cellspacing='0' class='nowrap checkable'>\n";
|
||||||
echo '<thead><tr class="wrap"><td><input id="check-all" type="checkbox" onclick="formCheck(this, /^(tables|views)\[/);">';
|
echo script("mixin(qsl('table'), {onclick: tableClick, ondblclick: partialArg(tableClick, true)});");
|
||||||
$doc_link = doc_link(array('sql' => 'show-table-status.html'));
|
echo '<thead><tr class="wrap">';
|
||||||
|
echo '<td><input id="check-all" type="checkbox" class="jsonly">' . script("gid('check-all').onclick = partial(formCheck, /^(tables|views)\[/);", "");
|
||||||
echo '<th>' . lang('Table');
|
echo '<th>' . lang('Table');
|
||||||
echo '<td>' . lang('Engine') . doc_link(array('sql' => 'storage-engines.html'));
|
echo '<td>' . lang('Engine') . doc_link(array('sql' => 'storage-engines.html'));
|
||||||
echo '<td>' . lang('Collation') . doc_link(array('sql' => 'charset-mysql.html'));
|
echo '<td>' . lang('Collation') . doc_link(array('sql' => 'charset-charsets.html', 'mariadb' => 'supported-character-sets-and-collations/'));
|
||||||
echo '<td>' . lang('Data Length') . $doc_link;
|
echo '<td>' . lang('Data Length') . doc_link(array('sql' => 'show-table-status.html', 'pgsql' => 'functions-admin.html#FUNCTIONS-ADMIN-DBOBJECT', 'oracle' => 'REFRN20286'));
|
||||||
echo '<td>' . lang('Index Length') . $doc_link;
|
echo '<td>' . lang('Index Length') . doc_link(array('sql' => 'show-table-status.html', 'pgsql' => 'functions-admin.html#FUNCTIONS-ADMIN-DBOBJECT'));
|
||||||
echo '<td>' . lang('Data Free') . $doc_link;
|
echo '<td>' . lang('Data Free') . doc_link(array('sql' => 'show-table-status.html'));
|
||||||
echo '<td>' . lang('Auto Increment') . doc_link(array('sql' => 'example-auto-increment.html'));
|
echo '<td>' . lang('Auto Increment') . doc_link(array('sql' => 'example-auto-increment.html', 'mariadb' => 'auto_increment/'));
|
||||||
echo '<td>' . lang('Rows') . $doc_link;
|
echo '<td>' . lang('Rows') . doc_link(array('sql' => 'show-table-status.html', 'pgsql' => 'catalog-pg-class.html#CATALOG-PG-CLASS', 'oracle' => 'REFRN20286'));
|
||||||
echo (support("comment") ? '<td>' . lang('Comment') . $doc_link : '');
|
echo (support("comment") ? '<td>' . lang('Comment') . doc_link(array('sql' => 'show-table-status.html', 'pgsql' => 'functions-info.html#FUNCTIONS-INFO-COMMENT-TABLE')) : '');
|
||||||
echo "</thead>\n";
|
echo "</thead>\n";
|
||||||
|
|
||||||
$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));
|
||||||
echo '<tr' . odd() . '><td>' . checkbox(($view ? "views[]" : "tables[]"), $name, in_array($name, $tables_views, true), "", "formUncheck('check-all');");
|
$id = h("Table-" . $name);
|
||||||
echo '<th>' . (support("table") || support("indexes") ? '<a href="' . h(ME) . 'table=' . urlencode($name) . '" title="' . lang('Show structure') . '">' . h($name) . '</a>' : h($name));
|
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));
|
||||||
if ($view) {
|
if ($view) {
|
||||||
echo '<td colspan="6"><a href="' . h(ME) . "view=" . urlencode($name) . '" title="' . lang('Alter view') . '">' . (preg_match('~materialized~i', $type) ? lang('Materialized View') : lang('View')) . '</a>';
|
echo '<td colspan="6"><a href="' . h(ME) . "view=" . urlencode($name) . '" title="' . lang('Alter view') . '">' . (preg_match('~materialized~i', $type) ? lang('Materialized view') : lang('View')) . '</a>';
|
||||||
echo '<td align="right"><a href="' . h(ME) . "select=" . urlencode($name) . '" title="' . lang('Select data') . '">?</a>';
|
echo '<td align="right"><a href="' . h(ME) . "select=" . urlencode($name) . '" title="' . lang('Select data') . '">?</a>';
|
||||||
} else {
|
} else {
|
||||||
foreach (array(
|
foreach (array(
|
||||||
@@ -99,67 +129,71 @@ if ($adminer->homepage()) {
|
|||||||
echo ($link ? "<td align='right'>" . (support("table") || $key == "Rows" || (support("indexes") && $key != "Data_length")
|
echo ($link ? "<td align='right'>" . (support("table") || $key == "Rows" || (support("indexes") && $key != "Data_length")
|
||||||
? "<a href='" . h(ME . "$link[0]=") . urlencode($name) . "'$id title='$link[1]'>?</a>"
|
? "<a href='" . h(ME . "$link[0]=") . urlencode($name) . "'$id title='$link[1]'>?</a>"
|
||||||
: "<span$id>?</span>"
|
: "<span$id>?</span>"
|
||||||
) : "<td id='$key-" . h($name) . "'> ");
|
) : "<td id='$key-" . h($name) . "'>");
|
||||||
}
|
}
|
||||||
$tables++;
|
$tables++;
|
||||||
}
|
}
|
||||||
echo (support("comment") ? "<td id='Comment-" . h($name) . "'> " : "");
|
echo (support("comment") ? "<td id='Comment-" . h($name) . "'>" : "");
|
||||||
}
|
}
|
||||||
|
|
||||||
echo "<tr><td> <th>" . lang('%d in total', count($tables_list));
|
echo "<tr><td><th>" . lang('%d in total', count($tables_list));
|
||||||
echo "<td>" . nbsp($jush == "sql" ? $connection->result("SELECT @@storage_engine") : "");
|
echo "<td>" . h($jush == "sql" ? $connection->result("SELECT @@default_storage_engine") : "");
|
||||||
echo "<td>" . nbsp(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'>";
|
||||||
}
|
}
|
||||||
|
|
||||||
echo "</table>\n";
|
echo "</table>\n";
|
||||||
|
echo "</div>\n";
|
||||||
if (!information_schema(DB)) {
|
if (!information_schema(DB)) {
|
||||||
$vacuum = "<input type='submit' value='" . lang('Vacuum') . "'" . on_help("'VACUUM'") . "> ";
|
echo "<div class='footer'><div>\n";
|
||||||
$optimize = "<input type='submit' name='optimize' value='" . lang('Optimize') . "'" . on_help($jush == "sql" ? "'OPTIMIZE TABLE'" : "'VACUUM OPTIMIZE'") . "> ";
|
$vacuum = "<input type='submit' value='" . lang('Vacuum') . "'> " . help_script("VACUUM");
|
||||||
|
$optimize = "<input type='submit' name='optimize' value='" . lang('Optimize') . "'> " . help_script($jush == "sql" ? "OPTIMIZE TABLE" : "VACUUM OPTIMIZE");
|
||||||
echo "<fieldset><legend>" . lang('Selected') . " <span id='selected'></span></legend><div>"
|
echo "<fieldset><legend>" . lang('Selected') . " <span id='selected'></span></legend><div>"
|
||||||
. ($jush == "sqlite" ? $vacuum
|
. ($jush == "sqlite" ? $vacuum
|
||||||
: ($jush == "pgsql" ? $vacuum . $optimize
|
: ($jush == "pgsql" ? $vacuum . $optimize
|
||||||
: ($jush == "sql" ? "<input type='submit' value='" . lang('Analyze') . "'" . on_help("'ANALYZE TABLE'") . "> " . $optimize
|
: ($jush == "sql" ? "<input type='submit' value='" . lang('Analyze') . "'> " . help_script("ANALYZE TABLE") . $optimize
|
||||||
. "<input type='submit' name='check' value='" . lang('Check') . "'" . on_help("'CHECK TABLE'") . "> "
|
. "<input type='submit' name='check' value='" . lang('Check') . "'> " . help_script("CHECK TABLE")
|
||||||
. "<input type='submit' name='repair' value='" . lang('Repair') . "'" . on_help("'REPAIR TABLE'") . "> "
|
. "<input type='submit' name='repair' value='" . lang('Repair') . "'> " . help_script("REPAIR TABLE")
|
||||||
: "")))
|
: "")))
|
||||||
. "<input type='submit' name='truncate' value='" . lang('Truncate') . "'" . confirm() . on_help($jush == "sqlite" ? "'DELETE'" : "'TRUNCATE" . ($jush == "pgsql" ? "'" : " TABLE'")) . "> "
|
. "<input type='submit' name='truncate' value='" . lang('Truncate') . "'> " . help_script($jush == "sqlite" ? "DELETE" : ("TRUNCATE" . ($jush == "pgsql" ? "" : " TABLE"))) . confirm()
|
||||||
. "<input type='submit' name='drop' value='" . lang('Drop') . "'" . confirm() . on_help("'DROP TABLE'") . ">\n";
|
. "<input type='submit' name='drop' value='" . lang('Drop') . "'>" . help_script("DROP TABLE") . confirm() . "\n";
|
||||||
$databases = (support("scheme") ? $adminer->schemas() : $adminer->databases());
|
$databases = (support("scheme") ? $adminer->schemas() : $adminer->databases());
|
||||||
if (count($databases) != 1 && $jush != "sqlite") {
|
if (count($databases) != 1 && $jush != "sqlite") {
|
||||||
$db = (isset($_POST["target"]) ? $_POST["target"] : (support("scheme") ? $_GET["ns"] : DB));
|
$db = (isset($_POST["target"]) ? $_POST["target"] : (support("scheme") ? $_GET["ns"] : DB));
|
||||||
echo "<p>" . lang('Move to other database') . ": ";
|
echo "<p>" . lang('Move to other database') . ": ";
|
||||||
echo ($databases ? html_select("target", $databases, $db) : '<input name="target" value="' . h($db) . '" autocapitalize="off">');
|
echo ($databases ? html_select("target", $databases, $db) : '<input name="target" value="' . h($db) . '" autocapitalize="off">');
|
||||||
echo " <input type='submit' name='move' value='" . lang('Move') . "'>";
|
echo " <input type='submit' name='move' value='" . lang('Move') . "'>";
|
||||||
echo (support("copy") ? " <input type='submit' name='copy' value='" . lang('Copy') . "'>" : "");
|
echo (support("copy") ? " <input type='submit' name='copy' value='" . lang('Copy') . "'> " . checkbox("overwrite", 1, $_POST["overwrite"], lang('overwrite')) : "");
|
||||||
echo "\n";
|
echo "\n";
|
||||||
}
|
}
|
||||||
echo "<input type='hidden' name='all' value='' onclick=\"selectCount('selected', formChecked(this, /^(tables|views)\[/));" . (support("table") ? " selectCount('selected2', formChecked(this, /^tables\[/) || $tables);" : "") . "\">\n"; // used by trCheck()
|
echo "<input type='hidden' name='all' value=''>"; // used by trCheck()
|
||||||
|
echo script("qsl('input').onclick = function () { selectCount('selected', formChecked(this, /^(tables|views)\[/));" . (support("table") ? " selectCount('selected2', formChecked(this, /^tables\[/) || $tables);" : "") . " }");
|
||||||
echo "<input type='hidden' name='token' value='$token'>\n";
|
echo "<input type='hidden' name='token' value='$token'>\n";
|
||||||
echo "</div></fieldset>\n";
|
echo "</div></fieldset>\n";
|
||||||
|
echo "</div></div>\n";
|
||||||
}
|
}
|
||||||
echo "</form>\n";
|
echo "</form>\n";
|
||||||
echo "<script type='text/javascript'>tableCheck();</script>\n";
|
echo script("tableCheck();");
|
||||||
}
|
}
|
||||||
|
|
||||||
echo '<p class="links"><a href="' . h(ME) . 'create=">' . lang('Create table') . "</a>\n";
|
echo '<p class="links"><a href="' . h(ME) . 'create=">' . lang('Create table') . "</a>\n";
|
||||||
echo (support("view") ? '<a href="' . h(ME) . 'view=">' . lang('Create view') . "</a>\n" : "");
|
echo (support("view") ? '<a href="' . h(ME) . 'view=">' . lang('Create view') . "</a>\n" : "");
|
||||||
echo (support("materializedview") ? '<a href="' . h(ME) . 'view=&materialized=1">' . lang('Create materialized view') . "</a>\n" : "");
|
|
||||||
|
|
||||||
if (support("routine")) {
|
if (support("routine")) {
|
||||||
echo "<h3 id='routines'>" . lang('Routines') . "</h3>\n";
|
echo "<h3 id='routines'>" . lang('Routines') . "</h3>\n";
|
||||||
$routines = routines();
|
$routines = routines();
|
||||||
if ($routines) {
|
if ($routines) {
|
||||||
echo "<table cellspacing='0'>\n";
|
echo "<table>\n";
|
||||||
echo '<thead><tr><th>' . lang('Name') . '<td>' . lang('Type') . '<td>' . lang('Return type') . "<td> </thead>\n";
|
echo '<thead><tr><th>' . lang('Name') . '<td>' . lang('Type') . '<td>' . lang('Return type') . "<td></thead>\n";
|
||||||
odd('');
|
odd('');
|
||||||
foreach ($routines as $row) {
|
foreach ($routines as $row) {
|
||||||
|
$name = ($row["SPECIFIC_NAME"] == $row["ROUTINE_NAME"] ? "" : "&name=" . urlencode($row["ROUTINE_NAME"])); // not computed on the pages to be able to print the header first
|
||||||
echo '<tr' . odd() . '>';
|
echo '<tr' . odd() . '>';
|
||||||
echo '<th><a href="' . h(ME) . ($row["ROUTINE_TYPE"] != "PROCEDURE" ? 'callf=' : 'call=') . urlencode($row["ROUTINE_NAME"]) . '">' . h($row["ROUTINE_NAME"]) . '</a>';
|
echo '<th><a href="' . h(ME . ($row["ROUTINE_TYPE"] != "PROCEDURE" ? 'callf=' : 'call=') . urlencode($row["SPECIFIC_NAME"]) . $name) . '">' . h($row["ROUTINE_NAME"]) . '</a>';
|
||||||
echo '<td>' . h($row["ROUTINE_TYPE"]);
|
echo '<td>' . h($row["ROUTINE_TYPE"]);
|
||||||
echo '<td>' . h($row["DTD_IDENTIFIER"]);
|
echo '<td>' . h($row["DTD_IDENTIFIER"]);
|
||||||
echo '<td><a href="' . h(ME) . ($row["ROUTINE_TYPE"] != "PROCEDURE" ? 'function=' : 'procedure=') . urlencode($row["ROUTINE_NAME"]) . '">' . lang('Alter') . "</a>";
|
echo '<td><a href="' . h(ME . ($row["ROUTINE_TYPE"] != "PROCEDURE" ? 'function=' : 'procedure=') . urlencode($row["SPECIFIC_NAME"]) . $name) . '">' . lang('Alter') . "</a>";
|
||||||
}
|
}
|
||||||
echo "</table>\n";
|
echo "</table>\n";
|
||||||
}
|
}
|
||||||
@@ -173,12 +207,16 @@ if ($adminer->homepage()) {
|
|||||||
echo "<h3 id='sequences'>" . lang('Sequences') . "</h3>\n";
|
echo "<h3 id='sequences'>" . lang('Sequences') . "</h3>\n";
|
||||||
$sequences = get_vals("SELECT sequence_name FROM information_schema.sequences WHERE sequence_schema = current_schema() ORDER BY sequence_name");
|
$sequences = get_vals("SELECT sequence_name FROM information_schema.sequences WHERE sequence_schema = current_schema() ORDER BY sequence_name");
|
||||||
if ($sequences) {
|
if ($sequences) {
|
||||||
echo "<table cellspacing='0'>\n";
|
echo "<table>\n",
|
||||||
echo "<thead><tr><th>" . lang('Name') . "</thead>\n";
|
"<thead><tr><th>", lang('Name'), "</th><td></td></tr></thead>\n";
|
||||||
|
|
||||||
odd('');
|
odd('');
|
||||||
foreach ($sequences as $val) {
|
foreach ($sequences as $val) {
|
||||||
echo "<tr" . odd() . "><th><a href='" . h(ME) . "sequence=" . urlencode($val) . "'>" . h($val) . "</a>\n";
|
echo "<tr", odd(), ">",
|
||||||
|
"<th>", h($val), "</th>",
|
||||||
|
"<td><a href='", h(ME), "sequence=", urlencode($val), "'>", lang('Alter'), "</a></td>\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
echo "</table>\n";
|
echo "</table>\n";
|
||||||
}
|
}
|
||||||
echo "<p class='links'><a href='" . h(ME) . "sequence='>" . lang('Create sequence') . "</a>\n";
|
echo "<p class='links'><a href='" . h(ME) . "sequence='>" . lang('Create sequence') . "</a>\n";
|
||||||
@@ -188,12 +226,16 @@ if ($adminer->homepage()) {
|
|||||||
echo "<h3 id='user-types'>" . lang('User types') . "</h3>\n";
|
echo "<h3 id='user-types'>" . lang('User types') . "</h3>\n";
|
||||||
$user_types = types();
|
$user_types = types();
|
||||||
if ($user_types) {
|
if ($user_types) {
|
||||||
echo "<table cellspacing='0'>\n";
|
echo "<table>\n",
|
||||||
echo "<thead><tr><th>" . lang('Name') . "</thead>\n";
|
"<thead><tr><th>", lang('Name'), "</th><td></td></tr></thead>\n";
|
||||||
|
|
||||||
odd('');
|
odd('');
|
||||||
foreach ($user_types as $val) {
|
foreach ($user_types as $val) {
|
||||||
echo "<tr" . odd() . "><th><a href='" . h(ME) . "type=" . urlencode($val) . "'>" . h($val) . "</a>\n";
|
echo "<tr", odd(), ">",
|
||||||
|
"<th>", h($val), "</th>",
|
||||||
|
"<td><a href='", h(ME), "type=", urlencode($val), "'>", lang('Alter'), "</a></td>\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
echo "</table>\n";
|
echo "</table>\n";
|
||||||
}
|
}
|
||||||
echo "<p class='links'><a href='" . h(ME) . "type='>" . lang('Create type') . "</a>\n";
|
echo "<p class='links'><a href='" . h(ME) . "type='>" . lang('Create type') . "</a>\n";
|
||||||
@@ -203,7 +245,7 @@ if ($adminer->homepage()) {
|
|||||||
echo "<h3 id='events'>" . lang('Events') . "</h3>\n";
|
echo "<h3 id='events'>" . lang('Events') . "</h3>\n";
|
||||||
$rows = get_rows("SHOW EVENTS");
|
$rows = get_rows("SHOW EVENTS");
|
||||||
if ($rows) {
|
if ($rows) {
|
||||||
echo "<table cellspacing='0'>\n";
|
echo "<table>\n";
|
||||||
echo "<thead><tr><th>" . lang('Name') . "<td>" . lang('Schedule') . "<td>" . lang('Start') . "<td>" . lang('End') . "<td></thead>\n";
|
echo "<thead><tr><th>" . lang('Name') . "<td>" . lang('Schedule') . "<td>" . lang('Start') . "<td>" . lang('End') . "<td></thead>\n";
|
||||||
foreach ($rows as $row) {
|
foreach ($rows as $row) {
|
||||||
echo "<tr>";
|
echo "<tr>";
|
||||||
@@ -222,7 +264,7 @@ if ($adminer->homepage()) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ($tables_list) {
|
if ($tables_list) {
|
||||||
echo "<script type='text/javascript'>ajaxSetHtml('" . js_escape(ME) . "script=db');</script>\n";
|
echo script("ajaxSetHtml('" . js_escape(ME) . "script=db');");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
14
adminer/designs.php
Normal file
14
adminer/designs.php
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
<?php
|
||||||
|
function adminer_object() {
|
||||||
|
include_once "../plugins/plugin.php";
|
||||||
|
include_once "../plugins/designs.php";
|
||||||
|
$designs = array();
|
||||||
|
foreach (glob("../designs/*", GLOB_ONLYDIR) as $filename) {
|
||||||
|
$designs["$filename/adminer.css"] = basename($filename);
|
||||||
|
}
|
||||||
|
return new AdminerPlugin(array(
|
||||||
|
new AdminerDesigns($designs),
|
||||||
|
));
|
||||||
|
}
|
||||||
|
|
||||||
|
include "./index.php";
|
||||||
@@ -6,5 +6,5 @@ header("Content-Disposition: attachment; filename=" . friendly_url("$TABLE-" . i
|
|||||||
$select = array(idf_escape($_GET["field"]));
|
$select = array(idf_escape($_GET["field"]));
|
||||||
$result = $driver->select($TABLE, $select, array(where($_GET, $fields)), $select);
|
$result = $driver->select($TABLE, $select, array(where($_GET, $fields)), $select);
|
||||||
$row = ($result ? $result->fetch_row() : array());
|
$row = ($result ? $result->fetch_row() : array());
|
||||||
echo $row[0];
|
echo $driver->value($row[0], $fields[$_GET["field"]]);
|
||||||
exit; // don't output footer
|
exit; // don't output footer
|
||||||
|
|||||||
@@ -1,374 +0,0 @@
|
|||||||
<?php
|
|
||||||
$drivers["elastic"] = "Elasticsearch (beta)";
|
|
||||||
|
|
||||||
if (isset($_GET["elastic"])) {
|
|
||||||
$possible_drivers = array("json");
|
|
||||||
define("DRIVER", "elastic");
|
|
||||||
|
|
||||||
if (function_exists('json_decode')) {
|
|
||||||
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' => json_encode($content),
|
|
||||||
'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) {
|
|
||||||
$this->_url = "http://$username:$password@$server/";
|
|
||||||
$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($this->_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: " . print_r($data, true), format_time($start));
|
|
||||||
}
|
|
||||||
if (!$search) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
$return = array();
|
|
||||||
foreach ($search['hits']['hits'] as $hit) {
|
|
||||||
$row = array();
|
|
||||||
if ($select == array("*")) {
|
|
||||||
$row["_id"] = $hit["_id"];
|
|
||||||
}
|
|
||||||
$fields = $hit['_source'];
|
|
||||||
if ($select != array("*")) {
|
|
||||||
$fields = array();
|
|
||||||
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 connect() {
|
|
||||||
global $adminer;
|
|
||||||
$connection = new Min_DB;
|
|
||||||
$credentials = $adminer->credentials();
|
|
||||||
if ($connection->connect($credentials[0], $credentials[1], $credentials[2])) {
|
|
||||||
return $connection;
|
|
||||||
}
|
|
||||||
return $connection->error;
|
|
||||||
}
|
|
||||||
|
|
||||||
function 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 = $connection->query('_mapping');
|
|
||||||
if ($return) {
|
|
||||||
$return = array_map('count', $return);
|
|
||||||
}
|
|
||||||
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?search_type=count", array(
|
|
||||||
"facets" => array(
|
|
||||||
"count_by_type" => array(
|
|
||||||
"terms" => array(
|
|
||||||
"field" => "_type",
|
|
||||||
)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
), "POST");
|
|
||||||
$return = array();
|
|
||||||
if ($search) {
|
|
||||||
foreach ($search["facets"]["count_by_type"]["terms"] as $table) {
|
|
||||||
$return[$table["term"]] = array(
|
|
||||||
"Name" => $table["term"],
|
|
||||||
"Engine" => "table",
|
|
||||||
"Rows" => $table["count"],
|
|
||||||
);
|
|
||||||
}
|
|
||||||
if ($name != "" && $name == $table["term"]) {
|
|
||||||
return $return[$name];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return $return;
|
|
||||||
}
|
|
||||||
|
|
||||||
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 database
|
|
||||||
* @param string
|
|
||||||
* @return mixed
|
|
||||||
*/
|
|
||||||
function create_database($db) {
|
|
||||||
global $connection;
|
|
||||||
return $connection->rootQuery(urlencode($db), array(), 'PUT');
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Drop databases
|
|
||||||
* @param array
|
|
||||||
* @return mixed
|
|
||||||
*/
|
|
||||||
function drop_databases($databases) {
|
|
||||||
global $connection;
|
|
||||||
return $connection->rootQuery(urlencode(implode(',', $databases)), array(), 'DELETE');
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Drop tables
|
|
||||||
* @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;
|
|
||||||
}
|
|
||||||
|
|
||||||
$jush = "elastic";
|
|
||||||
$operators = array("=", "query");
|
|
||||||
$functions = array();
|
|
||||||
$grouping = array();
|
|
||||||
$edit_functions = array(array("json"));
|
|
||||||
}
|
|
||||||
@@ -1,34 +1,30 @@
|
|||||||
<?php
|
<?php
|
||||||
$drivers["mongo"] = "MongoDB (beta)";
|
$drivers["mongo"] = "MongoDB (alpha)";
|
||||||
|
|
||||||
if (isset($_GET["mongo"])) {
|
if (isset($_GET["mongo"])) {
|
||||||
$possible_drivers = array("mongo");
|
|
||||||
define("DRIVER", "mongo");
|
define("DRIVER", "mongo");
|
||||||
|
|
||||||
if (class_exists('MongoDB')) {
|
if (class_exists('MongoDB')) {
|
||||||
class Min_DB {
|
class Min_DB {
|
||||||
var $extension = "Mongo", $error, $last_id, $_link, $_db;
|
var $extension = "Mongo", $server_info = MongoClient::VERSION, $error, $last_id, $_link, $_db;
|
||||||
|
|
||||||
function connect($server, $username, $password) {
|
function connect($uri, $options) {
|
||||||
global $adminer;
|
|
||||||
$db = $adminer->database();
|
|
||||||
$options = array();
|
|
||||||
if ($username != "") {
|
|
||||||
$options["username"] = $username;
|
|
||||||
$options["password"] = $password;
|
|
||||||
}
|
|
||||||
if ($db != "") {
|
|
||||||
$options["db"] = $db;
|
|
||||||
}
|
|
||||||
try {
|
try {
|
||||||
$this->_link = @new MongoClient("mongodb://$server", $options);
|
$this->_link = new MongoClient($uri, $options);
|
||||||
return true;
|
if ($options["password"] != "") {
|
||||||
} catch (Exception $ex) {
|
$options["password"] = "";
|
||||||
$this->error = $ex->getMessage();
|
try {
|
||||||
return false;
|
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) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -46,7 +42,6 @@ if (isset($_GET["mongo"])) {
|
|||||||
function quote($string) {
|
function quote($string) {
|
||||||
return $string;
|
return $string;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
class Min_Result {
|
class Min_Result {
|
||||||
@@ -60,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
|
||||||
)))));
|
)))));
|
||||||
@@ -109,97 +104,490 @@ if (isset($_GET["mongo"])) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class Min_Driver extends Min_SQL {
|
class Min_Driver extends Min_SQL {
|
||||||
public $primary = "_id";
|
public $primary = "_id";
|
||||||
|
|
||||||
function select($table, $select, $where, $group, $order = array(), $limit = 1, $page = 0, $print = false) {
|
function select($table, $select, $where, $group, $order = array(), $limit = 1, $page = 0, $print = false) {
|
||||||
$select = ($select == array("*")
|
$select = ($select == array("*")
|
||||||
? array()
|
? array()
|
||||||
: array_fill_keys($select, true)
|
: array_fill_keys($select, true)
|
||||||
);
|
);
|
||||||
$sort = array();
|
$sort = array();
|
||||||
foreach ($order as $val) {
|
foreach ($order as $val) {
|
||||||
$val = preg_replace('~ DESC$~', '', $val, 1, $count);
|
$val = preg_replace('~ DESC$~', '', $val, 1, $count);
|
||||||
$sort[$val] = ($count ? -1 : 1);
|
$sort[$val] = ($count ? -1 : 1);
|
||||||
|
}
|
||||||
|
return new Min_Result($this->_conn->_db->selectCollection($table)
|
||||||
|
->find(array(), $select)
|
||||||
|
->sort($sort)
|
||||||
|
->limit($limit != "" ? +$limit : 0)
|
||||||
|
->skip($page * $limit)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
function insert($table, $set) {
|
||||||
|
try {
|
||||||
|
$return = $this->_conn->_db->selectCollection($table)->insert($set);
|
||||||
|
$this->_conn->errno = $return['code'];
|
||||||
|
$this->_conn->error = $return['err'];
|
||||||
|
$this->_conn->last_id = $set['_id'];
|
||||||
|
return !$return['err'];
|
||||||
|
} catch (Exception $ex) {
|
||||||
|
$this->_conn->error = $ex->getMessage();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return new Min_Result($this->_conn->_db->selectCollection($table)
|
|
||||||
->find(array(), $select)
|
|
||||||
->sort($sort)
|
|
||||||
->limit(+$limit)
|
|
||||||
->skip($page * $limit)
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function insert($table, $set) {
|
function get_databases($flush) {
|
||||||
try {
|
global $connection;
|
||||||
$return = $this->_conn->_db->selectCollection($table)->insert($set);
|
$return = array();
|
||||||
$this->_conn->errno = $return['code'];
|
$dbs = $connection->_link->listDBs();
|
||||||
$this->_conn->error = $return['err'];
|
foreach ($dbs['databases'] as $db) {
|
||||||
$this->_conn->last_id = $set['_id'];
|
$return[] = $db['name'];
|
||||||
return !$return['err'];
|
}
|
||||||
} catch (Exception $ex) {
|
return $return;
|
||||||
$this->_conn->error = $ex->getMessage();
|
}
|
||||||
|
|
||||||
|
function count_tables($databases) {
|
||||||
|
global $connection;
|
||||||
|
$return = array();
|
||||||
|
foreach ($databases as $db) {
|
||||||
|
$return[$db] = count($connection->_link->selectDB($db)->getCollectionNames(true));
|
||||||
|
}
|
||||||
|
return $return;
|
||||||
|
}
|
||||||
|
|
||||||
|
function tables_list() {
|
||||||
|
global $connection;
|
||||||
|
return array_fill_keys($connection->_db->getCollectionNames(true), 'table');
|
||||||
|
}
|
||||||
|
|
||||||
|
function drop_databases($databases) {
|
||||||
|
global $connection;
|
||||||
|
foreach ($databases as $db) {
|
||||||
|
$response = $connection->_link->selectDB($db)->drop();
|
||||||
|
if (!$response['ok']) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
function indexes($table, $connection2 = null) {
|
||||||
|
global $connection;
|
||||||
|
$return = array();
|
||||||
|
foreach ($connection->_db->selectCollection($table)->getIndexInfo() as $index) {
|
||||||
|
$descs = array();
|
||||||
|
foreach ($index["key"] as $column => $type) {
|
||||||
|
$descs[] = ($type == -1 ? '1' : null);
|
||||||
|
}
|
||||||
|
$return[$index["name"]] = array(
|
||||||
|
"type" => ($index["name"] == "_id_" ? "PRIMARY" : ($index["unique"] ? "UNIQUE" : "INDEX")),
|
||||||
|
"columns" => array_keys($index["key"]),
|
||||||
|
"lengths" => array(),
|
||||||
|
"descs" => $descs,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
return $return;
|
||||||
|
}
|
||||||
|
|
||||||
|
function fields($table) {
|
||||||
|
return fields_from_edit();
|
||||||
|
}
|
||||||
|
|
||||||
|
function found_rows($table_status, $where) {
|
||||||
|
global $connection;
|
||||||
|
//! don't call count_rows()
|
||||||
|
return $connection->_db->selectCollection($_GET["select"])->count($where);
|
||||||
|
}
|
||||||
|
|
||||||
|
$operators = array("=");
|
||||||
|
$operator_regexp = null;
|
||||||
|
|
||||||
|
} elseif (class_exists('MongoDB\Driver\Manager')) {
|
||||||
|
class Min_DB {
|
||||||
|
var $extension = "MongoDB", $server_info = MONGODB_VERSION, $affected_rows, $error, $last_id;
|
||||||
|
/** @var MongoDB\Driver\Manager */
|
||||||
|
var $_link;
|
||||||
|
var $_db, $_db_name;
|
||||||
|
|
||||||
|
function connect($uri, $options) {
|
||||||
|
$class = 'MongoDB\Driver\Manager';
|
||||||
|
$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) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function select_db($database) {
|
||||||
|
$this->_db_name = $database;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
function quote($string) {
|
||||||
|
return $string;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
|
class Min_Result {
|
||||||
|
var $num_rows, $_rows = array(), $_offset = 0, $_charset = array();
|
||||||
|
|
||||||
|
function __construct($result) {
|
||||||
|
foreach ($result as $item) {
|
||||||
|
$row = array();
|
||||||
|
foreach ($item as $key => $val) {
|
||||||
|
if (is_a($val, 'MongoDB\BSON\Binary')) {
|
||||||
|
$this->_charset[$key] = 63;
|
||||||
|
}
|
||||||
|
$row[$key] =
|
||||||
|
(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\Binary') ? $val->getData() : //! allow downloading
|
||||||
|
(is_a($val, 'MongoDB\BSON\Regex') ? "$val" :
|
||||||
|
(is_object($val) || is_array($val) ? json_encode($val, 256) : // 256 = JSON_UNESCAPED_UNICODE
|
||||||
|
$val // MongoMinKey, MongoMaxKey
|
||||||
|
)))));
|
||||||
|
}
|
||||||
|
$this->_rows[] = $row;
|
||||||
|
foreach ($row as $key => $val) {
|
||||||
|
if (!isset($this->_rows[0][$key])) {
|
||||||
|
$this->_rows[0][$key] = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$this->num_rows = count($this->_rows);
|
||||||
|
}
|
||||||
|
|
||||||
|
function fetch_assoc() {
|
||||||
|
$row = current($this->_rows);
|
||||||
|
if (!$row) {
|
||||||
|
return $row;
|
||||||
|
}
|
||||||
|
$return = array();
|
||||||
|
foreach ($this->_rows[0] as $key => $val) {
|
||||||
|
$return[$key] = $row[$key];
|
||||||
|
}
|
||||||
|
next($this->_rows);
|
||||||
|
return $return;
|
||||||
|
}
|
||||||
|
|
||||||
|
function fetch_row() {
|
||||||
|
$return = $this->fetch_assoc();
|
||||||
|
if (!$return) {
|
||||||
|
return $return;
|
||||||
|
}
|
||||||
|
return array_values($return);
|
||||||
|
}
|
||||||
|
|
||||||
|
function fetch_field() {
|
||||||
|
$keys = array_keys($this->_rows[0]);
|
||||||
|
$name = $keys[$this->_offset++];
|
||||||
|
return (object) array(
|
||||||
|
'name' => $name,
|
||||||
|
'charsetnr' => $this->_charset[$name],
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
function connect() {
|
|
||||||
global $adminer;
|
|
||||||
$connection = new Min_DB;
|
|
||||||
$credentials = $adminer->credentials();
|
|
||||||
if ($connection->connect($credentials[0], $credentials[1], $credentials[2])) {
|
|
||||||
return $connection;
|
|
||||||
}
|
}
|
||||||
return $connection->error;
|
|
||||||
}
|
|
||||||
|
|
||||||
function error() {
|
|
||||||
global $connection;
|
|
||||||
return h($connection->error);
|
|
||||||
}
|
|
||||||
|
|
||||||
function logged_user() {
|
class Min_Driver extends Min_SQL {
|
||||||
global $adminer;
|
public $primary = "_id";
|
||||||
$credentials = $adminer->credentials();
|
|
||||||
return $credentials[1];
|
|
||||||
}
|
|
||||||
|
|
||||||
function get_databases($flush) {
|
function select($table, $select, $where, $group, $order = array(), $limit = 1, $page = 0, $print = false) {
|
||||||
global $connection;
|
global $connection;
|
||||||
$return = array();
|
$select = ($select == array("*")
|
||||||
$dbs = $connection->_link->listDBs();
|
? array()
|
||||||
foreach ($dbs['databases'] as $db) {
|
: array_fill_keys($select, 1)
|
||||||
$return[] = $db['name'];
|
);
|
||||||
|
if (count($select) && !isset($select['_id'])) {
|
||||||
|
$select['_id'] = 0;
|
||||||
|
}
|
||||||
|
$where = where_to_query($where);
|
||||||
|
$sort = array();
|
||||||
|
foreach ($order as $val) {
|
||||||
|
$val = preg_replace('~ DESC$~', '', $val, 1, $count);
|
||||||
|
$sort[$val] = ($count ? -1 : 1);
|
||||||
|
}
|
||||||
|
if (isset($_GET['limit']) && is_numeric($_GET['limit']) && $_GET['limit'] > 0) {
|
||||||
|
$limit = $_GET['limit'];
|
||||||
|
}
|
||||||
|
$limit = min(200, max(1, (int) $limit));
|
||||||
|
$skip = $page * $limit;
|
||||||
|
$class = 'MongoDB\Driver\Query';
|
||||||
|
try {
|
||||||
|
return new Min_Result($connection->_link->executeQuery("$connection->_db_name.$table", new $class($where, array('projection' => $select, 'limit' => $limit, 'skip' => $skip, 'sort' => $sort))));
|
||||||
|
} catch (Exception $e) {
|
||||||
|
$connection->error = $e->getMessage();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function update($table, $set, $queryWhere, $limit = 0, $separator = "\n") {
|
||||||
|
global $connection;
|
||||||
|
$db = $connection->_db_name;
|
||||||
|
$where = sql_query_where_parser($queryWhere);
|
||||||
|
$class = 'MongoDB\Driver\BulkWrite';
|
||||||
|
$bulk = new $class(array());
|
||||||
|
if (isset($set['_id'])) {
|
||||||
|
unset($set['_id']);
|
||||||
|
}
|
||||||
|
$removeFields = array();
|
||||||
|
foreach ($set as $key => $value) {
|
||||||
|
if ($value == 'NULL') {
|
||||||
|
$removeFields[$key] = 1;
|
||||||
|
unset($set[$key]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$update = array('$set' => $set);
|
||||||
|
if (count($removeFields)) {
|
||||||
|
$update['$unset'] = $removeFields;
|
||||||
|
}
|
||||||
|
$bulk->update($where, $update, array('upsert' => false));
|
||||||
|
return $connection->executeBulkWrite("$db.$table", $bulk, 'getModifiedCount');
|
||||||
|
}
|
||||||
|
|
||||||
|
function delete($table, $queryWhere, $limit = 0) {
|
||||||
|
global $connection;
|
||||||
|
$db = $connection->_db_name;
|
||||||
|
$where = sql_query_where_parser($queryWhere);
|
||||||
|
$class = 'MongoDB\Driver\BulkWrite';
|
||||||
|
$bulk = new $class(array());
|
||||||
|
$bulk->delete($where, array('limit' => $limit));
|
||||||
|
return $connection->executeBulkWrite("$db.$table", $bulk, 'getDeletedCount');
|
||||||
|
}
|
||||||
|
|
||||||
|
function insert($table, $set) {
|
||||||
|
global $connection;
|
||||||
|
$db = $connection->_db_name;
|
||||||
|
$class = 'MongoDB\Driver\BulkWrite';
|
||||||
|
$bulk = new $class(array());
|
||||||
|
if ($set['_id'] == '') {
|
||||||
|
unset($set['_id']);
|
||||||
|
}
|
||||||
|
$bulk->insert($set);
|
||||||
|
return $connection->executeBulkWrite("$db.$table", $bulk, 'getInsertedCount');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return $return;
|
|
||||||
}
|
|
||||||
|
|
||||||
function collations() {
|
function get_databases($flush) {
|
||||||
return array();
|
global $connection;
|
||||||
}
|
$return = array();
|
||||||
|
foreach ($connection->executeCommand('admin', array('listDatabases' => 1)) as $dbs) {
|
||||||
function db_collation($db, $collations) {
|
foreach ($dbs->databases as $db) {
|
||||||
}
|
$return[] = $db->name;
|
||||||
|
}
|
||||||
function count_tables($databases) {
|
}
|
||||||
global $connection;
|
return $return;
|
||||||
$return = array();
|
|
||||||
foreach ($databases as $db) {
|
|
||||||
$return[$db] = count($connection->_link->selectDB($db)->getCollectionNames(true));
|
|
||||||
}
|
}
|
||||||
return $return;
|
|
||||||
|
function count_tables($databases) {
|
||||||
|
$return = array();
|
||||||
|
return $return;
|
||||||
|
}
|
||||||
|
|
||||||
|
function tables_list() {
|
||||||
|
global $connection;
|
||||||
|
$collections = array();
|
||||||
|
foreach ($connection->executeCommand($connection->_db_name, array('listCollections' => 1)) as $result) {
|
||||||
|
$collections[$result->name] = 'table';
|
||||||
|
}
|
||||||
|
return $collections;
|
||||||
|
}
|
||||||
|
|
||||||
|
function drop_databases($databases) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
function indexes($table, $connection2 = null) {
|
||||||
|
global $connection;
|
||||||
|
$return = array();
|
||||||
|
foreach ($connection->executeCommand($connection->_db_name, array('listIndexes' => $table)) as $index) {
|
||||||
|
$descs = array();
|
||||||
|
$columns = array();
|
||||||
|
foreach (get_object_vars($index->key) as $column => $type) {
|
||||||
|
$descs[] = ($type == -1 ? '1' : null);
|
||||||
|
$columns[] = $column;
|
||||||
|
}
|
||||||
|
$return[$index->name] = array(
|
||||||
|
"type" => ($index->name == "_id_" ? "PRIMARY" : (isset($index->unique) ? "UNIQUE" : "INDEX")),
|
||||||
|
"columns" => $columns,
|
||||||
|
"lengths" => array(),
|
||||||
|
"descs" => $descs,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
return $return;
|
||||||
|
}
|
||||||
|
|
||||||
|
function fields($table) {
|
||||||
|
global $driver;
|
||||||
|
$fields = fields_from_edit();
|
||||||
|
if (!$fields) {
|
||||||
|
$result = $driver->select($table, array("*"), null, null, array(), 10);
|
||||||
|
if ($result) {
|
||||||
|
while ($row = $result->fetch_assoc()) {
|
||||||
|
foreach ($row as $key => $val) {
|
||||||
|
$row[$key] = null;
|
||||||
|
$fields[$key] = array(
|
||||||
|
"field" => $key,
|
||||||
|
"type" => "string",
|
||||||
|
"null" => ($key != $driver->primary),
|
||||||
|
"auto_increment" => ($key == $driver->primary),
|
||||||
|
"privileges" => array(
|
||||||
|
"insert" => 1,
|
||||||
|
"select" => 1,
|
||||||
|
"update" => 1,
|
||||||
|
"where" => 1,
|
||||||
|
"order" => 1,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return $fields;
|
||||||
|
}
|
||||||
|
|
||||||
|
function found_rows($table_status, $where) {
|
||||||
|
global $connection;
|
||||||
|
$where = where_to_query($where);
|
||||||
|
$toArray = $connection->executeCommand($connection->_db_name, array('count' => $table_status['Name'], 'query' => $where))->toArray();
|
||||||
|
return $toArray[0]->n;
|
||||||
|
}
|
||||||
|
|
||||||
|
function sql_query_where_parser($queryWhere) {
|
||||||
|
$queryWhere = preg_replace('~^\sWHERE \(?\(?(.+?)\)?\)?$~', '\1', $queryWhere);
|
||||||
|
$wheres = explode(' AND ', $queryWhere);
|
||||||
|
$wheresOr = explode(') OR (', $queryWhere);
|
||||||
|
$where = array();
|
||||||
|
foreach ($wheres as $whereStr) {
|
||||||
|
$where[] = trim($whereStr);
|
||||||
|
}
|
||||||
|
if (count($wheresOr) == 1) {
|
||||||
|
$wheresOr = array();
|
||||||
|
} elseif (count($wheresOr) > 1) {
|
||||||
|
$where = array();
|
||||||
|
}
|
||||||
|
return where_to_query($where, $wheresOr);
|
||||||
|
}
|
||||||
|
|
||||||
|
function where_to_query($whereAnd = array(), $whereOr = array()) {
|
||||||
|
global $adminer;
|
||||||
|
$data = array();
|
||||||
|
foreach (array('and' => $whereAnd, 'or' => $whereOr) as $type => $where) {
|
||||||
|
if (is_array($where)) {
|
||||||
|
foreach ($where as $expression) {
|
||||||
|
list($col, $op, $val) = explode(" ", $expression, 3);
|
||||||
|
if ($col == "_id" && preg_match('~^(MongoDB\\\\BSON\\\\ObjectID)\("(.+)"\)$~', $val, $match)) {
|
||||||
|
list(, $class, $val) = $match;
|
||||||
|
$val = new $class($val);
|
||||||
|
}
|
||||||
|
if (!in_array($op, $adminer->operators)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (preg_match('~^\(f\)(.+)~', $op, $match)) {
|
||||||
|
$val = (float) $val;
|
||||||
|
$op = $match[1];
|
||||||
|
} elseif (preg_match('~^\(date\)(.+)~', $op, $match)) {
|
||||||
|
$dateTime = new DateTime($val);
|
||||||
|
$class = 'MongoDB\BSON\UTCDatetime';
|
||||||
|
$val = new $class($dateTime->getTimestamp() * 1000);
|
||||||
|
$op = $match[1];
|
||||||
|
}
|
||||||
|
switch ($op) {
|
||||||
|
case '=':
|
||||||
|
$op = '$eq';
|
||||||
|
break;
|
||||||
|
case '!=':
|
||||||
|
$op = '$ne';
|
||||||
|
break;
|
||||||
|
case '>':
|
||||||
|
$op = '$gt';
|
||||||
|
break;
|
||||||
|
case '<':
|
||||||
|
$op = '$lt';
|
||||||
|
break;
|
||||||
|
case '>=':
|
||||||
|
$op = '$gte';
|
||||||
|
break;
|
||||||
|
case '<=':
|
||||||
|
$op = '$lte';
|
||||||
|
break;
|
||||||
|
case 'regex':
|
||||||
|
$op = '$regex';
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
continue 2;
|
||||||
|
}
|
||||||
|
if ($type == 'and') {
|
||||||
|
$data['$and'][] = array($col => array($op => $val));
|
||||||
|
} elseif ($type == 'or') {
|
||||||
|
$data['$or'][] = array($col => array($op => $val));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return $data;
|
||||||
|
}
|
||||||
|
|
||||||
|
$operators = array(
|
||||||
|
"=",
|
||||||
|
"!=",
|
||||||
|
">",
|
||||||
|
"<",
|
||||||
|
">=",
|
||||||
|
"<=",
|
||||||
|
"regex",
|
||||||
|
"(f)=",
|
||||||
|
"(f)!=",
|
||||||
|
"(f)>",
|
||||||
|
"(f)<",
|
||||||
|
"(f)>=",
|
||||||
|
"(f)<=",
|
||||||
|
"(date)=",
|
||||||
|
"(date)!=",
|
||||||
|
"(date)>",
|
||||||
|
"(date)<",
|
||||||
|
"(date)>=",
|
||||||
|
"(date)<=",
|
||||||
|
);
|
||||||
|
|
||||||
|
$operator_regexp = 'regex';
|
||||||
}
|
}
|
||||||
|
|
||||||
function tables_list() {
|
function table($idf) {
|
||||||
global $connection;
|
return $idf;
|
||||||
return array_fill_keys($connection->_db->getCollectionNames(true), 'table');
|
}
|
||||||
|
|
||||||
|
function idf_escape($idf) {
|
||||||
|
return $idf;
|
||||||
}
|
}
|
||||||
|
|
||||||
function table_status($name = "", $fast = false) {
|
function table_status($name = "", $fast = false) {
|
||||||
@@ -213,43 +601,90 @@ if (isset($_GET["mongo"])) {
|
|||||||
return $return;
|
return $return;
|
||||||
}
|
}
|
||||||
|
|
||||||
function information_schema() {
|
function create_database($db, $collation) {
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
function is_view($table_status) {
|
function last_id() {
|
||||||
}
|
|
||||||
|
|
||||||
function drop_databases($databases) {
|
|
||||||
global $connection;
|
global $connection;
|
||||||
foreach ($databases as $db) {
|
return $connection->last_id;
|
||||||
$response = $connection->_link->selectDB($db)->drop();
|
}
|
||||||
if (!$response['ok']) {
|
|
||||||
|
function error() {
|
||||||
|
global $connection;
|
||||||
|
return h($connection->error);
|
||||||
|
}
|
||||||
|
|
||||||
|
function collations() {
|
||||||
|
return array();
|
||||||
|
}
|
||||||
|
|
||||||
|
function logged_user() {
|
||||||
|
global $adminer;
|
||||||
|
$credentials = $adminer->credentials();
|
||||||
|
return $credentials[1];
|
||||||
|
}
|
||||||
|
|
||||||
|
function connect() {
|
||||||
|
global $adminer;
|
||||||
|
$connection = new Min_DB;
|
||||||
|
list($server, $username, $password) = $adminer->credentials();
|
||||||
|
$options = array();
|
||||||
|
if ($username . $password != "") {
|
||||||
|
$options["username"] = $username;
|
||||||
|
$options["password"] = $password;
|
||||||
|
}
|
||||||
|
$db = $adminer->database();
|
||||||
|
if ($db != "") {
|
||||||
|
$options["db"] = $db;
|
||||||
|
}
|
||||||
|
if (($auth_source = getenv("MONGO_AUTH_SOURCE"))) {
|
||||||
|
$options["authSource"] = $auth_source;
|
||||||
|
}
|
||||||
|
$connection->connect("mongodb://$server", $options);
|
||||||
|
if ($connection->error) {
|
||||||
|
return $connection->error;
|
||||||
|
}
|
||||||
|
return $connection;
|
||||||
|
}
|
||||||
|
|
||||||
|
function alter_indexes($table, $alter) {
|
||||||
|
global $connection;
|
||||||
|
foreach ($alter as $val) {
|
||||||
|
list($type, $name, $set) = $val;
|
||||||
|
if ($set == "DROP") {
|
||||||
|
$return = $connection->_db->command(array("deleteIndexes" => $table, "index" => $name));
|
||||||
|
} else {
|
||||||
|
$columns = array();
|
||||||
|
foreach ($set as $column) {
|
||||||
|
$column = preg_replace('~ DESC$~', '', $column, 1, $count);
|
||||||
|
$columns[$column] = ($count ? -1 : 1);
|
||||||
|
}
|
||||||
|
$return = $connection->_db->selectCollection($table)->ensureIndex($columns, array(
|
||||||
|
"unique" => ($type == "UNIQUE"),
|
||||||
|
"name" => $name,
|
||||||
|
//! "sparse"
|
||||||
|
));
|
||||||
|
}
|
||||||
|
if ($return['errmsg']) {
|
||||||
|
$connection->error = $return['errmsg'];
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
function indexes($table, $connection2 = null) {
|
function support($feature) {
|
||||||
global $connection;
|
return preg_match("~database|indexes|descidx~", $feature);
|
||||||
$return = array();
|
|
||||||
foreach ($connection->_db->selectCollection($table)->getIndexInfo() as $index) {
|
|
||||||
$descs = array();
|
|
||||||
foreach ($index["key"] as $column => $type) {
|
|
||||||
$descs[] = ($type == -1 ? '1' : null);
|
|
||||||
}
|
|
||||||
$return[$index["name"]] = array(
|
|
||||||
"type" => ($index["name"] == "_id_" ? "PRIMARY" : ($index["unique"] ? "UNIQUE" : "INDEX")),
|
|
||||||
"columns" => array_keys($index["key"]),
|
|
||||||
"lengths" => array(),
|
|
||||||
"descs" => $descs,
|
|
||||||
);
|
|
||||||
}
|
|
||||||
return $return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function fields($table) {
|
function db_collation($db, $collations) {
|
||||||
return fields_from_edit();
|
}
|
||||||
|
|
||||||
|
function information_schema() {
|
||||||
|
}
|
||||||
|
|
||||||
|
function is_view($table_status) {
|
||||||
}
|
}
|
||||||
|
|
||||||
function convert_field($field) {
|
function convert_field($field) {
|
||||||
@@ -270,12 +705,6 @@ if (isset($_GET["mongo"])) {
|
|||||||
return array();
|
return array();
|
||||||
}
|
}
|
||||||
|
|
||||||
function found_rows($table_status, $where) {
|
|
||||||
global $connection;
|
|
||||||
//! don't call count_rows()
|
|
||||||
return $connection->_db->selectCollection($_GET["select"])->count($where);
|
|
||||||
}
|
|
||||||
|
|
||||||
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) {
|
||||||
global $connection;
|
global $connection;
|
||||||
if ($table == "") {
|
if ($table == "") {
|
||||||
@@ -306,52 +735,17 @@ if (isset($_GET["mongo"])) {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
function alter_indexes($table, $alter) {
|
function driver_config() {
|
||||||
global $connection;
|
global $operators, $operator_regexp;
|
||||||
foreach ($alter as $val) {
|
return array(
|
||||||
list($type, $name, $set) = $val;
|
'possible_drivers' => array("mongo", "mongodb"),
|
||||||
if ($set == "DROP") {
|
'jush' => "mongo",
|
||||||
$return = $connection->_db->command(array("deleteIndexes" => $table, "index" => $name));
|
'operators' => $operators,
|
||||||
} else {
|
'operator_like' => "LIKE %%", // TODO: LIKE operator is not listed in operators.
|
||||||
$columns = array();
|
'operator_regexp' => $operator_regexp,
|
||||||
foreach ($set as $column) {
|
'functions' => array(),
|
||||||
$column = preg_replace('~ DESC$~', '', $column, 1, $count);
|
'grouping' => array(),
|
||||||
$columns[$column] = ($count ? -1 : 1);
|
'edit_functions' => array(array("json")),
|
||||||
}
|
);
|
||||||
$return = $connection->_db->selectCollection($table)->ensureIndex($columns, array(
|
|
||||||
"unique" => ($type == "UNIQUE"),
|
|
||||||
"name" => $name,
|
|
||||||
//! "sparse"
|
|
||||||
));
|
|
||||||
}
|
|
||||||
if ($return['errmsg']) {
|
|
||||||
$connection->error = $return['errmsg'];
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function last_id() {
|
|
||||||
global $connection;
|
|
||||||
return $connection->last_id;
|
|
||||||
}
|
|
||||||
|
|
||||||
function table($idf) {
|
|
||||||
return $idf;
|
|
||||||
}
|
|
||||||
|
|
||||||
function idf_escape($idf) {
|
|
||||||
return $idf;
|
|
||||||
}
|
|
||||||
|
|
||||||
function support($feature) {
|
|
||||||
return preg_match("~database|indexes~", $feature);
|
|
||||||
}
|
|
||||||
|
|
||||||
$jush = "mongo";
|
|
||||||
$operators = array("=");
|
|
||||||
$functions = array();
|
|
||||||
$grouping = array();
|
|
||||||
$edit_functions = array(array("json"));
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,10 +5,9 @@
|
|||||||
* @author Jakub Vrana
|
* @author Jakub Vrana
|
||||||
*/
|
*/
|
||||||
|
|
||||||
$drivers["mssql"] = "MS SQL";
|
$drivers["mssql"] = "MS SQL (beta)";
|
||||||
|
|
||||||
if (isset($_GET["mssql"])) {
|
if (isset($_GET["mssql"])) {
|
||||||
$possible_drivers = array("SQLSRV", "MSSQL");
|
|
||||||
define("DRIVER", "mssql");
|
define("DRIVER", "mssql");
|
||||||
if (extension_loaded("sqlsrv")) {
|
if (extension_loaded("sqlsrv")) {
|
||||||
class Min_DB {
|
class Min_DB {
|
||||||
@@ -24,7 +23,13 @@ if (isset($_GET["mssql"])) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function connect($server, $username, $password) {
|
function connect($server, $username, $password) {
|
||||||
$this->_link = @sqlsrv_connect($server, array("UID" => $username, "PWD" => $password, "CharacterSet" => "UTF-8"));
|
global $adminer;
|
||||||
|
$db = $adminer->database();
|
||||||
|
$connection_info = array("UID" => $username, "PWD" => $password, "CharacterSet" => "UTF-8");
|
||||||
|
if ($db != "") {
|
||||||
|
$connection_info["Database"] = $db;
|
||||||
|
}
|
||||||
|
$this->_link = @sqlsrv_connect(preg_replace('~:~', ',', $server), $connection_info);
|
||||||
if ($this->_link) {
|
if ($this->_link) {
|
||||||
$info = sqlsrv_server_info($this->_link);
|
$info = sqlsrv_server_info($this->_link);
|
||||||
$this->server_info = $info['SQLServerVersion'];
|
$this->server_info = $info['SQLServerVersion'];
|
||||||
@@ -35,7 +40,8 @@ if (isset($_GET["mssql"])) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function quote($string) {
|
function quote($string) {
|
||||||
return "'" . str_replace("'", "''", $string) . "'";
|
$unicode = strlen($string) != strlen(utf8_decode($string));
|
||||||
|
return ($unicode ? "N" : "") . "'" . str_replace("'", "''", $string) . "'";
|
||||||
}
|
}
|
||||||
|
|
||||||
function select_db($database) {
|
function select_db($database) {
|
||||||
@@ -109,11 +115,11 @@ if (isset($_GET["mssql"])) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function fetch_assoc() {
|
function fetch_assoc() {
|
||||||
return $this->_convert(sqlsrv_fetch_array($this->_result, SQLSRV_FETCH_ASSOC, SQLSRV_SCROLL_NEXT));
|
return $this->_convert(sqlsrv_fetch_array($this->_result, SQLSRV_FETCH_ASSOC));
|
||||||
}
|
}
|
||||||
|
|
||||||
function fetch_row() {
|
function fetch_row() {
|
||||||
return $this->_convert(sqlsrv_fetch_array($this->_result, SQLSRV_FETCH_NUMERIC, SQLSRV_SCROLL_NEXT));
|
return $this->_convert(sqlsrv_fetch_array($this->_result, SQLSRV_FETCH_NUMERIC));
|
||||||
}
|
}
|
||||||
|
|
||||||
function fetch_field() {
|
function fetch_field() {
|
||||||
@@ -147,8 +153,10 @@ if (isset($_GET["mssql"])) {
|
|||||||
$this->_link = @mssql_connect($server, $username, $password);
|
$this->_link = @mssql_connect($server, $username, $password);
|
||||||
if ($this->_link) {
|
if ($this->_link) {
|
||||||
$result = $this->query("SELECT SERVERPROPERTY('ProductLevel'), SERVERPROPERTY('Edition')");
|
$result = $this->query("SELECT SERVERPROPERTY('ProductLevel'), SERVERPROPERTY('Edition')");
|
||||||
$row = $result->fetch_row();
|
if ($result) {
|
||||||
$this->server_info = $this->result("sp_server_info 2", 2) . " [$row[0]] $row[1]";
|
$row = $result->fetch_row();
|
||||||
|
$this->server_info = $this->result("sp_server_info 2", 2) . " [$row[0]] $row[1]";
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
$this->error = mssql_get_last_message();
|
$this->error = mssql_get_last_message();
|
||||||
}
|
}
|
||||||
@@ -156,7 +164,8 @@ if (isset($_GET["mssql"])) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function quote($string) {
|
function quote($string) {
|
||||||
return "'" . str_replace("'", "''", $string) . "'";
|
$unicode = strlen($string) != strlen(utf8_decode($string));
|
||||||
|
return ($unicode ? "N" : "") . "'" . str_replace("'", "''", $string) . "'";
|
||||||
}
|
}
|
||||||
|
|
||||||
function select_db($database) {
|
function select_db($database) {
|
||||||
@@ -164,7 +173,7 @@ if (isset($_GET["mssql"])) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function query($query, $unbuffered = false) {
|
function query($query, $unbuffered = false) {
|
||||||
$result = mssql_query($query, $this->_link); //! $unbuffered
|
$result = @mssql_query($query, $this->_link); //! $unbuffered
|
||||||
$this->error = "";
|
$this->error = "";
|
||||||
if (!$result) {
|
if (!$result) {
|
||||||
$this->error = mssql_get_last_message();
|
$this->error = mssql_get_last_message();
|
||||||
@@ -186,7 +195,7 @@ if (isset($_GET["mssql"])) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function next_result() {
|
function next_result() {
|
||||||
return mssql_next_result($this->_result);
|
return mssql_next_result($this->_result->_result);
|
||||||
}
|
}
|
||||||
|
|
||||||
function result($query, $field = 0) {
|
function result($query, $field = 0) {
|
||||||
@@ -234,8 +243,21 @@ if (isset($_GET["mssql"])) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
} elseif (extension_loaded("pdo_dblib")) {
|
||||||
|
class Min_DB extends Min_PDO {
|
||||||
|
var $extension = "PDO_DBLIB";
|
||||||
|
|
||||||
|
function connect($server, $username, $password) {
|
||||||
|
$this->dsn("dblib:charset=utf8;host=" . str_replace(":", ";unix_socket=", preg_replace('~:(\d)~', ';port=\1', $server)), $username, $password);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
function select_db($database) {
|
||||||
|
// database selection is separated from the connection so dbname in DSN can't be used
|
||||||
|
return $this->query("USE " . idf_escape($database));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
class Min_Driver extends Min_SQL {
|
class Min_Driver extends Min_SQL {
|
||||||
@@ -288,20 +310,20 @@ if (isset($_GET["mssql"])) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function get_databases() {
|
function get_databases() {
|
||||||
return get_vals("EXEC sp_databases");
|
return get_vals("SELECT name FROM sys.databases WHERE name NOT IN ('master', 'tempdb', 'model', 'msdb')");
|
||||||
}
|
}
|
||||||
|
|
||||||
function limit($query, $where, $limit, $offset = 0, $separator = " ") {
|
function limit($query, $where, $limit, $offset = 0, $separator = " ") {
|
||||||
return ($limit !== null ? " TOP (" . ($limit + $offset) . ")" : "") . " $query$where"; // seek later
|
return ($limit !== null ? " TOP (" . ($limit + $offset) . ")" : "") . " $query$where"; // seek later
|
||||||
}
|
}
|
||||||
|
|
||||||
function limit1($query, $where) {
|
function limit1($table, $query, $where, $separator = "\n") {
|
||||||
return limit($query, $where, 1);
|
return limit($query, $where, 1, 0, $separator);
|
||||||
}
|
}
|
||||||
|
|
||||||
function db_collation($db, $collations) {
|
function db_collation($db, $collations) {
|
||||||
global $connection;
|
global $connection;
|
||||||
return $connection->result("SELECT collation_name FROM sys.databases WHERE name = " . q($db));
|
return $connection->result("SELECT collation_name FROM sys.databases WHERE name = " . q($db));
|
||||||
}
|
}
|
||||||
|
|
||||||
function engines() {
|
function engines() {
|
||||||
@@ -329,7 +351,7 @@ if (isset($_GET["mssql"])) {
|
|||||||
|
|
||||||
function table_status($name = "") {
|
function table_status($name = "") {
|
||||||
$return = array();
|
$return = array();
|
||||||
foreach (get_rows("SELECT name AS Name, type_desc AS Engine FROM sys.all_objects WHERE schema_id = SCHEMA_ID(" . q(get_schema()) . ") AND type IN ('S', 'U', 'V') " . ($name != "" ? "AND name = " . q($name) : "ORDER BY name")) as $row) {
|
foreach (get_rows("SELECT ao.name AS Name, ao.type_desc AS Engine, (SELECT value FROM fn_listextendedproperty(default, 'SCHEMA', schema_name(schema_id), 'TABLE', ao.name, null, null)) AS Comment FROM sys.all_objects AS ao WHERE schema_id = SCHEMA_ID(" . q(get_schema()) . ") AND type IN ('S', 'U', 'V') " . ($name != "" ? "AND name = " . q($name) : "ORDER BY name")) as $row) {
|
||||||
if ($name != "") {
|
if ($name != "") {
|
||||||
return $row;
|
return $row;
|
||||||
}
|
}
|
||||||
@@ -347,8 +369,9 @@ if (isset($_GET["mssql"])) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function fields($table) {
|
function fields($table) {
|
||||||
|
$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.*, t.name type, d.definition [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
|
||||||
JOIN sys.all_objects o ON c.object_id = o.object_id
|
JOIN sys.all_objects o ON c.object_id = o.object_id
|
||||||
JOIN sys.types t ON c.user_type_id = t.user_type_id
|
JOIN sys.types t ON c.user_type_id = t.user_type_id
|
||||||
@@ -366,8 +389,9 @@ 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"]],
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
return $return;
|
return $return;
|
||||||
@@ -393,7 +417,7 @@ WHERE OBJECT_NAME(i.object_id) = " . q($table)
|
|||||||
|
|
||||||
function view($name) {
|
function view($name) {
|
||||||
global $connection;
|
global $connection;
|
||||||
return array("select" => preg_replace('~^(?:[^[]|\\[[^]]*])*\\s+AS\\s+~isU', '', $connection->result("SELECT VIEW_DEFINITION FROM INFORMATION_SCHEMA.VIEWS WHERE TABLE_SCHEMA = SCHEMA_NAME() AND TABLE_NAME = " . q($name))));
|
return array("select" => preg_replace('~^(?:[^[]|\[[^]]*])*\s+AS\s+~isU', '', $connection->result("SELECT VIEW_DEFINITION FROM INFORMATION_SCHEMA.VIEWS WHERE TABLE_SCHEMA = SCHEMA_NAME() AND TABLE_NAME = " . q($name))));
|
||||||
}
|
}
|
||||||
|
|
||||||
function collations() {
|
function collations() {
|
||||||
@@ -410,7 +434,7 @@ WHERE OBJECT_NAME(i.object_id) = " . q($table)
|
|||||||
|
|
||||||
function error() {
|
function error() {
|
||||||
global $connection;
|
global $connection;
|
||||||
return nl_br(h(preg_replace('~^(\\[[^]]*])+~m', '', $connection->error)));
|
return nl2br(h(preg_replace('~^(\[[^]]*])+~m', '', $connection->error)));
|
||||||
}
|
}
|
||||||
|
|
||||||
function create_database($db, $collation) {
|
function create_database($db, $collation) {
|
||||||
@@ -435,13 +459,16 @@ WHERE OBJECT_NAME(i.object_id) = " . q($table)
|
|||||||
|
|
||||||
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 = array();
|
$alter = array();
|
||||||
|
$comments = array();
|
||||||
foreach ($fields as $field) {
|
foreach ($fields as $field) {
|
||||||
$column = idf_escape($field[0]);
|
$column = idf_escape($field[0]);
|
||||||
$val = $field[1];
|
$val = $field[1];
|
||||||
if (!$val) {
|
if (!$val) {
|
||||||
$alter["DROP"][] = " COLUMN $column";
|
$alter["DROP"][] = " COLUMN $column";
|
||||||
} else {
|
} else {
|
||||||
$val[1] = preg_replace("~( COLLATE )'(\\w+)'~", "\\1\\2", $val[1]);
|
$val[1] = preg_replace("~( COLLATE )'(\\w+)'~", '\1\2', $val[1]);
|
||||||
|
$comments[$field[0]] = $val[5];
|
||||||
|
unset($val[5]);
|
||||||
if ($field[0] == "") {
|
if ($field[0] == "") {
|
||||||
$alter["ADD"][] = "\n " . implode("", $val) . ($table == "" ? substr($foreign[$val[0]], 16 + strlen($val[0])) : ""); // 16 - strlen(" FOREIGN KEY ()")
|
$alter["ADD"][] = "\n " . implode("", $val) . ($table == "" ? substr($foreign[$val[0]], 16 + strlen($val[0])) : ""); // 16 - strlen(" FOREIGN KEY ()")
|
||||||
} else {
|
} else {
|
||||||
@@ -467,6 +494,11 @@ WHERE OBJECT_NAME(i.object_id) = " . q($table)
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
foreach ($comments as $key => $val) {
|
||||||
|
$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_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;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -511,6 +543,7 @@ WHERE OBJECT_NAME(i.object_id) = " . q($table)
|
|||||||
$return = array();
|
$return = array();
|
||||||
foreach (get_rows("EXEC sp_fkeys @fktable_name = " . q($table)) as $row) {
|
foreach (get_rows("EXEC sp_fkeys @fktable_name = " . q($table)) as $row) {
|
||||||
$foreign_key = &$return[$row["FK_NAME"]];
|
$foreign_key = &$return[$row["FK_NAME"]];
|
||||||
|
$foreign_key["db"] = $row["PKTABLE_QUALIFIER"];
|
||||||
$foreign_key["table"] = $row["PKTABLE_NAME"];
|
$foreign_key["table"] = $row["PKTABLE_NAME"];
|
||||||
$foreign_key["source"][] = $row["FKCOLUMN_NAME"];
|
$foreign_key["source"][] = $row["FKCOLUMN_NAME"];
|
||||||
$foreign_key["target"][] = $row["PKCOLUMN_NAME"];
|
$foreign_key["target"][] = $row["PKCOLUMN_NAME"];
|
||||||
@@ -548,7 +581,7 @@ WHERE s.xtype = 'TR' AND s.name = " . q($name)
|
|||||||
); // triggers are not schema-scoped
|
); // triggers are not schema-scoped
|
||||||
$return = reset($rows);
|
$return = reset($rows);
|
||||||
if ($return) {
|
if ($return) {
|
||||||
$return["Statement"] = preg_replace('~^.+\\s+AS\\s+~isU', '', $return["text"]); //! identifiers, comments
|
$return["Statement"] = preg_replace('~^.+\s+AS\s+~isU', '', $return["text"]); //! identifiers, comments
|
||||||
}
|
}
|
||||||
return $return;
|
return $return;
|
||||||
}
|
}
|
||||||
@@ -599,6 +632,17 @@ WHERE sys1.xtype = 'TR' AND sys2.name = " . q($table)
|
|||||||
return array();
|
return array();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
function is_strict_mode() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
function is_c_style_escapes() {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
function show_status() {
|
function show_status() {
|
||||||
return array();
|
return array();
|
||||||
}
|
}
|
||||||
@@ -611,31 +655,39 @@ WHERE sys1.xtype = 'TR' AND sys2.name = " . q($table)
|
|||||||
}
|
}
|
||||||
|
|
||||||
function support($feature) {
|
function support($feature) {
|
||||||
return preg_match('~^(columns|database|drop_col|indexes|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"),
|
||||||
|
'operator_like' => "LIKE %%",
|
||||||
|
'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" => "+",
|
|
||||||
)
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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")) {
|
||||||
@@ -14,16 +13,30 @@ if (!defined("DRIVER")) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function connect($server = "", $username = "", $password = "", $database = null, $port = null, $socket = null) {
|
function connect($server = "", $username = "", $password = "", $database = null, $port = null, $socket = null) {
|
||||||
mysqli_report(MYSQLI_REPORT_OFF); // stays between requests, not required since PHP 5.3.4
|
global $adminer;
|
||||||
|
mysqli_report(MYSQLI_REPORT_OFF);
|
||||||
list($host, $port) = explode(":", $server, 2); // part after : is used for port or socket
|
list($host, $port) = explode(":", $server, 2); // part after : is used for port or socket
|
||||||
|
|
||||||
|
$ssl = $adminer->connectSsl();
|
||||||
|
if (isset($ssl['key']) || isset($ssl['cert']) || isset($ssl['ca'])) {
|
||||||
|
$this->ssl_set(
|
||||||
|
isset($ssl['key']) ? $ssl['key'] : null,
|
||||||
|
isset($ssl['cert']) ? $ssl['cert'] : null,
|
||||||
|
isset($ssl['ca']) ? $ssl['ca'] : null,
|
||||||
|
null, null
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
$return = @$this->real_connect(
|
$return = @$this->real_connect(
|
||||||
($server != "" ? $host : ini_get("mysqli.default_host")),
|
($server != "" ? $host : ini_get("mysqli.default_host")),
|
||||||
($server . $username != "" ? $username : ini_get("mysqli.default_user")),
|
($server . $username != "" ? $username : ini_get("mysqli.default_user")),
|
||||||
($server . $username . $password != "" ? $password : ini_get("mysqli.default_pw")),
|
($server . $username . $password != "" ? $password : ini_get("mysqli.default_pw")),
|
||||||
$database,
|
$database,
|
||||||
(is_numeric($port) ? $port : ini_get("mysqli.default_port")),
|
(is_numeric($port) ? $port : ini_get("mysqli.default_port")),
|
||||||
(!is_numeric($port) ? $port : $socket)
|
(!is_numeric($port) ? $port : $socket),
|
||||||
|
($ssl ? MYSQLI_CLIENT_SSL_DONT_VERIFY_SERVER_CERT : 0)
|
||||||
);
|
);
|
||||||
|
$this->options(MYSQLI_OPT_LOCAL_INFILE, false);
|
||||||
return $return;
|
return $return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -44,13 +57,13 @@ if (!defined("DRIVER")) {
|
|||||||
$row = $result->fetch_array();
|
$row = $result->fetch_array();
|
||||||
return $row[$field];
|
return $row[$field];
|
||||||
}
|
}
|
||||||
|
|
||||||
function quote($string) {
|
function quote($string) {
|
||||||
return "'" . $this->escape_string($string) . "'";
|
return "'" . $this->escape_string($string) . "'";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
} elseif (extension_loaded("mysql") && !(ini_get("sql.safe_mode") && extension_loaded("pdo_mysql"))) {
|
} elseif (extension_loaded("mysql") && !((ini_bool("sql.safe_mode") || ini_bool("mysql.allow_local_infile")) && extension_loaded("pdo_mysql"))) {
|
||||||
class Min_DB {
|
class Min_DB {
|
||||||
var
|
var
|
||||||
$extension = "MySQL", ///< @var string extension name
|
$extension = "MySQL", ///< @var string extension name
|
||||||
@@ -68,6 +81,10 @@ if (!defined("DRIVER")) {
|
|||||||
* @return bool
|
* @return bool
|
||||||
*/
|
*/
|
||||||
function connect($server, $username, $password) {
|
function connect($server, $username, $password) {
|
||||||
|
if (ini_bool("mysql.allow_local_infile")) {
|
||||||
|
$this->error = lang('Disable %s or enable %s or %s extensions.', "'mysql.allow_local_infile'", "MySQLi", "PDO_MySQL");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
$this->_link = @mysql_connect(
|
$this->_link = @mysql_connect(
|
||||||
($server != "" ? $server : ini_get("mysql.default_host")),
|
($server != "" ? $server : ini_get("mysql.default_host")),
|
||||||
("$server$username" != "" ? $username : ini_get("mysql.default_user")),
|
("$server$username" != "" ? $username : ini_get("mysql.default_user")),
|
||||||
@@ -223,12 +240,29 @@ if (!defined("DRIVER")) {
|
|||||||
var $extension = "PDO_MySQL";
|
var $extension = "PDO_MySQL";
|
||||||
|
|
||||||
function connect($server, $username, $password) {
|
function connect($server, $username, $password) {
|
||||||
$this->dsn("mysql:charset=utf8;host=" . str_replace(":", ";unix_socket=", preg_replace('~:(\\d)~', ';port=\\1', $server)), $username, $password);
|
global $adminer;
|
||||||
|
|
||||||
|
$dsn = "mysql:charset=utf8;host=" . str_replace(":", ";unix_socket=", preg_replace('~:(\d)~', ';port=\1', $server));
|
||||||
|
|
||||||
|
$options = [PDO::MYSQL_ATTR_LOCAL_INFILE => false];
|
||||||
|
$ssl = $adminer->connectSsl();
|
||||||
|
if (isset($ssl['key'])) {
|
||||||
|
$options[PDO::MYSQL_ATTR_SSL_KEY] = $ssl['key'];
|
||||||
|
}
|
||||||
|
if (isset($ssl['cert'])) {
|
||||||
|
$options[PDO::MYSQL_ATTR_SSL_CERT] = $ssl['cert'];
|
||||||
|
}
|
||||||
|
if (isset($ssl['ca'])) {
|
||||||
|
$options[PDO::MYSQL_ATTR_SSL_CA] = $ssl['ca'];
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->dsn($dsn, $username, $password, $options);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
function set_charset($charset) {
|
function set_charset($charset) {
|
||||||
$this->query("SET NAMES $charset"); // charset in DSN is ignored before PHP 5.3.6
|
$this->query("SET NAMES $charset");
|
||||||
}
|
}
|
||||||
|
|
||||||
function select_db($database) {
|
function select_db($database) {
|
||||||
@@ -237,7 +271,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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -277,6 +311,42 @@ if (!defined("DRIVER")) {
|
|||||||
return queries($prefix . implode(",\n", $values) . $suffix);
|
return queries($prefix . implode(",\n", $values) . $suffix);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function slowQuery($query, $timeout) {
|
||||||
|
if (min_version('5.7.8', '10.1.2')) {
|
||||||
|
if (preg_match('~MariaDB~', $this->_conn->server_info)) {
|
||||||
|
return "SET STATEMENT max_statement_time=$timeout FOR $query";
|
||||||
|
} elseif (preg_match('~^(SELECT\b)(.+)~is', $query, $match)) {
|
||||||
|
return "$match[1] /*+ MAX_EXECUTION_TIME(" . ($timeout * 1000) . ") */ $match[2]";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function convertSearch($idf, array $where, array $field) {
|
||||||
|
return (preg_match('~char|text|enum|set~', $field["type"]) && !preg_match("~^utf8~", $field["collation"]) && preg_match('~[\x80-\xFF]~', $where['val'])
|
||||||
|
? "CONVERT($idf USING " . charset($this->_conn) . ")"
|
||||||
|
: $idf
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
function warnings() {
|
||||||
|
$result = $this->_conn->query("SHOW WARNINGS");
|
||||||
|
if ($result && $result->num_rows) {
|
||||||
|
ob_start();
|
||||||
|
select($result); // select() usually needs to print a big table progressively
|
||||||
|
return ob_get_clean();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function tableHelp($name) {
|
||||||
|
$maria = preg_match('~MariaDB~', $this->_conn->server_info);
|
||||||
|
if (information_schema(DB)) {
|
||||||
|
return strtolower(($maria ? "information-schema-$name-table/" : str_replace("_", "-", $name) . "-table.html"));
|
||||||
|
}
|
||||||
|
if (DB == "mysql") {
|
||||||
|
return ($maria ? "mysql$name-table/" : "system-database.html"); //! more precise link
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -301,12 +371,16 @@ if (!defined("DRIVER")) {
|
|||||||
* @return mixed Min_DB or string for error
|
* @return mixed Min_DB or string for error
|
||||||
*/
|
*/
|
||||||
function connect() {
|
function connect() {
|
||||||
global $adminer;
|
global $adminer, $types, $structured_types;
|
||||||
$connection = new Min_DB;
|
$connection = new Min_DB;
|
||||||
$credentials = $adminer->credentials();
|
$credentials = $adminer->credentials();
|
||||||
if ($connection->connect($credentials[0], $credentials[1], $credentials[2])) {
|
if ($connection->connect($credentials[0], $credentials[1], $credentials[2])) {
|
||||||
$connection->set_charset(charset($connection)); // available in MySQLi since PHP 5.0.5
|
$connection->set_charset(charset($connection));
|
||||||
$connection->query("SET sql_quote_show_create = 1, autocommit = 1");
|
$connection->query("SET sql_quote_show_create = 1, autocommit = 1");
|
||||||
|
if (min_version('5.7.8', 10.2, $connection)) {
|
||||||
|
$structured_types[lang('Strings')][] = "json";
|
||||||
|
$types["json"] = 4294967295;
|
||||||
|
}
|
||||||
return $connection;
|
return $connection;
|
||||||
}
|
}
|
||||||
$return = $connection->error;
|
$return = $connection->error;
|
||||||
@@ -321,12 +395,11 @@ if (!defined("DRIVER")) {
|
|||||||
* @return array
|
* @return array
|
||||||
*/
|
*/
|
||||||
function get_databases($flush) {
|
function get_databases($flush) {
|
||||||
global $connection;
|
|
||||||
// SHOW DATABASES can take a very long time so it is cached
|
// SHOW DATABASES can take a very long time so it is cached
|
||||||
$return = get_session("dbs");
|
$return = get_session("dbs");
|
||||||
if ($return === null) {
|
if ($return === null) {
|
||||||
$query = ($connection->server_info >= 5
|
$query = (min_version(5)
|
||||||
? "SELECT SCHEMA_NAME FROM information_schema.SCHEMATA"
|
? "SELECT SCHEMA_NAME FROM information_schema.SCHEMATA ORDER BY SCHEMA_NAME"
|
||||||
: "SHOW DATABASES"
|
: "SHOW DATABASES"
|
||||||
); // SHOW DATABASES can be disabled by skip_show_database
|
); // SHOW DATABASES can be disabled by skip_show_database
|
||||||
$return = ($flush ? slow_query($query) : get_vals($query));
|
$return = ($flush ? slow_query($query) : get_vals($query));
|
||||||
@@ -350,12 +423,14 @@ if (!defined("DRIVER")) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/** Formulate SQL modification query with limit 1
|
/** Formulate SQL modification query with limit 1
|
||||||
|
* @param string
|
||||||
* @param string everything after UPDATE or DELETE
|
* @param string everything after UPDATE or DELETE
|
||||||
* @param string
|
* @param string
|
||||||
|
* @param string
|
||||||
* @return string
|
* @return string
|
||||||
*/
|
*/
|
||||||
function limit1($query, $where) {
|
function limit1($table, $query, $where, $separator = "\n") {
|
||||||
return limit($query, $where, 1);
|
return limit($query, $where, 1, 0, $separator);
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Get database collation
|
/** Get database collation
|
||||||
@@ -401,8 +476,7 @@ if (!defined("DRIVER")) {
|
|||||||
* @return array array($name => $type)
|
* @return array array($name => $type)
|
||||||
*/
|
*/
|
||||||
function tables_list() {
|
function tables_list() {
|
||||||
global $connection;
|
return get_key_vals(min_version(5)
|
||||||
return get_key_vals($connection->server_info >= 5
|
|
||||||
? "SELECT TABLE_NAME, TABLE_TYPE FROM information_schema.TABLES WHERE TABLE_SCHEMA = DATABASE() ORDER BY TABLE_NAME"
|
? "SELECT TABLE_NAME, TABLE_TYPE FROM information_schema.TABLES WHERE TABLE_SCHEMA = DATABASE() ORDER BY TABLE_NAME"
|
||||||
: "SHOW TABLES"
|
: "SHOW TABLES"
|
||||||
);
|
);
|
||||||
@@ -426,25 +500,31 @@ if (!defined("DRIVER")) {
|
|||||||
* @return array array($name => array("Name" => , "Engine" => , "Comment" => , "Oid" => , "Rows" => , "Collation" => , "Auto_increment" => , "Data_length" => , "Index_length" => , "Data_free" => )) or only inner array with $name
|
* @return array array($name => array("Name" => , "Engine" => , "Comment" => , "Oid" => , "Rows" => , "Collation" => , "Auto_increment" => , "Data_length" => , "Index_length" => , "Data_free" => )) or only inner array with $name
|
||||||
*/
|
*/
|
||||||
function table_status($name = "", $fast = false) {
|
function table_status($name = "", $fast = false) {
|
||||||
global $connection;
|
if ($fast && min_version(5)) {
|
||||||
$return = array();
|
$query = "SELECT TABLE_NAME AS Name, ENGINE AS Engine, CREATE_OPTIONS AS Create_options, TABLE_COMMENT AS Comment FROM information_schema.TABLES WHERE TABLE_SCHEMA = DATABASE() " . ($name != "" ? "AND TABLE_NAME = " . q($name) : "ORDER BY Name");
|
||||||
foreach (get_rows($fast && $connection->server_info >= 5
|
} else {
|
||||||
? "SELECT TABLE_NAME AS Name, Engine, TABLE_COMMENT AS Comment FROM information_schema.TABLES WHERE TABLE_SCHEMA = DATABASE() " . ($name != "" ? "AND TABLE_NAME = " . q($name) : "ORDER BY Name")
|
$query = "SHOW TABLE STATUS" . ($name != "" ? " LIKE " . q(addcslashes($name, "%_\\")) : "");
|
||||||
: "SHOW TABLE STATUS" . ($name != "" ? " LIKE " . q(addcslashes($name, "%_\\")) : "")
|
}
|
||||||
) as $row) {
|
|
||||||
|
$tables = [];
|
||||||
|
foreach (get_rows($query) as $row) {
|
||||||
if ($row["Engine"] == "InnoDB") {
|
if ($row["Engine"] == "InnoDB") {
|
||||||
// ignore internal comment, unnecessary since MySQL 5.1.21
|
// ignore internal comment, unnecessary since MySQL 5.1.21
|
||||||
$row["Comment"] = preg_replace('~(?:(.+); )?InnoDB free: .*~', '\\1', $row["Comment"]);
|
$row["Comment"] = preg_replace('~(?:(.+); )?InnoDB free: .*~', '\1', $row["Comment"]);
|
||||||
}
|
}
|
||||||
if (!isset($row["Engine"])) {
|
if (!isset($row["Engine"])) {
|
||||||
$row["Comment"] = "";
|
$row["Comment"] = "";
|
||||||
}
|
}
|
||||||
if ($name != "") {
|
if ($name != "") {
|
||||||
|
// MariaDB: Table name is returned as lowercase on macOS, so we fix it here.
|
||||||
|
$row["Name"] = $name;
|
||||||
return $row;
|
return $row;
|
||||||
}
|
}
|
||||||
$return[$row["Name"]] = $row;
|
|
||||||
|
$tables[$row["Name"]] = $row;
|
||||||
}
|
}
|
||||||
return $return;
|
|
||||||
|
return $tables;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Find out whether the identifier is view
|
/** Find out whether the identifier is view
|
||||||
@@ -460,9 +540,8 @@ if (!defined("DRIVER")) {
|
|||||||
* @return bool
|
* @return bool
|
||||||
*/
|
*/
|
||||||
function fk_support($table_status) {
|
function fk_support($table_status) {
|
||||||
global $connection;
|
|
||||||
return preg_match('~InnoDB|IBMDB2I~i', $table_status["Engine"])
|
return preg_match('~InnoDB|IBMDB2I~i', $table_status["Engine"])
|
||||||
|| (preg_match('~NDB~i', $table_status["Engine"]) && version_compare($connection->server_info, '5.6') >= 0);
|
|| (preg_match('~NDB~i', $table_status["Engine"]) && min_version(5.6));
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Get information about fields
|
/** Get information about fields
|
||||||
@@ -472,21 +551,23 @@ if (!defined("DRIVER")) {
|
|||||||
function fields($table) {
|
function fields($table) {
|
||||||
$return = array();
|
$return = array();
|
||||||
foreach (get_rows("SHOW FULL COLUMNS FROM " . table($table)) as $row) {
|
foreach (get_rows("SHOW FULL COLUMNS FROM " . table($table)) as $row) {
|
||||||
preg_match('~^([^( ]+)(?:\\((.+)\\))?( unsigned)?( zerofill)?$~', $row["Type"], $match);
|
preg_match('~^([^( ]+)(?:\((.+)\))?( unsigned)?( zerofill)?$~', $row["Type"], $match);
|
||||||
$return[$row["Field"]] = array(
|
$return[$row["Field"]] = array(
|
||||||
"field" => $row["Field"],
|
"field" => $row["Field"],
|
||||||
"full_type" => $row["Type"],
|
"full_type" => $row["Type"],
|
||||||
"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
|
||||||
|
"generated" => preg_match('~^(VIRTUAL|PERSISTENT|STORED)~', $row["Extra"]),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
return $return;
|
return $return;
|
||||||
@@ -500,10 +581,11 @@ if (!defined("DRIVER")) {
|
|||||||
function indexes($table, $connection2 = null) {
|
function indexes($table, $connection2 = null) {
|
||||||
$return = array();
|
$return = array();
|
||||||
foreach (get_rows("SHOW INDEX FROM " . table($table), $connection2) as $row) {
|
foreach (get_rows("SHOW INDEX FROM " . table($table), $connection2) as $row) {
|
||||||
$return[$row["Key_name"]]["type"] = ($row["Key_name"] == "PRIMARY" ? "PRIMARY" : ($row["Index_type"] == "FULLTEXT" ? "FULLTEXT" : ($row["Non_unique"] ? "INDEX" : "UNIQUE")));
|
$name = $row["Key_name"];
|
||||||
$return[$row["Key_name"]]["columns"][] = $row["Column_name"];
|
$return[$name]["type"] = ($name == "PRIMARY" ? "PRIMARY" : ($row["Index_type"] == "FULLTEXT" ? "FULLTEXT" : ($row["Non_unique"] ? ($row["Index_type"] == "SPATIAL" ? "SPATIAL" : "INDEX") : "UNIQUE")));
|
||||||
$return[$row["Key_name"]]["lengths"][] = $row["Sub_part"];
|
$return[$name]["columns"][] = $row["Column_name"];
|
||||||
$return[$row["Key_name"]]["descs"][] = null;
|
$return[$name]["lengths"][] = ($row["Index_type"] == "SPATIAL" ? null : $row["Sub_part"]);
|
||||||
|
$return[$name]["descs"][] = null;
|
||||||
}
|
}
|
||||||
return $return;
|
return $return;
|
||||||
}
|
}
|
||||||
@@ -514,7 +596,7 @@ if (!defined("DRIVER")) {
|
|||||||
*/
|
*/
|
||||||
function foreign_keys($table) {
|
function foreign_keys($table) {
|
||||||
global $connection, $on_actions;
|
global $connection, $on_actions;
|
||||||
static $pattern = '`(?:[^`]|``)+`';
|
static $pattern = '(?:`(?:[^`]|``)+`|"(?:[^"]|"")+")';
|
||||||
$return = array();
|
$return = array();
|
||||||
$create_table = $connection->result("SHOW CREATE TABLE " . table($table), 1);
|
$create_table = $connection->result("SHOW CREATE TABLE " . table($table), 1);
|
||||||
if ($create_table) {
|
if ($create_table) {
|
||||||
@@ -541,7 +623,7 @@ if (!defined("DRIVER")) {
|
|||||||
*/
|
*/
|
||||||
function view($name) {
|
function view($name) {
|
||||||
global $connection;
|
global $connection;
|
||||||
return array("select" => preg_replace('~^(?:[^`]|`[^`]*`)*\\s+AS\\s+~isU', '', $connection->result("SHOW CREATE VIEW " . table($name), 1)));
|
return array("select" => preg_replace('~^(?:[^`]|`[^`]*`)*\s+AS\s+~isU', '', $connection->result("SHOW CREATE VIEW " . table($name), 1)));
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Get sorted grouped list of collations
|
/** Get sorted grouped list of collations
|
||||||
@@ -568,9 +650,8 @@ if (!defined("DRIVER")) {
|
|||||||
* @return bool
|
* @return bool
|
||||||
*/
|
*/
|
||||||
function information_schema($db) {
|
function information_schema($db) {
|
||||||
global $connection;
|
return (min_version(5) && $db == "information_schema")
|
||||||
return ($connection->server_info >= 5 && $db == "information_schema")
|
|| (min_version(5.5) && $db == "performance_schema");
|
||||||
|| ($connection->server_info >= 5.5 && $db == "performance_schema");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Get escaped error message
|
/** Get escaped error message
|
||||||
@@ -609,17 +690,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;
|
||||||
}
|
}
|
||||||
@@ -728,12 +809,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
|
||||||
@@ -746,19 +842,24 @@ if (!defined("DRIVER")) {
|
|||||||
queries("SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO'");
|
queries("SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO'");
|
||||||
foreach ($tables as $table) {
|
foreach ($tables as $table) {
|
||||||
$name = ($target == DB ? table("copy_$table") : idf_escape($target) . "." . table($table));
|
$name = ($target == DB ? table("copy_$table") : idf_escape($target) . "." . table($table));
|
||||||
if (!queries("\nDROP TABLE IF EXISTS $name")
|
if (($_POST["overwrite"] && !queries("\nDROP TABLE IF EXISTS $name"))
|
||||||
|| !queries("CREATE TABLE $name LIKE " . table($table))
|
|| !queries("CREATE TABLE $name LIKE " . table($table))
|
||||||
|| !queries("INSERT INTO $name SELECT * FROM " . table($table))
|
|| !queries("INSERT INTO $name SELECT * FROM " . table($table))
|
||||||
) {
|
) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
foreach (get_rows("SHOW TRIGGERS LIKE " . q(addcslashes($table, "%_\\"))) as $row) {
|
||||||
|
$trigger = $row["Trigger"];
|
||||||
|
if (!queries("CREATE TRIGGER " . ($target == DB ? idf_escape("copy_$trigger") : idf_escape($target) . "." . idf_escape($trigger)) . " $row[Timing] $row[Event] ON $name FOR EACH ROW\n$row[Statement];")) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
foreach ($views as $table) {
|
foreach ($views as $table) {
|
||||||
$name = ($target == DB ? table("copy_$table") : idf_escape($target) . "." . table($table));
|
$name = ($target == DB ? table("copy_$table") : idf_escape($target) . "." . table($table));
|
||||||
$view = view($table);
|
$view = view($table);
|
||||||
if (!queries("DROP VIEW IF EXISTS $name")
|
if (($_POST["overwrite"] && !queries("DROP VIEW IF EXISTS $name"))
|
||||||
|| !queries("CREATE VIEW $name AS $view[select]") //! USE to avoid db.table
|
|| !queries("CREATE VIEW $name AS $view[select]")) { //! USE to avoid db.table
|
||||||
) {
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -808,19 +909,19 @@ if (!defined("DRIVER")) {
|
|||||||
function routine($name, $type) {
|
function routine($name, $type) {
|
||||||
global $connection, $enum_length, $inout, $types;
|
global $connection, $enum_length, $inout, $types;
|
||||||
$aliases = array("bool", "boolean", "integer", "double precision", "real", "dec", "numeric", "fixed", "national char", "national varchar");
|
$aliases = array("bool", "boolean", "integer", "double precision", "real", "dec", "numeric", "fixed", "national char", "national varchar");
|
||||||
|
$space = "(?:\\s|/\\*[\s\S]*?\\*/|(?:#|-- )[^\n]*\n?|--\r?\n)";
|
||||||
$type_pattern = "((" . implode("|", array_merge(array_keys($types), $aliases)) . ")\\b(?:\\s*\\(((?:[^'\")]|$enum_length)++)\\))?\\s*(zerofill\\s*)?(unsigned(?:\\s+zerofill)?)?)(?:\\s*(?:CHARSET|CHARACTER\\s+SET)\\s*['\"]?([^'\"\\s,]+)['\"]?)?";
|
$type_pattern = "((" . implode("|", array_merge(array_keys($types), $aliases)) . ")\\b(?:\\s*\\(((?:[^'\")]|$enum_length)++)\\))?\\s*(zerofill\\s*)?(unsigned(?:\\s+zerofill)?)?)(?:\\s*(?:CHARSET|CHARACTER\\s+SET)\\s*['\"]?([^'\"\\s,]+)['\"]?)?";
|
||||||
$pattern = "\\s*(" . ($type == "FUNCTION" ? "" : $inout) . ")?\\s*(?:`((?:[^`]|``)*)`\\s*|\\b(\\S+)\\s+)$type_pattern";
|
$pattern = "$space*(" . ($type == "FUNCTION" ? "" : $inout) . ")?\\s*(?:`((?:[^`]|``)*)`\\s*|\\b(\\S+)\\s+)$type_pattern";
|
||||||
$create = $connection->result("SHOW CREATE $type " . idf_escape($name), 2);
|
$create = $connection->result("SHOW CREATE $type " . idf_escape($name), 2);
|
||||||
preg_match("~\\(((?:$pattern\\s*,?)*)\\)\\s*" . ($type == "FUNCTION" ? "RETURNS\\s+$type_pattern\\s+" : "") . "(.*)~is", $create, $match);
|
preg_match("~\\(((?:$pattern\\s*,?)*)\\)\\s*" . ($type == "FUNCTION" ? "RETURNS\\s+$type_pattern\\s+" : "") . "(.*)~is", $create, $match);
|
||||||
$fields = array();
|
$fields = array();
|
||||||
preg_match_all("~$pattern\\s*,?~is", $match[1], $matches, PREG_SET_ORDER);
|
preg_match_all("~$pattern\\s*,?~is", $match[1], $matches, PREG_SET_ORDER);
|
||||||
foreach ($matches as $param) {
|
foreach ($matches as $param) {
|
||||||
$name = str_replace("``", "`", $param[2]) . $param[3];
|
|
||||||
$fields[] = array(
|
$fields[] = array(
|
||||||
"field" => $name,
|
"field" => str_replace("``", "`", $param[2]) . $param[3],
|
||||||
"type" => strtolower($param[5]),
|
"type" => strtolower($param[5]),
|
||||||
"length" => preg_replace_callback("~$enum_length~s", 'normalize_enum', $param[6]),
|
"length" => preg_replace_callback("~$enum_length~s", 'normalize_enum', $param[6]),
|
||||||
"unsigned" => strtolower(preg_replace('~\\s+~', ' ', trim("$param[8] $param[7]"))),
|
"unsigned" => strtolower(preg_replace('~\s+~', ' ', trim("$param[8] $param[7]"))),
|
||||||
"null" => 1,
|
"null" => 1,
|
||||||
"full_type" => $param[4],
|
"full_type" => $param[4],
|
||||||
"inout" => strtoupper($param[1]),
|
"inout" => strtoupper($param[1]),
|
||||||
@@ -839,10 +940,10 @@ if (!defined("DRIVER")) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/** Get list of routines
|
/** Get list of routines
|
||||||
* @return array ("ROUTINE_TYPE" => , "ROUTINE_NAME" => , "DTD_IDENTIFIER" => )
|
* @return array ("SPECIFIC_NAME" => , "ROUTINE_NAME" => , "ROUTINE_TYPE" => , "DTD_IDENTIFIER" => )
|
||||||
*/
|
*/
|
||||||
function routines() {
|
function routines() {
|
||||||
return get_rows("SELECT ROUTINE_NAME, ROUTINE_TYPE, DTD_IDENTIFIER FROM information_schema.ROUTINES WHERE ROUTINE_SCHEMA = " . q(DB));
|
return get_rows("SELECT ROUTINE_NAME AS SPECIFIC_NAME, ROUTINE_NAME, ROUTINE_TYPE, DTD_IDENTIFIER FROM information_schema.ROUTINES WHERE ROUTINE_SCHEMA = " . q(DB));
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Get list of available routine languages
|
/** Get list of available routine languages
|
||||||
@@ -852,6 +953,15 @@ if (!defined("DRIVER")) {
|
|||||||
return array(); // "SQL" not required
|
return array(); // "SQL" not required
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Get routine signature
|
||||||
|
* @param string
|
||||||
|
* @param array result of routine()
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
function routine_id($name, $row) {
|
||||||
|
return idf_escape($name);
|
||||||
|
}
|
||||||
|
|
||||||
/** Get last auto increment ID
|
/** Get last auto increment ID
|
||||||
* @return string
|
* @return string
|
||||||
*/
|
*/
|
||||||
@@ -866,7 +976,7 @@ if (!defined("DRIVER")) {
|
|||||||
* @return Min_Result
|
* @return Min_Result
|
||||||
*/
|
*/
|
||||||
function explain($connection, $query) {
|
function explain($connection, $query) {
|
||||||
return $connection->query("EXPLAIN " . ($connection->server_info >= 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
|
||||||
@@ -901,22 +1011,24 @@ if (!defined("DRIVER")) {
|
|||||||
|
|
||||||
/** Set current schema
|
/** Set current schema
|
||||||
* @param string
|
* @param string
|
||||||
|
* @param Min_DB
|
||||||
* @return bool
|
* @return bool
|
||||||
*/
|
*/
|
||||||
function set_schema($schema) {
|
function set_schema($schema, $connection2 = null) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Get SQL command to create table
|
/** Get SQL command to create table
|
||||||
* @param string
|
* @param string
|
||||||
* @param bool
|
* @param bool
|
||||||
|
* @param string
|
||||||
* @return string
|
* @return string
|
||||||
*/
|
*/
|
||||||
function create_sql($table, $auto_increment) {
|
function create_sql($table, $auto_increment, $style) {
|
||||||
global $connection;
|
global $connection;
|
||||||
$return = $connection->result("SHOW CREATE TABLE " . table($table), 1);
|
$return = $connection->result("SHOW CREATE TABLE " . table($table), 1);
|
||||||
if (!$auto_increment) {
|
if (!$auto_increment) {
|
||||||
$return = preg_replace('~ AUTO_INCREMENT=\\d+~', '', $return); //! skip comments
|
$return = preg_replace('~ AUTO_INCREMENT=\d+~', '', $return); //! skip comments
|
||||||
}
|
}
|
||||||
return $return;
|
return $return;
|
||||||
}
|
}
|
||||||
@@ -939,14 +1051,12 @@ if (!defined("DRIVER")) {
|
|||||||
|
|
||||||
/** Get SQL commands to create triggers
|
/** Get SQL commands to create triggers
|
||||||
* @param string
|
* @param string
|
||||||
* @param string
|
|
||||||
* @return string
|
* @return string
|
||||||
*/
|
*/
|
||||||
function trigger_sql($table, $style) {
|
function trigger_sql($table) {
|
||||||
$return = "";
|
$return = "";
|
||||||
foreach (get_rows("SHOW TRIGGERS LIKE " . q(addcslashes($table, "%_\\")), null, "-- ") as $row) {
|
foreach (get_rows("SHOW TRIGGERS LIKE " . q(addcslashes($table, "%_\\")), null, "-- ") as $row) {
|
||||||
$return .= "\n" . ($style == 'CREATE+ALTER' ? "DROP TRIGGER IF EXISTS " . idf_escape($row["Trigger"]) . ";;\n" : "")
|
$return .= "\nCREATE TRIGGER " . idf_escape($row["Trigger"]) . " $row[Timing] $row[Event] ON " . table($row["Table"]) . " FOR EACH ROW\n$row[Statement];;\n";
|
||||||
. "CREATE TRIGGER " . idf_escape($row["Trigger"]) . " $row[Timing] $row[Event] ON " . table($row["Table"]) . " FOR EACH ROW\n$row[Statement];;\n";
|
|
||||||
}
|
}
|
||||||
return $return;
|
return $return;
|
||||||
}
|
}
|
||||||
@@ -958,6 +1068,29 @@ if (!defined("DRIVER")) {
|
|||||||
return get_key_vals("SHOW VARIABLES");
|
return get_key_vals("SHOW VARIABLES");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
function is_strict_mode() {
|
||||||
|
static $strictMode = null;
|
||||||
|
|
||||||
|
if ($strictMode === null) {
|
||||||
|
$strictMode = (bool)preg_match('~STRICT_(TRANS|ALL)_TABLES~', get_key_vals("SHOW VARIABLES LIKE 'sql_mode'")["sql_mode"]);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $strictMode;
|
||||||
|
}
|
||||||
|
|
||||||
|
function is_c_style_escapes() {
|
||||||
|
static $c_style = null;
|
||||||
|
|
||||||
|
if ($c_style === null) {
|
||||||
|
$c_style = strpos(get_key_vals("SHOW VARIABLES LIKE 'sql_mode'")["sql_mode"], 'NO_BACKSLASH_ESCAPES') === false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return $c_style;
|
||||||
|
}
|
||||||
|
|
||||||
/** Get process list
|
/** Get process list
|
||||||
* @return array ($row)
|
* @return array ($row)
|
||||||
*/
|
*/
|
||||||
@@ -984,7 +1117,7 @@ if (!defined("DRIVER")) {
|
|||||||
return "BIN(" . idf_escape($field["field"]) . " + 0)"; // + 0 is required outside MySQLnd
|
return "BIN(" . idf_escape($field["field"]) . " + 0)"; // + 0 is required outside MySQLnd
|
||||||
}
|
}
|
||||||
if (preg_match("~geometry|point|linestring|polygon~", $field["type"])) {
|
if (preg_match("~geometry|point|linestring|polygon~", $field["type"])) {
|
||||||
return "AsWKT(" . idf_escape($field["field"]) . ")";
|
return (min_version(8) ? "ST_" : "") . "AsWKT(" . idf_escape($field["field"]) . ")";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1001,48 +1134,83 @@ 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 = "GeomFromText($return)";
|
$prefix = (min_version(8) ? "ST_" : "");
|
||||||
|
$return = $prefix . "GeomFromText($return, $prefix" . "SRID($field[field]))";
|
||||||
}
|
}
|
||||||
return $return;
|
return $return;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Check whether a feature is supported
|
/** Check whether a feature is supported
|
||||||
* @param string "comment", "copy", "database", "drop_col", "dump", "event", "kill", "materializedview", "partitioning", "privileges", "procedure", "processlist", "routine", "scheme", "sequence", "status", "table", "trigger", "type", "variables", "view", "view_trigger"
|
* @param string "comment", "copy", "database", "descidx", "drop_col", "dump", "event", "indexes", "kill", "materializedview", "partitioning", "privileges", "procedure", "processlist", "routine", "scheme", "sequence", "status", "table", "trigger", "type", "variables", "view", "view_trigger"
|
||||||
* @return bool
|
* @return bool
|
||||||
*/
|
*/
|
||||||
function support($feature) {
|
function support($feature) {
|
||||||
global $connection;
|
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" . ($connection->server_info < 5.1 ? "|event|partitioning" . ($connection->server_info < 5 ? "|routine|trigger|view" : "") : "") . "~", $feature);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$jush = "sql"; ///< @var string JUSH identifier
|
/** Kill a process
|
||||||
$types = array(); ///< @var array ($type => $maximum_unsigned_length, ...)
|
* @param int
|
||||||
$structured_types = array(); ///< @var array ($description => array($type, ...), ...)
|
* @return bool
|
||||||
foreach (array(
|
*/
|
||||||
lang('Numbers') => array("tinyint" => 3, "smallint" => 5, "mediumint" => 8, "int" => 10, "bigint" => 20, "decimal" => 66, "float" => 12, "double" => 21),
|
function kill_process($val) {
|
||||||
lang('Date and time') => array("date" => 10, "datetime" => 19, "timestamp" => 19, "time" => 10, "year" => 4),
|
return queries("KILL " . number($val));
|
||||||
lang('Strings') => array("char" => 255, "varchar" => 65535, "tinytext" => 255, "text" => 65535, "mediumtext" => 16777215, "longtext" => 4294967295),
|
}
|
||||||
lang('Lists') => array("enum" => 65535, "set" => 64),
|
|
||||||
lang('Binary') => array("bit" => 20, "binary" => 255, "varbinary" => 65535, "tinyblob" => 255, "blob" => 65535, "mediumblob" => 16777215, "longblob" => 4294967295),
|
/** Return query to get connection ID
|
||||||
lang('Geometry') => array("geometry" => 0, "point" => 0, "linestring" => 0, "polygon" => 0, "multipoint" => 0, "multilinestring" => 0, "multipolygon" => 0, "geometrycollection" => 0),
|
* @return string
|
||||||
) as $key => $val) {
|
*/
|
||||||
$types += $val;
|
function connection_id(){
|
||||||
$structured_types[$key] = array_keys($val);
|
return "SELECT CONNECTION_ID()";
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Get maximum number of connections
|
||||||
|
* @return int
|
||||||
|
*/
|
||||||
|
function max_connections() {
|
||||||
|
global $connection;
|
||||||
|
return $connection->result("SELECT @@max_connections");
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Get driver config
|
||||||
|
* @return array array('possible_drivers' => , 'jush' => , 'types' => , 'structured_types' => , 'unsigned' => , 'operators' => , 'functions' => , 'grouping' => , 'edit_functions' => )
|
||||||
|
*/
|
||||||
|
function driver_config() {
|
||||||
|
$types = array(); ///< @var array ($type => $maximum_unsigned_length, ...)
|
||||||
|
$structured_types = array(); ///< @var array ($description => array($type, ...), ...)
|
||||||
|
foreach (array(
|
||||||
|
lang('Numbers') => array("tinyint" => 3, "smallint" => 5, "mediumint" => 8, "int" => 10, "bigint" => 20, "decimal" => 66, "float" => 12, "double" => 21),
|
||||||
|
lang('Date and time') => array("date" => 10, "datetime" => 19, "timestamp" => 19, "time" => 10, "year" => 4),
|
||||||
|
lang('Strings') => array("char" => 255, "varchar" => 65535, "tinytext" => 255, "text" => 65535, "mediumtext" => 16777215, "longtext" => 4294967295),
|
||||||
|
lang('Lists') => array("enum" => 65535, "set" => 64),
|
||||||
|
lang('Binary') => array("bit" => 20, "binary" => 255, "varbinary" => 65535, "tinyblob" => 255, "blob" => 65535, "mediumblob" => 16777215, "longblob" => 4294967295),
|
||||||
|
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
|
||||||
|
'operator_like' => "LIKE %%",
|
||||||
|
'operator_regexp' => 'REGEXP',
|
||||||
|
'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", "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", "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", //! JavaScript for disabling maxlength
|
|
||||||
"binary" => "md5/sha1",
|
|
||||||
"date|time" => "now",
|
|
||||||
), array(
|
|
||||||
"(^|[^o])int|float|double|decimal" => "+/-", // not point
|
|
||||||
"date" => "+ interval/- interval",
|
|
||||||
"time" => "addtime/subtime",
|
|
||||||
"char|text" => "concat",
|
|
||||||
)
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,12 +1,12 @@
|
|||||||
<?php
|
<?php
|
||||||
$drivers["oracle"] = "Oracle";
|
$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 = " ") {
|
||||||
@@ -175,8 +205,8 @@ if (isset($_GET["oracle"])) {
|
|||||||
));
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
function limit1($query, $where) {
|
function limit1($table, $query, $where, $separator = "\n") {
|
||||||
return " $query$where";
|
return " $query$where"; //! limit
|
||||||
}
|
}
|
||||||
|
|
||||||
function db_collation($db, $collations) {
|
function db_collation($db, $collations) {
|
||||||
@@ -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() {
|
||||||
@@ -367,15 +474,29 @@ AND c_src.TABLE_NAME = " . q($table);
|
|||||||
return $connection->result("SELECT sys_context('USERENV', 'SESSION_USER') FROM dual");
|
return $connection->result("SELECT sys_context('USERENV', 'SESSION_USER') FROM dual");
|
||||||
}
|
}
|
||||||
|
|
||||||
function set_schema($scheme) {
|
function set_schema($scheme, $connection2 = null) {
|
||||||
global $connection;
|
global $connection;
|
||||||
return $connection->query("ALTER SESSION SET CURRENT_SCHEMA = " . idf_escape($scheme));
|
if (!$connection2) {
|
||||||
|
$connection2 = $connection;
|
||||||
|
}
|
||||||
|
return $connection2->query("ALTER SESSION SET CURRENT_SCHEMA = " . idf_escape($scheme));
|
||||||
}
|
}
|
||||||
|
|
||||||
function show_variables() {
|
function show_variables() {
|
||||||
return get_key_vals('SELECT name, display_value FROM v$parameter');
|
return get_key_vals('SELECT name, display_value FROM v$parameter');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
function is_strict_mode() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
function is_c_style_escapes() {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
function process_list() {
|
function process_list() {
|
||||||
return get_rows('SELECT sess.process AS "process", sess.username AS "user", sess.schemaname AS "schema", sess.status AS "status", sess.wait_class AS "wait_class", sess.seconds_in_wait AS "seconds_in_wait", sql.sql_text AS "sql_text", sess.machine AS "machine", sess.port AS "port"
|
return get_rows('SELECT sess.process AS "process", sess.username AS "user", sess.schemaname AS "schema", sess.status AS "status", sess.wait_class AS "wait_class", sess.seconds_in_wait AS "seconds_in_wait", sql.sql_text AS "sql_text", sess.machine AS "machine", sess.port AS "port"
|
||||||
FROM v$session sess LEFT OUTER JOIN v$sql sql
|
FROM v$session sess LEFT OUTER JOIN v$sql sql
|
||||||
@@ -398,33 +519,41 @@ ORDER BY PROCESS
|
|||||||
}
|
}
|
||||||
|
|
||||||
function support($feature) {
|
function support($feature) {
|
||||||
return preg_match('~^(columns|database|drop_col|indexes|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"),
|
||||||
|
'operator_like' => "LIKE %%",
|
||||||
|
'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" => "||",
|
|
||||||
)
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,11 +2,10 @@
|
|||||||
$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 {
|
||||||
var $extension = "PgSQL", $_link, $_result, $_string, $_database = true, $server_info, $affected_rows, $error;
|
var $extension = "PgSQL", $_link, $_result, $_string, $_database = true, $server_info, $affected_rows, $error, $timeout;
|
||||||
|
|
||||||
function _error($errno, $error) {
|
function _error($errno, $error) {
|
||||||
if (ini_bool("html_errors")) {
|
if (ini_bool("html_errors")) {
|
||||||
@@ -20,7 +19,14 @@ if (isset($_GET["pgsql"])) {
|
|||||||
global $adminer;
|
global $adminer;
|
||||||
$db = $adminer->database();
|
$db = $adminer->database();
|
||||||
set_error_handler(array($this, '_error'));
|
set_error_handler(array($this, '_error'));
|
||||||
|
|
||||||
$this->_string = "host='" . str_replace(":", "' port='", addcslashes($server, "'\\")) . "' user='" . addcslashes($username, "'\\") . "' password='" . addcslashes($password, "'\\") . "'";
|
$this->_string = "host='" . str_replace(":", "' port='", addcslashes($server, "'\\")) . "' user='" . addcslashes($username, "'\\") . "' password='" . addcslashes($password, "'\\") . "'";
|
||||||
|
|
||||||
|
$ssl = $adminer->connectSsl();
|
||||||
|
if (isset($ssl["mode"])) {
|
||||||
|
$this->_string .= " sslmode='" . $ssl["mode"] . "'";
|
||||||
|
}
|
||||||
|
|
||||||
$this->_link = @pg_connect("$this->_string dbname='" . ($db != "" ? addcslashes($db, "'\\") : "postgres") . "'", PGSQL_CONNECT_FORCE_NEW);
|
$this->_link = @pg_connect("$this->_string dbname='" . ($db != "" ? addcslashes($db, "'\\") : "postgres") . "'", PGSQL_CONNECT_FORCE_NEW);
|
||||||
if (!$this->_link && $db != "") {
|
if (!$this->_link && $db != "") {
|
||||||
// try to connect directly with database for performance
|
// try to connect directly with database for performance
|
||||||
@@ -37,7 +43,15 @@ if (isset($_GET["pgsql"])) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function quote($string) {
|
function quote($string) {
|
||||||
return "'" . pg_escape_string($this->_link, $string) . "'"; //! bytea
|
return pg_escape_literal($this->_link, $string);
|
||||||
|
}
|
||||||
|
|
||||||
|
function value($val, $field) {
|
||||||
|
return ($field["type"] == "bytea" && $val !== null ? pg_unescape_bytea($val) : $val);
|
||||||
|
}
|
||||||
|
|
||||||
|
function quoteBinary($string) {
|
||||||
|
return "'" . pg_escape_bytea($this->_link, $string) . "'";
|
||||||
}
|
}
|
||||||
|
|
||||||
function select_db($database) {
|
function select_db($database) {
|
||||||
@@ -61,12 +75,18 @@ if (isset($_GET["pgsql"])) {
|
|||||||
$this->error = "";
|
$this->error = "";
|
||||||
if (!$result) {
|
if (!$result) {
|
||||||
$this->error = pg_last_error($this->_link);
|
$this->error = pg_last_error($this->_link);
|
||||||
return false;
|
$return = false;
|
||||||
} elseif (!pg_num_fields($result)) {
|
} elseif (!pg_num_fields($result)) {
|
||||||
$this->affected_rows = pg_affected_rows($result);
|
$this->affected_rows = pg_affected_rows($result);
|
||||||
return true;
|
$return = true;
|
||||||
|
} else {
|
||||||
|
$return = new Min_Result($result);
|
||||||
}
|
}
|
||||||
return new Min_Result($result);
|
if ($this->timeout) {
|
||||||
|
$this->timeout = 0;
|
||||||
|
$this->query("RESET statement_timeout");
|
||||||
|
}
|
||||||
|
return $return;
|
||||||
}
|
}
|
||||||
|
|
||||||
function multi_query($query) {
|
function multi_query($query) {
|
||||||
@@ -89,6 +109,10 @@ if (isset($_GET["pgsql"])) {
|
|||||||
}
|
}
|
||||||
return pg_fetch_result($result->_result, 0, $field);
|
return pg_fetch_result($result->_result, 0, $field);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function warnings() {
|
||||||
|
return h(pg_last_notice($this->_link)); // second parameter is available since PHP 7.1.0
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class Min_Result {
|
class Min_Result {
|
||||||
@@ -127,14 +151,23 @@ if (isset($_GET["pgsql"])) {
|
|||||||
|
|
||||||
} elseif (extension_loaded("pdo_pgsql")) {
|
} elseif (extension_loaded("pdo_pgsql")) {
|
||||||
class Min_DB extends Min_PDO {
|
class Min_DB extends Min_PDO {
|
||||||
var $extension = "PDO_PgSQL";
|
var $extension = "PDO_PgSQL", $timeout;
|
||||||
|
|
||||||
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("$string dbname='" . ($db != "" ? addcslashes($db, "'\\") : "postgres") . "'", $username, $password);
|
//! client_encoding is supported since 9.1, but we can't yet use min_version here
|
||||||
//! connect without DB in case of an error
|
$dsn = "pgsql:host='" . str_replace(":", "' port='", addcslashes($server, "'\\")) . "' client_encoding=utf8 dbname='" . ($db != "" ? addcslashes($db, "'\\") : "postgres") . "'";
|
||||||
|
|
||||||
|
$ssl = $adminer->connectSsl();
|
||||||
|
if (isset($ssl["mode"])) {
|
||||||
|
$dsn .= " sslmode='" . $ssl["mode"] . "'";
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->dsn($dsn, $username, $password);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -143,6 +176,23 @@ if (isset($_GET["pgsql"])) {
|
|||||||
return ($adminer->database() == $database);
|
return ($adminer->database() == $database);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function quoteBinary($s) {
|
||||||
|
return q($s);
|
||||||
|
}
|
||||||
|
|
||||||
|
function query($query, $unbuffered = false) {
|
||||||
|
$return = parent::query($query, $unbuffered);
|
||||||
|
if ($this->timeout) {
|
||||||
|
$this->timeout = 0;
|
||||||
|
parent::query("RESET statement_timeout");
|
||||||
|
}
|
||||||
|
return $return;
|
||||||
|
}
|
||||||
|
|
||||||
|
function warnings() {
|
||||||
|
return ''; // not implemented in PDO_PgSQL as of PHP 7.2.1
|
||||||
|
}
|
||||||
|
|
||||||
function close() {
|
function close() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -173,6 +223,40 @@ if (isset($_GET["pgsql"])) {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function slowQuery($query, $timeout) {
|
||||||
|
$this->_conn->query("SET statement_timeout = " . (1000 * $timeout));
|
||||||
|
$this->_conn->timeout = 1000 * $timeout;
|
||||||
|
return $query;
|
||||||
|
}
|
||||||
|
|
||||||
|
function convertSearch($idf, array $where, array $field) {
|
||||||
|
$textTypes = "char|text";
|
||||||
|
if (strpos($where["op"], "LIKE") === false) {
|
||||||
|
$textTypes .= "|date|time(stamp)?|boolean|uuid|inet|cidr|macaddr|" . number_type();
|
||||||
|
}
|
||||||
|
|
||||||
|
return (preg_match("~$textTypes~", $field["type"]) ? $idf : "CAST($idf AS text)");
|
||||||
|
}
|
||||||
|
|
||||||
|
function quoteBinary($s) {
|
||||||
|
return $this->_conn->quoteBinary($s);
|
||||||
|
}
|
||||||
|
|
||||||
|
function warnings() {
|
||||||
|
return $this->_conn->warnings();
|
||||||
|
}
|
||||||
|
|
||||||
|
function tableHelp($name) {
|
||||||
|
$links = array(
|
||||||
|
"information_schema" => "infoschema",
|
||||||
|
"pg_catalog" => "catalog",
|
||||||
|
);
|
||||||
|
$link = $links[$_GET["ns"]];
|
||||||
|
if ($link) {
|
||||||
|
return "$link-" . str_replace("_", "-", $name) . ".html";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -186,12 +270,20 @@ if (isset($_GET["pgsql"])) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function connect() {
|
function connect() {
|
||||||
global $adminer;
|
global $adminer, $types, $structured_types;
|
||||||
$connection = new Min_DB;
|
$connection = new Min_DB;
|
||||||
$credentials = $adminer->credentials();
|
$credentials = $adminer->credentials();
|
||||||
if ($connection->connect($credentials[0], $credentials[1], $credentials[2])) {
|
if ($connection->connect($credentials[0], $credentials[1], $credentials[2])) {
|
||||||
if ($connection->server_info >= 9) {
|
if (min_version(9, 0, $connection)) {
|
||||||
$connection->query("SET application_name = 'Adminer'");
|
$connection->query("SET application_name = 'Adminer'");
|
||||||
|
if (min_version(9.2, 0, $connection)) {
|
||||||
|
$structured_types[lang('Strings')][] = "json";
|
||||||
|
$types["json"] = 4294967295;
|
||||||
|
if (min_version(9.4, 0, $connection)) {
|
||||||
|
$structured_types[lang('Strings')][] = "jsonb";
|
||||||
|
$types["jsonb"] = 4294967295;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return $connection;
|
return $connection;
|
||||||
}
|
}
|
||||||
@@ -199,20 +291,25 @@ if (isset($_GET["pgsql"])) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function get_databases() {
|
function get_databases() {
|
||||||
return get_vals("SELECT datname FROM pg_database 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 = " ") {
|
||||||
return " $query$where" . ($limit !== null ? $separator . "LIMIT $limit" . ($offset ? " OFFSET $offset" : "") : "");
|
return " $query$where" . ($limit !== null ? $separator . "LIMIT $limit" . ($offset ? " OFFSET $offset" : "") : "");
|
||||||
}
|
}
|
||||||
|
|
||||||
function limit1($query, $where) {
|
function limit1($table, $query, $where, $separator = "\n") {
|
||||||
return " $query$where";
|
return (preg_match('~^INTO~', $query)
|
||||||
|
? limit($query, $where, 1, 0, $separator)
|
||||||
|
: " $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() {
|
||||||
@@ -226,7 +323,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'
|
||||||
@@ -244,10 +341,10 @@ ORDER BY 1";
|
|||||||
|
|
||||||
function table_status($name = "") {
|
function table_status($name = "") {
|
||||||
$return = array();
|
$return = array();
|
||||||
foreach (get_rows("SELECT relname AS \"Name\", CASE relkind WHEN 'r' THEN 'table' WHEN 'mv' THEN 'materialized view' WHEN 'f' THEN 'foreign table' ELSE 'view' END AS \"Engine\", pg_relation_size(oid) AS \"Data_length\", pg_total_relation_size(oid) - pg_relation_size(oid) AS \"Index_length\", obj_description(oid, 'pg_class') AS \"Comment\", relhasoids::int AS \"Oid\", reltuples as \"Rows\"
|
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
|
FROM pg_class c
|
||||||
WHERE relkind IN ('r','v','mv','f')
|
JOIN pg_namespace n ON(n.nspname = current_schema() AND n.oid = c.relnamespace)
|
||||||
AND relnamespace = (SELECT oid FROM pg_namespace WHERE nspname = current_schema())
|
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;
|
||||||
@@ -269,7 +366,8 @@ AND relnamespace = (SELECT oid FROM pg_namespace WHERE nspname = current_schema(
|
|||||||
'timestamp without time zone' => 'timestamp',
|
'timestamp without time zone' => 'timestamp',
|
||||||
'timestamp with time zone' => 'timestamptz',
|
'timestamp with time zone' => 'timestamptz',
|
||||||
);
|
);
|
||||||
foreach (get_rows("SELECT a.attname AS field, format_type(a.atttypid, a.atttypmod) AS full_type, d.adsrc AS default, a.attnotnull::int, col_description(c.oid, a.attnum) AS comment
|
|
||||||
|
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" : "") . "
|
||||||
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
|
||||||
@@ -292,11 +390,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 (in_array($row['attidentity'], array('a', 'd'))) {
|
||||||
|
$row['default'] = 'GENERATED ' . ($row['attidentity'] == 'd' ? 'BY DEFAULT' : 'ALWAYS') . ' AS IDENTITY';
|
||||||
|
}
|
||||||
$row["null"] = !$row["attnotnull"];
|
$row["null"] = !$row["attnotnull"];
|
||||||
$row["auto_increment"] = preg_match('~^nextval\\(~i', $row["default"]);
|
$row["auto_increment"] = $row['attidentity'] || preg_match('~^nextval\(~i', $row["default"]);
|
||||||
$row["privileges"] = array("insert" => 1, "select" => 1, "update" => 1);
|
$row["privileges"] = array("insert" => 1, "select" => 1, "update" => 1, "where" => 1, "order" => 1);
|
||||||
if (preg_match('~(.+)::[^)]+(.*)~', $row["default"], $match)) {
|
if (preg_match('~(.+)::[^,)]+(.*)~', $row["default"], $match)) {
|
||||||
$row["default"] = ($match[1][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;
|
||||||
}
|
}
|
||||||
@@ -311,9 +412,9 @@ 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 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["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();
|
||||||
foreach (explode(" ", $row["indkey"]) as $indkey) {
|
foreach (explode(" ", $row["indkey"]) as $indkey) {
|
||||||
$return[$relname]["columns"][] = $columns[$indkey];
|
$return[$relname]["columns"][] = $columns[$indkey];
|
||||||
@@ -330,18 +431,18 @@ ORDER BY a.attnum"
|
|||||||
function foreign_keys($table) {
|
function foreign_keys($table) {
|
||||||
global $on_actions;
|
global $on_actions;
|
||||||
$return = array();
|
$return = array();
|
||||||
foreach (get_rows("SELECT conname, pg_get_constraintdef(oid) AS definition
|
foreach (get_rows("SELECT conname, condeferrable::int AS deferrable, pg_get_constraintdef(oid) AS definition
|
||||||
FROM pg_constraint
|
FROM pg_constraint
|
||||||
WHERE conrelid = (SELECT pc.oid FROM pg_class AS pc INNER JOIN pg_namespace AS pn ON (pn.oid = pc.relnamespace) WHERE pc.relname = " . q($table) . " AND pn.nspname = current_schema())
|
WHERE conrelid = (SELECT pc.oid FROM pg_class AS pc INNER JOIN pg_namespace AS pn ON (pn.oid = pc.relnamespace) WHERE pc.relname = " . q($table) . " AND pn.nspname = current_schema())
|
||||||
AND contype = 'f'::char
|
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;
|
||||||
@@ -350,9 +451,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" => $connection->result("SELECT pg_get_viewdef(" . 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() {
|
||||||
@@ -367,10 +485,10 @@ ORDER BY conkey, conname") as $row) {
|
|||||||
function error() {
|
function error() {
|
||||||
global $connection;
|
global $connection;
|
||||||
$return = h($connection->error);
|
$return = h($connection->error);
|
||||||
if (preg_match('~^(.*\\n)?([^\\n]*)\\n( *)\\^(\\n.*)?$~s', $return, $match)) {
|
if (preg_match('~^(.*\n)?([^\n]*)\n( *)\^(\n.*)?$~s', $return, $match)) {
|
||||||
$return = $match[1] . preg_replace('~((?:[^&]|&[^;]*;){' . strlen($match[3]) . '})(.*)~', '\\1<b>\\2</b>', $match[2]) . $match[4];
|
$return = $match[1] . preg_replace('~((?:[^&]|&[^;]*;){' . strlen($match[3]) . '})(.*)~', '\1<b>\2</b>', $match[2]) . $match[4];
|
||||||
}
|
}
|
||||||
return nl_br($return);
|
return nl2br($return);
|
||||||
}
|
}
|
||||||
|
|
||||||
function create_database($db, $collation) {
|
function create_database($db, $collation) {
|
||||||
@@ -395,6 +513,9 @@ ORDER BY conkey, conname") as $row) {
|
|||||||
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 = array();
|
$alter = array();
|
||||||
$queries = array();
|
$queries = array();
|
||||||
|
if ($table != "" && $table != $name) {
|
||||||
|
$queries[] = "ALTER TABLE " . table($table) . " RENAME TO " . table($name);
|
||||||
|
}
|
||||||
foreach ($fields as $field) {
|
foreach ($fields as $field) {
|
||||||
$column = idf_escape($field[0]);
|
$column = idf_escape($field[0]);
|
||||||
$val = $field[1];
|
$val = $field[1];
|
||||||
@@ -403,14 +524,17 @@ 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($table) . " RENAME $column TO $val[0]";
|
$queries[] = "ALTER TABLE " . table($name) . " RENAME $column TO $val[0]";
|
||||||
}
|
}
|
||||||
$alter[] = "ALTER $column TYPE$val[1]";
|
$alter[] = "ALTER $column TYPE$val[1]";
|
||||||
if (!$val[6]) {
|
if (!$val[6]) {
|
||||||
@@ -419,7 +543,7 @@ ORDER BY conkey, conname") as $row) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if ($field[0] != "" || $val5 != "") {
|
if ($field[0] != "" || $val5 != "") {
|
||||||
$queries[] = "COMMENT ON COLUMN " . table($table) . ".$val[0] IS " . ($val5 != "" ? substr($val5, 9) : "''");
|
$queries[] = "COMMENT ON COLUMN " . table($name) . ".$val[0] IS " . ($val5 != "" ? substr($val5, 9) : "''");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -429,10 +553,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 != "" && $table != $name) {
|
if ($comment !== null) {
|
||||||
$queries[] = "ALTER TABLE " . table($table) . " RENAME TO " . table($name);
|
|
||||||
}
|
|
||||||
if ($table != "" || $comment != "") {
|
|
||||||
$queries[] = "COMMENT ON TABLE " . table($name) . " IS " . q($comment);
|
$queries[] = "COMMENT ON TABLE " . table($name) . " IS " . q($comment);
|
||||||
}
|
}
|
||||||
if ($auto_increment != "") {
|
if ($auto_increment != "") {
|
||||||
@@ -488,7 +609,7 @@ ORDER BY conkey, conname") as $row) {
|
|||||||
|
|
||||||
function drop_tables($tables) {
|
function drop_tables($tables) {
|
||||||
foreach ($tables as $table) {
|
foreach ($tables as $table) {
|
||||||
$status = table_status($table);
|
$status = table_status($table);
|
||||||
if (!queries("DROP " . strtoupper($status["Engine"]) . " " . table($table))) {
|
if (!queries("DROP " . strtoupper($status["Engine"]) . " " . table($table))) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -506,18 +627,34 @@ ORDER BY conkey, conname") as $row) {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
function trigger($name) {
|
function trigger($name, $table) {
|
||||||
if ($name == "") {
|
if ($name == "") {
|
||||||
return array("Statement" => "EXECUTE PROCEDURE ()");
|
return array("Statement" => "EXECUTE PROCEDURE ()");
|
||||||
}
|
}
|
||||||
$rows = get_rows('SELECT trigger_name AS "Trigger", condition_timing AS "Timing", event_manipulation AS "Event", \'FOR EACH \' || action_orientation AS "Type", action_statement AS "Statement" FROM information_schema.triggers WHERE event_object_table = ' . q($_GET["trigger"]) . ' AND trigger_name = ' . q($name));
|
$columns = array();
|
||||||
return reset($rows);
|
$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"];
|
||||||
|
}
|
||||||
|
$return = array();
|
||||||
|
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["condition_timing"], $row["event_manipulation"]);
|
$trigger = trigger($row["trigger_name"], $table);
|
||||||
|
$return[$trigger["Trigger"]] = array($trigger["Timing"], $trigger["Event"]);
|
||||||
}
|
}
|
||||||
return $return;
|
return $return;
|
||||||
}
|
}
|
||||||
@@ -525,35 +662,41 @@ 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"),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
function routine($name, $type) {
|
function routine($name, $type) {
|
||||||
//! there can be more functions with the same name differing only in parameters, it must be also passed to DROP FUNCTION
|
$rows = get_rows('SELECT routine_definition AS definition, LOWER(external_language) AS language, *
|
||||||
//! no procedures, only functions
|
FROM information_schema.routines
|
||||||
//! different syntax of CREATE FUNCTION
|
WHERE routine_schema = current_schema() AND specific_name = ' . q($name));
|
||||||
$rows = get_rows('SELECT pg_catalog.format_type(p.prorettype, NULL) AS "returns", p.prosrc AS "definition"
|
$return = $rows[0];
|
||||||
FROM pg_catalog.pg_namespace n
|
$return["returns"] = array("type" => $return["type_udt_name"]);
|
||||||
JOIN pg_catalog.pg_proc p ON p.pronamespace = n.oid
|
$return["fields"] = get_rows('SELECT parameter_name AS field, data_type AS type, character_maximum_length AS length, parameter_mode AS inout
|
||||||
WHERE n.nspname = current_schema() AND p.proname = ' . q($name));
|
FROM information_schema.parameters
|
||||||
$rows[0]["fields"] = array(); //!
|
WHERE specific_schema = current_schema() AND specific_name = ' . q($name) . '
|
||||||
return $rows[0];
|
ORDER BY ordinal_position');
|
||||||
|
return $return;
|
||||||
}
|
}
|
||||||
*/
|
|
||||||
|
|
||||||
function routines() {
|
function routines() {
|
||||||
return get_rows('SELECT p.proname AS "ROUTINE_NAME", p.proargtypes AS "ROUTINE_TYPE", pg_catalog.format_type(p.prorettype, NULL) AS "DTD_IDENTIFIER"
|
return get_rows('SELECT specific_name AS "SPECIFIC_NAME", routine_type AS "ROUTINE_TYPE", routine_name AS "ROUTINE_NAME", type_udt_name AS "DTD_IDENTIFIER"
|
||||||
FROM pg_catalog.pg_namespace n
|
FROM information_schema.routines
|
||||||
JOIN pg_catalog.pg_proc p ON p.pronamespace = n.oid
|
WHERE routine_schema = current_schema()
|
||||||
WHERE n.nspname = current_schema()
|
ORDER BY SPECIFIC_NAME');
|
||||||
ORDER BY p.proname');
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function routine_languages() {
|
function routine_languages() {
|
||||||
return get_vals("SELECT langname FROM pg_catalog.pg_language");
|
return get_vals("SELECT LOWER(lanname) FROM pg_catalog.pg_language");
|
||||||
|
}
|
||||||
|
|
||||||
|
function routine_id($name, $row) {
|
||||||
|
$return = array();
|
||||||
|
foreach ($row["fields"] as $field) {
|
||||||
|
$return[] = $field["type"];
|
||||||
|
}
|
||||||
|
return idf_escape($name) . "(" . implode(", ", $return) . ")";
|
||||||
}
|
}
|
||||||
|
|
||||||
function last_id() {
|
function last_id() {
|
||||||
@@ -594,9 +737,12 @@ AND typelem = 0"
|
|||||||
return $connection->result("SELECT current_schema()");
|
return $connection->result("SELECT current_schema()");
|
||||||
}
|
}
|
||||||
|
|
||||||
function set_schema($schema) {
|
function set_schema($schema, $connection2 = null) {
|
||||||
global $connection, $types, $structured_types;
|
global $connection, $types, $structured_types;
|
||||||
$return = $connection->query("SET search_path TO " . idf_escape($schema));
|
if (!$connection2) {
|
||||||
|
$connection2 = $connection;
|
||||||
|
}
|
||||||
|
$return = $connection2->query("SET search_path TO " . idf_escape($schema));
|
||||||
foreach (types() as $type) { //! get types from current_schemas('t')
|
foreach (types() as $type) { //! get types from current_schemas('t')
|
||||||
if (!isset($types[$type])) {
|
if (!isset($types[$type])) {
|
||||||
$types[$type] = 0;
|
$types[$type] = 0;
|
||||||
@@ -606,6 +752,124 @@ 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) {
|
||||||
|
global $connection;
|
||||||
|
$return = '';
|
||||||
|
$return_parts = array();
|
||||||
|
$sequences = array();
|
||||||
|
|
||||||
|
$status = table_status($table);
|
||||||
|
if (is_view($status)) {
|
||||||
|
$view = view($table);
|
||||||
|
return rtrim("CREATE VIEW " . idf_escape($table) . " AS $view[select]", ";");
|
||||||
|
}
|
||||||
|
$fields = fields($table);
|
||||||
|
$indexes = indexes($table);
|
||||||
|
ksort($indexes);
|
||||||
|
$constraints = constraints($table);
|
||||||
|
|
||||||
|
if (!$status || empty($fields)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
$return = "CREATE TABLE " . idf_escape($status['nspname']) . "." . idf_escape($status['Name']) . " (\n ";
|
||||||
|
|
||||||
|
// fields' definitions
|
||||||
|
foreach ($fields as $field) {
|
||||||
|
$part = idf_escape($field['field']) . ' ' . $field['full_type']
|
||||||
|
. default_value($field)
|
||||||
|
. ($field['attnotnull'] ? " NOT NULL" : "");
|
||||||
|
$return_parts[] = $part;
|
||||||
|
|
||||||
|
// sequences for fields
|
||||||
|
if (preg_match('~nextval\(\'([^\']+)\'\)~', $field['default'], $matches)) {
|
||||||
|
$sequence_name = $matches[1];
|
||||||
|
$rows = get_rows(min_version(10)
|
||||||
|
? "SELECT *, cache_size AS cache_value FROM pg_sequences WHERE schemaname = current_schema() AND sequencename = " . q(idf_unescape($sequence_name))
|
||||||
|
: "SELECT * FROM $sequence_name"
|
||||||
|
);
|
||||||
|
$sq = reset($rows);
|
||||||
|
$sequences[] = ($style == "DROP+CREATE" ? "DROP SEQUENCE IF EXISTS $sequence_name;\n" : "")
|
||||||
|
. "CREATE SEQUENCE $sequence_name INCREMENT $sq[increment_by] MINVALUE $sq[min_value] MAXVALUE $sq[max_value]" . ($auto_increment && $sq['last_value'] ? " START $sq[last_value]" : "") . " CACHE $sq[cache_value];";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// adding sequences before table definition
|
||||||
|
if (!empty($sequences)) {
|
||||||
|
$return = implode("\n\n", $sequences) . "\n\n$return";
|
||||||
|
}
|
||||||
|
|
||||||
|
// primary + unique keys
|
||||||
|
foreach ($indexes as $index_name => $index) {
|
||||||
|
switch($index['type']) {
|
||||||
|
case 'UNIQUE': $return_parts[] = "CONSTRAINT " . idf_escape($index_name) . " UNIQUE (" . implode(', ', array_map('idf_escape', $index['columns'])) . ")"; break;
|
||||||
|
case 'PRIMARY': $return_parts[] = "CONSTRAINT " . idf_escape($index_name) . " PRIMARY KEY (" . implode(', ', array_map('idf_escape', $index['columns'])) . ")"; break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach ($constraints as $conname => $consrc) {
|
||||||
|
$return_parts[] = "CONSTRAINT " . idf_escape($conname) . " CHECK $consrc";
|
||||||
|
}
|
||||||
|
|
||||||
|
$return .= implode(",\n ", $return_parts) . "\n) WITH (oids = " . ($status['Oid'] ? 'true' : 'false') . ");";
|
||||||
|
|
||||||
|
// "basic" indexes after table definition
|
||||||
|
foreach ($indexes as $index_name => $index) {
|
||||||
|
if ($index['type'] == 'INDEX') {
|
||||||
|
$columns = array();
|
||||||
|
foreach ($index['columns'] as $key => $val) {
|
||||||
|
$columns[] = idf_escape($val) . ($index['descs'][$key] ? " DESC" : "");
|
||||||
|
}
|
||||||
|
$return .= "\n\nCREATE INDEX " . idf_escape($index_name) . " ON " . idf_escape($status['nspname']) . "." . idf_escape($status['Name']) . " USING btree (" . implode(', ', $columns) . ");";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// coments for table & fields
|
||||||
|
if ($status['Comment']) {
|
||||||
|
$return .= "\n\nCOMMENT ON TABLE " . idf_escape($status['nspname']) . "." . idf_escape($status['Name']) . " IS " . q($status['Comment']) . ";";
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach ($fields as $field_name => $field) {
|
||||||
|
if ($field['comment']) {
|
||||||
|
$return .= "\n\nCOMMENT ON COLUMN " . idf_escape($status['nspname']) . "." . idf_escape($status['Name']) . "." . idf_escape($field_name) . " IS " . q($field['comment']) . ";";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return rtrim($return, ';');
|
||||||
|
}
|
||||||
|
|
||||||
|
function truncate_sql($table) {
|
||||||
|
return "TRUNCATE " . table($table);
|
||||||
|
}
|
||||||
|
|
||||||
|
function trigger_sql($table) {
|
||||||
|
$status = table_status($table);
|
||||||
|
$return = "";
|
||||||
|
foreach (triggers($table) as $trg_id => $trg) {
|
||||||
|
$trigger = trigger($trg_id, $status['Name']);
|
||||||
|
$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;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
function use_sql($database) {
|
function use_sql($database) {
|
||||||
return "\connect " . idf_escape($database);
|
return "\connect " . idf_escape($database);
|
||||||
}
|
}
|
||||||
@@ -614,9 +878,25 @@ AND typelem = 0"
|
|||||||
return get_key_vals("SHOW ALL");
|
return get_key_vals("SHOW ALL");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
function is_strict_mode() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
function is_c_style_escapes() {
|
||||||
|
static $c_style = null;
|
||||||
|
|
||||||
|
if ($c_style === null) {
|
||||||
|
$c_style = get_vals("SHOW standard_conforming_strings")[0] == "off";
|
||||||
|
}
|
||||||
|
|
||||||
|
return $c_style;
|
||||||
|
}
|
||||||
|
|
||||||
function process_list() {
|
function process_list() {
|
||||||
global $connection;
|
return get_rows("SELECT * FROM pg_stat_activity ORDER BY " . (min_version(9.2) ? "pid" : "procpid"));
|
||||||
return get_rows("SELECT * FROM pg_stat_activity ORDER BY " . ($connection->server_info < 9.2 ? "procpid" : "pid"));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function show_status() {
|
function show_status() {
|
||||||
@@ -630,36 +910,58 @@ AND typelem = 0"
|
|||||||
}
|
}
|
||||||
|
|
||||||
function support($feature) {
|
function support($feature) {
|
||||||
global $connection;
|
return preg_match('~^(database|table|columns|sql|indexes|descidx|comment|view|' . (min_version(9.3) ? 'materializedview|' : '') . 'scheme|routine|processlist|sequence|trigger|type|variables|drop_col|kill|dump)$~', $feature);
|
||||||
return preg_match('~^(database|table|columns|sql|indexes|comment|view|' . ($connection->server_info >= 9.3 ? 'materializedview|' : '') . 'scheme|processlist|sequence|trigger|type|variables|drop_col)$~', $feature); //! routine|
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$jush = "pgsql";
|
function kill_process($val) {
|
||||||
$types = array();
|
return queries("SELECT pg_terminate_backend(" . number($val) . ")");
|
||||||
$structured_types = array();
|
}
|
||||||
foreach (array( //! arrays
|
|
||||||
lang('Numbers') => array("smallint" => 5, "integer" => 10, "bigint" => 19, "boolean" => 1, "numeric" => 0, "real" => 7, "double precision" => 16, "money" => 20),
|
function connection_id(){
|
||||||
lang('Date and time') => array("date" => 13, "time" => 17, "timestamp" => 20, "timestamptz" => 21, "interval" => 0),
|
return "SELECT pg_backend_pid()";
|
||||||
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('Network') => array("cidr" => 43, "inet" => 43, "macaddr" => 17, "txid_snapshot" => 0),
|
function max_connections() {
|
||||||
lang('Geometry') => array("box" => 0, "circle" => 0, "line" => 0, "lseg" => 0, "path" => 0, "point" => 0, "polygon" => 0),
|
global $connection;
|
||||||
) as $key => $val) { //! can be retrieved from pg_type
|
return $connection->result("SHOW max_connections");
|
||||||
$types += $val;
|
}
|
||||||
$structured_types[$key] = array_keys($val);
|
|
||||||
|
function driver_config() {
|
||||||
|
$types = array();
|
||||||
|
$structured_types = array();
|
||||||
|
foreach (array( //! arrays
|
||||||
|
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('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('Network') => array("cidr" => 43, "inet" => 43, "macaddr" => 17, "macaddr8" => 23, "txid_snapshot" => 0),
|
||||||
|
lang('Geometry') => array("box" => 0, "circle" => 0, "line" => 0, "lseg" => 0, "path" => 0, "point" => 0, "polygon" => 0),
|
||||||
|
) as $key => $val) { //! can be retrieved from pg_type
|
||||||
|
$types += $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
|
||||||
|
'operator_like' => "LIKE %%",
|
||||||
|
'operator_regexp' => '~*',
|
||||||
|
'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" => "||",
|
||||||
|
)
|
||||||
|
),
|
||||||
|
'c_style_escapes' => true,
|
||||||
|
);
|
||||||
}
|
}
|
||||||
$unsigned = array();
|
|
||||||
$operators = array("=", "<", ">", "<=", ">=", "!=", "~", "!~", "LIKE", "LIKE %%", "ILIKE", "ILIKE %%", "IN", "IS NULL", "NOT LIKE", "NOT IN", "IS NOT NULL"); // no "SQL" to avoid SQL injection
|
|
||||||
$functions = array("char_length", "lower", "round", "to_hex", "to_timestamp", "upper");
|
|
||||||
$grouping = array("avg", "count", "count distinct", "max", "min", "sum");
|
|
||||||
$edit_functions = array(
|
|
||||||
array(
|
|
||||||
"char" => "md5",
|
|
||||||
"date|time" => "now",
|
|
||||||
), array(
|
|
||||||
"int|numeric|real|money" => "+/-",
|
|
||||||
"date|time" => "+ interval/- interval", //! escape
|
|
||||||
"char|text" => "||",
|
|
||||||
)
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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;
|
||||||
}
|
}
|
||||||
@@ -152,7 +151,7 @@ if (isset($_GET["sqlite"]) || isset($_GET["sqlite2"])) {
|
|||||||
|
|
||||||
function fetch_field() {
|
function fetch_field() {
|
||||||
$name = $this->_result->fieldName($this->_offset++);
|
$name = $this->_result->fieldName($this->_offset++);
|
||||||
$pattern = '(\\[.*]|"(?:[^"]|"")*"|(.+))';
|
$pattern = '(\[.*]|"(?:[^"]|"")*"|(.+))';
|
||||||
if (preg_match("~^($pattern\\.)?$pattern\$~", $name, $match)) {
|
if (preg_match("~^($pattern\\.)?$pattern\$~", $name, $match)) {
|
||||||
$table = ($match[3] != "" ? $match[3] : idf_unescape($match[2]));
|
$table = ($match[3] != "" ? $match[3] : idf_unescape($match[2]));
|
||||||
$name = ($match[5] != "" ? $match[5] : idf_unescape($match[4]));
|
$name = ($match[5] != "" ? $match[5] : idf_unescape($match[4]));
|
||||||
@@ -184,11 +183,14 @@ if (isset($_GET["sqlite"]) || isset($_GET["sqlite2"])) {
|
|||||||
|
|
||||||
function __construct() {
|
function __construct() {
|
||||||
parent::__construct(":memory:");
|
parent::__construct(":memory:");
|
||||||
|
$this->query("PRAGMA foreign_keys = 1");
|
||||||
}
|
}
|
||||||
|
|
||||||
function select_db($filename) {
|
function select_db($filename) {
|
||||||
if (is_readable($filename) && $this->query("ATTACH " . $this->quote(preg_match("~(^[/\\\\]|:)~", $filename) ? $filename : dirname($_SERVER["SCRIPT_FILENAME"]) . "/$filename") . " AS a")) { // is_readable - SQLite 3
|
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 busy_timeout = 500");
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
@@ -216,6 +218,15 @@ if (isset($_GET["sqlite"]) || isset($_GET["sqlite2"])) {
|
|||||||
return queries("REPLACE INTO " . table($table) . " (" . implode(", ", array_keys(reset($rows))) . ") VALUES\n" . implode(",\n", $values));
|
return queries("REPLACE INTO " . table($table) . " (" . implode(", ", array_keys(reset($rows))) . ") VALUES\n" . implode(",\n", $values));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function tableHelp($name) {
|
||||||
|
if ($name == "sqlite_sequence") {
|
||||||
|
return "fileformat2.html#seqtab";
|
||||||
|
}
|
||||||
|
if ($name == "sqlite_master") {
|
||||||
|
return "fileformat2.html#$name";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -229,6 +240,11 @@ if (isset($_GET["sqlite"]) || isset($_GET["sqlite2"])) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function connect() {
|
function connect() {
|
||||||
|
global $adminer;
|
||||||
|
list(, , $password) = $adminer->credentials();
|
||||||
|
if ($password != "") {
|
||||||
|
return lang('Database does not support password.');
|
||||||
|
}
|
||||||
return new Min_DB;
|
return new Min_DB;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -240,9 +256,12 @@ if (isset($_GET["sqlite"]) || isset($_GET["sqlite2"])) {
|
|||||||
return " $query$where" . ($limit !== null ? $separator . "LIMIT $limit" . ($offset ? " OFFSET $offset" : "") : "");
|
return " $query$where" . ($limit !== null ? $separator . "LIMIT $limit" . ($offset ? " OFFSET $offset" : "") : "");
|
||||||
}
|
}
|
||||||
|
|
||||||
function limit1($query, $where) {
|
function limit1($table, $query, $where, $separator = "\n") {
|
||||||
global $connection;
|
global $connection;
|
||||||
return ($connection->result("SELECT sqlite_compileoption_used('ENABLE_UPDATE_DELETE_LIMIT')") ? limit($query, $where, 1) : " $query$where");
|
return (preg_match('~^INTO~', $query) || $connection->result("SELECT sqlite_compileoption_used('ENABLE_UPDATE_DELETE_LIMIT')")
|
||||||
|
? limit($query, $where, 1, 0, $separator)
|
||||||
|
: " $query WHERE rowid = (SELECT rowid FROM " . table($table) . $where . $separator . "LIMIT 1)" //! use primary key in tables with WITHOUT rowid
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
function db_collation($db, $collations) {
|
function db_collation($db, $collations) {
|
||||||
@@ -259,7 +278,7 @@ if (isset($_GET["sqlite"]) || isset($_GET["sqlite2"])) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function tables_list() {
|
function tables_list() {
|
||||||
return get_key_vals("SELECT name, type FROM sqlite_master WHERE type IN ('table', 'view') ORDER BY (name = 'sqlite_sequence'), name", 1);
|
return get_key_vals("SELECT name, type FROM sqlite_master WHERE type IN ('table', 'view') ORDER BY (name = 'sqlite_sequence'), name");
|
||||||
}
|
}
|
||||||
|
|
||||||
function count_tables($databases) {
|
function count_tables($databases) {
|
||||||
@@ -269,9 +288,7 @@ if (isset($_GET["sqlite"]) || isset($_GET["sqlite2"])) {
|
|||||||
function table_status($name = "") {
|
function table_status($name = "") {
|
||||||
global $connection;
|
global $connection;
|
||||||
$return = array();
|
$return = array();
|
||||||
foreach (get_rows("SELECT name AS Name, type AS Engine FROM sqlite_master WHERE type IN ('table', 'view') " . ($name != "" ? "AND name = " . q($name) : "ORDER BY name")) as $row) {
|
foreach (get_rows("SELECT name AS Name, type AS Engine, 'rowid' AS Oid, '' AS Auto_increment FROM sqlite_master WHERE type IN ('table', 'view') " . ($name != "" ? "AND name = " . q($name) : "ORDER BY name")) as $row) {
|
||||||
$row["Oid"] = 1;
|
|
||||||
$row["Auto_increment"] = "";
|
|
||||||
$row["Rows"] = $connection->result("SELECT COUNT(*) FROM " . idf_escape($row["Name"]));
|
$row["Rows"] = $connection->result("SELECT COUNT(*) FROM " . idf_escape($row["Name"]));
|
||||||
$return[$row["Name"]] = $row;
|
$return[$row["Name"]] = $row;
|
||||||
}
|
}
|
||||||
@@ -304,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"]) {
|
||||||
@@ -334,9 +351,9 @@ if (isset($_GET["sqlite"]) || isset($_GET["sqlite2"])) {
|
|||||||
}
|
}
|
||||||
$return = array();
|
$return = array();
|
||||||
$sql = $connection2->result("SELECT sql FROM sqlite_master WHERE type = 'table' AND name = " . q($table));
|
$sql = $connection2->result("SELECT sql FROM sqlite_master WHERE type = 'table' AND name = " . q($table));
|
||||||
if (preg_match('~\bPRIMARY\s+KEY\s*\((([^)"]+|"[^"]*")++)~i', $sql, $match)) {
|
if (preg_match('~\bPRIMARY\s+KEY\s*\((([^)"]+|"[^"]*"|`[^`]*`)++)~i', $sql, $match)) {
|
||||||
$return[""] = array("type" => "PRIMARY", "columns" => array(), "lengths" => array(), "descs" => array());
|
$return[""] = array("type" => "PRIMARY", "columns" => array(), "lengths" => array(), "descs" => array());
|
||||||
preg_match_all('~((("[^"]*+")+)|(\S+))(\s+(ASC|DESC))?(,\s*|$)~i', $match[1], $matches, PREG_SET_ORDER);
|
preg_match_all('~((("[^"]*+")+|(?:`[^`]*+`)+)|(\S+))(\s+(ASC|DESC))?(,\s*|$)~i', $match[1], $matches, PREG_SET_ORDER);
|
||||||
foreach ($matches as $match) {
|
foreach ($matches as $match) {
|
||||||
$return[""]["columns"][] = idf_unescape($match[2]) . $match[4];
|
$return[""]["columns"][] = idf_unescape($match[2]) . $match[4];
|
||||||
$return[""]["descs"][] = (preg_match('~DESC~i', $match[5]) ? '1' : null);
|
$return[""]["descs"][] = (preg_match('~DESC~i', $match[5]) ? '1' : null);
|
||||||
@@ -390,7 +407,7 @@ if (isset($_GET["sqlite"]) || isset($_GET["sqlite2"])) {
|
|||||||
|
|
||||||
function view($name) {
|
function view($name) {
|
||||||
global $connection;
|
global $connection;
|
||||||
return array("select" => preg_replace('~^(?:[^`"[]+|`[^`]*`|"[^"]*")* AS\\s+~iU', '', $connection->result("SELECT sql FROM sqlite_master WHERE name = " . q($name)))); //! identifiers may be inside []
|
return array("select" => preg_replace('~^(?:[^`"[]+|`[^`]*`|"[^"]*")* AS\s+~iU', '', $connection->result("SELECT sql FROM sqlite_master WHERE name = " . q($name)))); //! identifiers may be inside []
|
||||||
}
|
}
|
||||||
|
|
||||||
function collations() {
|
function collations() {
|
||||||
@@ -465,6 +482,7 @@ if (isset($_GET["sqlite"]) || isset($_GET["sqlite2"])) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
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) {
|
||||||
|
global $connection;
|
||||||
$use_all_fields = ($table == "" || $foreign);
|
$use_all_fields = ($table == "" || $foreign);
|
||||||
foreach ($fields as $field) {
|
foreach ($fields as $field) {
|
||||||
if ($field[0] != "" || !$field[1] || $field[2]) {
|
if ($field[0] != "" || !$field[1] || $field[2]) {
|
||||||
@@ -491,19 +509,28 @@ if (isset($_GET["sqlite"]) || isset($_GET["sqlite2"])) {
|
|||||||
if ($table != $name && !queries("ALTER TABLE " . table($table) . " RENAME TO " . table($name))) {
|
if ($table != $name && !queries("ALTER TABLE " . table($table) . " RENAME TO " . table($name))) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
} elseif (!recreate_table($table, $name, $alter, $originals, $foreign)) {
|
} elseif (!recreate_table($table, $name, $alter, $originals, $foreign, $auto_increment)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if ($auto_increment) {
|
if ($auto_increment) {
|
||||||
|
queries("BEGIN");
|
||||||
queries("UPDATE sqlite_sequence SET seq = $auto_increment WHERE name = " . q($name)); // ignores error
|
queries("UPDATE sqlite_sequence SET seq = $auto_increment WHERE name = " . q($name)); // ignores error
|
||||||
|
if (!$connection->affected_rows) {
|
||||||
|
queries("INSERT INTO sqlite_sequence (name, seq) VALUES (" . q($name) . ", $auto_increment)");
|
||||||
|
}
|
||||||
|
queries("COMMIT");
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
function recreate_table($table, $name, $fields, $originals, $foreign, $indexes = array()) {
|
function recreate_table($table, $name, $fields, $originals, $foreign, $auto_increment, $indexes = array()) {
|
||||||
|
global $connection;
|
||||||
if ($table != "") {
|
if ($table != "") {
|
||||||
if (!$fields) {
|
if (!$fields) {
|
||||||
foreach (fields($table) as $key => $field) {
|
foreach (fields($table) as $key => $field) {
|
||||||
|
if ($indexes) {
|
||||||
|
$field["auto_increment"] = 0;
|
||||||
|
}
|
||||||
$fields[] = process_field($field, $field);
|
$fields[] = process_field($field, $field);
|
||||||
$originals[$key] = idf_escape($key);
|
$originals[$key] = idf_escape($key);
|
||||||
}
|
}
|
||||||
@@ -558,12 +585,13 @@ if (isset($_GET["sqlite"]) || isset($_GET["sqlite2"])) {
|
|||||||
$fields[$key] = " " . implode($field);
|
$fields[$key] = " " . implode($field);
|
||||||
}
|
}
|
||||||
$fields = array_merge($fields, array_filter($foreign));
|
$fields = array_merge($fields, array_filter($foreign));
|
||||||
if (!queries("CREATE TABLE " . table($table != "" ? "adminer_$name" : $name) . " (\n" . implode(",\n", $fields) . "\n)")) {
|
$temp_name = ($table == $name ? "adminer_$name" : $name);
|
||||||
|
if (!queries("CREATE TABLE " . table($temp_name) . " (\n" . implode(",\n", $fields) . "\n)")) {
|
||||||
// implicit ROLLBACK to not overwrite $connection->error
|
// implicit ROLLBACK to not overwrite $connection->error
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if ($table != "") {
|
if ($table != "") {
|
||||||
if ($originals && !queries("INSERT INTO " . table("adminer_$name") . " (" . implode(", ", $originals) . ") SELECT " . implode(", ", array_map('idf_escape', array_keys($originals))) . " FROM " . table($table))) {
|
if ($originals && !queries("INSERT INTO " . table($temp_name) . " (" . implode(", ", $originals) . ") SELECT " . implode(", ", array_map('idf_escape', array_keys($originals))) . " FROM " . table($table))) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
$triggers = array();
|
$triggers = array();
|
||||||
@@ -571,12 +599,15 @@ if (isset($_GET["sqlite"]) || isset($_GET["sqlite2"])) {
|
|||||||
$trigger = trigger($trigger_name);
|
$trigger = trigger($trigger_name);
|
||||||
$triggers[] = "CREATE TRIGGER " . idf_escape($trigger_name) . " " . implode(" ", $timing_event) . " ON " . table($name) . "\n$trigger[Statement]";
|
$triggers[] = "CREATE TRIGGER " . idf_escape($trigger_name) . " " . implode(" ", $timing_event) . " ON " . table($name) . "\n$trigger[Statement]";
|
||||||
}
|
}
|
||||||
if (!queries("DROP TABLE " . table($table))) { // drop before creating indexes and triggers to allow using old names
|
$auto_increment = $auto_increment ? 0 : $connection->result("SELECT seq FROM sqlite_sequence WHERE name = " . q($table)); // if $auto_increment is set then it will be updated later
|
||||||
|
if (!queries("DROP TABLE " . table($table)) // drop before creating indexes and triggers to allow using old names
|
||||||
|
|| ($table == $name && !queries("ALTER TABLE " . table($temp_name) . " RENAME TO " . table($name)))
|
||||||
|
|| !alter_indexes($name, $indexes)
|
||||||
|
) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
queries("ALTER TABLE " . table("adminer_$name") . " RENAME TO " . table($name));
|
if ($auto_increment) {
|
||||||
if (!alter_indexes($name, $indexes)) {
|
queries("UPDATE sqlite_sequence SET seq = $auto_increment WHERE name = " . q($name)); // ignores error
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
foreach ($triggers as $trigger) {
|
foreach ($triggers as $trigger) {
|
||||||
if (!queries($trigger)) {
|
if (!queries($trigger)) {
|
||||||
@@ -599,7 +630,7 @@ if (isset($_GET["sqlite"]) || isset($_GET["sqlite2"])) {
|
|||||||
function alter_indexes($table, $alter) {
|
function alter_indexes($table, $alter) {
|
||||||
foreach ($alter as $primary) {
|
foreach ($alter as $primary) {
|
||||||
if ($primary[0] == "PRIMARY") {
|
if ($primary[0] == "PRIMARY") {
|
||||||
return recreate_table($table, $table, array(), array(), array(), $alter);
|
return recreate_table($table, $table, array(), array(), array(), 0, $alter);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
foreach (array_reverse($alter) as $val) {
|
foreach (array_reverse($alter) as $val) {
|
||||||
@@ -634,7 +665,7 @@ if (isset($_GET["sqlite"]) || isset($_GET["sqlite2"])) {
|
|||||||
if ($name == "") {
|
if ($name == "") {
|
||||||
return array("Statement" => "BEGIN\n\t;\nEND");
|
return array("Statement" => "BEGIN\n\t;\nEND");
|
||||||
}
|
}
|
||||||
$idf = '(?:[^`"\\s]+|`[^`]*`|"[^"]*")+';
|
$idf = '(?:[^`"\s]+|`[^`]*`|"[^"]*")+';
|
||||||
$trigger_options = trigger_options();
|
$trigger_options = trigger_options();
|
||||||
preg_match(
|
preg_match(
|
||||||
"~^CREATE\\s+TRIGGER\\s*$idf\\s*(" . implode("|", $trigger_options["Timing"]) . ")\\s+([a-z]+)(?:\\s+OF\\s+($idf))?\\s+ON\\s*$idf\\s*(?:FOR\\s+EACH\\s+ROW\\s)?(.*)~is",
|
"~^CREATE\\s+TRIGGER\\s*$idf\\s*(" . implode("|", $trigger_options["Timing"]) . ")\\s+([a-z]+)(?:\\s+OF\\s+($idf))?\\s+ON\\s*$idf\\s*(?:FOR\\s+EACH\\s+ROW\\s)?(.*)~is",
|
||||||
@@ -645,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],
|
||||||
);
|
);
|
||||||
@@ -655,7 +686,7 @@ if (isset($_GET["sqlite"]) || isset($_GET["sqlite2"])) {
|
|||||||
$return = array();
|
$return = array();
|
||||||
$trigger_options = trigger_options();
|
$trigger_options = trigger_options();
|
||||||
foreach (get_rows("SELECT * FROM sqlite_master WHERE type = 'trigger' AND tbl_name = " . q($table)) as $row) {
|
foreach (get_rows("SELECT * FROM sqlite_master WHERE type = 'trigger' AND tbl_name = " . q($table)) as $row) {
|
||||||
preg_match('~^CREATE\\s+TRIGGER\\s*(?:[^`"\\s]+|`[^`]*`|"[^"]*")+\\s*(' . implode("|", $trigger_options["Timing"]) . ')\\s*(.*)\\s+ON\\b~iU', $row["sql"], $match);
|
preg_match('~^CREATE\s+TRIGGER\s*(?:[^`"\s]+|`[^`]*`|"[^"]*")+\s*(' . implode("|", $trigger_options["Timing"]) . ')\s*(.*?)\s+ON\b~i', $row["sql"], $match);
|
||||||
$return[$row["name"]] = array($match[1], $match[2]);
|
$return[$row["name"]] = array($match[1], $match[2]);
|
||||||
}
|
}
|
||||||
return $return;
|
return $return;
|
||||||
@@ -669,18 +700,6 @@ if (isset($_GET["sqlite"]) || isset($_GET["sqlite2"])) {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
function routine($name, $type) {
|
|
||||||
// not supported by SQLite
|
|
||||||
}
|
|
||||||
|
|
||||||
function routines() {
|
|
||||||
// not supported by SQLite
|
|
||||||
}
|
|
||||||
|
|
||||||
function routine_languages() {
|
|
||||||
// not supported by SQLite
|
|
||||||
}
|
|
||||||
|
|
||||||
function begin() {
|
function begin() {
|
||||||
return queries("BEGIN");
|
return queries("BEGIN");
|
||||||
}
|
}
|
||||||
@@ -713,7 +732,7 @@ if (isset($_GET["sqlite"]) || isset($_GET["sqlite2"])) {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
function create_sql($table, $auto_increment) {
|
function create_sql($table, $auto_increment, $style) {
|
||||||
global $connection;
|
global $connection;
|
||||||
$return = $connection->result("SELECT sql FROM sqlite_master WHERE type IN ('table', 'view') AND name = " . q($table));
|
$return = $connection->result("SELECT sql FROM sqlite_master WHERE type IN ('table', 'view') AND name = " . q($table));
|
||||||
foreach (indexes($table) as $name => $index) {
|
foreach (indexes($table) as $name => $index) {
|
||||||
@@ -732,7 +751,7 @@ if (isset($_GET["sqlite"]) || isset($_GET["sqlite2"])) {
|
|||||||
function use_sql($database) {
|
function use_sql($database) {
|
||||||
}
|
}
|
||||||
|
|
||||||
function trigger_sql($table, $style) {
|
function trigger_sql($table) {
|
||||||
return implode(get_vals("SELECT sql || ';;\n' FROM sqlite_master WHERE type = 'trigger' AND tbl_name = " . q($table)));
|
return implode(get_vals("SELECT sql || ';;\n' FROM sqlite_master WHERE type = 'trigger' AND tbl_name = " . q($table)));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -745,6 +764,17 @@ if (isset($_GET["sqlite"]) || isset($_GET["sqlite2"])) {
|
|||||||
return $return;
|
return $return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
function is_strict_mode() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
function is_c_style_escapes() {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
function show_status() {
|
function show_status() {
|
||||||
$return = array();
|
$return = array();
|
||||||
foreach (get_vals("PRAGMA compile_options") as $option) {
|
foreach (get_vals("PRAGMA compile_options") as $option) {
|
||||||
@@ -762,23 +792,30 @@ if (isset($_GET["sqlite"]) || isset($_GET["sqlite2"])) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function support($feature) {
|
function support($feature) {
|
||||||
return preg_match('~^(columns|database|drop_col|dump|indexes|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')",
|
'operator_like' => "LIKE %%",
|
||||||
), array(
|
'functions' => array("hex", "length", "lower", "round", "unixepoch", "upper"),
|
||||||
"integer|real|numeric" => "+/-",
|
'grouping' => array("avg", "count", "count distinct", "group_concat", "max", "min", "sum"),
|
||||||
// "text" => "date/time/datetime",
|
'edit_functions' => array(
|
||||||
"text" => "||",
|
array(
|
||||||
)
|
// "text" => "date('now')/time('now')/datetime('now')",
|
||||||
);
|
), array(
|
||||||
|
"integer|real|numeric" => "+/-",
|
||||||
|
// "text" => "date/time/datetime",
|
||||||
|
"text" => "||",
|
||||||
|
)
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -14,15 +14,16 @@ 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';
|
||||||
" . ($_POST["data_style"] ? "SET foreign_key_checks = 0;
|
SET foreign_key_checks = 0;
|
||||||
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 = ''");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -92,7 +93,7 @@ SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO';
|
|||||||
$fields = fields($name);
|
$fields = fields($name);
|
||||||
$adminer->dumpData($name, $_POST["data_style"], "SELECT *" . convert_fields($fields, $fields) . " FROM " . table($name));
|
$adminer->dumpData($name, $_POST["data_style"], "SELECT *" . convert_fields($fields, $fields) . " FROM " . table($name));
|
||||||
}
|
}
|
||||||
if ($is_sql && $_POST["triggers"] && $table && ($triggers = trigger_sql($name, $_POST["table_style"]))) {
|
if ($is_sql && $_POST["triggers"] && $table && ($triggers = trigger_sql($name))) {
|
||||||
echo "\nDELIMITER ;;\n$triggers\nDELIMITER ;\n";
|
echo "\nDELIMITER ;;\n$triggers\nDELIMITER ;\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -105,6 +106,16 @@ SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO';
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 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);
|
||||||
}
|
}
|
||||||
@@ -126,7 +137,7 @@ page_header(lang('Export'), $error, ($_GET["export"] != "" ? array("table" => $_
|
|||||||
?>
|
?>
|
||||||
|
|
||||||
<form action="" method="post">
|
<form action="" method="post">
|
||||||
<table cellspacing="0">
|
<table cellspacing="0" class="layout">
|
||||||
<?php
|
<?php
|
||||||
$db_style = array('', 'USE', 'DROP+CREATE', 'CREATE');
|
$db_style = array('', 'USE', 'DROP+CREATE', 'CREATE');
|
||||||
$table_style = array('', 'DROP+CREATE', 'CREATE');
|
$table_style = array('', 'DROP+CREATE', 'CREATE');
|
||||||
@@ -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'); ?>">
|
||||||
@@ -165,12 +177,13 @@ echo "<tr><th>" . lang('Data') . "<td>" . html_select('data_style', $data_style,
|
|||||||
|
|
||||||
<table cellspacing="0">
|
<table cellspacing="0">
|
||||||
<?php
|
<?php
|
||||||
|
echo script("qsl('table').onclick = dumpClick;");
|
||||||
$prefixes = array();
|
$prefixes = array();
|
||||||
if (DB != "") {
|
if (DB != "") {
|
||||||
$checked = ($TABLE != "" ? "" : " checked");
|
$checked = ($TABLE != "" ? "" : " checked");
|
||||||
echo "<thead><tr>";
|
echo "<thead><tr>";
|
||||||
echo "<th style='text-align: left;'><label class='block'><input type='checkbox' id='check-tables'$checked onclick='formCheck(this, /^tables\\[/);'>" . lang('Tables') . "</label>";
|
echo "<th style='text-align: left;'><label class='block'><input type='checkbox' id='check-tables'$checked>" . lang('Tables') . "</label>" . script("gid('check-tables').onclick = partial(formCheck, /^tables\\[/);", "");
|
||||||
echo "<th style='text-align: right;'><label class='block'>" . lang('Data') . "<input type='checkbox' id='check-data'$checked onclick='formCheck(this, /^data\\[/);'></label>";
|
echo "<th style='text-align: right;'><label class='block'>" . lang('Data') . "<input type='checkbox' id='check-data'$checked></label>" . script("gid('check-data').onclick = partial(formCheck, /^data\\[/);", "");
|
||||||
echo "</thead>\n";
|
echo "</thead>\n";
|
||||||
|
|
||||||
$views = "";
|
$views = "";
|
||||||
@@ -178,28 +191,31 @@ if (DB != "") {
|
|||||||
foreach ($tables_list as $name => $type) {
|
foreach ($tables_list as $name => $type) {
|
||||||
$prefix = preg_replace('~_.*~', '', $name);
|
$prefix = preg_replace('~_.*~', '', $name);
|
||||||
$checked = ($TABLE == "" || $TABLE == (substr($TABLE, -1) == "%" ? "$prefix%" : $name)); //! % may be part of table name
|
$checked = ($TABLE == "" || $TABLE == (substr($TABLE, -1) == "%" ? "$prefix%" : $name)); //! % may be part of table name
|
||||||
$print = "<tr><td>" . checkbox("tables[]", $name, $checked, $name, "checkboxClick(event, this); formUncheck('check-tables');", "block");
|
$print = "<tr><td>" . checkbox("tables[]", $name, $checked, $name, "", "block");
|
||||||
if ($type !== null && !preg_match('~table~i', $type)) {
|
if ($type !== null && !preg_match('~table~i', $type)) {
|
||||||
$views .= "$print\n";
|
$views .= "$print\n";
|
||||||
} else {
|
} else {
|
||||||
echo "$print<td align='right'><label class='block'><span id='Rows-" . h($name) . "'></span>" . checkbox("data[]", $name, $checked, "", "checkboxClick(event, this); formUncheck('check-data');") . "</label>\n";
|
echo "$print<td align='right'><label class='block'><span id='Rows-" . h($name) . "'></span>" . checkbox("data[]", $name, $checked) . "</label>\n";
|
||||||
}
|
}
|
||||||
$prefixes[$prefix]++;
|
$prefixes[$prefix]++;
|
||||||
}
|
}
|
||||||
echo $views;
|
echo $views;
|
||||||
|
|
||||||
if ($tables_list) {
|
if ($tables_list) {
|
||||||
echo "<script type='text/javascript'>ajaxSetHtml('" . js_escape(ME) . "script=db');</script>\n";
|
echo script("ajaxSetHtml('" . js_escape(ME) . "script=db');");
|
||||||
}
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
echo "<thead><tr><th style='text-align: left;'><label class='block'><input type='checkbox' id='check-databases'" . ($TABLE == "" ? " checked" : "") . " onclick='formCheck(this, /^databases\\[/);'>" . lang('Database') . "</label></thead>\n";
|
echo "<thead><tr><th style='text-align: left;'>";
|
||||||
|
echo "<label class='block'><input type='checkbox' id='check-databases'" . ($TABLE == "" ? " checked" : "") . ">" . lang('Database') . "</label>";
|
||||||
|
echo script("gid('check-databases').onclick = partial(formCheck, /^databases\\[/);", "");
|
||||||
|
echo "</thead>\n";
|
||||||
$databases = $adminer->databases();
|
$databases = $adminer->databases();
|
||||||
if ($databases) {
|
if ($databases) {
|
||||||
foreach ($databases as $db) {
|
foreach ($databases as $db) {
|
||||||
if (!information_schema($db)) {
|
if (!information_schema($db)) {
|
||||||
$prefix = preg_replace('~_.*~', '', $db);
|
$prefix = preg_replace('~_.*~', '', $db);
|
||||||
echo "<tr><td>" . checkbox("databases[]", $db, $TABLE == "" || $TABLE == "$prefix%", $db, "formUncheck('check-databases');", "block") . "\n";
|
echo "<tr><td>" . checkbox("databases[]", $db, $TABLE == "" || $TABLE == "$prefix%", $db, "", "block") . "\n";
|
||||||
$prefixes[$prefix]++;
|
$prefixes[$prefix]++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
<?php
|
<?php
|
||||||
$TABLE = $_GET["edit"];
|
$TABLE = $_GET["edit"];
|
||||||
$fields = fields($TABLE);
|
$fields = fields($TABLE);
|
||||||
$where = (isset($_GET["select"]) ? (count($_POST["check"]) == 1 ? where_check($_POST["check"][0], $fields) : "") : where($_GET, $fields));
|
$where = (isset($_GET["select"]) ? ($_POST["check"] && count($_POST["check"]) == 1 ? where_check($_POST["check"][0], $fields) : "") : where($_GET, $fields));
|
||||||
$update = (isset($_GET["select"]) ? $_POST["edit"] : $where);
|
$update = (isset($_GET["select"]) ? $_POST["edit"] : $where);
|
||||||
foreach ($fields as $name => $field) {
|
foreach ($fields as $name => $field) {
|
||||||
if (!isset($field["privileges"][$update ? "update" : "insert"]) || $adminer->fieldName($field) == "") {
|
if (!isset($field["privileges"][$update ? "update" : "insert"]) || $adminer->fieldName($field) == "" || $field["generated"]) {
|
||||||
unset($fields[$name]);
|
unset($fields[$name]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -82,9 +82,13 @@ if ($_POST["save"]) {
|
|||||||
}
|
}
|
||||||
if ($select) {
|
if ($select) {
|
||||||
$result = $driver->select($TABLE, $select, array($where), $select, array(), (isset($_GET["select"]) ? 2 : 1));
|
$result = $driver->select($TABLE, $select, array($where), $select, array(), (isset($_GET["select"]) ? 2 : 1));
|
||||||
$row = $result->fetch_assoc();
|
if (!$result) {
|
||||||
if (!$row) { // MySQLi returns null
|
$error = error();
|
||||||
$row = false;
|
} else {
|
||||||
|
$row = $result->fetch_assoc();
|
||||||
|
if (!$row) { // MySQLi returns null
|
||||||
|
$row = false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (isset($_GET["select"]) && (!$row || $result->fetch_assoc())) { // $result->num_rows != 1 isn't available in all drivers
|
if (isset($_GET["select"]) && (!$row || $result->fetch_assoc())) { // $result->num_rows != 1 isn't available in all drivers
|
||||||
$row = null;
|
$row = null;
|
||||||
|
|||||||
13
adminer/elastic.php
Normal file
13
adminer/elastic.php
Normal 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";
|
||||||
@@ -35,18 +35,18 @@ if (!$row && $EVENT != "") {
|
|||||||
?>
|
?>
|
||||||
|
|
||||||
<form action="" method="post">
|
<form action="" method="post">
|
||||||
<table cellspacing="0">
|
<table cellspacing="0" class="layout">
|
||||||
<tr><th><?php echo lang('Name'); ?><td><input name="EVENT_NAME" value="<?php echo h($row["EVENT_NAME"]); ?>" maxlength="64" autocapitalize="off">
|
<tr><th><?php echo lang('Name'); ?><td><input name="EVENT_NAME" value="<?php echo h($row["EVENT_NAME"]); ?>" data-maxlength="64" autocapitalize="off">
|
||||||
<tr><th title="datetime"><?php echo lang('Start'); ?><td><input name="STARTS" value="<?php echo h("$row[EXECUTE_AT]$row[STARTS]"); ?>">
|
<tr><th title="datetime"><?php echo lang('Start'); ?><td><input name="STARTS" value="<?php echo h("$row[EXECUTE_AT]$row[STARTS]"); ?>">
|
||||||
<tr><th title="datetime"><?php echo lang('End'); ?><td><input name="ENDS" value="<?php echo h($row["ENDS"]); ?>">
|
<tr><th title="datetime"><?php echo lang('End'); ?><td><input name="ENDS" value="<?php echo h($row["ENDS"]); ?>">
|
||||||
<tr><th><?php echo lang('Every'); ?><td><input type="number" name="INTERVAL_VALUE" value="<?php echo h($row["INTERVAL_VALUE"]); ?>" class="size"> <?php echo html_select("INTERVAL_FIELD", $intervals, $row["INTERVAL_FIELD"]); ?>
|
<tr><th><?php echo lang('Every'); ?><td><input type="number" name="INTERVAL_VALUE" value="<?php echo h($row["INTERVAL_VALUE"]); ?>" class="size"> <?php echo html_select("INTERVAL_FIELD", $intervals, $row["INTERVAL_FIELD"]); ?>
|
||||||
<tr><th><?php echo lang('Status'); ?><td><?php echo html_select("STATUS", $statuses, $row["STATUS"]); ?>
|
<tr><th><?php echo lang('Status'); ?><td><?php echo html_select("STATUS", $statuses, $row["STATUS"]); ?>
|
||||||
<tr><th><?php echo lang('Comment'); ?><td><input name="EVENT_COMMENT" value="<?php echo h($row["EVENT_COMMENT"]); ?>" maxlength="64">
|
<tr><th><?php echo lang('Comment'); ?><td><input name="EVENT_COMMENT" value="<?php echo h($row["EVENT_COMMENT"]); ?>" data-maxlength="64">
|
||||||
<tr><th> <td><?php echo checkbox("ON_COMPLETION", "PRESERVE", $row["ON_COMPLETION"] == "PRESERVE", lang('On completion preserve')); ?>
|
<tr><th><td><?php echo checkbox("ON_COMPLETION", "PRESERVE", $row["ON_COMPLETION"] == "PRESERVE", lang('On completion preserve')); ?>
|
||||||
</table>
|
</table>
|
||||||
<p><?php textarea("EVENT_DEFINITION", $row["EVENT_DEFINITION"]); ?>
|
<p><?php textarea("EVENT_DEFINITION", $row["EVENT_DEFINITION"]); ?>
|
||||||
<p>
|
<p>
|
||||||
<input type="submit" value="<?php echo lang('Save'); ?>">
|
<input type="submit" value="<?php echo lang('Save'); ?>">
|
||||||
<?php if ($EVENT != "") { ?><input type="submit" name="drop" value="<?php echo lang('Drop'); ?>"<?php echo confirm(); ?>><?php } ?>
|
<?php if ($EVENT != "") { ?><input type="submit" name="drop" value="<?php echo lang('Drop'); ?>"><?php echo confirm(lang('Drop %s?', $EVENT)); ?><?php } ?>
|
||||||
<input type="hidden" name="token" value="<?php echo $token; ?>">
|
<input type="hidden" name="token" value="<?php echo $token; ?>">
|
||||||
</form>
|
</form>
|
||||||
|
|||||||
@@ -1,24 +1,18 @@
|
|||||||
<?php
|
<?php
|
||||||
if ($_SERVER["HTTP_IF_MODIFIED_SINCE"]) {
|
// caching headers added in compile.php
|
||||||
header("HTTP/1.1 304 Not Modified");
|
|
||||||
exit;
|
|
||||||
}
|
|
||||||
|
|
||||||
header("Expires: " . gmdate("D, d M Y H:i:s", time() + 365*24*60*60) . " GMT");
|
|
||||||
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
|
|
||||||
|
|
||||||
if ($_GET["file"] == "favicon.ico") {
|
if ($_GET["file"] == "favicon.ico") {
|
||||||
header("Content-Type: image/x-icon");
|
header("Content-Type: image/x-icon");
|
||||||
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-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"]) {
|
||||||
|
|||||||
@@ -7,13 +7,15 @@ if ($_POST && !$error && !$_POST["add"] && !$_POST["change"] && !$_POST["change-
|
|||||||
$message = ($_POST["drop"] ? lang('Foreign key has been dropped.') : ($name != "" ? lang('Foreign key has been altered.') : lang('Foreign key has been created.')));
|
$message = ($_POST["drop"] ? lang('Foreign key has been dropped.') : ($name != "" ? lang('Foreign key has been altered.') : lang('Foreign key has been created.')));
|
||||||
$location = ME . "table=" . urlencode($TABLE);
|
$location = ME . "table=" . urlencode($TABLE);
|
||||||
|
|
||||||
$row["source"] = array_filter($row["source"], 'strlen');
|
if (!$_POST["drop"]) {
|
||||||
ksort($row["source"]); // enforce input order
|
$row["source"] = array_filter($row["source"], 'strlen');
|
||||||
$target = array();
|
ksort($row["source"]); // enforce input order
|
||||||
foreach ($row["source"] as $key => $val) {
|
$target = array();
|
||||||
$target[$key] = $row["target"][$key];
|
foreach ($row["source"] as $key => $val) {
|
||||||
|
$target[$key] = $row["target"][$key];
|
||||||
|
}
|
||||||
|
$row["target"] = $target;
|
||||||
}
|
}
|
||||||
$row["target"] = $target;
|
|
||||||
|
|
||||||
if ($jush == "sqlite") {
|
if ($jush == "sqlite") {
|
||||||
queries_redirect($location, $message, recreate_table($TABLE, $TABLE, array(), array(), array(" $name" => ($_POST["drop"] ? "" : " " . format_foreign_key($row)))));
|
queries_redirect($location, $message, recreate_table($TABLE, $TABLE, array(), array(), array(" $name" => ($_POST["drop"] ? "" : " " . format_foreign_key($row)))));
|
||||||
@@ -46,27 +48,43 @@ if ($_POST) {
|
|||||||
$row["table"] = $TABLE;
|
$row["table"] = $TABLE;
|
||||||
$row["source"] = array("");
|
$row["source"] = array("");
|
||||||
}
|
}
|
||||||
|
|
||||||
$source = array_keys(fields($TABLE)); //! no text and blob
|
|
||||||
$target = ($TABLE === $row["table"] ? $source : array_keys(fields($row["table"])));
|
|
||||||
$referencable = array_keys(array_filter(table_status('', true), 'fk_support'));
|
|
||||||
?>
|
?>
|
||||||
|
|
||||||
<form action="" method="post">
|
<form action="" method="post">
|
||||||
<p>
|
<?php
|
||||||
<?php if ($row["db"] == "" && $row["ns"] == "") { ?>
|
$source = array_keys(fields($TABLE)); //! no text and blob
|
||||||
<?php echo lang('Target table'); ?>:
|
if ($row["db"] != "") {
|
||||||
<?php echo html_select("table", $referencable, $row["table"], "this.form['change-js'].value = '1'; this.form.submit();"); ?>
|
$connection->select_db($row["db"]);
|
||||||
|
}
|
||||||
|
if ($row["ns"] != "") {
|
||||||
|
set_schema($row["ns"]);
|
||||||
|
}
|
||||||
|
$referencable = array_keys(array_filter(table_status('', true), 'fk_support'));
|
||||||
|
$target = array_keys(fields(in_array($row["table"], $referencable) ? $row["table"] : reset($referencable)));
|
||||||
|
$onchange = "this.form['change-js'].value = '1'; this.form.submit();";
|
||||||
|
echo "<p>" . lang('Target table') . ": " . html_select("table", $referencable, $row["table"], $onchange) . "\n";
|
||||||
|
if ($jush == "pgsql") {
|
||||||
|
echo lang('Schema') . ": " . html_select("ns", $adminer->schemas(), $row["ns"] != "" ? $row["ns"] : $_GET["ns"], $onchange);
|
||||||
|
} elseif ($jush != "sqlite") {
|
||||||
|
$dbs = array();
|
||||||
|
foreach ($adminer->databases() as $db) {
|
||||||
|
if (!information_schema($db)) {
|
||||||
|
$dbs[] = $db;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
echo lang('DB') . ": " . html_select("db", $dbs, $row["db"] != "" ? $row["db"] : $_GET["db"], $onchange);
|
||||||
|
}
|
||||||
|
?>
|
||||||
<input type="hidden" name="change-js" value="">
|
<input type="hidden" name="change-js" value="">
|
||||||
<noscript><p><input type="submit" name="change" value="<?php echo lang('Change'); ?>"></noscript>
|
<noscript><p><input type="submit" name="change" value="<?php echo lang('Change'); ?>"></noscript>
|
||||||
<table cellspacing="0">
|
<table cellspacing="0">
|
||||||
<thead><tr><th><?php echo lang('Source'); ?><th><?php echo lang('Target'); ?></thead>
|
<thead><tr><th id="label-source"><?php echo lang('Source'); ?><th id="label-target"><?php echo lang('Target'); ?></thead>
|
||||||
<?php
|
<?php
|
||||||
$j = 0;
|
$j = 0;
|
||||||
foreach ($row["source"] as $key => $val) {
|
foreach ($row["source"] as $key => $val) {
|
||||||
echo "<tr>";
|
echo "<tr>";
|
||||||
echo "<td>" . html_select("source[" . (+$key) . "]", array(-1 => "") + $source, $val, ($j == count($row["source"]) - 1 ? "foreignAddRow(this);" : 1));
|
echo "<td>" . html_select("source[" . (+$key) . "]", array(-1 => "") + $source, $val, ($j == count($row["source"]) - 1 ? "foreignAddRow.call(this);" : 1), "label-source");
|
||||||
echo "<td>" . html_select("target[" . (+$key) . "]", $target, $row["target"][$key]);
|
echo "<td>" . html_select("target[" . (+$key) . "]", $target, $row["target"][$key], 1, "label-target");
|
||||||
$j++;
|
$j++;
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
@@ -76,14 +94,14 @@ foreach ($row["source"] as $key => $val) {
|
|||||||
<?php echo lang('ON UPDATE'); ?>: <?php echo html_select("on_update", array(-1 => "") + explode("|", $on_actions), $row["on_update"]); ?>
|
<?php echo lang('ON UPDATE'); ?>: <?php echo html_select("on_update", array(-1 => "") + explode("|", $on_actions), $row["on_update"]); ?>
|
||||||
<?php echo doc_link(array(
|
<?php echo doc_link(array(
|
||||||
'sql' => "innodb-foreign-key-constraints.html",
|
'sql' => "innodb-foreign-key-constraints.html",
|
||||||
|
'mariadb' => "foreign-keys/",
|
||||||
'pgsql' => "sql-createtable.html#SQL-CREATETABLE-REFERENCES",
|
'pgsql' => "sql-createtable.html#SQL-CREATETABLE-REFERENCES",
|
||||||
'mssql' => "ms174979.aspx",
|
'mssql' => "ms174979.aspx",
|
||||||
'oracle' => "clauses002.htm#sthref2903",
|
'oracle' => "https://docs.oracle.com/cd/B19306_01/server.102/b14200/clauses002.htm#sthref2903",
|
||||||
)); ?>
|
)); ?>
|
||||||
<p>
|
<p>
|
||||||
<input type="submit" value="<?php echo lang('Save'); ?>">
|
<input type="submit" value="<?php echo lang('Save'); ?>">
|
||||||
<noscript><p><input type="submit" name="add" value="<?php echo lang('Add column'); ?>"></noscript>
|
<noscript><p><input type="submit" name="add" value="<?php echo lang('Add column'); ?>"></noscript>
|
||||||
<?php } ?>
|
<?php if ($name != "") { ?><input type="submit" name="drop" value="<?php echo lang('Drop'); ?>"><?php echo confirm(lang('Drop %s?', $name)); ?><?php } ?>
|
||||||
<?php if ($name != "") { ?><input type="submit" name="drop" value="<?php echo lang('Drop'); ?>"<?php echo confirm(); ?>><?php } ?>
|
|
||||||
<input type="hidden" name="token" value="<?php echo $token; ?>">
|
<input type="hidden" name="token" value="<?php echo $token; ?>">
|
||||||
</form>
|
</form>
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -1,4 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
$connection = '';
|
$connection = '';
|
||||||
|
|
||||||
$has_token = $_SESSION["token"];
|
$has_token = $_SESSION["token"];
|
||||||
@@ -15,18 +16,78 @@ 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)) {
|
||||||
|
auth_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;
|
||||||
$filename = get_temp_dir() . "/adminer.invalid";
|
$file = open_file_with_lock(get_temp_dir() . "/adminer.invalid");
|
||||||
$fp = @fopen($filename, "r+"); // @ - may not exist
|
if (!$file) {
|
||||||
if (!$fp) { // c+ is available since PHP 5.2.6
|
return;
|
||||||
$fp = @fopen($filename, "w"); // @ - may not be writable
|
|
||||||
if (!$fp) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
flock($fp, LOCK_EX);
|
$invalids = unserialize(stream_get_contents($file));
|
||||||
$invalids = unserialize(stream_get_contents($fp));
|
|
||||||
$time = time();
|
$time = time();
|
||||||
if ($invalids) {
|
if ($invalids) {
|
||||||
foreach ($invalids as $ip => $val) {
|
foreach ($invalids as $ip => $val) {
|
||||||
@@ -40,25 +101,27 @@ function add_invalid_login() {
|
|||||||
$invalid = array($time + 30*60, 0); // active for 30 minutes
|
$invalid = array($time + 30*60, 0); // active for 30 minutes
|
||||||
}
|
}
|
||||||
$invalid[1]++;
|
$invalid[1]++;
|
||||||
$serialized = serialize($invalids);
|
write_and_unlock_file($file, serialize($invalids));
|
||||||
rewind($fp);
|
}
|
||||||
fwrite($fp, $serialized);
|
|
||||||
ftruncate($fp, strlen($serialized));
|
function check_invalid_login() {
|
||||||
flock($fp, LOCK_UN);
|
global $adminer;
|
||||||
fclose($fp);
|
|
||||||
|
$filename = get_temp_dir() . "/adminer.invalid";
|
||||||
|
$invalids = file_exists($filename) ? unserialize(file_get_contents($filename)) : [];
|
||||||
|
$invalid = ($invalids ? $invalids[$adminer->bruteForceKey()] : []);
|
||||||
|
|
||||||
|
$next_attempt = ($invalid[1] > 29 ? $invalid[0] - time() : 0); // allow 30 invalid attempts
|
||||||
|
if ($next_attempt > 0) { //! do the same with permanent login
|
||||||
|
auth_error(lang('Too many unsuccessful logins, try again in %d minute(s).', ceil($next_attempt / 60)));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$auth = $_POST["auth"];
|
$auth = $_POST["auth"];
|
||||||
if ($auth) {
|
if ($auth) {
|
||||||
$invalids = unserialize(@file_get_contents(get_temp_dir() . "/adminer.invalid")); // @ - may not exist
|
|
||||||
$invalid = $invalids[$adminer->bruteForceKey()];
|
|
||||||
$next_attempt = ($invalid[1] > 30 ? $invalid[0] - time() : 0); // allow 30 invalid attempts
|
|
||||||
if ($next_attempt > 0) { //! do the same with permanent login
|
|
||||||
auth_error(lang('Too many unsuccessful logins, try again in %d minute(s).', ceil($next_attempt / 60)));
|
|
||||||
}
|
|
||||||
session_regenerate_id(); // defense against session fixation
|
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"];
|
||||||
@@ -78,20 +141,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.'));
|
|
||||||
}
|
}
|
||||||
|
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();
|
||||||
@@ -115,23 +172,24 @@ function unset_permanent() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/** Renders an error message and a login form
|
/** Renders an error message and a login form
|
||||||
* @param string plain text
|
* @param string plain text
|
||||||
* @return null exits
|
* @return null exits
|
||||||
*/
|
* @throws \Random\RandomException
|
||||||
|
*/
|
||||||
function auth_error($error) {
|
function auth_error($error) {
|
||||||
global $adminer, $has_token;
|
global $adminer, $has_token;
|
||||||
$error = h($error);
|
|
||||||
$session_name = session_name();
|
$session_name = session_name();
|
||||||
if (isset($_GET["username"])) {
|
if (isset($_GET["username"])) {
|
||||||
header("HTTP/1.1 403 Forbidden"); // 401 requires sending WWW-Authenticate header
|
header("HTTP/1.1 403 Forbidden"); // 401 requires sending WWW-Authenticate header
|
||||||
if (($_COOKIE[$session_name] || $_GET[$session_name]) && !$has_token) {
|
if (($_COOKIE[$session_name] || $_GET[$session_name]) && !$has_token) {
|
||||||
$error = lang('Session expired, please login again.');
|
$error = lang('Session expired, please login again.');
|
||||||
} else {
|
} else {
|
||||||
|
restart_session();
|
||||||
add_invalid_login();
|
add_invalid_login();
|
||||||
$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/" target="_blank">Implement</a> %s method to make it permanent.', '<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);
|
||||||
}
|
}
|
||||||
@@ -142,33 +200,48 @@ function auth_error($error) {
|
|||||||
$error = lang('Session support must be enabled.');
|
$error = lang('Session support must be enabled.');
|
||||||
}
|
}
|
||||||
$params = session_get_cookie_params();
|
$params = session_get_cookie_params();
|
||||||
cookie("adminer_key", ($_COOKIE["adminer_key"] ? $_COOKIE["adminer_key"] : rand_string()), $params["lifetime"]);
|
cookie("adminer_key", ($_COOKIE["adminer_key"] ?: get_random_string()), $params["lifetime"]);
|
||||||
page_header(lang('Login'), $error, null);
|
page_header(lang('Login'), $error, null);
|
||||||
echo "<form action='' method='post'>\n";
|
echo "<form action='' method='post'>\n";
|
||||||
$adminer->loginForm();
|
|
||||||
echo "<div>";
|
echo "<div>";
|
||||||
hidden_fields($_POST, array("auth")); // expired session
|
if (hidden_fields($_POST, array("auth"))) { // expired session
|
||||||
|
echo "<p class='message'>" . lang('The action will be performed after successful login with the same credentials.') . "\n";
|
||||||
|
}
|
||||||
echo "</div>\n";
|
echo "</div>\n";
|
||||||
|
$adminer->loginForm();
|
||||||
echo "</form>\n";
|
echo "</form>\n";
|
||||||
page_footer("auth");
|
page_footer("auth");
|
||||||
exit;
|
exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isset($_GET["username"])) {
|
if (isset($_GET["username"]) && !class_exists("Min_DB")) {
|
||||||
if (!class_exists("Min_DB")) {
|
unset($_SESSION["pwds"][DRIVER]);
|
||||||
unset($_SESSION["pwds"][DRIVER]);
|
unset_permanent();
|
||||||
unset_permanent();
|
page_header(lang('No extension'), lang('None of the supported PHP extensions (%s) are available.', implode(", ", $possible_drivers)), false);
|
||||||
page_header(lang('No extension'), lang('None of the supported PHP extensions (%s) are available.', implode(", ", $possible_drivers)), false);
|
page_footer("auth");
|
||||||
page_footer("auth");
|
exit;
|
||||||
exit;
|
|
||||||
}
|
|
||||||
$connection = connect();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$driver = new Min_Driver($connection);
|
stop_session(true);
|
||||||
|
|
||||||
if (!is_object($connection) || !$adminer->login($_GET["username"], get_password())) {
|
if (isset($_GET["username"]) && is_string(get_password())) {
|
||||||
auth_error((is_string($connection) ? $connection : lang('Invalid credentials.')));
|
validate_server_input();
|
||||||
|
check_invalid_login();
|
||||||
|
|
||||||
|
$connection = connect();
|
||||||
|
$driver = new Min_Driver($connection);
|
||||||
|
}
|
||||||
|
|
||||||
|
$login = null;
|
||||||
|
if (!is_object($connection) || ($login = $adminer->login($_GET["username"], get_password())) !== true) {
|
||||||
|
$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.') : ''));
|
||||||
|
}
|
||||||
|
|
||||||
|
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"]) {
|
||||||
@@ -194,7 +267,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'");
|
||||||
|
|||||||
@@ -1,6 +1,12 @@
|
|||||||
<?php
|
<?php
|
||||||
error_reporting(6135); // errors and warnings
|
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
|
||||||
|
set_error_handler('adminer_errors', E_WARNING);
|
||||||
|
|
||||||
|
include "../adminer/include/debug.inc.php";
|
||||||
include "../adminer/include/coverage.inc.php";
|
include "../adminer/include/coverage.inc.php";
|
||||||
|
|
||||||
// disable filter.default
|
// disable filter.default
|
||||||
@@ -18,14 +24,22 @@ if (function_exists("mb_internal_encoding")) {
|
|||||||
mb_internal_encoding("8bit");
|
mb_internal_encoding("8bit");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
include "../adminer/include/functions.inc.php";
|
||||||
|
|
||||||
// used only in compiled file
|
// used only in compiled file
|
||||||
if (isset($_GET["file"])) {
|
if (isset($_GET["file"])) {
|
||||||
include "../adminer/file.inc.php";
|
include "../adminer/file.inc.php";
|
||||||
}
|
}
|
||||||
|
|
||||||
include "../adminer/include/functions.inc.php";
|
if ($_GET["script"] == "version") {
|
||||||
|
$file = open_file_with_lock(get_temp_dir() . "/adminer.version");
|
||||||
|
if ($file) {
|
||||||
|
write_and_unlock_file($file, serialize(["version" => $_POST["version"]]));
|
||||||
|
}
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
|
||||||
global $adminer, $connection, $drivers, $edit_functions, $enum_length, $error, $functions, $grouping, $HTTPS, $inout, $jush, $LANG, $langs, $on_actions, $permanent, $structured_types, $has_token, $token, $translations, $types, $unsigned, $VERSION; // allows including Adminer inside a function
|
global $adminer, $connection, $driver, $drivers, $edit_functions, $enum_length, $error, $functions, $grouping, $HTTPS, $inout, $jush, $LANG, $langs, $on_actions, $permanent, $structured_types, $has_token, $token, $translations, $types, $unsigned, $VERSION; // allows including Adminer inside a function
|
||||||
|
|
||||||
if (!$_SERVER["REQUEST_URI"]) { // IIS 5 compatibility
|
if (!$_SERVER["REQUEST_URI"]) { // IIS 5 compatibility
|
||||||
$_SERVER["REQUEST_URI"] = $_SERVER["ORIG_PATH_INFO"];
|
$_SERVER["REQUEST_URI"] = $_SERVER["ORIG_PATH_INFO"];
|
||||||
@@ -33,13 +47,16 @@ if (!$_SERVER["REQUEST_URI"]) { // IIS 5 compatibility
|
|||||||
if (!strpos($_SERVER["REQUEST_URI"], '?') && $_SERVER["QUERY_STRING"] != "") { // IIS 7 compatibility
|
if (!strpos($_SERVER["REQUEST_URI"], '?') && $_SERVER["QUERY_STRING"] != "") { // IIS 7 compatibility
|
||||||
$_SERVER["REQUEST_URI"] .= "?$_SERVER[QUERY_STRING]";
|
$_SERVER["REQUEST_URI"] .= "?$_SERVER[QUERY_STRING]";
|
||||||
}
|
}
|
||||||
$HTTPS = $_SERVER["HTTPS"] && strcasecmp($_SERVER["HTTPS"], "off");
|
if ($_SERVER["HTTP_X_FORWARDED_PREFIX"]) {
|
||||||
|
$_SERVER["REQUEST_URI"] = $_SERVER["HTTP_X_FORWARDED_PREFIX"] . $_SERVER["REQUEST_URI"];
|
||||||
|
}
|
||||||
|
$HTTPS = ($_SERVER["HTTPS"] && strcasecmp($_SERVER["HTTPS"], "off")) || ini_bool("session.cookie_secure"); // session.cookie_secure could be set on HTTP if we are behind a reverse proxy
|
||||||
|
|
||||||
@ini_set("session.use_trans_sid", false); // protect links in export, @ - may be disabled
|
@ini_set("session.use_trans_sid", false); // protect links in export, @ - may be disabled
|
||||||
session_cache_limiter(""); // to allow restarting session and to not send Cache-Control: no-store
|
|
||||||
if (!defined("SID")) {
|
if (!defined("SID")) {
|
||||||
|
session_cache_limiter(""); // to allow restarting session
|
||||||
session_name("adminer_sid"); // use specific session name to get own namespace
|
session_name("adminer_sid"); // use specific session name to get own namespace
|
||||||
$params = array(0, preg_replace('~\\?.*~', '', $_SERVER["REQUEST_URI"]), "", $HTTPS);
|
$params = array(0, preg_replace('~\?.*~', '', $_SERVER["REQUEST_URI"]), "", $HTTPS);
|
||||||
if (version_compare(PHP_VERSION, '5.2.0') >= 0) {
|
if (version_compare(PHP_VERSION, '5.2.0') >= 0) {
|
||||||
$params[] = true; // HttpOnly
|
$params[] = true; // HttpOnly
|
||||||
}
|
}
|
||||||
@@ -49,12 +66,12 @@ 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
|
||||||
@ini_set("zend.ze1_compatibility_mode", false); // @ - deprecated
|
@ini_set("zend.ze1_compatibility_mode", false); // @ - deprecated
|
||||||
@ini_set("precision", 20); // @ - can be disabled
|
@ini_set("precision", 15); // @ - can be disabled, 15 - internal PHP precision
|
||||||
|
|
||||||
include "../adminer/include/lang.inc.php";
|
include "../adminer/include/lang.inc.php";
|
||||||
include "../adminer/lang/$LANG.inc.php";
|
include "../adminer/lang/$LANG.inc.php";
|
||||||
@@ -64,15 +81,33 @@ 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";
|
||||||
|
$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'];
|
||||||
|
$operator_like = $config['operator_like'];
|
||||||
|
$operator_regexp = $config['operator_regexp'];
|
||||||
|
$functions = $config['functions'];
|
||||||
|
$grouping = $config['grouping'];
|
||||||
|
$edit_functions = $config['edit_functions'];
|
||||||
|
|
||||||
|
if ($adminer->operators === null) {
|
||||||
|
$adminer->operators = $operators;
|
||||||
|
$adminer->operator_like = $operator_like;
|
||||||
|
$adminer->operator_regexp = $operator_regexp;
|
||||||
|
}
|
||||||
|
|
||||||
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", preg_replace('~^[^?]*/([^?]*).*~', '\\1', $_SERVER["REQUEST_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"]) . '&' : '')
|
||||||
@@ -80,15 +115,9 @@ define("ME", preg_replace('~^[^?]*/([^?]*).*~', '\\1', $_SERVER["REQUEST_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";
|
||||||
|
|
||||||
if (!ini_bool("session.use_cookies") || @ini_set("session.use_cookies", false) !== false) { // @ - may be disabled
|
|
||||||
session_write_close(); // improves concurrency if a user opens several pages at once, may be restarted later
|
|
||||||
}
|
|
||||||
|
|
||||||
include "./include/editing.inc.php";
|
include "./include/editing.inc.php";
|
||||||
include "./include/connect.inc.php";
|
include "./include/connect.inc.php";
|
||||||
|
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ function connect_error() {
|
|||||||
page_header(lang('Select database'), $error, false);
|
page_header(lang('Select database'), $error, false);
|
||||||
echo "<p class='links'>\n";
|
echo "<p class='links'>\n";
|
||||||
foreach (array(
|
foreach (array(
|
||||||
'database' => lang('Create new database'),
|
'database' => lang('Create database'),
|
||||||
'privileges' => lang('Privileges'),
|
'privileges' => lang('Privileges'),
|
||||||
'processlist' => lang('Process list'),
|
'processlist' => lang('Process list'),
|
||||||
'variables' => lang('Variables'),
|
'variables' => lang('Variables'),
|
||||||
@@ -29,13 +29,14 @@ function connect_error() {
|
|||||||
$scheme = support("scheme");
|
$scheme = support("scheme");
|
||||||
$collations = collations();
|
$collations = collations();
|
||||||
echo "<form action='' method='post'>\n";
|
echo "<form action='' method='post'>\n";
|
||||||
echo "<table cellspacing='0' class='checkable' onclick='tableClick(event);' ondblclick='tableClick(event, true);'>\n";
|
echo "<table cellspacing='0' class='checkable'>\n";
|
||||||
|
echo script("mixin(qsl('table'), {onclick: tableClick, ondblclick: partialArg(tableClick, true)});");
|
||||||
echo "<thead><tr>"
|
echo "<thead><tr>"
|
||||||
. (support("database") ? "<td> " : "")
|
. (support("database") ? "<td>" : "")
|
||||||
. "<th>" . lang('Database') . " - <a href='" . h(ME) . "refresh=1'>" . lang('Refresh') . "</a>"
|
. "<th>" . lang('Database') . " - <a href='" . h(ME) . "refresh=1'>" . lang('Refresh') . "</a>"
|
||||||
. "<td>" . lang('Collation')
|
. "<td>" . lang('Collation')
|
||||||
. "<td>" . lang('Tables')
|
. "<td>" . lang('Tables')
|
||||||
. "<td>" . lang('Size') . " - <a href='" . h(ME) . "dbsize=1' onclick=\"return !ajaxSetHtml('" . h(js_escape(ME)) . "script=connect');\">" . lang('Compute') . "</a>"
|
. "<td>" . lang('Size') . " - <a href='" . h(ME) . "dbsize=1'>" . lang('Compute') . "</a>" . script("qsl('a').onclick = partial(ajaxSetHtml, '" . js_escape(ME) . "script=connect');", "")
|
||||||
. "</thead>\n"
|
. "</thead>\n"
|
||||||
;
|
;
|
||||||
|
|
||||||
@@ -43,9 +44,10 @@ function connect_error() {
|
|||||||
|
|
||||||
foreach ($databases as $db => $tables) {
|
foreach ($databases as $db => $tables) {
|
||||||
$root = h(ME) . "db=" . urlencode($db);
|
$root = h(ME) . "db=" . urlencode($db);
|
||||||
echo "<tr" . odd() . ">" . (support("database") ? "<td>" . checkbox("db[]", $db, in_array($db, (array) $_POST["db"])) : "");
|
$id = h("Db-" . $db);
|
||||||
echo "<th><a href='$root'>" . h($db) . "</a>";
|
echo "<tr" . odd() . ">" . (support("database") ? "<td>" . checkbox("db[]", $db, in_array($db, (array) $_POST["db"]), "", "", "", $id) : "");
|
||||||
$collation = nbsp(db_collation($db, $collations));
|
echo "<th><a href='$root' id='$id'>" . h($db) . "</a>";
|
||||||
|
$collation = h(db_collation($db, $collations));
|
||||||
echo "<td>" . (support("database") ? "<a href='$root" . ($scheme ? "&ns=" : "") . "&database=' title='" . lang('Alter database') . "'>$collation</a>" : $collation);
|
echo "<td>" . (support("database") ? "<a href='$root" . ($scheme ? "&ns=" : "") . "&database=' title='" . lang('Alter database') . "'>$collation</a>" : $collation);
|
||||||
echo "<td align='right'><a href='$root&schema=' id='tables-" . h($db) . "' title='" . lang('Database schema') . "'>" . ($_GET["dbsize"] ? $tables : "?") . "</a>";
|
echo "<td align='right'><a href='$root&schema=' id='tables-" . h($db) . "' title='" . lang('Database schema') . "'>" . ($_GET["dbsize"] ? $tables : "?") . "</a>";
|
||||||
echo "<td align='right' id='size-" . h($db) . "'>" . ($_GET["dbsize"] ? db_size($db) : "?");
|
echo "<td align='right' id='size-" . h($db) . "'>" . ($_GET["dbsize"] ? db_size($db) : "?");
|
||||||
@@ -54,15 +56,17 @@ function connect_error() {
|
|||||||
|
|
||||||
echo "</table>\n";
|
echo "</table>\n";
|
||||||
echo (support("database")
|
echo (support("database")
|
||||||
? "<fieldset><legend>" . lang('Selected') . " <span id='selected'></span></legend><div>\n"
|
? "<div class='footer'><div>\n"
|
||||||
. "<input type='hidden' name='all' value='' onclick=\"selectCount('selected', formChecked(this, /^db/));\">\n" // used by trCheck()
|
. "<fieldset><legend>" . lang('Selected') . " <span id='selected'></span></legend><div>\n"
|
||||||
. "<input type='submit' name='drop' value='" . lang('Drop') . "'" . confirm() . ">\n"
|
. "<input type='hidden' name='all' value=''>" . script("qsl('input').onclick = function () { selectCount('selected', formChecked(this, /^db/)); };") // used by trCheck()
|
||||||
|
. "<input type='submit' name='drop' value='" . lang('Drop') . "'>" . confirm() . "\n"
|
||||||
. "</div></fieldset>\n"
|
. "</div></fieldset>\n"
|
||||||
|
. "</div></div>\n"
|
||||||
: ""
|
: ""
|
||||||
);
|
);
|
||||||
echo "<script type='text/javascript'>tableCheck();</script>\n";
|
|
||||||
echo "<input type='hidden' name='token' value='$token'>\n";
|
echo "<input type='hidden' name='token' value='$token'>\n";
|
||||||
echo "</form>\n";
|
echo "</form>\n";
|
||||||
|
echo script("tableCheck();");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -85,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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
14
adminer/include/debug.inc.php
Normal file
14
adminer/include/debug.inc.php
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
function dump($value)
|
||||||
|
{
|
||||||
|
echo "<pre>";
|
||||||
|
var_export($value);
|
||||||
|
echo "</pre>\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
function dumpe($value)
|
||||||
|
{
|
||||||
|
dump($value);
|
||||||
|
exit;
|
||||||
|
}
|
||||||
@@ -6,7 +6,7 @@
|
|||||||
* @param string used after colon in title and heading, should be HTML escaped
|
* @param string used after colon in title and heading, should be HTML escaped
|
||||||
* @return null
|
* @return null
|
||||||
*/
|
*/
|
||||||
function page_header($title, $error = "", $breadcrumb = array(), $title2 = "") {
|
function page_header($title, $error = "", $breadcrumb = [], $title2 = "") {
|
||||||
global $LANG, $VERSION, $adminer, $drivers, $jush;
|
global $LANG, $VERSION, $adminer, $drivers, $jush;
|
||||||
page_headers();
|
page_headers();
|
||||||
if (is_ajax() && $error) {
|
if (is_ajax() && $error) {
|
||||||
@@ -15,61 +15,90 @@ function page_header($title, $error = "", $breadcrumb = array(), $title2 = "") {
|
|||||||
}
|
}
|
||||||
$title_all = $title . ($title2 != "" ? ": $title2" : "");
|
$title_all = $title . ($title2 != "" ? ": $title2" : "");
|
||||||
$title_page = strip_tags($title_all . (SERVER != "" && SERVER != "localhost" ? h(" - " . SERVER) : "") . " - " . $adminer->name());
|
$title_page = strip_tags($title_all . (SERVER != "" && SERVER != "localhost" ? h(" - " . SERVER) : "") . " - " . $adminer->name());
|
||||||
|
|
||||||
|
// Load Adminer version from file if cookie is missing.
|
||||||
|
$filename = get_temp_dir() . "/adminer.version";
|
||||||
|
if (!$_COOKIE["adminer_version"] && file_exists($filename) && filemtime($filename) + 86400 > time()) { // 86400 - 1 day in seconds
|
||||||
|
$data = unserialize(file_get_contents($filename));
|
||||||
|
$_COOKIE["adminer_version"] = $data["version"];
|
||||||
|
cookie("adminer_version", $data["version"], 24 * 3600);
|
||||||
|
}
|
||||||
?>
|
?>
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html lang="<?php echo $LANG; ?>" dir="<?php echo lang('ltr'); ?>">
|
<html lang="<?php echo $LANG; ?>" dir="<?php echo lang('ltr'); ?>">
|
||||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||||
<meta http-equiv="Content-Script-Type" content="text/javascript">
|
|
||||||
<meta name="robots" content="noindex">
|
<meta name="robots" content="noindex">
|
||||||
<meta name="referrer" content="origin-when-crossorigin">
|
|
||||||
<title><?php echo $title_page; ?></title>
|
<title><?php echo $title_page; ?></title>
|
||||||
<link rel="stylesheet" type="text/css" href="../adminer/static/default.css">
|
<link rel="stylesheet" type="text/css" href="../adminer/static/default.css?<?php echo filemtime("../adminer/static/default.css"); ?>">
|
||||||
<script type="text/javascript" src="../adminer/static/functions.js"></script>
|
<?php echo script_src("../adminer/static/functions.js?" . filemtime("../adminer/static/functions.js")); ?>
|
||||||
<script type="text/javascript" src="static/editing.js"></script>
|
<?php echo script_src("static/editing.js?" . filemtime("../adminer/static/editing.js")); ?>
|
||||||
<?php if ($adminer->head()) { ?>
|
<?php if ($adminer->head()) { ?>
|
||||||
<link rel="shortcut icon" type="image/x-icon" href="../adminer/static/favicon.ico">
|
<link rel="shortcut icon" type="image/x-icon" href="../adminer/static/favicon.ico">
|
||||||
<link rel="apple-touch-icon" href="../adminer/static/favicon.ico">
|
<link rel="apple-touch-icon" href="../adminer/static/favicon.ico">
|
||||||
<?php if (file_exists("adminer.css")) { ?>
|
<?php foreach ($adminer->css() as $css) { ?>
|
||||||
<link rel="stylesheet" type="text/css" href="adminer.css">
|
<link rel="stylesheet" type="text/css" href="<?php echo h($css); ?>">
|
||||||
<?php } ?>
|
<?php } ?>
|
||||||
<?php } ?>
|
<?php } ?>
|
||||||
|
|
||||||
<body class="<?php echo lang('ltr'); ?> nojs" onkeydown="bodyKeydown(event);" onclick="bodyClick(event);"<?php echo (isset($_COOKIE["adminer_version"]) ? "" : " onload=\"verifyVersion('$VERSION');\""); ?>>
|
<body class="<?php echo lang('ltr'); ?> nojs">
|
||||||
<script type="text/javascript">
|
<script<?php echo nonce(); ?>>
|
||||||
document.body.className = document.body.className.replace(/ nojs/, ' js');
|
document.body.onkeydown = bodyKeydown;
|
||||||
var offlineMessage = '<?php echo js_escape(lang('You are offline.')); ?>';
|
document.body.onclick = bodyClick;
|
||||||
|
<?php if (!isset($_COOKIE["adminer_version"])): ?>
|
||||||
|
document.body.onload = function () { verifyVersion('<?php echo $VERSION; ?>', '<?php echo js_escape(ME); ?>', '<?php echo get_token(); ?>') };
|
||||||
|
<?php endif; ?>
|
||||||
|
document.body.className = document.body.className.replace(/ nojs/, ' js');
|
||||||
|
|
||||||
|
var offlineMessage = '<?php echo js_escape(lang('You are offline.')); ?>';
|
||||||
|
var thousandsSeparator = '<?php echo js_escape(lang(',')); ?>';
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<div id="help" class="jush-<?php echo $jush; ?> jsonly hidden" onmouseover="helpOpen = 1;" onmouseout="helpMouseout(this, event);"></div>
|
<div id="help" class="jush-<?php echo $jush; ?> jsonly hidden"></div>
|
||||||
|
<?php echo script("initHelpPopup();"); ?>
|
||||||
|
|
||||||
<div id="content">
|
<div id="content">
|
||||||
<?php
|
<?php
|
||||||
if ($breadcrumb !== null) {
|
if ($breadcrumb !== null) {
|
||||||
|
echo '<p id="breadcrumb">';
|
||||||
|
|
||||||
$link = substr(preg_replace('~\b(username|db|ns)=[^&]*&~', '', ME), 0, -1);
|
$link = substr(preg_replace('~\b(username|db|ns)=[^&]*&~', '', ME), 0, -1);
|
||||||
echo '<p id="breadcrumb"><a href="' . h($link ? $link : ".") . '">' . $drivers[DRIVER] . '</a> » ';
|
echo '<a href="' . h($link ?: ".") . '">' . lang('Home') . '</a> » ';
|
||||||
$link = substr(preg_replace('~\b(db|ns)=[^&]*&~', '', ME), 0, -1);
|
|
||||||
$server = (SERVER != "" ? h(SERVER) : lang('Server'));
|
$server = "";
|
||||||
if ($breadcrumb === false) {
|
if ($breadcrumb === false) {
|
||||||
echo "$server\n";
|
$server .= h($drivers[DRIVER]) . ": ";
|
||||||
|
}
|
||||||
|
|
||||||
|
$server_name = $adminer->serverName(SERVER);
|
||||||
|
$server .= $server_name != "" ? h($server_name) : lang('Server');
|
||||||
|
|
||||||
|
if ($breadcrumb === false) {
|
||||||
|
echo h($server), "\n";
|
||||||
} else {
|
} else {
|
||||||
echo "<a href='" . ($link ? h($link) : ".") . "' accesskey='1' title='Alt+Shift+1'>$server</a> » ";
|
$link = substr(preg_replace('~\b(db|ns)=[^&]*&~', '', ME), 0, -1);
|
||||||
|
echo "<a href='" . h($link) . "' accesskey='1' title='Alt+Shift+1'>$server</a> » ";
|
||||||
|
|
||||||
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> » ';
|
echo '<a href="' . h($link . "&db=" . urlencode(DB) . (support("scheme") ? "&ns=" : "")) . '">' . h(DB) . '</a> » ';
|
||||||
}
|
}
|
||||||
|
|
||||||
if (is_array($breadcrumb)) {
|
if (is_array($breadcrumb)) {
|
||||||
if ($_GET["ns"] != "") {
|
if ($_GET["ns"] != "") {
|
||||||
echo '<a href="' . h(substr(ME, 0, -1)) . '">' . h($_GET["ns"]) . '</a> » ';
|
echo '<a href="' . h(substr(ME, 0, -1)) . '">' . h($_GET["ns"]) . '</a> » ';
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach ($breadcrumb as $key => $val) {
|
foreach ($breadcrumb as $key => $val) {
|
||||||
$desc = (is_array($val) ? $val[1] : h($val));
|
$desc = (is_array($val) ? $val[1] : h($val));
|
||||||
if ($desc != "") {
|
if ($desc != "") {
|
||||||
echo "<a href='" . h(ME . "$key=") . urlencode(is_array($val) ? $val[0] : $val) . "'>$desc</a> » ";
|
echo "<a href='" . h(ME . "$key=") . urlencode(is_array($val) ? $val[0] : $val) . "'>$desc</a> » ";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
echo "$title\n";
|
echo "$title\n";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
echo "<h2>$title_all</h2>\n";
|
echo "<h2>$title_all</h2>\n";
|
||||||
echo "<div id='ajaxstatus' class='jsonly hidden'></div>\n";
|
echo "<div id='ajaxstatus' class='jsonly hidden'></div>\n";
|
||||||
restart_session();
|
restart_session();
|
||||||
@@ -89,10 +118,55 @@ function page_headers() {
|
|||||||
global $adminer;
|
global $adminer;
|
||||||
header("Content-Type: text/html; charset=utf-8");
|
header("Content-Type: text/html; charset=utf-8");
|
||||||
header("Cache-Control: no-cache");
|
header("Cache-Control: no-cache");
|
||||||
if ($adminer->headers()) {
|
header("X-Frame-Options: deny"); // ClickJacking protection in IE8, Safari 4, Chrome 2, Firefox 3.6.9
|
||||||
header("X-Frame-Options: deny"); // ClickJacking protection in IE8, Safari 4, Chrome 2, Firefox 3.6.9
|
header("X-XSS-Protection: 0"); // prevents introducing XSS in IE8 by removing safe parts of the page
|
||||||
header("X-XSS-Protection: 0"); // prevents introducing XSS in IE8 by removing safe parts of the page
|
header("X-Content-Type-Options: nosniff");
|
||||||
|
header("Referrer-Policy: origin-when-cross-origin");
|
||||||
|
foreach ($adminer->csp() as $csp) {
|
||||||
|
$header = array();
|
||||||
|
foreach ($csp as $key => $val) {
|
||||||
|
$header[] = "$key $val";
|
||||||
|
}
|
||||||
|
header("Content-Security-Policy: " . implode("; ", $header));
|
||||||
}
|
}
|
||||||
|
$adminer->headers();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets Content Security Policy headers.
|
||||||
|
*
|
||||||
|
* @return array of arrays with directive name in key, allowed sources in value
|
||||||
|
* @throws \Random\RandomException
|
||||||
|
*/
|
||||||
|
function csp() {
|
||||||
|
return [
|
||||||
|
[
|
||||||
|
// 'self' is a fallback for browsers not supporting 'strict-dynamic', 'unsafe-inline' is a fallback for browsers not supporting 'nonce-'
|
||||||
|
"script-src" => "'self' 'unsafe-inline' 'nonce-" . get_nonce() . "' 'strict-dynamic'",
|
||||||
|
"connect-src" => "'self' https://api.github.com/repos/pematon/adminer/releases/latest",
|
||||||
|
"frame-src" => "'self'",
|
||||||
|
"object-src" => "'none'",
|
||||||
|
"base-uri" => "'none'",
|
||||||
|
"form-action" => "'self'",
|
||||||
|
],
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets a CSP nonce.
|
||||||
|
*
|
||||||
|
* @return string Base64 value.
|
||||||
|
* @throws \Random\RandomException
|
||||||
|
*/
|
||||||
|
function get_nonce()
|
||||||
|
{
|
||||||
|
static $nonce;
|
||||||
|
|
||||||
|
if (!$nonce) {
|
||||||
|
$nonce = base64_encode(get_random_string(true));
|
||||||
|
}
|
||||||
|
|
||||||
|
return $nonce;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Print flash and error messages
|
/** Print flash and error messages
|
||||||
@@ -103,7 +177,7 @@ function page_messages($error) {
|
|||||||
$uri = preg_replace('~^[^?]*~', '', $_SERVER["REQUEST_URI"]);
|
$uri = preg_replace('~^[^?]*~', '', $_SERVER["REQUEST_URI"]);
|
||||||
$messages = $_SESSION["messages"][$uri];
|
$messages = $_SESSION["messages"][$uri];
|
||||||
if ($messages) {
|
if ($messages) {
|
||||||
echo "<div class='message'>" . implode("</div>\n<div class='message'>", $messages) . "</div>\n";
|
echo "<div class='message'>" . implode("</div>\n<div class='message'>", $messages) . "</div>" . script("messagesPrint();");
|
||||||
unset($_SESSION["messages"][$uri]);
|
unset($_SESSION["messages"][$uri]);
|
||||||
}
|
}
|
||||||
if ($error) {
|
if ($error) {
|
||||||
@@ -111,27 +185,38 @@ function page_messages($error) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Print HTML footer
|
/**
|
||||||
* @param string "auth", "db", "ns"
|
* Prints HTML footer.
|
||||||
* @return null
|
*
|
||||||
*/
|
* @param $missing string "auth", "db", "ns"
|
||||||
function page_footer($missing = "") {
|
*/
|
||||||
|
function page_footer($missing = "")
|
||||||
|
{
|
||||||
global $adminer, $token;
|
global $adminer, $token;
|
||||||
?>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<?php switch_lang(); ?>
|
echo "</div>"; // #content
|
||||||
<?php if ($missing != "auth") { ?>
|
|
||||||
<form action="" method="post">
|
echo "<div id='footer'>\n";
|
||||||
<p class="logout">
|
switch_lang();
|
||||||
<input type="submit" name="logout" value="<?php echo lang('Logout'); ?>" id="logout">
|
|
||||||
<input type="hidden" name="token" value="<?php echo $token; ?>">
|
if ($missing != "auth") {
|
||||||
</p>
|
?>
|
||||||
</form>
|
|
||||||
<?php } ?>
|
<div class="logout">
|
||||||
<div id="menu">
|
<form action="" method="post">
|
||||||
<?php $adminer->navigation($missing); ?>
|
<?php echo h($_GET["username"]); ?>
|
||||||
</div>
|
<input type="submit" name="logout" value="<?php echo lang('Logout'); ?>" id="logout">
|
||||||
<script type="text/javascript">setupSubmitHighlight(document);</script>
|
<input type="hidden" name="token" value="<?php echo $token; ?>">
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
|
||||||
<?php
|
<?php
|
||||||
|
}
|
||||||
|
echo "</div>\n";
|
||||||
|
|
||||||
|
echo "<div id='menu'>\n";
|
||||||
|
$adminer->navigation($missing);
|
||||||
|
echo "</div>\n";
|
||||||
|
|
||||||
|
echo script("setupSubmitHighlight(document);");
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,15 +1,35 @@
|
|||||||
<?php
|
<?php
|
||||||
|
$drivers = array();
|
||||||
|
|
||||||
|
/** Add a driver
|
||||||
|
* @param string
|
||||||
|
* @param string
|
||||||
|
* @return null
|
||||||
|
*/
|
||||||
|
function add_driver($id, $name) {
|
||||||
|
global $drivers;
|
||||||
|
$drivers[$id] = $name;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Get driver name
|
||||||
|
* @param string
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
function get_driver($id) {
|
||||||
|
global $drivers;
|
||||||
|
return $drivers[$id];
|
||||||
|
}
|
||||||
|
|
||||||
/*abstract*/ class Min_SQL {
|
/*abstract*/ class Min_SQL {
|
||||||
var $_conn;
|
var $_conn;
|
||||||
|
|
||||||
/** Create object for performing database operations
|
/** Create object for performing database operations
|
||||||
* @param Min_DB
|
* @param Min_DB
|
||||||
*/
|
*/
|
||||||
function __construct($connection) {
|
function __construct($connection) {
|
||||||
$this->_conn = $connection;
|
$this->_conn = $connection;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Select data from table
|
/** Select data from table
|
||||||
* @param string
|
* @param string
|
||||||
* @param array result of $adminer->selectColumnsProcess()[0]
|
* @param array result of $adminer->selectColumnsProcess()[0]
|
||||||
@@ -27,7 +47,7 @@
|
|||||||
$query = $adminer->selectQueryBuild($select, $where, $group, $order, $limit, $page);
|
$query = $adminer->selectQueryBuild($select, $where, $group, $order, $limit, $page);
|
||||||
if (!$query) {
|
if (!$query) {
|
||||||
$query = "SELECT" . limit(
|
$query = "SELECT" . limit(
|
||||||
($_GET["page"] != "last" && +$limit && $group && $is_group && $jush == "sql" ? "SQL_CALC_FOUND_ROWS " : "") . implode(", ", $select) . "\nFROM " . table($table),
|
($_GET["page"] != "last" && $limit != "" && $group && $is_group && $jush == "sql" ? "SQL_CALC_FOUND_ROWS " : "") . implode(", ", $select) . "\nFROM " . table($table),
|
||||||
($where ? "\nWHERE " . implode(" AND ", $where) : "") . ($group && $is_group ? "\nGROUP BY " . implode(", ", $group) : "") . ($order ? "\nORDER BY " . implode(", ", $order) : ""),
|
($where ? "\nWHERE " . implode(" AND ", $where) : "") . ($group && $is_group ? "\nGROUP BY " . implode(", ", $group) : "") . ($order ? "\nORDER BY " . implode(", ", $order) : ""),
|
||||||
($limit != "" ? +$limit : null),
|
($limit != "" ? +$limit : null),
|
||||||
($page ? $limit * $page : 0),
|
($page ? $limit * $page : 0),
|
||||||
@@ -37,11 +57,11 @@
|
|||||||
$start = microtime(true);
|
$start = microtime(true);
|
||||||
$return = $this->_conn->query($query);
|
$return = $this->_conn->query($query);
|
||||||
if ($print) {
|
if ($print) {
|
||||||
echo $adminer->selectQuery($query, format_time($start));
|
echo $adminer->selectQuery($query, $start, !$return);
|
||||||
}
|
}
|
||||||
return $return;
|
return $return;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Delete data from table
|
/** Delete data from table
|
||||||
* @param string
|
* @param string
|
||||||
* @param string " WHERE ..."
|
* @param string " WHERE ..."
|
||||||
@@ -50,9 +70,9 @@
|
|||||||
*/
|
*/
|
||||||
function delete($table, $queryWhere, $limit = 0) {
|
function delete($table, $queryWhere, $limit = 0) {
|
||||||
$query = "FROM " . table($table);
|
$query = "FROM " . table($table);
|
||||||
return queries("DELETE" . ($limit ? limit1($query, $queryWhere) : " $query$queryWhere"));
|
return queries("DELETE" . ($limit ? limit1($table, $query, $queryWhere) : " $query$queryWhere"));
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Update data in table
|
/** Update data in table
|
||||||
* @param string
|
* @param string
|
||||||
* @param array escaped columns in keys, quoted data in values
|
* @param array escaped columns in keys, quoted data in values
|
||||||
@@ -67,9 +87,9 @@
|
|||||||
$values[] = "$key = $val";
|
$values[] = "$key = $val";
|
||||||
}
|
}
|
||||||
$query = table($table) . " SET$separator" . implode(",$separator", $values);
|
$query = table($table) . " SET$separator" . implode(",$separator", $values);
|
||||||
return queries("UPDATE" . ($limit ? limit1($query, $queryWhere) : " $query$queryWhere"));
|
return queries("UPDATE" . ($limit ? limit1($table, $query, $queryWhere, $separator) : " $query$queryWhere"));
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Insert data into table
|
/** Insert data into table
|
||||||
* @param string
|
* @param string
|
||||||
* @param array escaped columns in keys, quoted data in values
|
* @param array escaped columns in keys, quoted data in values
|
||||||
@@ -81,7 +101,7 @@
|
|||||||
: " DEFAULT VALUES"
|
: " DEFAULT VALUES"
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Insert or update data in table
|
/** Insert or update data in table
|
||||||
* @param string
|
* @param string
|
||||||
* @param array
|
* @param array
|
||||||
@@ -91,20 +111,78 @@
|
|||||||
/*abstract*/ function insertUpdate($table, $rows, $primary) {
|
/*abstract*/ function insertUpdate($table, $rows, $primary) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Begin transaction
|
/** Begin transaction
|
||||||
* @return bool
|
* @return bool
|
||||||
*/
|
*/
|
||||||
function begin() {
|
function begin() {
|
||||||
return queries("BEGIN");
|
return queries("BEGIN");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Commit transaction
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
function commit() {
|
function commit() {
|
||||||
return queries("COMMIT");
|
return queries("COMMIT");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Rollback transaction
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
function rollback() {
|
function rollback() {
|
||||||
return queries("ROLLBACK");
|
return queries("ROLLBACK");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Return query with a timeout
|
||||||
|
* @param string
|
||||||
|
* @param int seconds
|
||||||
|
* @return string or null if the driver doesn't support query timeouts
|
||||||
|
*/
|
||||||
|
function slowQuery($query, $timeout) {
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Convert column to be searchable
|
||||||
|
* @param string escaped column name
|
||||||
|
* @param array array("op" => , "val" => )
|
||||||
|
* @param array
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
function convertSearch($idf, array $where, array $field) {
|
||||||
|
return $idf;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Convert value returned by database to actual value
|
||||||
|
* @param string
|
||||||
|
* @param array
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
function value($val, $field) {
|
||||||
|
return (method_exists($this->_conn, 'value')
|
||||||
|
? $this->_conn->value($val, $field)
|
||||||
|
: (is_resource($val) ? stream_get_contents($val) : $val)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Quote binary string
|
||||||
|
* @param string
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
function quoteBinary($s) {
|
||||||
|
return q($s);
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Get warnings about the last command
|
||||||
|
* @return string HTML
|
||||||
|
*/
|
||||||
|
function warnings() {
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Get help link for table
|
||||||
|
* @param string
|
||||||
|
* @return string relative URL or null
|
||||||
|
*/
|
||||||
|
function tableHelp($name) {
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,14 +17,15 @@ function select($result, $connection2 = null, $orgtables = array(), $limit = 0)
|
|||||||
odd(''); // reset odd for each result
|
odd(''); // reset odd for each result
|
||||||
for ($i=0; (!$limit || $i < $limit) && ($row = $result->fetch_row()); $i++) {
|
for ($i=0; (!$limit || $i < $limit) && ($row = $result->fetch_row()); $i++) {
|
||||||
if (!$i) {
|
if (!$i) {
|
||||||
|
echo "<div class='scrollable'>\n";
|
||||||
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 != "") {
|
||||||
@@ -45,46 +46,52 @@ 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('sql' => "explain-output.html#explain_" . strtolower($name))) : "")
|
. ($orgtables ? doc_link(array(
|
||||||
|
'sql' => "explain-output.html#explain_" . strtolower($name),
|
||||||
|
'mariadb' => "explain/#the-columns-in-explain-select",
|
||||||
|
)) : "")
|
||||||
;
|
;
|
||||||
}
|
}
|
||||||
echo "</thead>\n";
|
echo "</thead>\n";
|
||||||
}
|
}
|
||||||
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)) {
|
||||||
$val = "<i>" . lang('%d byte(s)', strlen($val)) . "</i>"; //! link to download
|
$val = "<i>" . lang('%d byte(s)', strlen($val)) . "</i>"; //! link to download
|
||||||
} elseif (!strlen($val)) { // strlen - SQLite can return int
|
|
||||||
$val = " "; // some content to print a border
|
|
||||||
} else {
|
} else {
|
||||||
$val = h($val);
|
$val = h($val);
|
||||||
if ($types[$key] == 254) { // 254 - char
|
if ($types[$key] == 254) { // 254 - char
|
||||||
$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";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
echo ($i ? "</table>" : "<p class='message'>" . lang('No rows.')) . "\n";
|
echo ($i ? "</table>\n</div>" : "<p class='message'>" . lang('No rows.')) . "\n";
|
||||||
return $return;
|
return $return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -110,6 +117,31 @@ function referencable_primary($self) {
|
|||||||
return $return;
|
return $return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Get settings stored in a cookie
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
function adminer_settings() {
|
||||||
|
parse_str($_COOKIE["adminer_settings"], $settings);
|
||||||
|
return $settings;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Get setting stored in a cookie
|
||||||
|
* @param string
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
function adminer_setting($key) {
|
||||||
|
$settings = adminer_settings();
|
||||||
|
return $settings[$key];
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Store settings to a cookie
|
||||||
|
* @param array
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
function set_adminer_settings($settings) {
|
||||||
|
return cookie("adminer_settings", http_build_query($settings + adminer_settings()));
|
||||||
|
}
|
||||||
|
|
||||||
/** Print SQL <textarea> tag
|
/** Print SQL <textarea> tag
|
||||||
* @param string
|
* @param string
|
||||||
* @param string or array in which case [0] of every element is used
|
* @param string or array in which case [0] of every element is used
|
||||||
@@ -119,7 +151,7 @@ function referencable_primary($self) {
|
|||||||
*/
|
*/
|
||||||
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)
|
||||||
@@ -135,25 +167,25 @@ function textarea($name, $value, $rows = 10, $cols = 80) {
|
|||||||
* @param array
|
* @param array
|
||||||
* @param array
|
* @param array
|
||||||
* @param array returned by referencable_primary()
|
* @param array returned by referencable_primary()
|
||||||
|
* @param array extra types to prepend
|
||||||
* @return null
|
* @return null
|
||||||
*/
|
*/
|
||||||
function edit_type($key, $field, $collations, $foreign_keys = array()) {
|
function edit_type($key, $field, $collations, $foreign_keys = array(), $extra_types = array()) {
|
||||||
global $structured_types, $types, $unsigned, $on_actions;
|
global $structured_types, $types, $unsigned, $on_actions;
|
||||||
$type = $field["type"];
|
$type = $field["type"];
|
||||||
?>
|
?>
|
||||||
<td><select name="<?php echo h($key); ?>[type]" class="type" onfocus="lastType = selectValue(this);" onchange="editingTypeChange(this);"<?php echo on_help("getTarget(event).value", 1); ?>><?php
|
<td><select name="<?php echo h($key); ?>[type]" class="type" aria-labelledby="label-type"><?php
|
||||||
if ($type && !isset($types[$type]) && !isset($foreign_keys[$type])) {
|
if ($type && !isset($types[$type]) && !isset($foreign_keys[$type]) && !in_array($type, $extra_types)) {
|
||||||
array_unshift($structured_types, $type);
|
$extra_types[] = $type;
|
||||||
}
|
}
|
||||||
if ($foreign_keys) {
|
if ($foreign_keys) {
|
||||||
$structured_types[lang('Foreign keys')] = $foreign_keys;
|
$structured_types[lang('Foreign keys')] = $foreign_keys;
|
||||||
}
|
}
|
||||||
echo optionlist($structured_types, $type);
|
echo optionlist(array_merge($extra_types, $structured_types), $type);
|
||||||
?></select>
|
?></select><td><input name="<?php echo h($key); ?>[length]" value="<?php echo h($field["length"]); ?>" size="3"<?php echo (!$field["length"] && preg_match('~var(char|binary)$~', $type) ? " class='required'" : ""); //! type="number" with enabled JavaScript ?> aria-labelledby="label-length"><td class="options"><?php
|
||||||
<td><input name="<?php echo h($key); ?>[length]" value="<?php echo h($field["length"]); ?>" size="3" onfocus="editingLengthFocus(this);"<?php echo (!$field["length"] && preg_match('~var(char|binary)$~', $type) ? " class='required'" : ""); ?> onchange="editingLengthChange(this);" onkeyup="this.onchange();"><td class="options"><?php //! type="number" with enabled JavaScript
|
|
||||||
echo "<select name='" . h($key) . "[collation]'" . (preg_match('~(char|text|enum|set)$~', $type) ? "" : " class='hidden'") . '><option value="">(' . lang('collation') . ')' . optionlist($collations, $field["collation"]) . '</select>';
|
echo "<select name='" . h($key) . "[collation]'" . (preg_match('~(char|text|enum|set)$~', $type) ? "" : " class='hidden'") . '><option value="">(' . lang('collation') . ')' . optionlist($collations, $field["collation"]) . '</select>';
|
||||||
echo ($unsigned ? "<select name='" . h($key) . "[unsigned]'" . (!$type || preg_match('~((^|[^o])int|float|double|decimal)$~', $type) ? "" : " class='hidden'") . '><option>' . optionlist($unsigned, $field["unsigned"]) . '</select>' : '');
|
echo ($unsigned ? "<select name='" . h($key) . "[unsigned]'" . (!$type || preg_match(number_type(), $type) ? "" : " class='hidden'") . '><option>' . optionlist($unsigned, $field["unsigned"]) . '</select>' : '');
|
||||||
echo (isset($field['on_update']) ? "<select name='" . h($key) . "[on_update]'" . (preg_match('~timestamp|datetime~', $type) ? "" : " class='hidden'") . '>' . optionlist(array("" => "(" . lang('ON UPDATE') . ")", "CURRENT_TIMESTAMP"), $field["on_update"]) . '</select>' : '');
|
echo (isset($field['on_update']) ? "<select name='" . h($key) . "[on_update]'" . (preg_match('~timestamp|datetime~', $type) ? "" : " class='hidden'") . '>' . optionlist(array("" => "(" . lang('ON UPDATE') . ")", "CURRENT_TIMESTAMP"), (preg_match('~^CURRENT_TIMESTAMP~i', $field["on_update"]) ? "CURRENT_TIMESTAMP" : $field["on_update"])) . '</select>' : '');
|
||||||
echo ($foreign_keys ? "<select name='" . h($key) . "[on_delete]'" . (preg_match("~`~", $type) ? "" : " class='hidden'") . "><option value=''>(" . lang('ON DELETE') . ")" . optionlist(explode("|", $on_actions), $field["on_delete"]) . "</select> " : " "); // space for IE
|
echo ($foreign_keys ? "<select name='" . h($key) . "[on_delete]'" . (preg_match("~`~", $type) ? "" : " class='hidden'") . "><option value=''>(" . lang('ON DELETE') . ")" . optionlist(explode("|", $on_actions), $field["on_delete"]) . "</select> " : " "); // space for IE
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -178,7 +210,7 @@ function process_type($field, $collate = "COLLATE") {
|
|||||||
global $unsigned;
|
global $unsigned;
|
||||||
return " $field[type]"
|
return " $field[type]"
|
||||||
. process_length($field["length"])
|
. process_length($field["length"])
|
||||||
. (preg_match('~(^|[^o])int|float|double|decimal~', $field["type"]) && in_array($field["unsigned"], $unsigned) ? " $field[unsigned]" : "")
|
. (preg_match(number_type(), $field["type"]) && in_array($field["unsigned"], $unsigned) ? " $field[unsigned]" : "")
|
||||||
. (preg_match('~char|text|enum|set~', $field["type"]) && $field["collation"] ? " $collate " . q($field["collation"]) : "")
|
. (preg_match('~char|text|enum|set~', $field["type"]) && $field["collation"] ? " $collate " . q($field["collation"]) : "")
|
||||||
;
|
;
|
||||||
}
|
}
|
||||||
@@ -189,24 +221,42 @@ function process_type($field, $collate = "COLLATE") {
|
|||||||
* @return array array("field", "type", "NULL", "DEFAULT", "ON UPDATE", "COMMENT", "AUTO_INCREMENT")
|
* @return array array("field", "type", "NULL", "DEFAULT", "ON UPDATE", "COMMENT", "AUTO_INCREMENT")
|
||||||
*/
|
*/
|
||||||
function process_field($field, $type_field) {
|
function process_field($field, $type_field) {
|
||||||
global $jush;
|
// MariaDB exports CURRENT_TIMESTAMP as a function.
|
||||||
$default = $field["default"];
|
if ($field["on_update"]) {
|
||||||
|
$field["on_update"] = str_ireplace("current_timestamp()", "CURRENT_TIMESTAMP", $field["on_update"]);
|
||||||
|
}
|
||||||
|
|
||||||
return array(
|
return array(
|
||||||
idf_escape(trim($field["field"])),
|
idf_escape(trim($field["field"])),
|
||||||
process_type($type_field),
|
process_type($type_field),
|
||||||
($field["null"] ? " NULL" : " NOT NULL"), // NULL for timestamp
|
($field["null"] ? " NULL" : " NOT NULL"), // NULL for timestamp
|
||||||
(isset($default) ? " DEFAULT " . (
|
default_value($field),
|
||||||
(preg_match('~time~', $field["type"]) && preg_match('~^CURRENT_TIMESTAMP$~i', $default))
|
(preg_match('~timestamp|datetime~', $field["type"]) && $field["on_update"] ? " ON UPDATE " . $field["on_update"] : ""),
|
||||||
|| ($jush == "sqlite" && preg_match('~^CURRENT_(TIME|TIMESTAMP|DATE)$~i', $default))
|
|
||||||
|| ($field["type"] == "bit" && preg_match("~^([0-9]+|b'[0-1]+')\$~", $default))
|
|
||||||
|| ($jush == "pgsql" && preg_match("~^[a-z]+\\(('[^']*')+\\)\$~", $default))
|
|
||||||
? $default : q($default)) : ""),
|
|
||||||
(preg_match('~timestamp|datetime~', $field["type"]) && $field["on_update"] ? " ON UPDATE $field[on_update]" : ""),
|
|
||||||
(support("comment") && $field["comment"] != "" ? " COMMENT " . q($field["comment"]) : ""),
|
(support("comment") && $field["comment"] != "" ? " COMMENT " . q($field["comment"]) : ""),
|
||||||
($field["auto_increment"] ? auto_increment() : null),
|
($field["auto_increment"] ? auto_increment() : null),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Get default value clause
|
||||||
|
* @param array
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
function default_value($field) {
|
||||||
|
$default = $field["default"];
|
||||||
|
if ($default === null) return "";
|
||||||
|
|
||||||
|
if (stripos($default, "GENERATED ") === 0) {
|
||||||
|
return " $default";
|
||||||
|
}
|
||||||
|
|
||||||
|
// MariaDB exports CURRENT_TIMESTAMP as a function.
|
||||||
|
$default = str_ireplace("current_timestamp()", "CURRENT_TIMESTAMP", $default);
|
||||||
|
|
||||||
|
$quote = preg_match('~char|binary|text|enum|set~', $field["type"]) || preg_match('~^(?![a-z])~i', $default);
|
||||||
|
|
||||||
|
return " DEFAULT " . ($quote ? q($default) : $default);
|
||||||
|
}
|
||||||
|
|
||||||
/** Get type class to use in CSS
|
/** Get type class to use in CSS
|
||||||
* @param string
|
* @param string
|
||||||
* @return string class=''
|
* @return string class=''
|
||||||
@@ -224,65 +274,106 @@ function type_class($type) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Print table interior for fields editing
|
/**
|
||||||
* @param array
|
* Prints table interior for fields editing.
|
||||||
* @param array
|
*
|
||||||
* @param string TABLE or PROCEDURE
|
* @param string $type TABLE, FUNCTION or PROCEDURE
|
||||||
* @param array returned by referencable_primary()
|
* @param array $foreign_keys returned by referencable_primary()
|
||||||
* @param bool display comments column
|
*/
|
||||||
* @return null
|
function edit_fields(array $fields, array $collations, $type = "TABLE", $foreign_keys = []) {
|
||||||
*/
|
global $inout;
|
||||||
function edit_fields($fields, $collations, $type = "TABLE", $foreign_keys = array(), $comments = false) {
|
|
||||||
global $connection, $inout;
|
|
||||||
$fields = array_values($fields);
|
$fields = array_values($fields);
|
||||||
|
$comment_class = ($_POST ? $_POST["comments"] : adminer_setting("comments")) ? "" : "class='hidden'";
|
||||||
?>
|
?>
|
||||||
<thead><tr class="wrap">
|
|
||||||
<?php if ($type == "PROCEDURE") { ?><td> <?php } ?>
|
<thead><tr>
|
||||||
<th><?php echo ($type == "TABLE" ? lang('Column name') : lang('Parameter name')); ?>
|
<?php
|
||||||
<td><?php echo lang('Type'); ?><textarea id="enum-edit" rows="4" cols="12" wrap="off" style="display: none;" onblur="editingLengthBlur(this);"></textarea>
|
if (support("move_col")) {
|
||||||
<td><?php echo lang('Length'); ?>
|
echo "<td class='jsonly'></td>";
|
||||||
<td><?php echo lang('Options'); ?>
|
}
|
||||||
<?php if ($type == "TABLE") { ?>
|
if ($type == "PROCEDURE") {
|
||||||
<td>NULL
|
echo "<td></td>";
|
||||||
<td><input type="radio" name="auto_increment_col" value=""><acronym title="<?php echo lang('Auto Increment'); ?>">AI</acronym><?php echo doc_link(array(
|
}
|
||||||
'sql' => "example-auto-increment.html",
|
?>
|
||||||
'sqlite' => "autoinc.html",
|
<th id="label-name"><?php echo ($type == "TABLE" ? lang('Column name') : lang('Parameter name')); ?></th>
|
||||||
'pgsql' => "datatype.html#DATATYPE-SERIAL",
|
<td id="label-type"><?php echo lang('Type'); ?><textarea id="enum-edit" rows="4" cols="12" wrap="off" style="display: none;"></textarea><?php echo script("gid('enum-edit').onblur = editingLengthBlur;"); ?></td>
|
||||||
'mssql' => "ms186775.aspx",
|
<td id="label-length"><?php echo lang('Length'); ?></td>
|
||||||
)); ?>
|
<td><?php echo lang('Options'); /* no label required, options have their own label */ ?></td>
|
||||||
<td><?php echo lang('Default value'); ?>
|
<?php if ($type == "TABLE") { ?>
|
||||||
<?php echo (support("comment") ? "<td" . ($comments ? "" : " class='hidden'") . ">" . lang('Comment') : ""); ?>
|
<td id="label-null">NULL</td>
|
||||||
<?php } ?>
|
<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([
|
||||||
<td><?php echo "<input type='image' class='icon' name='add[" . (support("move_col") ? 0 : count($fields)) . "]' src='../adminer/static/plus.gif' alt='+' title='" . lang('Add next') . "'>"; ?><script type="text/javascript">row_count = <?php echo count($fields); ?>;</script>
|
'sql' => "example-auto-increment.html",
|
||||||
</thead>
|
'mariadb' => "auto_increment/",
|
||||||
<tbody onkeydown="return editingKeydown(event);">
|
'sqlite' => "autoinc.html",
|
||||||
|
'pgsql' => "datatype-numeric.html#DATATYPE-SERIAL",
|
||||||
|
'mssql' => "ms186775.aspx",
|
||||||
|
]); ?>
|
||||||
|
</td>
|
||||||
|
<td id="label-default"><?php echo lang('Default value'); ?></td>
|
||||||
|
<?php echo (support("comment") ? "<td id='label-comment' $comment_class>" . lang('Comment') . "</td>" : ""); ?>
|
||||||
|
<?php } ?>
|
||||||
|
<td><?php echo "<input type='image' class='icon' name='add[" . (support("move_col") ? 0 : count($fields)) . "]' src='../adminer/static/plus.gif' alt='+' title='" . lang('Add next') . "'>" . script("row_count = " . count($fields) . ";"); ?></td>
|
||||||
|
</tr></thead>
|
||||||
<?php
|
<?php
|
||||||
|
echo "<tbody>\n";
|
||||||
|
|
||||||
foreach ($fields as $i => $field) {
|
foreach ($fields as $i => $field) {
|
||||||
$i++;
|
$i++;
|
||||||
$orig = $field[($_POST ? "orig" : "field")];
|
$orig = $field[($_POST ? "orig" : "field")];
|
||||||
$display = (isset($_POST["add"][$i-1]) || (isset($field["field"]) && !$_POST["drop_col"][$i])) && (support("drop_col") || $orig == "");
|
$display = (isset($_POST["add"][$i-1]) || (isset($field["field"]) && !$_POST["drop_col"][$i])) && (support("drop_col") || $orig == "");
|
||||||
?>
|
|
||||||
<tr<?php echo ($display ? "" : " style='display: none;'"); ?>>
|
$style = $display ? "" : "style='display: none;'";
|
||||||
<?php echo ($type == "PROCEDURE" ? "<td>" . html_select("fields[$i][inout]", explode("|", $inout), $field["inout"]) : ""); ?>
|
echo "<tr $style>\n";
|
||||||
<th><?php if ($display) { ?><input name="fields[<?php echo $i; ?>][field]" value="<?php echo h($field["field"]); ?>" onchange="editingNameChange(this);<?php echo ($field["field"] != "" || count($fields) > 1 ? '' : ' editingAddRow(this);" onkeyup="if (this.value) editingAddRow(this);'); ?>" maxlength="64" autocapitalize="off"><?php } ?>
|
|
||||||
<input type="hidden" name="fields[<?php echo $i; ?>][orig]" value="<?php echo h($orig); ?>">
|
if (support("move_col")) {
|
||||||
<?php edit_type("fields[$i]", $field, $collations, $foreign_keys); ?>
|
echo "<th class='handle jsonly'></th>";
|
||||||
<?php if ($type == "TABLE") { ?>
|
}
|
||||||
<td><?php echo checkbox("fields[$i][null]", 1, $field["null"], "", "", "block"); ?>
|
if ($type == "PROCEDURE") {
|
||||||
<td><label class="block"><input type="radio" name="auto_increment_col" value="<?php echo $i; ?>"<?php if ($field["auto_increment"]) { ?> checked<?php } ?> onclick="var field = this.form['fields[' + this.value + '][field]']; if (!field.value) { field.value = 'id'; field.onchange(); }"></label><td><?php
|
echo "<td>", html_select("fields[$i][inout]", explode("|", $inout), $field["inout"]), "</td>\n";
|
||||||
echo checkbox("fields[$i][has_default]", 1, $field["has_default"]); ?><input name="fields[<?php echo $i; ?>][default]" value="<?php echo h($field["default"]); ?>" onkeyup="keyupChange.call(this);" onchange="this.previousSibling.checked = true;">
|
}
|
||||||
<?php echo (support("comment") ? "<td" . ($comments ? "" : " class='hidden'") . "><input name='fields[$i][comment]' value='" . h($field["comment"]) . "' maxlength='" . ($connection->server_info >= 5.5 ? 1024 : 255) . "'>" : ""); ?>
|
|
||||||
<?php } ?>
|
echo "<th>";
|
||||||
<?php
|
if ($display) {
|
||||||
|
echo "<input name='fields[$i][field]' value='", h($field["field"]), "' data-maxlength='64' autocapitalize='off' aria-labelledby='label-name'>";
|
||||||
|
}
|
||||||
|
echo "<input type='hidden' name='fields[$i][orig]' value='", h($orig), "'>";
|
||||||
|
edit_type("fields[$i]", $field, $collations, $foreign_keys);
|
||||||
|
echo "</th>\n";
|
||||||
|
|
||||||
|
if ($type == "TABLE") {
|
||||||
|
echo "<td>", checkbox("fields[$i][null]", 1, $field["null"], "", "", "block", "label-null"), "</td>\n";
|
||||||
|
|
||||||
|
$checked = $field["auto_increment"] ? "checked" : "";
|
||||||
|
echo "<td><label class='block'><input type='radio' name='auto_increment_col' value='$i' $checked aria-labelledby='label-ai'></label></td>\n";
|
||||||
|
|
||||||
|
echo "<td>",
|
||||||
|
checkbox("fields[$i][has_default]", 1, $field["has_default"], "", "", "", "label-default"),
|
||||||
|
"<input name='fields[$i][default]' value='", h($field["default"]), "' aria-labelledby='label-default'>",
|
||||||
|
"</td>\n";
|
||||||
|
|
||||||
|
if (support("comment")) {
|
||||||
|
$max_length = min_version(5.5) ? 1024 : 255;
|
||||||
|
echo "<td $comment_class>",
|
||||||
|
"<input name='fields[$i][comment]' value='", h($field["comment"]), "' data-maxlength='$max_length' aria-labelledby='label-comment'>",
|
||||||
|
"</td>\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
echo "<td>";
|
echo "<td>";
|
||||||
echo (support("move_col") ?
|
if (support("move_col")) {
|
||||||
"<input type='image' class='icon' name='add[$i]' src='../adminer/static/plus.gif' alt='+' title='" . lang('Add next') . "' onclick='return !editingAddRow(this, 1);'> "
|
echo "<input type='image' class='icon' name='add[$i]' src='../adminer/static/plus.gif' alt='+' title='" . lang('Add next') . "'> ",
|
||||||
. "<input type='image' class='icon' name='up[$i]' src='../adminer/static/up.gif' alt='^' title='" . lang('Move up') . "'> "
|
"<input type='image' class='icon hidden' name='up[$i]' src='../adminer/static/up.gif' alt='↑' title='" . lang('Move up') . "'> ",
|
||||||
. "<input type='image' class='icon' name='down[$i]' src='../adminer/static/down.gif' alt='v' title='" . lang('Move down') . "'> "
|
"<input type='image' class='icon hidden' name='down[$i]' src='../adminer/static/down.gif' alt='↓' title='" . lang('Move down') . "'> ";
|
||||||
: "");
|
}
|
||||||
echo ($orig == "" || support("drop_col") ? "<input type='image' class='icon' name='drop_col[$i]' src='../adminer/static/cross.gif' alt='x' title='" . lang('Remove') . "' onclick=\"return !editingRemoveRow(this, 'fields\$1[field]');\">" : "");
|
if ($orig == "" || support("drop_col")) {
|
||||||
echo "\n";
|
echo "<input type='image' class='icon' name='drop_col[$i]' src='../adminer/static/cross.gif' alt='x' title='" . lang('Remove') . "'>";
|
||||||
|
}
|
||||||
|
echo "</td>\n</tr>\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
echo "</tbody>";
|
||||||
|
echo script("mixin(qs('#edit-fields tbody'), {onclick: editingClick, onkeydown: editingKeydown, oninput: editingInput}); initSortable('#edit-fields tbody');");
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Move fields up and down or add field
|
/** Move fields up and down or add field
|
||||||
@@ -290,7 +381,6 @@ echo checkbox("fields[$i][has_default]", 1, $field["has_default"]); ?><input nam
|
|||||||
* @return bool
|
* @return bool
|
||||||
*/
|
*/
|
||||||
function process_fields(&$fields) {
|
function process_fields(&$fields) {
|
||||||
ksort($fields);
|
|
||||||
$offset = 0;
|
$offset = 0;
|
||||||
if ($_POST["up"]) {
|
if ($_POST["up"]) {
|
||||||
$last = 0;
|
$last = 0;
|
||||||
@@ -335,25 +425,43 @@ function normalize_enum($match) {
|
|||||||
return "'" . str_replace("'", "''", addcslashes(stripcslashes(str_replace($match[0][0] . $match[0][0], $match[0][0], substr($match[0], 1, -1))), '\\')) . "'";
|
return "'" . str_replace("'", "''", addcslashes(stripcslashes(str_replace($match[0][0] . $match[0][0], $match[0][0], substr($match[0], 1, -1))), '\\')) . "'";
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Issue grant or revoke commands
|
/**
|
||||||
* @param string GRANT or REVOKE
|
* Issue grant or revoke commands.
|
||||||
* @param array
|
*
|
||||||
* @param string
|
* @param bool $grant
|
||||||
* @param string
|
* @param array $privileges
|
||||||
* @return bool
|
* @param string $columns
|
||||||
*/
|
* @param string $on
|
||||||
function grant($grant, $privileges, $columns, $on) {
|
* @param string $user
|
||||||
if (!$privileges) {
|
*
|
||||||
return true;
|
* @return bool
|
||||||
|
*/
|
||||||
|
function grant($grant, array $privileges, $columns, $on, $user) {
|
||||||
|
if (!$privileges) return true;
|
||||||
|
|
||||||
|
if ($privileges == ["ALL PRIVILEGES", "GRANT OPTION"]) {
|
||||||
|
if ($grant) {
|
||||||
|
return (bool) queries("GRANT ALL PRIVILEGES ON $on TO $user WITH GRANT OPTION");
|
||||||
|
} else {
|
||||||
|
return queries("REVOKE ALL PRIVILEGES ON $on FROM $user") &&
|
||||||
|
queries("REVOKE GRANT OPTION ON $on FROM $user");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if ($privileges == array("ALL PRIVILEGES", "GRANT OPTION")) {
|
|
||||||
// can't be granted or revoked together
|
if ($privileges == ["GRANT OPTION", "PROXY"]) {
|
||||||
return ($grant == "GRANT"
|
if ($grant) {
|
||||||
? queries("$grant ALL PRIVILEGES$on WITH GRANT OPTION")
|
return (bool) queries("GRANT PROXY ON $on TO $user WITH GRANT OPTION");
|
||||||
: queries("$grant ALL PRIVILEGES$on") && queries("$grant GRANT OPTION$on")
|
} else {
|
||||||
);
|
return (bool) queries("REVOKE PROXY ON $on FROM $user");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return queries("$grant " . preg_replace('~(GRANT OPTION)\\([^)]*\\)~', '\\1', implode("$columns, ", $privileges) . $columns) . $on);
|
|
||||||
|
return (bool) queries(
|
||||||
|
($grant ? "GRANT " : "REVOKE ") .
|
||||||
|
preg_replace('~(GRANT OPTION)\([^)]*\)~', '$1', implode("$columns, ", $privileges) . $columns) .
|
||||||
|
" ON $on " .
|
||||||
|
($grant ? "TO " : "FROM ") . $user
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Drop old object and create a new one
|
/** Drop old object and create a new one
|
||||||
@@ -397,7 +505,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)
|
||||||
@@ -412,7 +520,7 @@ function create_trigger($on, $row) {
|
|||||||
* @return string
|
* @return string
|
||||||
*/
|
*/
|
||||||
function create_routine($routine, $row) {
|
function create_routine($routine, $row) {
|
||||||
global $inout;
|
global $inout, $jush;
|
||||||
$set = array();
|
$set = array();
|
||||||
$fields = (array) $row["fields"];
|
$fields = (array) $row["fields"];
|
||||||
ksort($fields); // enforce fields order
|
ksort($fields); // enforce fields order
|
||||||
@@ -421,31 +529,36 @@ function create_routine($routine, $row) {
|
|||||||
$set[] = (preg_match("~^($inout)\$~", $field["inout"]) ? "$field[inout] " : "") . idf_escape($field["field"]) . process_type($field, "CHARACTER SET");
|
$set[] = (preg_match("~^($inout)\$~", $field["inout"]) ? "$field[inout] " : "") . idf_escape($field["field"]) . process_type($field, "CHARACTER SET");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
$definition = rtrim("\n$row[definition]", ";");
|
||||||
return "CREATE $routine "
|
return "CREATE $routine "
|
||||||
. idf_escape(trim($row["name"]))
|
. idf_escape(trim($row["name"]))
|
||||||
. " (" . implode(", ", $set) . ")"
|
. " (" . implode(", ", $set) . ")"
|
||||||
. (isset($_GET["function"]) ? " RETURNS" . process_type($row["returns"], "CHARACTER SET") : "")
|
. (isset($_GET["function"]) ? " RETURNS" . process_type($row["returns"], "CHARACTER SET") : "")
|
||||||
. ($row["language"] ? " LANGUAGE $row[language]" : "")
|
. ($row["language"] ? " LANGUAGE $row[language]" : "")
|
||||||
. rtrim("\n$row[definition]", ";")
|
. ($jush == "pgsql" ? " AS " . q($definition) : "$definition;")
|
||||||
. ";"
|
|
||||||
;
|
;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Remove current user definer from SQL command
|
/** Remove current user definer from SQL command
|
||||||
* @param string
|
* @param string
|
||||||
* @return string
|
* @return string
|
||||||
*/
|
*/
|
||||||
function remove_definer($query) {
|
function remove_definer($query) {
|
||||||
return preg_replace('~^([A-Z =]+) DEFINER=`' . preg_replace('~@(.*)~', '`@`(%|\\1)', logged_user()) . '`~', '\\1', $query); //! proper escaping of user
|
return preg_replace('~^([A-Z =]+) DEFINER=`' . preg_replace('~@(.*)~', '`@`(%|\1)', logged_user()) . '`~', '\1', $query); //! proper escaping of user
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Format foreign key to use in SQL query
|
/** Format foreign key to use in SQL query
|
||||||
* @param array ("table" => string, "source" => array, "target" => array, "on_delete" => one of $on_actions, "on_update" => one of $on_actions)
|
* @param array ("db" => string, "ns" => string, "table" => string, "source" => array, "target" => array, "on_delete" => one of $on_actions, "on_update" => one of $on_actions)
|
||||||
* @return string
|
* @return string
|
||||||
*/
|
*/
|
||||||
function format_foreign_key($foreign_key) {
|
function format_foreign_key($foreign_key) {
|
||||||
global $on_actions;
|
global $on_actions;
|
||||||
return " FOREIGN KEY (" . implode(", ", array_map('idf_escape', $foreign_key["source"])) . ") REFERENCES " . table($foreign_key["table"])
|
$db = $foreign_key["db"];
|
||||||
|
$ns = $foreign_key["ns"];
|
||||||
|
return " FOREIGN KEY (" . implode(", ", array_map('idf_escape', $foreign_key["source"])) . ") REFERENCES "
|
||||||
|
. ($db != "" && $db != $_GET["db"] ? idf_escape($db) . "." : "")
|
||||||
|
. ($ns != "" && $ns != $_GET["ns"] ? idf_escape($ns) . "." : "")
|
||||||
|
. table($foreign_key["table"])
|
||||||
. " (" . implode(", ", array_map('idf_escape', $foreign_key["target"])) . ")" //! reuse $name - check in older MySQL versions
|
. " (" . implode(", ", array_map('idf_escape', $foreign_key["target"])) . ")" //! reuse $name - check in older MySQL versions
|
||||||
. (preg_match("~^($on_actions)\$~", $foreign_key["on_delete"]) ? " ON DELETE $foreign_key[on_delete]" : "")
|
. (preg_match("~^($on_actions)\$~", $foreign_key["on_delete"]) ? " ON DELETE $foreign_key[on_delete]" : "")
|
||||||
. (preg_match("~^($on_actions)\$~", $foreign_key["on_update"]) ? " ON UPDATE $foreign_key[on_update]" : "")
|
. (preg_match("~^($on_actions)\$~", $foreign_key["on_update"]) ? " ON UPDATE $foreign_key[on_update]" : "")
|
||||||
@@ -477,27 +590,46 @@ function tar_file($filename, $tmp_file) {
|
|||||||
function ini_bytes($ini) {
|
function ini_bytes($ini) {
|
||||||
$val = ini_get($ini);
|
$val = ini_get($ini);
|
||||||
switch (strtolower(substr($val, -1))) {
|
switch (strtolower(substr($val, -1))) {
|
||||||
case 'g': $val *= 1024; // no break
|
case 'g': $val = (int)$val * 1024; // no break
|
||||||
case 'm': $val *= 1024; // no break
|
case 'm': $val = (int)$val * 1024; // no break
|
||||||
case 'k': $val *= 1024;
|
case 'k': $val = (int)$val * 1024;
|
||||||
}
|
}
|
||||||
return $val;
|
return $val;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Create link to database documentation
|
/**
|
||||||
* @param array $jush => $path
|
* Creates link to database documentation.
|
||||||
* @return string HTML code
|
*
|
||||||
*/
|
* @param array $paths $jush => $path
|
||||||
function doc_link($paths) {
|
* @param string $text HTML code
|
||||||
|
*
|
||||||
|
* @return string HTML code
|
||||||
|
*/
|
||||||
|
function doc_link(array $paths, $text = "<sup>?</sup>") {
|
||||||
global $jush, $connection;
|
global $jush, $connection;
|
||||||
$urls = array(
|
|
||||||
'sql' => "http://dev.mysql.com/doc/refman/" . substr($connection->server_info, 0, 3) . "/en/",
|
$server_info = $connection->server_info;
|
||||||
'sqlite' => "http://www.sqlite.org/",
|
$version = preg_replace('~^(\d\.?\d).*~s', '\1', $server_info); // two most significant digits
|
||||||
'pgsql' => "http://www.postgresql.org/docs/" . substr($connection->server_info, 0, 3) . "/static/",
|
|
||||||
'mssql' => "http://msdn.microsoft.com/library/",
|
$urls = [
|
||||||
'oracle' => "http://download.oracle.com/docs/cd/B19306_01/server.102/b14200/",
|
'sql' => "https://dev.mysql.com/doc/refman/$version/en/",
|
||||||
);
|
'sqlite' => "https://www.sqlite.org/",
|
||||||
return ($paths[$jush] ? "<a href='$urls[$jush]$paths[$jush]' target='_blank' rel='noreferrer'><sup>?</sup></a>" : "");
|
'pgsql' => "https://www.postgresql.org/docs/$version/",
|
||||||
|
'mssql' => "https://msdn.microsoft.com/library/",
|
||||||
|
'oracle' => "https://www.oracle.com/pls/topic/lookup?ctx=db" . preg_replace('~^.* (\d+)\.(\d+)\.\d+\.\d+\.\d+.*~s', '\1\2', $server_info) . "&id=",
|
||||||
|
'elastic' => "https://www.elastic.co/guide/en/elasticsearch/reference/$version/",
|
||||||
|
];
|
||||||
|
|
||||||
|
if (preg_match('~MariaDB~', $server_info)) {
|
||||||
|
$urls['sql'] = "https://mariadb.com/kb/en/";
|
||||||
|
$paths['sql'] = (isset($paths['mariadb']) ? $paths['mariadb'] : str_replace(".html", "/", $paths['sql']));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!isset($paths[$jush]) || !$paths[$jush] ) {
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
return "<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()
|
||||||
@@ -530,7 +662,7 @@ function db_size($db) {
|
|||||||
* @return null
|
* @return null
|
||||||
*/
|
*/
|
||||||
function set_utf8mb4($create) {
|
function set_utf8mb4($create) {
|
||||||
global $connection;
|
global $connection;
|
||||||
static $set = false;
|
static $set = false;
|
||||||
if (!$set && preg_match('~\butf8mb4~i', $create)) { // possible false positive
|
if (!$set && preg_match('~\butf8mb4~i', $create)) { // possible false positive
|
||||||
$set = true;
|
$set = true;
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -2,13 +2,13 @@
|
|||||||
// not used in a single language version
|
// not used in a single language version
|
||||||
|
|
||||||
$langs = array(
|
$langs = array(
|
||||||
'en' => 'English', // Jakub Vrána - http://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 - http://www.vrana.cz
|
'cs' => 'Čeština', // Jakub Vrána - https://www.vrana.cz
|
||||||
'da' => 'Dansk', // Jarne W. Beutnagel - jarne@beutnagel.dk
|
'da' => 'Dansk', // Jarne W. Beutnagel - jarne@beutnagel.dk
|
||||||
'de' => 'Deutsch', // Klemens Häckel - http://clickdimension.wordpress.com
|
'de' => 'Deutsch', // Klemens Häckel - http://clickdimension.wordpress.com
|
||||||
'el' => 'Ελληνικά', // Dimitrios T. Tanis - jtanis@tanisfood.gr
|
'el' => 'Ελληνικά', // Dimitrios T. Tanis - jtanis@tanisfood.gr
|
||||||
@@ -18,24 +18,29 @@ $langs = array(
|
|||||||
'fi' => 'Suomi', // Finnish - Kari Eveli - http://www.lexitec.fi/
|
'fi' => 'Suomi', // Finnish - Kari Eveli - http://www.lexitec.fi/
|
||||||
'fr' => 'Français', // Francis Gagné, Aurélien Royer
|
'fr' => 'Français', // Francis Gagné, Aurélien Royer
|
||||||
'gl' => 'Galego', // Eduardo Penabad Ramos
|
'gl' => 'Galego', // Eduardo Penabad Ramos
|
||||||
|
'he' => 'עברית', // Binyamin Yawitz - https://stuff-group.com/
|
||||||
'hu' => 'Magyar', // Borsos Szilárd (Borsosfi) - http://www.borsosfi.hu, info@borsosfi.hu
|
'hu' => 'Magyar', // Borsos Szilárd (Borsosfi) - http://www.borsosfi.hu, info@borsosfi.hu
|
||||||
'id' => 'Bahasa Indonesia', // Ivan Lanin - http://ivan.lanin.org
|
'id' => 'Bahasa Indonesia', // Ivan Lanin - http://ivan.lanin.org
|
||||||
'it' => 'Italiano', // Alessandro Fiorotto, Paolo Asperti
|
'it' => 'Italiano', // Alessandro Fiorotto, Paolo Asperti
|
||||||
'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
|
||||||
'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
|
||||||
'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
|
||||||
'pl' => 'Polski', // Radosław Kowalewski - http://srsbiz.pl/
|
'pl' => 'Polski', // Radosław Kowalewski - http://srsbiz.pl/
|
||||||
'pt' => 'Português', // André Dias
|
'pt' => 'Português', // André Dias
|
||||||
'pt-br' => 'Português (Brazil)', // Gian Live - gian@live.com, Davi Alexandre davi@davialexandre.com.br, RobertoPC - http://www.robertopc.com.br
|
'pt-br' => 'Português (Brazil)', // Gian Live - gian@live.com, Davi Alexandre davi@davialexandre.com.br, RobertoPC - http://www.robertopc.com.br
|
||||||
'ro' => 'Limba Română', // .nick .messing - dot.nick.dot.messing@gmail.com
|
'ro' => 'Limba Română', // .nick .messing - dot.nick.dot.messing@gmail.com
|
||||||
'ru' => 'Русский язык', // Maksim Izmaylov
|
'ru' => 'Русский', // Maksim Izmaylov; Andre Polykanine - https://github.com/Oire/
|
||||||
'sk' => 'Slovenčina', // Ivan Suchy - http://www.ivansuchy.com, Juraj Krivda - http://www.jstudio.cz
|
'sk' => 'Slovenčina', // Ivan Suchy - http://www.ivansuchy.com, Juraj Krivda - http://www.jstudio.cz
|
||||||
'sl' => 'Slovenski', // Matej Ferlan - www.itdinamik.com, matej.ferlan@itdinamik.com
|
'sl' => 'Slovenski', // Matej Ferlan - www.itdinamik.com, matej.ferlan@itdinamik.com
|
||||||
'sr' => 'Српски', // Nikola Radovanović - cobisimo@gmail.com
|
'sr' => 'Српски', // Nikola Radovanović - cobisimo@gmail.com
|
||||||
|
'sv' => 'Svenska', // rasmusolle - https://github.com/rasmusolle
|
||||||
'ta' => 'தமிழ்', // G. Sampath Kumar, Chennai, India, sampathkumar11@gmail.com
|
'ta' => 'தமிழ்', // G. Sampath Kumar, Chennai, India, sampathkumar11@gmail.com
|
||||||
'th' => 'ภาษาไทย', // Panya Saraphi, elect.tu@gmail.com - http://www.opencart2u.com/
|
'th' => 'ภาษาไทย', // Panya Saraphi, elect.tu@gmail.com - http://www.opencart2u.com/
|
||||||
'tr' => 'Türkçe', // Bilgehan Korkmaz - turktron.com
|
'tr' => 'Türkçe', // Bilgehan Korkmaz - turktron.com
|
||||||
'uk' => 'Українська', // Valerii Kryzhov
|
'uk' => 'Українська', // Valerii Kryzhov
|
||||||
'vi' => 'Tiếng Việt', // Giang Manh @ manhgd google mail
|
'vi' => 'Tiếng Việt', // Giang Manh @ manhgd google mail
|
||||||
@@ -82,11 +87,11 @@ function lang($idf, $number = null) {
|
|||||||
|
|
||||||
function switch_lang() {
|
function switch_lang() {
|
||||||
global $LANG, $langs;
|
global $LANG, $langs;
|
||||||
echo "<form action='' method='post'>\n<div id='lang'>";
|
echo "<div id='lang'><form action='' method='post'>\n";
|
||||||
echo lang('Language') . ": " . html_select("lang", $langs, $LANG, "this.form.submit();");
|
echo lang('Language') . ": " . html_select("lang", $langs, $LANG, "this.form.submit();");
|
||||||
echo " <input type='submit' value='" . lang('Use') . "' class='hidden'>\n";
|
echo " <input type='submit' value='" . lang('Use') . "' class='hidden'>\n";
|
||||||
echo "<input type='hidden' name='token' value='" . get_token() . "'>\n"; // $token may be empty in auth.inc.php
|
echo "<input type='hidden' name='token' value='" . get_token() . "'>\n"; // $token may be empty in auth.inc.php
|
||||||
echo "</div>\n</form>\n";
|
echo "</form></div>\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isset($_POST["lang"]) && verify_token()) { // $error not yet available
|
if (isset($_POST["lang"]) && verify_token()) { // $error not yet available
|
||||||
|
|||||||
@@ -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;
|
||||||
@@ -12,23 +12,31 @@ if (extension_loaded('pdo')) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function dsn($dsn, $username, $password) {
|
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);
|
$this->pdo = new PDO($dsn, $username, $password, $options);
|
||||||
} catch (Exception $ex) {
|
} catch (Exception $ex) {
|
||||||
auth_error($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) {
|
||||||
|
$this->error = lang('Unknown error.');
|
||||||
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
$this->store_result($result);
|
$this->store_result($result);
|
||||||
@@ -76,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() {
|
||||||
@@ -92,5 +100,3 @@ if (extension_loaded('pdo')) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$drivers = array();
|
|
||||||
|
|||||||
@@ -1,2 +1,2 @@
|
|||||||
<?php
|
<?php
|
||||||
$VERSION = "4.2.4";
|
$VERSION = "4.11";
|
||||||
|
|||||||
@@ -1,11 +1,14 @@
|
|||||||
<?php
|
<?php
|
||||||
/** Adminer - Compact database management
|
/**
|
||||||
* @link https://www.adminer.org/
|
* Adminer - Database management in a single PHP file
|
||||||
* @author Jakub Vrana, http://www.vrana.cz/
|
*
|
||||||
* @copyright 2007 Jakub Vrana
|
* @link https://github.com/pematon/adminer
|
||||||
* @license http://www.apache.org/licenses/LICENSE-2.0 Apache License, Version 2.0
|
* @author Jakub Vrana (https://www.vrana.cz/)
|
||||||
* @license http://www.gnu.org/licenses/gpl-2.0.html GNU General Public License, version 2 (one or other)
|
* @author Peter Knut
|
||||||
*/
|
* @copyright 2007-2021 Jakub Vrana, 2024 Peter Knut
|
||||||
|
* @license Apache License, Version 2.0 (https://www.apache.org/licenses/LICENSE-2.0)
|
||||||
|
* @license GNU General Public License, version 2 (https://www.gnu.org/licenses/gpl-2.0.html)
|
||||||
|
*/
|
||||||
|
|
||||||
include "./include/bootstrap.inc.php";
|
include "./include/bootstrap.inc.php";
|
||||||
include "./include/tmpfile.inc.php";
|
include "./include/tmpfile.inc.php";
|
||||||
|
|||||||
@@ -2,9 +2,12 @@
|
|||||||
$TABLE = $_GET["indexes"];
|
$TABLE = $_GET["indexes"];
|
||||||
$index_types = array("PRIMARY", "UNIQUE", "INDEX");
|
$index_types = array("PRIMARY", "UNIQUE", "INDEX");
|
||||||
$table_status = table_status($TABLE, true);
|
$table_status = table_status($TABLE, true);
|
||||||
if (preg_match('~MyISAM|M?aria' . ($connection->server_info >= 5.6 ? '|InnoDB' : '') . '~i', $table_status["Engine"])) {
|
if (preg_match('~MyISAM|M?aria' . (min_version(5.6, '10.0.5') ? '|InnoDB' : '') . '~i', $table_status["Engine"])) {
|
||||||
$index_types[] = "FULLTEXT";
|
$index_types[] = "FULLTEXT";
|
||||||
}
|
}
|
||||||
|
if (preg_match('~MyISAM|M?aria' . (min_version(5.7, '10.2.2') ? '|InnoDB' : '') . '~i', $table_status["Engine"])) {
|
||||||
|
$index_types[] = "SPATIAL";
|
||||||
|
}
|
||||||
$indexes = indexes($TABLE);
|
$indexes = indexes($TABLE);
|
||||||
$primary = array();
|
$primary = array();
|
||||||
if ($jush == "mongo") { // doesn't support primary key
|
if ($jush == "mongo") { // doesn't support primary key
|
||||||
@@ -91,12 +94,13 @@ if (!$row) {
|
|||||||
?>
|
?>
|
||||||
|
|
||||||
<form action="" method="post">
|
<form action="" method="post">
|
||||||
|
<div class="scrollable">
|
||||||
<table cellspacing="0" class="nowrap">
|
<table cellspacing="0" class="nowrap">
|
||||||
<thead><tr>
|
<thead><tr>
|
||||||
<th><?php echo lang('Index Type'); ?>
|
<th id="label-type"><?php echo lang('Index Type'); ?>
|
||||||
<th><input type="submit" style="left: -1000px; position: absolute;"><?php echo lang('Column (length)'); ?>
|
<th><input type="submit" class="wayoff"><?php echo lang('Column (length)'); ?>
|
||||||
<th><?php echo lang('Name'); ?>
|
<th id="label-name"><?php echo lang('Name'); ?>
|
||||||
<th><noscript><input type='image' class='icon' name='add[0]' src='../adminer/static/plus.gif' alt='+' title='<?php echo lang('Add next'); ?>'></noscript>
|
<th><noscript><?php echo "<input type='image' class='icon' name='add[0]' src='../adminer/static/plus.gif' alt='+' title='" . lang('Add next') . "'>"; ?></noscript>
|
||||||
</thead>
|
</thead>
|
||||||
<?php
|
<?php
|
||||||
if ($primary) {
|
if ($primary) {
|
||||||
@@ -110,30 +114,32 @@ if ($primary) {
|
|||||||
$j = 1;
|
$j = 1;
|
||||||
foreach ($row["indexes"] as $index) {
|
foreach ($row["indexes"] as $index) {
|
||||||
if (!$_POST["drop_col"] || $j != key($_POST["drop_col"])) {
|
if (!$_POST["drop_col"] || $j != key($_POST["drop_col"])) {
|
||||||
echo "<tr><td>" . html_select("indexes[$j][type]", array(-1 => "") + $index_types, $index["type"], ($j == count($row["indexes"]) ? "indexesAddRow(this);" : 1));
|
echo "<tr><td>" . html_select("indexes[$j][type]", array(-1 => "") + $index_types, $index["type"], ($j == count($row["indexes"]) ? "indexesAddRow.call(this);" : 1), "label-type");
|
||||||
|
|
||||||
echo "<td>";
|
echo "<td>";
|
||||||
ksort($index["columns"]);
|
ksort($index["columns"]);
|
||||||
$i = 1;
|
$i = 1;
|
||||||
foreach ($index["columns"] as $key => $column) {
|
foreach ($index["columns"] as $key => $column) {
|
||||||
echo "<span>" . select_input(
|
echo "<span>" . select_input(
|
||||||
" name='indexes[$j][columns][$i]' onchange=\"" . ($i == count($index["columns"]) ? "indexesAddColumn" : "indexesChangeColumn") . "(this, '" . h(js_escape($jush == "sql" ? "" : $_GET["indexes"] . "_")) . "');\"",
|
" name='indexes[$j][columns][$i]' title='" . lang('Column') . "'",
|
||||||
($fields ? array_combine($fields, $fields) : $fields),
|
($fields ? array_combine($fields, $fields) : $fields),
|
||||||
$column
|
$column,
|
||||||
|
"partial(" . ($i == count($index["columns"]) ? "indexesAddColumn" : "indexesChangeColumn") . ", '" . js_escape($jush == "sql" ? "" : $_GET["indexes"] . "_") . "')"
|
||||||
);
|
);
|
||||||
echo ($jush == "sql" || $jush == "mssql" ? "<input type='number' name='indexes[$j][lengths][$i]' class='size' value='" . h($index["lengths"][$key]) . "'>" : "");
|
echo ($jush == "sql" || $jush == "mssql" ? "<input type='number' name='indexes[$j][lengths][$i]' class='size' value='" . h($index["lengths"][$key]) . "' title='" . lang('Length') . "'>" : "");
|
||||||
echo ($jush != "sql" ? checkbox("indexes[$j][descs][$i]", 1, $index["descs"][$key], lang('descending')) : "");
|
echo (support("descidx") ? checkbox("indexes[$j][descs][$i]", 1, $index["descs"][$key], lang('descending')) : "");
|
||||||
echo " </span>";
|
echo " </span>";
|
||||||
$i++;
|
$i++;
|
||||||
}
|
}
|
||||||
|
|
||||||
echo "<td><input name='indexes[$j][name]' value='" . h($index["name"]) . "' autocapitalize='off'>\n";
|
echo "<td><input name='indexes[$j][name]' value='" . h($index["name"]) . "' autocapitalize='off' aria-labelledby='label-name'>\n";
|
||||||
echo "<td><input type='image' class='icon' name='drop_col[$j]' src='../adminer/static/cross.gif' alt='x' title='" . lang('Remove') . "' onclick=\"return !editingRemoveRow(this, 'indexes\$1[type]');\">\n";
|
echo "<td><input type='image' class='icon' name='drop_col[$j]' src='../adminer/static/cross.gif' alt='x' title='" . lang('Remove') . "'>" . script("qsl('input').onclick = partial(editingRemoveRow, 'indexes\$1[type]');");
|
||||||
}
|
}
|
||||||
$j++;
|
$j++;
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
</table>
|
</table>
|
||||||
|
</div>
|
||||||
<p>
|
<p>
|
||||||
<input type="submit" value="<?php echo lang('Save'); ?>">
|
<input type="submit" value="<?php echo lang('Save'); ?>">
|
||||||
<input type="hidden" name="token" value="<?php echo $token; ?>">
|
<input type="hidden" name="token" value="<?php echo $token; ?>">
|
||||||
|
|||||||
@@ -1,14 +1,14 @@
|
|||||||
<?php
|
<?php
|
||||||
$translations = array(
|
$translations = array(
|
||||||
|
'Home' => null,
|
||||||
'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.' => 'قاعدة البيانات غير صالحة.',
|
||||||
'Create new 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.' => 'تم إنشاء الجدول.',
|
||||||
@@ -185,10 +185,11 @@ $translations = array(
|
|||||||
'Move to other database' => 'نقل إلى قاعدة بيانات أخرى',
|
'Move to other database' => 'نقل إلى قاعدة بيانات أخرى',
|
||||||
'Move' => 'نقل',
|
'Move' => 'نقل',
|
||||||
'%d item(s) have been affected.' => 'عدد العناصر المعدلة هو %d.',
|
'%d item(s) have been affected.' => 'عدد العناصر المعدلة هو %d.',
|
||||||
'whole result' => 'نتيجة كاملة',
|
'Whole result' => 'نتيجة كاملة',
|
||||||
'Clone' => 'نسخ',
|
'Clone' => 'نسخ',
|
||||||
'Maximum number of allowed fields exceeded. Please increase %s.' => 'لقد تجاوزت العدد الأقصى للحقول. يرجى الرفع من %s.',
|
'Maximum number of allowed fields exceeded. Please increase %s.' => 'لقد تجاوزت العدد الأقصى للحقول. يرجى الرفع من %s.',
|
||||||
'Partition by' => 'مقسم بواسطة',
|
'Partition by' => 'مقسم بواسطة',
|
||||||
|
'Partition' => null,
|
||||||
'Partitions' => 'التقسيمات',
|
'Partitions' => 'التقسيمات',
|
||||||
'Partition name' => 'اسم التقسيم',
|
'Partition name' => 'اسم التقسيم',
|
||||||
'Values' => 'القيم',
|
'Values' => 'القيم',
|
||||||
@@ -224,6 +225,7 @@ $translations = array(
|
|||||||
'Databases have been dropped.' => 'تم حذف قواعد البيانات.',
|
'Databases have been dropped.' => 'تم حذف قواعد البيانات.',
|
||||||
'Database has been dropped.' => 'تم حذف قاعدة البيانات.',
|
'Database has been dropped.' => 'تم حذف قاعدة البيانات.',
|
||||||
'Search data in tables' => 'بحث في الجداول',
|
'Search data in tables' => 'بحث في الجداول',
|
||||||
|
'as a regular expression' => null,
|
||||||
'Schema' => 'المخطط',
|
'Schema' => 'المخطط',
|
||||||
'Alter schema' => 'تعديل المخطط',
|
'Alter schema' => 'تعديل المخطط',
|
||||||
'Create schema' => 'إنشاء مخطط',
|
'Create schema' => 'إنشاء مخطط',
|
||||||
@@ -265,4 +267,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,
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
<?php
|
<?php
|
||||||
$translations = array(
|
$translations = array(
|
||||||
// label for database system selection (MySQL, SQLite, ...)
|
// label for database system selection (MySQL, SQLite, ...)
|
||||||
|
'Home' => null,
|
||||||
'System' => 'Система',
|
'System' => 'Система',
|
||||||
'Server' => 'Сървър',
|
'Server' => 'Сървър',
|
||||||
'Username' => 'Потребител',
|
'Username' => 'Потребител',
|
||||||
@@ -10,9 +11,9 @@ $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/" target="_blank">Implement</a> %s method to make it permanent.' => 'Главната парола вече е невалидна. <a href="https://www.adminer.org/en/extension/" target="_blank">Изберете</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.' => 'Невалиден шифроващ ключ. Попълнете и изпратете формуляра отново.',
|
'Invalid CSRF token. Send the form again.' => 'Невалиден шифроващ ключ. Попълнете и изпратете формуляра отново.',
|
||||||
'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, затворете тази страница.',
|
||||||
@@ -22,10 +23,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 +37,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 +58,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,20 +70,19 @@ $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' => 'Избор',
|
||||||
'Select database' => 'Избор на база данни',
|
'Select database' => 'Избор на база данни',
|
||||||
'Invalid database.' => 'Невалидна база данни.',
|
'Invalid database.' => 'Невалидна база данни.',
|
||||||
'Create new 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',
|
||||||
@@ -117,7 +117,7 @@ $translations = array(
|
|||||||
'Tables have been moved.' => 'Таблиците бяха преместени.',
|
'Tables have been moved.' => 'Таблиците бяха преместени.',
|
||||||
'Copy' => 'Копиране',
|
'Copy' => 'Копиране',
|
||||||
'Tables have been copied.' => 'Таблиците бяха копирани.',
|
'Tables have been copied.' => 'Таблиците бяха копирани.',
|
||||||
|
|
||||||
'Routines' => 'Процедури',
|
'Routines' => 'Процедури',
|
||||||
'Routine has been called, %d row(s) affected.' => array('Беше приложена процедура, %d ред е засегнат.', 'Беше приложена процедура, %d редове са засегнати.'),
|
'Routine has been called, %d row(s) affected.' => array('Беше приложена процедура, %d ред е засегнат.', 'Беше приложена процедура, %d редове са засегнати.'),
|
||||||
'Call' => 'Прилагане',
|
'Call' => 'Прилагане',
|
||||||
@@ -130,7 +130,7 @@ $translations = array(
|
|||||||
'Alter function' => 'Промяна на функция',
|
'Alter function' => 'Промяна на функция',
|
||||||
'Alter procedure' => 'Промяна на процедура',
|
'Alter procedure' => 'Промяна на процедура',
|
||||||
'Return type' => 'Резултат',
|
'Return type' => 'Резултат',
|
||||||
|
|
||||||
'Events' => 'Събития',
|
'Events' => 'Събития',
|
||||||
'Event has been dropped.' => 'Събитието беше премахнато.',
|
'Event has been dropped.' => 'Събитието беше премахнато.',
|
||||||
'Event has been altered.' => 'Събитието беше променено.',
|
'Event has been altered.' => 'Събитието беше променено.',
|
||||||
@@ -143,7 +143,7 @@ $translations = array(
|
|||||||
'Start' => 'Начало',
|
'Start' => 'Начало',
|
||||||
'End' => 'Край',
|
'End' => 'Край',
|
||||||
'On completion preserve' => 'Запазване след завършване',
|
'On completion preserve' => 'Запазване след завършване',
|
||||||
|
|
||||||
'Tables' => 'Таблици',
|
'Tables' => 'Таблици',
|
||||||
'Tables and views' => 'Таблици и изгледи',
|
'Tables and views' => 'Таблици и изгледи',
|
||||||
'Table' => 'Таблица',
|
'Table' => 'Таблица',
|
||||||
@@ -175,28 +175,28 @@ $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' => 'Разделяне на',
|
||||||
|
'Partition' => null,
|
||||||
'Partitions' => 'Раздели',
|
'Partitions' => 'Раздели',
|
||||||
'Partition name' => 'Име на раздела',
|
'Partition name' => 'Име на раздела',
|
||||||
'Values' => 'Стойности',
|
'Values' => 'Стойности',
|
||||||
|
|
||||||
'View' => 'Изглед',
|
'View' => 'Изглед',
|
||||||
'Materialized View' => 'Запаметен изглед',
|
'Materialized 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' => 'Създаване на изглед',
|
||||||
'Create materialized 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.' => 'Препратката беше премахната.',
|
||||||
@@ -212,7 +212,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.' => 'Тригера беше премахнат.',
|
||||||
@@ -223,7 +223,7 @@ $translations = array(
|
|||||||
'Time' => 'Време',
|
'Time' => 'Време',
|
||||||
'Event' => 'Събитие',
|
'Event' => 'Събитие',
|
||||||
'Name' => 'Име',
|
'Name' => 'Име',
|
||||||
|
|
||||||
'select' => 'показване',
|
'select' => 'показване',
|
||||||
'Select' => 'Показване',
|
'Select' => 'Показване',
|
||||||
'Select data' => 'Показване на данни',
|
'Select data' => 'Показване на данни',
|
||||||
@@ -232,6 +232,7 @@ $translations = array(
|
|||||||
'Search' => 'Търсене',
|
'Search' => 'Търсене',
|
||||||
'anywhere' => 'навсякъде',
|
'anywhere' => 'навсякъде',
|
||||||
'Search data in tables' => 'Търсене на данни в таблиците',
|
'Search data in tables' => 'Търсене на данни в таблиците',
|
||||||
|
'as a regular expression' => null,
|
||||||
'Sort' => 'Сортиране',
|
'Sort' => 'Сортиране',
|
||||||
'descending' => 'низходящо',
|
'descending' => 'низходящо',
|
||||||
'Limit' => 'Редове',
|
'Limit' => 'Редове',
|
||||||
@@ -247,18 +248,18 @@ $translations = array(
|
|||||||
'last' => 'последен',
|
'last' => 'последен',
|
||||||
'Load more data' => 'Зареждане на повече данни',
|
'Load more data' => 'Зареждане на повече данни',
|
||||||
'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.' => 'Елемента беше изтрит.',
|
||||||
@@ -279,14 +280,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' => 'Дата и час',
|
||||||
@@ -296,7 +297,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,11 +308,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' => 'Създаване на схема',
|
||||||
@@ -320,7 +321,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' => 'Създаване на последователност',
|
||||||
@@ -328,11 +329,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,
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -1,54 +1,54 @@
|
|||||||
<?php
|
<?php
|
||||||
$translations = array(
|
$translations = array(
|
||||||
|
'Home' => null,
|
||||||
'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.' => 'অকার্যকর ডাটাবেজ।',
|
||||||
'Create new 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' => 'নতুন বিষয়বস্তু',
|
||||||
@@ -61,90 +61,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' => 'খোলা',
|
||||||
@@ -163,8 +163,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' => 'ইনডেক্স এর দৈর্ঘ্য',
|
||||||
@@ -176,28 +176,29 @@ $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 টি বিষয়বস্তু প্রভাবিত হয়েছে',
|
||||||
'whole result' => 'সম্পূর্ণ ফলাফল',
|
'Whole result' => 'সম্পূর্ণ ফলাফল',
|
||||||
'Clone' => 'ক্লোন',
|
'Clone' => 'ক্লোন',
|
||||||
'Maximum number of allowed fields exceeded. Please increase %s.' => 'অনুমোদিত ফিল্ড এর সর্বাধিক সংখ্যা অতিক্রম করে গেছে। অনুগ্রহপূর্বক %s বৃদ্ধি করুন।',
|
'Maximum number of allowed fields exceeded. Please increase %s.' => 'অনুমোদিত ফিল্ড এর সর্বাধিক সংখ্যা অতিক্রম করে গেছে। অনুগ্রহপূর্বক %s বৃদ্ধি করুন।',
|
||||||
'Partition by' => 'পার্টিশন যার মাধ্যমে',
|
'Partition by' => 'পার্টিশন যার মাধ্যমে',
|
||||||
|
'Partition' => null,
|
||||||
'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]',
|
||||||
@@ -217,14 +218,15 @@ $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' => 'টেবিলে তথ্য খুঁজুন',
|
||||||
|
'as a regular expression' => null,
|
||||||
'Schema' => 'স্কিমা',
|
'Schema' => 'স্কিমা',
|
||||||
'Alter schema' => 'স্কিমা পরিবর্তন করো',
|
'Alter schema' => 'স্কিমা পরিবর্তন করো',
|
||||||
'Create schema' => 'স্কিমা তৈরী করো',
|
'Create schema' => 'স্কিমা তৈরী করো',
|
||||||
@@ -237,32 +239,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,
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
<?php
|
<?php
|
||||||
$translations = array(
|
$translations = array(
|
||||||
// label for database system selection (MySQL, SQLite, ...)
|
// label for database system selection (MySQL, SQLite, ...)
|
||||||
|
'Home' => null,
|
||||||
'System' => 'Sistem',
|
'System' => 'Sistem',
|
||||||
'Server' => 'Server',
|
'Server' => 'Server',
|
||||||
'Username' => 'Korisničko ime',
|
'Username' => 'Korisničko ime',
|
||||||
@@ -10,7 +11,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',
|
||||||
@@ -77,7 +78,6 @@ $translations = array(
|
|||||||
'Use' => 'Koristi',
|
'Use' => 'Koristi',
|
||||||
'Select database' => 'Izaberite bazu',
|
'Select database' => 'Izaberite bazu',
|
||||||
'Invalid database.' => 'Neispravna baza podataka.',
|
'Invalid database.' => 'Neispravna baza podataka.',
|
||||||
'Create new database' => 'Napravi novu bazu podataka',
|
|
||||||
'Database has been dropped.' => 'Baza podataka je izbrisana.',
|
'Database has been dropped.' => 'Baza podataka je izbrisana.',
|
||||||
'Databases have been dropped.' => 'Baze podataka su izbrisane.',
|
'Databases have been dropped.' => 'Baze podataka su izbrisane.',
|
||||||
'Database has been created.' => 'Baza podataka je spašena.',
|
'Database has been created.' => 'Baza podataka je spašena.',
|
||||||
@@ -168,6 +168,7 @@ $translations = array(
|
|||||||
'Maximum number of allowed fields exceeded. Please increase %s.' => 'Premašen je maksimalni broj dozvoljenih polja. Molim uvećajte %s.',
|
'Maximum number of allowed fields exceeded. Please increase %s.' => 'Premašen je maksimalni broj dozvoljenih polja. Molim uvećajte %s.',
|
||||||
|
|
||||||
'Partition by' => 'Podijeli po',
|
'Partition by' => 'Podijeli po',
|
||||||
|
'Partition' => null,
|
||||||
'Partitions' => 'Podijele',
|
'Partitions' => 'Podijele',
|
||||||
'Partition name' => 'Ime podijele',
|
'Partition name' => 'Ime podijele',
|
||||||
'Values' => 'Vrijednosti',
|
'Values' => 'Vrijednosti',
|
||||||
@@ -222,6 +223,7 @@ $translations = array(
|
|||||||
'Search' => 'Pretraga',
|
'Search' => 'Pretraga',
|
||||||
'anywhere' => 'bilo gdje',
|
'anywhere' => 'bilo gdje',
|
||||||
'Search data in tables' => 'Pretraži podatke u tabelama',
|
'Search data in tables' => 'Pretraži podatke u tabelama',
|
||||||
|
'as a regular expression' => null,
|
||||||
'Sort' => 'Poređaj',
|
'Sort' => 'Poređaj',
|
||||||
'descending' => 'opadajuće',
|
'descending' => 'opadajuće',
|
||||||
'Limit' => 'Granica',
|
'Limit' => 'Granica',
|
||||||
@@ -235,7 +237,7 @@ $translations = array(
|
|||||||
'last' => 'poslijednja',
|
'last' => 'poslijednja',
|
||||||
'Loading' => 'Učitavam',
|
'Loading' => 'Učitavam',
|
||||||
'Load more data' => 'Učitavam još podataka',
|
'Load more data' => 'Učitavam još podataka',
|
||||||
'whole result' => 'ceo rezultat',
|
'Whole result' => 'Ceo rezultat',
|
||||||
'%d byte(s)' => array('%d bajt', '%d bajta', '%d bajtova'),
|
'%d byte(s)' => array('%d bajt', '%d bajta', '%d bajtova'),
|
||||||
|
|
||||||
'Import' => 'Uvoz',
|
'Import' => 'Uvoz',
|
||||||
@@ -319,4 +321,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,
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -1,14 +1,14 @@
|
|||||||
<?php
|
<?php
|
||||||
$translations = array(
|
$translations = array(
|
||||||
|
'Home' => null,
|
||||||
'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',
|
||||||
'Select database' => 'Selecciona base de dades',
|
'Select database' => 'Selecciona base de dades',
|
||||||
'Invalid database.' => 'Base de dades invàlida.',
|
'Invalid database.' => 'Base de dades invàlida.',
|
||||||
'Create new database' => 'Crea una nova base de dades',
|
|
||||||
'Table has been dropped.' => 'S\'ha suprimit la taula.',
|
'Table has been dropped.' => 'S\'ha suprimit la taula.',
|
||||||
'Table has been altered.' => 'S\'ha modificat la taula.',
|
'Table has been altered.' => 'S\'ha modificat la taula.',
|
||||||
'Table has been created.' => 'S\'ha creat la taula.',
|
'Table has been created.' => 'S\'ha creat la taula.',
|
||||||
@@ -36,7 +36,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',
|
||||||
@@ -45,9 +45,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',
|
||||||
@@ -75,11 +75,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',
|
||||||
@@ -87,7 +87,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í',
|
||||||
@@ -140,7 +140,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',
|
||||||
@@ -186,10 +186,11 @@ $translations = array(
|
|||||||
'Save and continue edit' => 'Desa i segueix editant',
|
'Save and continue edit' => 'Desa i segueix editant',
|
||||||
'original' => 'original',
|
'original' => 'original',
|
||||||
'%d item(s) have been affected.' => array('S\'ha modificat %d element.', 'S\'han modificat %d elements.'),
|
'%d item(s) have been affected.' => array('S\'ha modificat %d element.', 'S\'han modificat %d elements.'),
|
||||||
'whole result' => 'tots els resultats',
|
'Whole result' => 'Tots els resultats',
|
||||||
'Tables have been dropped.' => 'S\'han suprimit les taules.',
|
'Tables have been dropped.' => 'S\'han suprimit les taules.',
|
||||||
'Clone' => 'Clona',
|
'Clone' => 'Clona',
|
||||||
'Partition by' => 'Fes particions segons',
|
'Partition by' => 'Fes particions segons',
|
||||||
|
'Partition' => null,
|
||||||
'Partitions' => 'Particions',
|
'Partitions' => 'Particions',
|
||||||
'Partition name' => 'Nom de la partició',
|
'Partition name' => 'Nom de la partició',
|
||||||
'Values' => 'Valors',
|
'Values' => 'Valors',
|
||||||
@@ -205,7 +206,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',
|
||||||
@@ -252,6 +253,7 @@ $translations = array(
|
|||||||
'Type has been created.' => 'S\'ha creat el tipus.',
|
'Type has been created.' => 'S\'ha creat el tipus.',
|
||||||
'Alter type' => 'Modifica el tipus',
|
'Alter type' => 'Modifica el tipus',
|
||||||
'Search data in tables' => 'Cerca dades en les taules',
|
'Search data in tables' => 'Cerca dades en les taules',
|
||||||
|
'as a regular expression' => null,
|
||||||
'From server' => 'En el servidor',
|
'From server' => 'En el servidor',
|
||||||
'empty' => 'buit',
|
'empty' => 'buit',
|
||||||
'now' => 'ara',
|
'now' => 'ara',
|
||||||
@@ -266,4 +268,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,
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
<?php
|
<?php
|
||||||
$translations = array(
|
$translations = array(
|
||||||
// label for database system selection (MySQL, SQLite, ...)
|
// label for database system selection (MySQL, SQLite, ...)
|
||||||
|
'Home' => 'Domů',
|
||||||
'System' => 'Systém',
|
'System' => 'Systém',
|
||||||
'Server' => 'Server',
|
'Server' => 'Server',
|
||||||
'Username' => 'Uživatel',
|
'Username' => 'Uživatel',
|
||||||
@@ -10,22 +11,29 @@ $translations = array(
|
|||||||
'Logout' => 'Odhlásit',
|
'Logout' => 'Odhlásit',
|
||||||
'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.',
|
||||||
'Invalid credentials.' => 'Neplatné přihlašovací údaje.',
|
'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 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.',
|
||||||
|
'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.',
|
||||||
'Too many unsuccessful logins, try again in %d minute(s).' => array('Příliš mnoho pokusů o přihlášení, zkuste to znovu za %d minutu.', 'Příliš mnoho pokusů o přihlášení, zkuste to znovu za %d minuty.', 'Příliš mnoho pokusů o přihlášení, zkuste to znovu za %d minut.'),
|
'Too many unsuccessful logins, try again in %d minute(s).' => array('Příliš mnoho pokusů o přihlášení, zkuste to znovu za %d minutu.', 'Příliš mnoho pokusů o přihlášení, zkuste to znovu za %d minuty.', 'Příliš mnoho pokusů o přihlášení, zkuste to znovu za %d minut.'),
|
||||||
'Master password expired. <a href="https://www.adminer.org/en/extension/" target="_blank">Implement</a> %s method to make it permanent.' => 'Platnost hlavního hesla vypršela. <a href="https://www.adminer.org/cs/extension/" target="_blank">Implementujte</a> metodu %s, aby platilo stále.',
|
'Master password expired. <a href="https://www.adminer.org/en/extension/"%s>Implement</a> %s method to make it permanent.' => 'Platnost hlavního hesla vypršela. <a href="https://www.adminer.org/cs/extension/"%s>Implementujte</a> metodu %s, aby platilo stále.',
|
||||||
'Language' => 'Jazyk',
|
'Language' => 'Jazyk',
|
||||||
'Invalid CSRF token. Send the form again.' => 'Neplatný token CSRF. Odešlete formulář znovu.',
|
'Invalid CSRF token. Send the form again.' => 'Neplatný token CSRF. Odešlete formulář znovu.',
|
||||||
'If you did not send this request from Adminer then close this page.' => 'Pokud jste tento požadavek neposlali z Adminera, tak tuto stránku zavřete.',
|
'If you did not send this request from Adminer then close this page.' => 'Pokud jste tento požadavek neposlali z Adminera, tak tuto stránku zavřete.',
|
||||||
'No extension' => 'Žádné rozšíření',
|
'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.',
|
||||||
|
'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.',
|
||||||
'%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.',
|
||||||
@@ -36,19 +44,21 @@ $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ů.'),
|
||||||
'No commands to execute.' => 'Žádné příkazy k vykonání.',
|
'No commands to execute.' => 'Žádné příkazy k vykonání.',
|
||||||
'Error in query' => 'Chyba v dotazu',
|
'Error in query' => 'Chyba v dotazu',
|
||||||
|
'Unknown error.' => 'Neznámá chyba.',
|
||||||
|
'Warnings' => 'Varování',
|
||||||
'ATTACH queries are not supported.' => 'Dotazy ATTACH nejsou podporované.',
|
'ATTACH queries are not supported.' => 'Dotazy ATTACH nejsou podporované.',
|
||||||
'Execute' => 'Provést',
|
'Execute' => 'Provést',
|
||||||
'Stop on error' => 'Zastavit při chybě',
|
'Stop on error' => 'Zastavit při chybě',
|
||||||
@@ -58,7 +68,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',
|
||||||
@@ -70,20 +80,20 @@ $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',
|
||||||
'Use' => 'Vybrat',
|
'Use' => 'Vybrat',
|
||||||
'Select database' => 'Vybrat databázi',
|
'Select database' => 'Vybrat databázi',
|
||||||
'Invalid database.' => 'Nesprávná databáze.',
|
'Invalid database.' => 'Nesprávná databáze.',
|
||||||
'Create new database' => 'Vytvořit novou databázi',
|
|
||||||
'Database has been dropped.' => 'Databáze byla odstraněna.',
|
'Database has been dropped.' => 'Databáze byla odstraněna.',
|
||||||
'Databases have been dropped.' => 'Databáze byly odstraněny.',
|
'Databases have been dropped.' => 'Databáze byly odstraněny.',
|
||||||
'Database has been created.' => 'Databáze byla vytvořena.',
|
'Database has been created.' => 'Databáze byla vytvořena.',
|
||||||
@@ -92,10 +102,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',
|
||||||
@@ -118,7 +128,8 @@ $translations = array(
|
|||||||
'Tables have been moved.' => 'Tabulky byly přesunuty.',
|
'Tables have been moved.' => 'Tabulky byly přesunuty.',
|
||||||
'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',
|
||||||
|
|
||||||
'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',
|
||||||
@@ -131,7 +142,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.',
|
||||||
@@ -144,7 +155,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',
|
||||||
@@ -169,6 +180,7 @@ $translations = array(
|
|||||||
'Default value' => 'Výchozí hodnota',
|
'Default value' => 'Výchozí hodnota',
|
||||||
'Default values' => 'Výchozí hodnoty',
|
'Default values' => 'Výchozí hodnoty',
|
||||||
'Drop' => 'Odstranit',
|
'Drop' => 'Odstranit',
|
||||||
|
'Drop %s?' => 'Odstranit %s?',
|
||||||
'Are you sure?' => 'Opravdu?',
|
'Are you sure?' => 'Opravdu?',
|
||||||
'Size' => 'Velikost',
|
'Size' => 'Velikost',
|
||||||
'Compute' => 'Spočítat',
|
'Compute' => 'Spočítat',
|
||||||
@@ -176,28 +188,28 @@ $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',
|
||||||
|
'Partition' => 'Oddíl',
|
||||||
'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.',
|
||||||
'View has been altered.' => 'Pohled byl změněn.',
|
'View has been altered.' => 'Pohled byl změněn.',
|
||||||
'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',
|
||||||
'Create materialized view' => 'Vytvořit materializovaný 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.',
|
||||||
@@ -213,7 +225,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.',
|
||||||
@@ -224,7 +236,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',
|
||||||
@@ -233,6 +245,7 @@ $translations = array(
|
|||||||
'Search' => 'Vyhledat',
|
'Search' => 'Vyhledat',
|
||||||
'anywhere' => 'kdekoliv',
|
'anywhere' => 'kdekoliv',
|
||||||
'Search data in tables' => 'Vyhledat data v tabulkách',
|
'Search data in tables' => 'Vyhledat data v tabulkách',
|
||||||
|
'as a regular expression' => 'jako regulární výraz',
|
||||||
'Sort' => 'Seřadit',
|
'Sort' => 'Seřadit',
|
||||||
'descending' => 'sestupně',
|
'descending' => 'sestupně',
|
||||||
'Limit' => 'Limit',
|
'Limit' => 'Limit',
|
||||||
@@ -246,20 +259,20 @@ $translations = array(
|
|||||||
'%d row(s)' => array('%d řádek', '%d řádky', '%d řádků'),
|
'%d row(s)' => array('%d řádek', '%d řádky', '%d řádků'),
|
||||||
'Page' => 'Stránka',
|
'Page' => 'Stránka',
|
||||||
'last' => 'poslední',
|
'last' => 'poslední',
|
||||||
'Load more data' => 'Nahrát další data',
|
'Load more data' => 'Načíst další data',
|
||||||
'Loading' => 'Nahrává se',
|
'Loading' => 'Načítá 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.',
|
||||||
@@ -280,14 +293,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',
|
||||||
@@ -297,7 +310,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',
|
||||||
@@ -308,11 +321,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',
|
||||||
@@ -321,7 +334,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',
|
||||||
@@ -329,11 +342,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.',
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
$translations = array(
|
$translations = array(
|
||||||
|
'Home' => null,
|
||||||
'System' => 'System',
|
'System' => 'System',
|
||||||
'Server' => 'Server',
|
'Server' => 'Server',
|
||||||
'Username' => 'Brugernavn',
|
'Username' => 'Brugernavn',
|
||||||
@@ -9,8 +10,8 @@ $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/" target="_blank">Implement</a> %s method to make it permanent.' => 'Master-kodeordet er udløbet. <a href="https://www.adminer.org/en/extension/" target="_blank">Implementer</a> en metode for %s for at gøre det permanent.',
|
'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.',
|
||||||
'No extension' => 'Ingen udvidelse',
|
'No extension' => 'Ingen udvidelse',
|
||||||
@@ -68,7 +69,6 @@ $translations = array(
|
|||||||
'Use' => 'Brug',
|
'Use' => 'Brug',
|
||||||
'Select database' => 'Vælg database',
|
'Select database' => 'Vælg database',
|
||||||
'Invalid database.' => 'Ugyldig database.',
|
'Invalid database.' => 'Ugyldig database.',
|
||||||
'Create new database' => 'Opret ny database',
|
|
||||||
'Database has been dropped.' => 'Databasen er blevet slettet.',
|
'Database has been dropped.' => 'Databasen er blevet slettet.',
|
||||||
'Databases have been dropped.' => 'Databasene er blevet slettet.',
|
'Databases have been dropped.' => 'Databasene er blevet slettet.',
|
||||||
'Database has been created.' => 'Databasen er oprettet.',
|
'Database has been created.' => 'Databasen er oprettet.',
|
||||||
@@ -152,6 +152,7 @@ $translations = array(
|
|||||||
'Remove' => 'Fjern',
|
'Remove' => 'Fjern',
|
||||||
'Maximum number of allowed fields exceeded. Please increase %s.' => 'Maksimum antal feltnavne overskredet - øg venligst %s.',
|
'Maximum number of allowed fields exceeded. Please increase %s.' => 'Maksimum antal feltnavne overskredet - øg venligst %s.',
|
||||||
'Partition by' => 'Partition ved',
|
'Partition by' => 'Partition ved',
|
||||||
|
'Partition' => null,
|
||||||
'Partitions' => 'Partitioner',
|
'Partitions' => 'Partitioner',
|
||||||
'Partition name' => 'Partitionsnavn',
|
'Partition name' => 'Partitionsnavn',
|
||||||
'Values' => 'Værdier',
|
'Values' => 'Værdier',
|
||||||
@@ -200,6 +201,7 @@ $translations = array(
|
|||||||
'Search' => 'Søg',
|
'Search' => 'Søg',
|
||||||
'anywhere' => 'hvorsomhelst',
|
'anywhere' => 'hvorsomhelst',
|
||||||
'Search data in tables' => 'Søg data i tabeller',
|
'Search data in tables' => 'Søg data i tabeller',
|
||||||
|
'as a regular expression' => null,
|
||||||
'Sort' => 'Sorter',
|
'Sort' => 'Sorter',
|
||||||
'descending' => 'faldende',
|
'descending' => 'faldende',
|
||||||
'Limit' => 'Limit',
|
'Limit' => 'Limit',
|
||||||
@@ -213,7 +215,7 @@ $translations = array(
|
|||||||
'last' => 'sidste',
|
'last' => 'sidste',
|
||||||
'Load more data' => 'Indlæs mere data',
|
'Load more data' => 'Indlæs mere data',
|
||||||
'Loading' => 'Indlæser',
|
'Loading' => 'Indlæser',
|
||||||
'whole result' => 'hele resultatet',
|
'Whole result' => 'Hele resultatet',
|
||||||
'%d byte(s)' => array('%d byte', '%d bytes'),
|
'%d byte(s)' => array('%d byte', '%d bytes'),
|
||||||
'Import' => 'Importer',
|
'Import' => 'Importer',
|
||||||
'%d row(s) have been imported.' => array('%d række er importeret.', '%d rækker er importeret.'),
|
'%d row(s) have been imported.' => array('%d række er importeret.', '%d rækker er importeret.'),
|
||||||
@@ -280,4 +282,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,
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -1,14 +1,15 @@
|
|||||||
<?php
|
<?php
|
||||||
$translations = array(
|
$translations = array(
|
||||||
|
'Home' => null,
|
||||||
'Login' => 'Login',
|
'Login' => 'Login',
|
||||||
'Logout successful.' => 'Abmeldung erfolgreich.',
|
'Logout successful.' => 'Abmeldung erfolgreich.',
|
||||||
'Invalid credentials.' => 'Ungültige Anmelde-Informationen.',
|
'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 server or credentials.' => 'Ungültige Server oder Anmelde-Informationen.',
|
||||||
'Server' => 'Server',
|
'Server' => 'Server',
|
||||||
'Username' => 'Benutzer',
|
'Username' => 'Benutzer',
|
||||||
'Password' => 'Passwort',
|
'Password' => 'Passwort',
|
||||||
'Select database' => 'Datenbank auswählen',
|
'Select database' => 'Datenbank auswählen',
|
||||||
'Invalid database.' => 'Datenbank ungültig.',
|
'Invalid database.' => 'Datenbank ungültig.',
|
||||||
'Create new database' => 'Datenbank erstellen',
|
|
||||||
'Table has been dropped.' => 'Tabelle wurde entfernt.',
|
'Table has been dropped.' => 'Tabelle wurde entfernt.',
|
||||||
'Table has been altered.' => 'Tabelle wurde geändert.',
|
'Table has been altered.' => 'Tabelle wurde geändert.',
|
||||||
'Table has been created.' => 'Tabelle wurde erstellt.',
|
'Table has been created.' => 'Tabelle wurde erstellt.',
|
||||||
@@ -187,10 +188,11 @@ $translations = array(
|
|||||||
'original' => 'Original',
|
'original' => 'Original',
|
||||||
'Tables have been dropped.' => 'Tabellen wurden entfernt (drop).',
|
'Tables have been dropped.' => 'Tabellen wurden entfernt (drop).',
|
||||||
'%d item(s) have been affected.' => '%d Artikel betroffen.',
|
'%d item(s) have been affected.' => '%d Artikel betroffen.',
|
||||||
'whole result' => 'Gesamtergebnis',
|
'Whole result' => 'Gesamtergebnis',
|
||||||
'Clone' => 'Klonen',
|
'Clone' => 'Klonen',
|
||||||
'Maximum number of allowed fields exceeded. Please increase %s.' => 'Die maximal erlaubte Anzahl der Felder ist überschritten. Bitte %s erhöhen.',
|
'Maximum number of allowed fields exceeded. Please increase %s.' => 'Die maximal erlaubte Anzahl der Felder ist überschritten. Bitte %s erhöhen.',
|
||||||
'Partition by' => 'Partitionieren um',
|
'Partition by' => 'Partitionieren um',
|
||||||
|
'Partition' => 'Partition',
|
||||||
'Partitions' => 'Partitionen',
|
'Partitions' => 'Partitionen',
|
||||||
'Partition name' => 'Name der Partition',
|
'Partition name' => 'Name der Partition',
|
||||||
'Values' => 'Werte',
|
'Values' => 'Werte',
|
||||||
@@ -225,6 +227,7 @@ $translations = array(
|
|||||||
'Permanent login' => 'Passwort speichern',
|
'Permanent login' => 'Passwort speichern',
|
||||||
'Databases have been dropped.' => 'Datenbanken wurden entfernt.',
|
'Databases have been dropped.' => 'Datenbanken wurden entfernt.',
|
||||||
'Search data in tables' => 'Suche in Tabellen',
|
'Search data in tables' => 'Suche in Tabellen',
|
||||||
|
'as a regular expression' => null,
|
||||||
'Schema' => 'Schema',
|
'Schema' => 'Schema',
|
||||||
'Alter schema' => 'Schema ändern',
|
'Alter schema' => 'Schema ändern',
|
||||||
'Create schema' => 'Schema erstellen',
|
'Create schema' => 'Schema erstellen',
|
||||||
@@ -280,10 +283,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/" target="_blank">Implement</a> %s method to make it permanent.' => 'Das Master-Passwort ist abgelaufen. <a href="https://www.adminer.org/de/extension/" target="_blank">Implementieren</a> Sie die %s Methode, um es permanent zu machen.',
|
'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,
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
<?php
|
<?php
|
||||||
$translations = array(
|
$translations = array(
|
||||||
// label for database system selection (MySQL, SQLite, ...)
|
// label for database system selection (MySQL, SQLite, ...)
|
||||||
|
'Home' => null,
|
||||||
'System' => 'Σύστημα',
|
'System' => 'Σύστημα',
|
||||||
'Server' => 'Διακομιστής',
|
'Server' => 'Διακομιστής',
|
||||||
'Username' => 'Όνομα Χρήστη',
|
'Username' => 'Όνομα Χρήστη',
|
||||||
@@ -10,23 +11,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/" target="_blank">Implement</a> %s method to make it permanent.' => 'Έλειξε ο Κύριος Κωδικός. <a href="https://www.adminer.org/en/extension/" target="_blank">Ενεργοποιήστε</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 +37,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 +58,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,13 +78,12 @@ $translations = array(
|
|||||||
'Saving' => 'Γίνεται Αποθήκευση',
|
'Saving' => 'Γίνεται Αποθήκευση',
|
||||||
'Format' => 'Μορφή',
|
'Format' => 'Μορφή',
|
||||||
'Data' => 'Δεδομένα',
|
'Data' => 'Δεδομένα',
|
||||||
|
|
||||||
'Database' => 'Β. Δεδομένων',
|
'Database' => 'Β. Δεδομένων',
|
||||||
'database' => 'β. δεδομένων',
|
'database' => 'β. δεδομένων',
|
||||||
'Use' => 'χρήση',
|
'Use' => 'χρήση',
|
||||||
'Select database' => 'Επιλέξτε Β.Δ.',
|
'Select database' => 'Επιλέξτε Β.Δ.',
|
||||||
'Invalid database.' => 'Άκυρη Β.Δ.',
|
'Invalid database.' => 'Λανθασμένη Β.Δ.',
|
||||||
'Create new 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.' => 'Η Β.Δ. δημιουργήθηκε.',
|
||||||
@@ -92,10 +92,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',
|
||||||
@@ -112,26 +112,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.' => 'Το γεγονός τροποποιήθηκε.',
|
||||||
@@ -144,15 +144,15 @@ $translations = array(
|
|||||||
'Start' => 'Έναρξη',
|
'Start' => 'Έναρξη',
|
||||||
'End' => 'Λήξη',
|
'End' => 'Λήξη',
|
||||||
'On completion preserve' => 'Κατά την ολοκλήρωση διατήρησε',
|
'On completion preserve' => 'Κατά την ολοκλήρωση διατήρησε',
|
||||||
|
|
||||||
'Tables' => 'Πίνακες',
|
'Tables' => 'Πίνακες',
|
||||||
'Tables and views' => 'Πίνακες και Προβολές',
|
'Tables and views' => 'Πίνακες και Προβολές',
|
||||||
'Table' => 'Πίνακας',
|
'Table' => 'Πίνακας',
|
||||||
'No tables.' => 'Χωρίς πίνακες.',
|
'No tables.' => 'Χωρίς πίνακες.',
|
||||||
'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.' => 'Ο πίνακας δημιουργήθηκε.',
|
||||||
@@ -176,28 +176,28 @@ $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' => 'Τμηματοποίηση ανά',
|
||||||
|
'Partition' => null,
|
||||||
'Partitions' => 'Τμήματα',
|
'Partitions' => 'Τμήματα',
|
||||||
'Partition name' => 'Όνομα Τμήματος',
|
'Partition name' => 'Όνομα Τμήματος',
|
||||||
'Values' => 'Τιμές',
|
'Values' => 'Τιμές',
|
||||||
|
|
||||||
'View' => 'Προβολή',
|
'View' => 'Προβολή',
|
||||||
'Materialized View' => 'Υλοποιημένη Προβολή',
|
'Materialized 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' => 'Δημιουργία προβολής',
|
||||||
'Create materialized 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.' => 'Το εξαρτημένο κλειδί διαγράφηκε.',
|
||||||
@@ -212,8 +212,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.' => 'Το έναυσμα διαγράφηκε.',
|
||||||
@@ -224,7 +224,7 @@ $translations = array(
|
|||||||
'Time' => 'Ώρα',
|
'Time' => 'Ώρα',
|
||||||
'Event' => 'Γεγονός',
|
'Event' => 'Γεγονός',
|
||||||
'Name' => 'Όνομα',
|
'Name' => 'Όνομα',
|
||||||
|
|
||||||
'select' => 'επιλογή',
|
'select' => 'επιλογή',
|
||||||
'Select' => 'Επιλογή',
|
'Select' => 'Επιλογή',
|
||||||
'Select data' => 'Επιλέξτε δεδομένα',
|
'Select data' => 'Επιλέξτε δεδομένα',
|
||||||
@@ -233,10 +233,11 @@ $translations = array(
|
|||||||
'Search' => 'Αναζήτηση',
|
'Search' => 'Αναζήτηση',
|
||||||
'anywhere' => 'παντού',
|
'anywhere' => 'παντού',
|
||||||
'Search data in tables' => 'Αναζήτηση δεδομένων στους πίνακες',
|
'Search data in tables' => 'Αναζήτηση δεδομένων στους πίνακες',
|
||||||
|
'as a regular expression' => null,
|
||||||
'Sort' => 'Ταξινόμηση',
|
'Sort' => 'Ταξινόμηση',
|
||||||
'descending' => 'Φθίνουσα',
|
'descending' => 'Φθίνουσα',
|
||||||
'Limit' => 'Όριο',
|
'Limit' => 'Όριο',
|
||||||
'Limit rows' => 'Περιοριμός σειρών',
|
'Limit rows' => 'Περιορισμός σειρών',
|
||||||
'Text length' => 'Μήκος κειμένου',
|
'Text length' => 'Μήκος κειμένου',
|
||||||
'Action' => 'Ενέργεια',
|
'Action' => 'Ενέργεια',
|
||||||
'Full table scan' => 'Πλήρης σάρωση πινάκων',
|
'Full table scan' => 'Πλήρης σάρωση πινάκων',
|
||||||
@@ -248,23 +249,23 @@ $translations = array(
|
|||||||
'last' => 'τελευταία',
|
'last' => 'τελευταία',
|
||||||
'Load more data' => 'Φόρτωση κι άλλων δεδομένων',
|
'Load more data' => 'Φόρτωση κι άλλων δεδομένων',
|
||||||
'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
|
||||||
@@ -276,17 +277,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' => 'Ημερομηνία και ώρα',
|
||||||
@@ -296,7 +297,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',
|
||||||
@@ -307,11 +308,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' => 'Δημιουργία σχήματος',
|
||||||
@@ -320,7 +321,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' => 'Δημιουργία αλληλουχίας',
|
||||||
@@ -328,11 +329,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,
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -1,14 +1,14 @@
|
|||||||
<?php
|
<?php
|
||||||
$translations = array(
|
$translations = array(
|
||||||
|
'Home' => null,
|
||||||
'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',
|
||||||
'Select database' => 'Seleccionar Base de datos',
|
'Select database' => 'Seleccionar Base de datos',
|
||||||
'Invalid database.' => 'Base de datos incorrecta.',
|
'Invalid database.' => 'Base de datos incorrecta.',
|
||||||
'Create new database' => 'Crear nueva base de datos',
|
|
||||||
'Table has been dropped.' => 'Tabla eliminada.',
|
'Table has been dropped.' => 'Tabla eliminada.',
|
||||||
'Table has been altered.' => 'Tabla modificada.',
|
'Table has been altered.' => 'Tabla modificada.',
|
||||||
'Table has been created.' => 'Tabla creada.',
|
'Table has been created.' => 'Tabla creada.',
|
||||||
@@ -45,9 +45,9 @@ $translations = array(
|
|||||||
'Delete' => 'Eliminar',
|
'Delete' => 'Eliminar',
|
||||||
'Database' => 'Base de datos',
|
'Database' => 'Base de datos',
|
||||||
'Routines' => 'Procedimientos',
|
'Routines' => 'Procedimientos',
|
||||||
'Indexes have been altered.' => 'Indices actualizados.',
|
'Indexes have been altered.' => 'Índices actualizados.',
|
||||||
'Indexes' => 'Indices',
|
'Indexes' => 'Índices',
|
||||||
'Alter indexes' => 'Modificar indices',
|
'Alter indexes' => 'Modificar índices',
|
||||||
'Add next' => 'Agregar',
|
'Add next' => 'Agregar',
|
||||||
'Language' => 'Idioma',
|
'Language' => 'Idioma',
|
||||||
'Select' => 'Mostrar',
|
'Select' => 'Mostrar',
|
||||||
@@ -78,7 +78,7 @@ $translations = array(
|
|||||||
'File uploads are disabled.' => 'Importación de archivos deshablilitada.',
|
'File uploads are disabled.' => 'Importación de archivos deshablilitada.',
|
||||||
'Routine has been called, %d row(s) affected.' => array('Consulta ejecutada, %d registro afectado.', 'Consulta ejecutada, %d registros afectados.'),
|
'Routine has been called, %d row(s) affected.' => array('Consulta ejecutada, %d registro afectado.', 'Consulta ejecutada, %d registros afectados.'),
|
||||||
'Call' => 'Llamar',
|
'Call' => 'Llamar',
|
||||||
'No extension' => 'No hay extension',
|
'No extension' => 'No hay extensión',
|
||||||
'None of the supported PHP extensions (%s) are available.' => 'Ninguna de las extensiones PHP soportadas (%s) está disponible.',
|
'None of the supported PHP extensions (%s) are available.' => 'Ninguna de las extensiones PHP soportadas (%s) está disponible.',
|
||||||
'Session support must be enabled.' => 'Deben estar habilitadas las sesiones.',
|
'Session support must be enabled.' => 'Deben estar habilitadas las sesiones.',
|
||||||
'Session expired, please login again.' => 'Sesión caducada, por favor escriba su clave de nuevo.',
|
'Session expired, please login again.' => 'Sesión caducada, por favor escriba su clave de nuevo.',
|
||||||
@@ -114,7 +114,7 @@ $translations = array(
|
|||||||
'Routine has been dropped.' => 'Procedimiento eliminado.',
|
'Routine has been dropped.' => 'Procedimiento eliminado.',
|
||||||
'Routine has been altered.' => 'Procedimiento modificado.',
|
'Routine has been altered.' => 'Procedimiento modificado.',
|
||||||
'Routine has been created.' => 'Procedimiento creado.',
|
'Routine has been created.' => 'Procedimiento creado.',
|
||||||
'Alter function' => 'Modificar Función',
|
'Alter function' => 'Modificar función',
|
||||||
'Alter procedure' => 'Modificar procedimiento',
|
'Alter procedure' => 'Modificar procedimiento',
|
||||||
'Return type' => 'Tipo de valor de vuelta',
|
'Return type' => 'Tipo de valor de vuelta',
|
||||||
'Add trigger' => 'Agregar disparador',
|
'Add trigger' => 'Agregar disparador',
|
||||||
@@ -128,7 +128,7 @@ $translations = array(
|
|||||||
'%s version: %s through PHP extension %s' => 'Versión %s: %s a través de la extensión de PHP %s',
|
'%s version: %s through PHP extension %s' => 'Versión %s: %s a través de la extensión de PHP %s',
|
||||||
'%d row(s)' => array('%d registro', '%d registros'),
|
'%d row(s)' => array('%d registro', '%d registros'),
|
||||||
'Remove' => 'Eliminar',
|
'Remove' => 'Eliminar',
|
||||||
'Are you sure?' => 'Está seguro?',
|
'Are you sure?' => '¿Está seguro?',
|
||||||
'Privileges' => 'Privilegios',
|
'Privileges' => 'Privilegios',
|
||||||
'Create user' => 'Crear Usuario',
|
'Create user' => 'Crear Usuario',
|
||||||
'User has been dropped.' => 'Usuario eliminado.',
|
'User has been dropped.' => 'Usuario eliminado.',
|
||||||
@@ -140,7 +140,7 @@ $translations = array(
|
|||||||
'Grant' => 'Conceder',
|
'Grant' => 'Conceder',
|
||||||
'Revoke' => 'Impedir',
|
'Revoke' => 'Impedir',
|
||||||
'Too big POST data. Reduce the data or increase the %s configuration directive.' => 'POST data demasiado grande. Reduzca el tamaño o aumente la directiva de configuración %s.',
|
'Too big POST data. Reduce the data or increase the %s configuration directive.' => 'POST data demasiado grande. Reduzca el tamaño o aumente la directiva de configuración %s.',
|
||||||
'Logged as: %s' => 'Logeado como: %s',
|
'Logged as: %s' => 'Logueado como: %s',
|
||||||
'Move up' => 'Mover arriba',
|
'Move up' => 'Mover arriba',
|
||||||
'Move down' => 'Mover abajo',
|
'Move down' => 'Mover abajo',
|
||||||
'Functions' => 'Funciones',
|
'Functions' => 'Funciones',
|
||||||
@@ -187,12 +187,13 @@ $translations = array(
|
|||||||
'original' => 'original',
|
'original' => 'original',
|
||||||
'Tables have been dropped.' => 'Tablas eliminadas.',
|
'Tables have been dropped.' => 'Tablas eliminadas.',
|
||||||
'%d item(s) have been affected.' => array('%d elemento afectado.', '%d elementos afectados.'),
|
'%d item(s) have been affected.' => array('%d elemento afectado.', '%d elementos afectados.'),
|
||||||
'whole result' => 'resultado completo',
|
'Whole result' => 'Resultado completo',
|
||||||
'Clone' => 'Clonar',
|
'Clone' => 'Clonar',
|
||||||
'Maximum number of allowed fields exceeded. Please increase %s.' => 'Excedida la cantidad máxima de campos permitidos. Por favor aumente %s.',
|
'Maximum number of allowed fields exceeded. Please increase %s.' => 'Excedida la cantidad máxima de campos permitidos. Por favor aumente %s.',
|
||||||
'Partition by' => 'Particionar por',
|
'Partition by' => 'Particionar por',
|
||||||
|
'Partition' => null,
|
||||||
'Partitions' => 'Particiones',
|
'Partitions' => 'Particiones',
|
||||||
'Partition name' => 'Nombre de Partición',
|
'Partition name' => 'Nombre de partición',
|
||||||
'Values' => 'Valores',
|
'Values' => 'Valores',
|
||||||
'%d row(s) have been imported.' => array('%d registro importado.', '%d registros importados.'),
|
'%d row(s) have been imported.' => array('%d registro importado.', '%d registros importados.'),
|
||||||
'anywhere' => 'donde sea',
|
'anywhere' => 'donde sea',
|
||||||
@@ -225,6 +226,7 @@ $translations = array(
|
|||||||
'Permanent login' => 'Guardar contraseña',
|
'Permanent login' => 'Guardar contraseña',
|
||||||
'Databases have been dropped.' => 'Bases de datos eliminadas.',
|
'Databases have been dropped.' => 'Bases de datos eliminadas.',
|
||||||
'Search data in tables' => 'Buscar datos en tablas',
|
'Search data in tables' => 'Buscar datos en tablas',
|
||||||
|
'as a regular expression' => null,
|
||||||
'Schema' => 'Esquema',
|
'Schema' => 'Esquema',
|
||||||
'Alter schema' => 'Modificar esquema',
|
'Alter schema' => 'Modificar esquema',
|
||||||
'Create schema' => 'Crear esquema',
|
'Create schema' => 'Crear esquema',
|
||||||
@@ -249,16 +251,16 @@ $translations = array(
|
|||||||
'System' => 'Motor de base de datos',
|
'System' => 'Motor de base de datos',
|
||||||
'Select data' => 'Visualizar contenido',
|
'Select data' => 'Visualizar contenido',
|
||||||
'Show structure' => 'Mostrar estructura',
|
'Show structure' => 'Mostrar estructura',
|
||||||
'empty' => 'ningúno',
|
'empty' => 'ninguno',
|
||||||
'Network' => 'Red',
|
'Network' => 'Red',
|
||||||
'Geometry' => 'Geometría',
|
'Geometry' => 'Geometría',
|
||||||
'File exists.' => 'Ese archivo ya existe.',
|
'File exists.' => 'Ese archivo ya existe.',
|
||||||
'Attachments' => 'Adjuntos',
|
'Attachments' => 'Adjuntos',
|
||||||
'%d query(s) executed OK.' => array('%d sentencia sql ejecutada correctamente.', '%d sentencias sql ejecutadas correctamente.'),
|
'%d query(s) executed OK.' => array('%d sentencia SQL ejecutada correctamente.', '%d sentencias SQL ejecutadas correctamente.'),
|
||||||
'Show only errors' => 'Mostrar solamente errores',
|
'Show only errors' => 'Mostrar solamente errores',
|
||||||
'Refresh' => 'Refrescar',
|
'Refresh' => 'Refrescar',
|
||||||
'Invalid schema.' => 'Esquema inválido.',
|
'Invalid schema.' => 'Esquema inválido.',
|
||||||
'Please use one of the extensions %s.' => 'Por favor use una de las extensiones %s.',
|
'Please use one of the extensions %s.' => 'Por favor, use una de las extensiones %s.',
|
||||||
'now' => 'ahora',
|
'now' => 'ahora',
|
||||||
'ltr' => 'ltr',
|
'ltr' => 'ltr',
|
||||||
'Tables have been copied.' => 'Tablas copiadas.',
|
'Tables have been copied.' => 'Tablas copiadas.',
|
||||||
@@ -266,4 +268,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,
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -1,14 +1,14 @@
|
|||||||
<?php
|
<?php
|
||||||
$translations = array(
|
$translations = array(
|
||||||
|
'Home' => null,
|
||||||
'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',
|
||||||
'Select database' => 'Vali andmebaas',
|
'Select database' => 'Vali andmebaas',
|
||||||
'Invalid database.' => 'Tundmatu andmebaas.',
|
'Invalid database.' => 'Tundmatu andmebaas.',
|
||||||
'Create new database' => 'Loo uus andmebaas',
|
|
||||||
'Table has been dropped.' => 'Tabel on edukalt kustutatud.',
|
'Table has been dropped.' => 'Tabel on edukalt kustutatud.',
|
||||||
'Table has been altered.' => 'Tabeli andmed on edukalt muudetud.',
|
'Table has been altered.' => 'Tabeli andmed on edukalt muudetud.',
|
||||||
'Table has been created.' => 'Tabel on edukalt loodud.',
|
'Table has been created.' => 'Tabel on edukalt loodud.',
|
||||||
@@ -187,10 +187,11 @@ $translations = array(
|
|||||||
'Move to other database' => 'Liiguta teise andmebaasi',
|
'Move to other database' => 'Liiguta teise andmebaasi',
|
||||||
'Move' => 'Liiguta',
|
'Move' => 'Liiguta',
|
||||||
'%d item(s) have been affected.' => 'Mõjutatud kirjeid: %d.',
|
'%d item(s) have been affected.' => 'Mõjutatud kirjeid: %d.',
|
||||||
'whole result' => 'Täielikud tulemused',
|
'Whole result' => 'Täielikud tulemused',
|
||||||
'Clone' => 'Kloon',
|
'Clone' => 'Kloon',
|
||||||
'Maximum number of allowed fields exceeded. Please increase %s.' => 'Maksimaalne väljade arv ületatud. Palun suurendage %s.',
|
'Maximum number of allowed fields exceeded. Please increase %s.' => 'Maksimaalne väljade arv ületatud. Palun suurendage %s.',
|
||||||
'Partition by' => 'Partitsiooni',
|
'Partition by' => 'Partitsiooni',
|
||||||
|
'Partition' => null,
|
||||||
'Partitions' => 'Partitsioonid',
|
'Partitions' => 'Partitsioonid',
|
||||||
'Partition name' => 'Partitsiooni nimi',
|
'Partition name' => 'Partitsiooni nimi',
|
||||||
'Values' => 'Väärtused',
|
'Values' => 'Väärtused',
|
||||||
@@ -225,6 +226,7 @@ $translations = array(
|
|||||||
'Permanent login' => 'Jäta mind meelde',
|
'Permanent login' => 'Jäta mind meelde',
|
||||||
'Databases have been dropped.' => 'Andmebaasid on edukalt kustutatud.',
|
'Databases have been dropped.' => 'Andmebaasid on edukalt kustutatud.',
|
||||||
'Search data in tables' => 'Otsi kogu andmebaasist',
|
'Search data in tables' => 'Otsi kogu andmebaasist',
|
||||||
|
'as a regular expression' => null,
|
||||||
'Schema' => 'Struktuur',
|
'Schema' => 'Struktuur',
|
||||||
'Alter schema' => 'Muuda struktuuri',
|
'Alter schema' => 'Muuda struktuuri',
|
||||||
'Create schema' => 'Loo struktuur',
|
'Create schema' => 'Loo struktuur',
|
||||||
@@ -266,4 +268,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,
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
<?php
|
<?php
|
||||||
$translations = array(
|
$translations = array(
|
||||||
// label for database system selection (MySQL, SQLite, ...)
|
// label for database system selection (MySQL, SQLite, ...)
|
||||||
|
'Home' => null,
|
||||||
'System' => 'سیستم',
|
'System' => 'سیستم',
|
||||||
'Server' => 'سرور',
|
'Server' => 'سرور',
|
||||||
'Username' => 'نام کاربری',
|
'Username' => 'نام کاربری',
|
||||||
@@ -10,9 +11,9 @@ $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/" target="_blank">Implement</a> %s method to make it permanent.' => 'رمز اصلی باطل شده است. روش %s را <a href="https://www.adminer.org/en/extension/" target="_blank">پیاده سازی</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' => 'زبان',
|
||||||
'Invalid CSRF token. Send the form again.' => 'CSRF token نامعتبر است. دوباره سعی کنید.',
|
'Invalid CSRF token. Send the form again.' => 'CSRF token نامعتبر است. دوباره سعی کنید.',
|
||||||
'No extension' => 'پسوند نامعتبر',
|
'No extension' => 'پسوند نامعتبر',
|
||||||
@@ -21,10 +22,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 +36,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 +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 فایل وب سرور',
|
||||||
@@ -75,13 +76,12 @@ $translations = array(
|
|||||||
'save' => 'ذخیره',
|
'save' => 'ذخیره',
|
||||||
'Format' => 'حذف',
|
'Format' => 'حذف',
|
||||||
'Data' => 'داده',
|
'Data' => 'داده',
|
||||||
|
|
||||||
'Database' => 'پایگاه داده',
|
'Database' => 'پایگاه داده',
|
||||||
'database' => 'پایگاه داده',
|
'database' => 'پایگاه داده',
|
||||||
'Use' => 'استفاده',
|
'Use' => 'استفاده',
|
||||||
'Select database' => 'انتخاب پایگاه داده',
|
'Select database' => 'انتخاب پایگاه داده',
|
||||||
'Invalid database.' => 'پایگاه داده نامعتبر.',
|
'Invalid database.' => 'پایگاه داده نامعتبر.',
|
||||||
'Create new 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.' => 'پایگاه داده ایجاد شد.',
|
||||||
@@ -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' => '۰۱۲۳۴۵۶۷۸۹',
|
||||||
@@ -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,28 +174,28 @@ $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' => 'بخشبندی توسط',
|
||||||
|
'Partition' => null,
|
||||||
'Partitions' => 'بخشبندیها',
|
'Partitions' => 'بخشبندیها',
|
||||||
'Partition name' => 'نام بخش',
|
'Partition name' => 'نام بخش',
|
||||||
'Values' => 'مقادیر',
|
'Values' => 'مقادیر',
|
||||||
|
|
||||||
'View' => 'نمایش',
|
'View' => 'نمایش',
|
||||||
'Materialized View' => 'نمایه مادی',
|
'Materialized 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' => 'ایجاد نمایش',
|
||||||
'Create materialized view' => 'ایجاد نمایه مادی',
|
|
||||||
|
|
||||||
'Indexes' => 'ایندکسها',
|
'Indexes' => 'ایندکسها',
|
||||||
'Indexes have been altered.' => 'ایندکسها ویرایش شدند.',
|
'Indexes have been altered.' => 'ایندکسها ویرایش شدند.',
|
||||||
'Alter indexes' => 'ویرایش ایندکسها',
|
'Alter indexes' => 'ویرایش ایندکسها',
|
||||||
'Add next' => 'افرودن بعدی',
|
'Add next' => 'افرودن بعدی',
|
||||||
'Index Type' => 'نوع ایندکس',
|
'Index Type' => 'نوع ایندکس',
|
||||||
'Column (length)' => 'ستون (طول)',
|
'Column (length)' => 'ستون (طول)',
|
||||||
|
|
||||||
'Foreign keys' => 'کلیدهای خارجی',
|
'Foreign keys' => 'کلیدهای خارجی',
|
||||||
'Foreign key' => 'کلید خارجی',
|
'Foreign key' => 'کلید خارجی',
|
||||||
'Foreign key has been dropped.' => 'کلید خارجی حذف شد.',
|
'Foreign key has been dropped.' => 'کلید خارجی حذف شد.',
|
||||||
@@ -211,7 +211,7 @@ $translations = array(
|
|||||||
'ON DELETE' => 'ON DELETE',
|
'ON 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.' => 'تریگر حذف شد.',
|
||||||
@@ -222,7 +222,7 @@ $translations = array(
|
|||||||
'Time' => 'زمان',
|
'Time' => 'زمان',
|
||||||
'Event' => 'رویداد',
|
'Event' => 'رویداد',
|
||||||
'Name' => 'نام',
|
'Name' => 'نام',
|
||||||
|
|
||||||
'select' => 'انتخاب',
|
'select' => 'انتخاب',
|
||||||
'Select' => 'انتخاب',
|
'Select' => 'انتخاب',
|
||||||
'Select data' => 'انتخاب داده',
|
'Select data' => 'انتخاب داده',
|
||||||
@@ -231,6 +231,7 @@ $translations = array(
|
|||||||
'Search' => 'جستجو',
|
'Search' => 'جستجو',
|
||||||
'anywhere' => 'هرکجا',
|
'anywhere' => 'هرکجا',
|
||||||
'Search data in tables' => 'جستجوی داده در جدول',
|
'Search data in tables' => 'جستجوی داده در جدول',
|
||||||
|
'as a regular expression' => null,
|
||||||
'Sort' => 'مرتب کردن',
|
'Sort' => 'مرتب کردن',
|
||||||
'descending' => 'نزولی',
|
'descending' => 'نزولی',
|
||||||
'Limit' => 'محدودیت',
|
'Limit' => 'محدودیت',
|
||||||
@@ -246,18 +247,18 @@ $translations = array(
|
|||||||
'last' => 'آخری',
|
'last' => 'آخری',
|
||||||
'Load more data' => 'بارگزاری اطلاعات بیشتر',
|
'Load more data' => 'بارگزاری اطلاعات بیشتر',
|
||||||
'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.' => 'آیتم حذف شد.',
|
||||||
@@ -277,14 +278,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' => 'تاریخ و زمان',
|
||||||
@@ -294,7 +295,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',
|
||||||
@@ -309,7 +310,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' => 'ایجاد ساختار',
|
||||||
@@ -318,7 +319,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 +327,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,
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
<?php
|
<?php
|
||||||
$translations = array(
|
$translations = array(
|
||||||
// label for database system selection (MySQL, SQLite, ...)
|
// label for database system selection (MySQL, SQLite, ...)
|
||||||
|
'Home' => null,
|
||||||
'System' => 'Järjestelmä',
|
'System' => 'Järjestelmä',
|
||||||
'Server' => 'Palvelin',
|
'Server' => 'Palvelin',
|
||||||
'Username' => 'Käyttäjänimi',
|
'Username' => 'Käyttäjänimi',
|
||||||
@@ -10,9 +11,9 @@ $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/" target="_blank">Implement</a> %s method to make it permanent.' => 'Master-salasana ei ole enää voimassa. <a href="https://www.adminer.org/en/extension/" target="_blank">Toteuta</a> %s-metodi sen tekemiseksi pysyväksi.',
|
'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',
|
||||||
'Invalid CSRF token. Send the form again.' => 'Virheellinen CSRF-vastamerkki. Lähetä lomake uudelleen.',
|
'Invalid CSRF token. Send the form again.' => 'Virheellinen CSRF-vastamerkki. Lähetä lomake uudelleen.',
|
||||||
'If you did not send this request from Adminer then close this page.' => 'Jollet lähettänyt tämä pyyntö Adminerista, sulje tämä sivu.',
|
'If you did not send this request from Adminer then close this page.' => 'Jollet lähettänyt tämä pyyntö Adminerista, sulje tämä sivu.',
|
||||||
@@ -22,10 +23,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 +37,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 +58,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 +70,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,13 +78,12 @@ $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ä',
|
||||||
'Select database' => 'Valitse tietokanta',
|
'Select database' => 'Valitse tietokanta',
|
||||||
'Invalid database.' => 'Tietokanta ei kelpaa.',
|
'Invalid database.' => 'Tietokanta ei kelpaa.',
|
||||||
'Create new database' => 'Luo uusi tietokanta',
|
|
||||||
'Database has been dropped.' => 'Tietokanta on poistettu.',
|
'Database has been dropped.' => 'Tietokanta on poistettu.',
|
||||||
'Databases have been dropped.' => 'Tietokannat on poistettu.',
|
'Databases have been dropped.' => 'Tietokannat on poistettu.',
|
||||||
'Database has been created.' => 'Tietokanta on luotu.',
|
'Database has been created.' => 'Tietokanta on luotu.',
|
||||||
@@ -92,10 +92,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',
|
||||||
@@ -118,7 +118,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',
|
||||||
@@ -131,7 +131,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.',
|
||||||
@@ -144,7 +144,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',
|
||||||
@@ -176,28 +176,28 @@ $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',
|
||||||
|
'Partition' => null,
|
||||||
'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.',
|
||||||
'View has been altered.' => 'Näkymää on muutettu.',
|
'View has been altered.' => 'Näkymää on muutettu.',
|
||||||
'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ä',
|
||||||
'Create materialized view' => 'Luo materialisoitunut 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.',
|
||||||
@@ -213,7 +213,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.',
|
||||||
@@ -224,7 +224,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',
|
||||||
@@ -233,6 +233,7 @@ $translations = array(
|
|||||||
'Search' => 'Hae',
|
'Search' => 'Hae',
|
||||||
'anywhere' => 'kaikkialta',
|
'anywhere' => 'kaikkialta',
|
||||||
'Search data in tables' => 'Hae dataa tauluista',
|
'Search data in tables' => 'Hae dataa tauluista',
|
||||||
|
'as a regular expression' => null,
|
||||||
'Sort' => 'Lajittele',
|
'Sort' => 'Lajittele',
|
||||||
'descending' => 'alenevasti',
|
'descending' => 'alenevasti',
|
||||||
'Limit' => 'Raja',
|
'Limit' => 'Raja',
|
||||||
@@ -248,18 +249,18 @@ $translations = array(
|
|||||||
'last' => 'viimeinen',
|
'last' => 'viimeinen',
|
||||||
'Load more data' => 'Lataa lisää dataa',
|
'Load more data' => 'Lataa lisää dataa',
|
||||||
'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.',
|
||||||
@@ -279,14 +280,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',
|
||||||
@@ -296,7 +297,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',
|
||||||
@@ -307,11 +308,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',
|
||||||
@@ -320,7 +321,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',
|
||||||
@@ -328,11 +329,33 @@ $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',
|
||||||
'Type has been dropped.' => 'Tyyppi poistettiin.',
|
'Type has been dropped.' => 'Tyyppi poistettiin.',
|
||||||
'Type has been created.' => 'Tyyppi luotiin.',
|
'Type has been created.' => 'Tyyppi luotiin.',
|
||||||
'Alter type' => 'Muuta tyyppiä',
|
'Alter type' => 'Muuta tyyppiä',
|
||||||
|
|
||||||
|
'Thanks for using Adminer, consider <a href="https://www.adminer.org/en/donation/">donating</a>.' => 'Kiitos, kun käytät Admineriä, voit <a href="https://www.adminer.org/en/donation/">tehdä lahjoituksen tästä</a>.',
|
||||||
|
'Drop %s?' => 'Poistetaanko %s?',
|
||||||
|
'overwrite' => 'kirjoittaen päälle',
|
||||||
|
'DB' => 'TK',
|
||||||
|
'ATTACH queries are not supported.' => 'ATTACH-komennolla tehtyjä kyselyjä ei tueta.',
|
||||||
|
'Warnings' => 'Varoitukset',
|
||||||
|
'Adminer does not support accessing a database without a password, <a href="https://www.adminer.org/en/password/"%s>more information</a>.' => 'Adminer ei tue pääsyä tietokantaan ilman salasanaa, katso tarkemmin <a href="https://www.adminer.org/en/password/"%s>täältä</a>.',
|
||||||
|
'The action will be performed after successful login with the same credentials.' => 'Toiminto suoritetaan sen jälkeen, kun on onnistuttu kirjautumaan samoilla käyttäjätunnuksilla uudestaan.',
|
||||||
|
'Connecting to privileged ports is not allowed.' => 'Yhteydet etuoikeutettuihin portteihin eivät ole sallittuja.',
|
||||||
|
'There is a space in the input password which might be the cause.' => 'Syynä voi olla syötetyssä salasanassa oleva välilyönti.',
|
||||||
|
'Unknown error.' => 'Tuntematon virhe.',
|
||||||
|
'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.',
|
||||||
|
|
||||||
|
'Columns' => null,
|
||||||
|
'Nullable' => null,
|
||||||
|
'Default' => null,
|
||||||
|
'Yes' => 'Kyllä',
|
||||||
|
'No' => 'Ei',
|
||||||
|
'One Time Password' => null,
|
||||||
|
'Invalid OTP code.' => null,
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -1,14 +1,14 @@
|
|||||||
<?php
|
<?php
|
||||||
$translations = array(
|
$translations = array(
|
||||||
|
'Home' => null,
|
||||||
'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',
|
||||||
'Select database' => 'Sélectionner la base de données',
|
'Select database' => 'Sélectionner la base de données',
|
||||||
'Invalid database.' => 'Base de données invalide.',
|
'Invalid database.' => 'Base de données invalide.',
|
||||||
'Create new database' => 'Créer une base de données',
|
|
||||||
'Table has been dropped.' => 'La table a été effacée.',
|
'Table has been dropped.' => 'La table a été effacée.',
|
||||||
'Table has been altered.' => 'La table a été modifiée.',
|
'Table has been altered.' => 'La table a été modifiée.',
|
||||||
'Table has been created.' => 'La table a été créée.',
|
'Table has been created.' => 'La table a été créée.',
|
||||||
@@ -185,10 +185,11 @@ $translations = array(
|
|||||||
'Move to other database' => 'Déplacer vers une autre base de données',
|
'Move to other database' => 'Déplacer vers une autre base de données',
|
||||||
'Move' => 'Déplacer',
|
'Move' => 'Déplacer',
|
||||||
'%d item(s) have been affected.' => array('%d élément a été modifié.', '%d éléments ont été modifiés.'),
|
'%d item(s) have been affected.' => array('%d élément a été modifié.', '%d éléments ont été modifiés.'),
|
||||||
'whole result' => 'résultat entier',
|
'Whole result' => 'Résultat entier',
|
||||||
'Clone' => 'Cloner',
|
'Clone' => 'Cloner',
|
||||||
'Maximum number of allowed fields exceeded. Please increase %s.' => 'Le nombre maximum de champs est dépassé. Veuillez augmenter %s.',
|
'Maximum number of allowed fields exceeded. Please increase %s.' => 'Le nombre maximum de champs est dépassé. Veuillez augmenter %s.',
|
||||||
'Partition by' => 'Partitionner par',
|
'Partition by' => 'Partitionner par',
|
||||||
|
'Partition' => null,
|
||||||
'Partitions' => 'Partitions',
|
'Partitions' => 'Partitions',
|
||||||
'Partition name' => 'Nom de la partition',
|
'Partition name' => 'Nom de la partition',
|
||||||
'Values' => 'Valeurs',
|
'Values' => 'Valeurs',
|
||||||
@@ -224,6 +225,7 @@ $translations = array(
|
|||||||
'Databases have been dropped.' => 'Les bases de données ont été supprimées.',
|
'Databases have been dropped.' => 'Les bases de données ont été supprimées.',
|
||||||
'Database has been dropped.' => 'La base de données a été supprimée.',
|
'Database has been dropped.' => 'La base de données a été supprimée.',
|
||||||
'Search data in tables' => 'Rechercher dans les tables',
|
'Search data in tables' => 'Rechercher dans les tables',
|
||||||
|
'as a regular expression' => 'sous forme d\'expression régulière',
|
||||||
'Schema' => 'Schéma',
|
'Schema' => 'Schéma',
|
||||||
'Alter schema' => 'Modifier le schéma',
|
'Alter schema' => 'Modifier le schéma',
|
||||||
'Create schema' => 'Créer un schéma',
|
'Create schema' => 'Créer un schéma',
|
||||||
@@ -275,7 +277,7 @@ $translations = array(
|
|||||||
'File must be in UTF-8 encoding.' => 'Les fichiers doivent être encodés en UTF-8.',
|
'File must be in UTF-8 encoding.' => 'Les fichiers doivent être encodés en UTF-8.',
|
||||||
'Full table scan' => 'Scan de toute la table',
|
'Full table scan' => 'Scan de toute la table',
|
||||||
'Too many unsuccessful logins, try again in %d minute(s).' => array('Trop de connexions échouées, essayez à nouveau dans %d minute.', 'Trop de connexions échouées, essayez à nouveau dans %d minutes.'),
|
'Too many unsuccessful logins, try again in %d minute(s).' => array('Trop de connexions échouées, essayez à nouveau dans %d minute.', 'Trop de connexions échouées, essayez à nouveau dans %d minutes.'),
|
||||||
'Master password expired. <a href="https://www.adminer.org/en/extension/" target="_blank">Implement</a> %s method to make it permanent.' => 'Le mot de passe a expiré. <a href="https://www.adminer.org/en/extension/" target="_blank">Implémentez</a> la méthode %s afin de le rendre permanent.',
|
'Master password expired. <a href="https://www.adminer.org/en/extension/"%s>Implement</a> %s method to make it permanent.' => 'Le mot de passe a expiré. <a href="https://www.adminer.org/en/extension/"%s>Implémentez</a> la méthode %s afin de le rendre permanent.',
|
||||||
'You can upload a big SQL file via FTP and import it from server.' => 'Vous pouvez uploader un gros fichier SQL par FTP et ensuite l\'importer depuis le serveur.',
|
'You can upload a big SQL file via FTP and import it from server.' => 'Vous pouvez uploader un gros fichier SQL par FTP et ensuite l\'importer depuis le serveur.',
|
||||||
'Size' => 'Taille',
|
'Size' => 'Taille',
|
||||||
'Compute' => 'Calcul',
|
'Compute' => 'Calcul',
|
||||||
@@ -283,11 +285,32 @@ $translations = array(
|
|||||||
'Saving' => 'Enregistrement',
|
'Saving' => 'Enregistrement',
|
||||||
'yes' => 'oui',
|
'yes' => 'oui',
|
||||||
'no' => 'non',
|
'no' => 'non',
|
||||||
'Materialized View' => 'Vue matérialisée',
|
'Materialized view' => 'Vue matérialisée',
|
||||||
'Create materialized view' => 'Créer une vue matérialisée',
|
|
||||||
'%d / ' => '%d / ',
|
'%d / ' => '%d / ',
|
||||||
'Limit rows' => 'Limiter les lignes',
|
'Limit rows' => 'Limiter les lignes',
|
||||||
'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,
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -1,14 +1,14 @@
|
|||||||
<?php
|
<?php
|
||||||
$translations = array(
|
$translations = array(
|
||||||
|
'Home' => null,
|
||||||
'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',
|
||||||
'Select database' => 'Seleccionar Base de datos',
|
'Select database' => 'Seleccionar Base de datos',
|
||||||
'Invalid database.' => 'Base de datos incorrecta.',
|
'Invalid database.' => 'Base de datos incorrecta.',
|
||||||
'Create new database' => 'Crear nova base de datos',
|
|
||||||
'Table has been dropped.' => 'Eliminouse a táboa.',
|
'Table has been dropped.' => 'Eliminouse a táboa.',
|
||||||
'Table has been altered.' => 'Modificouse a táboa.',
|
'Table has been altered.' => 'Modificouse a táboa.',
|
||||||
'Table has been created.' => 'Creouse a táboa.',
|
'Table has been created.' => 'Creouse a táboa.',
|
||||||
@@ -187,10 +187,11 @@ $translations = array(
|
|||||||
'original' => 'orixinal',
|
'original' => 'orixinal',
|
||||||
'Tables have been dropped.' => 'Elimináronse as táboas.',
|
'Tables have been dropped.' => 'Elimináronse as táboas.',
|
||||||
'%d item(s) have been affected.' => array('%d elemento afectado.', '%d elementos afectados.'),
|
'%d item(s) have been affected.' => array('%d elemento afectado.', '%d elementos afectados.'),
|
||||||
'whole result' => 'resultado completo',
|
'Whole result' => 'Resultado completo',
|
||||||
'Clone' => 'Clonar',
|
'Clone' => 'Clonar',
|
||||||
'Maximum number of allowed fields exceeded. Please increase %s.' => 'Excedida o número máximo de campos permitidos. Por favor aumente %s.',
|
'Maximum number of allowed fields exceeded. Please increase %s.' => 'Excedida o número máximo de campos permitidos. Por favor aumente %s.',
|
||||||
'Partition by' => 'Particionar por',
|
'Partition by' => 'Particionar por',
|
||||||
|
'Partition' => null,
|
||||||
'Partitions' => 'Particións',
|
'Partitions' => 'Particións',
|
||||||
'Partition name' => 'Nome da Partición',
|
'Partition name' => 'Nome da Partición',
|
||||||
'Values' => 'Valores',
|
'Values' => 'Valores',
|
||||||
@@ -225,6 +226,7 @@ $translations = array(
|
|||||||
'Permanent login' => 'Permanecer conectado',
|
'Permanent login' => 'Permanecer conectado',
|
||||||
'Databases have been dropped.' => 'Elimináronse as bases de datos.',
|
'Databases have been dropped.' => 'Elimináronse as bases de datos.',
|
||||||
'Search data in tables' => 'Buscar datos en táboas',
|
'Search data in tables' => 'Buscar datos en táboas',
|
||||||
|
'as a regular expression' => null,
|
||||||
'Schema' => 'Esquema',
|
'Schema' => 'Esquema',
|
||||||
'Alter schema' => 'Modificar esquema',
|
'Alter schema' => 'Modificar esquema',
|
||||||
'Create schema' => 'Crear esquema',
|
'Create schema' => 'Crear esquema',
|
||||||
@@ -267,10 +269,9 @@ $translations = array(
|
|||||||
'Edit all' => 'Editar todo',
|
'Edit all' => 'Editar todo',
|
||||||
'HH:MM:SS' => 'HH:MM:SS',
|
'HH:MM:SS' => 'HH:MM:SS',
|
||||||
'Tables have been optimized.' => 'Optimizáronse as táboas',
|
'Tables have been optimized.' => 'Optimizáronse as táboas',
|
||||||
'Materialized View' => 'Vista materializada',
|
'Materialized view' => 'Vista materializada',
|
||||||
'Vacuum' => 'Baleirar',
|
'Vacuum' => 'Baleirar',
|
||||||
'Selected' => 'Selección',
|
'Selected' => 'Selección',
|
||||||
'Create materialized view' => 'Crear vista materializada',
|
|
||||||
'File must be in UTF-8 encoding.' => 'O ficheiro ten que estar codificado con UTF-8',
|
'File must be in UTF-8 encoding.' => 'O ficheiro ten que estar codificado con UTF-8',
|
||||||
'Modify' => 'Modificar',
|
'Modify' => 'Modificar',
|
||||||
'Loading' => 'Cargando',
|
'Loading' => 'Cargando',
|
||||||
@@ -280,7 +281,7 @@ $translations = array(
|
|||||||
'Default value' => 'Valor por defecto',
|
'Default value' => 'Valor por defecto',
|
||||||
'Full table scan' => 'Escaneo completo da táboa',
|
'Full table scan' => 'Escaneo completo da táboa',
|
||||||
'Too many unsuccessful logins, try again in %d minute(s).' => array('Demasiados intentos de conexión, intentao de novo en %d minuto', 'Demasiados intentos de conexión, intentao de novo en %d minutos'),
|
'Too many unsuccessful logins, try again in %d minute(s).' => array('Demasiados intentos de conexión, intentao de novo en %d minuto', 'Demasiados intentos de conexión, intentao de novo en %d minutos'),
|
||||||
'Master password expired. <a href="https://www.adminer.org/en/extension/" target="_blank">Implement</a> %s method to make it permanent.' => 'O contrasinal principal caducou. <a href="https://www.adminer.org/en/extension/" target="_blank">Implementa</a> o método %s para facelo permanente.',
|
'Master password expired. <a href="https://www.adminer.org/en/extension/"%s>Implement</a> %s method to make it permanent.' => 'O contrasinal principal caducou. <a href="https://www.adminer.org/en/extension/"%s>Implementa</a> o método %s para facelo permanente.',
|
||||||
'If you did not send this request from Adminer then close this page.' => 'Se non enviaches esta petición dende o Adminer entón pecha esta páxina',
|
'If you did not send this request from Adminer then close this page.' => 'Se non enviaches esta petición dende o Adminer entón pecha esta páxina',
|
||||||
'You can upload a big SQL file via FTP and import it from server.' => 'Podes subir un ficheiro SQL de gran tamaño vía FTP e importalo dende o servidor',
|
'You can upload a big SQL file via FTP and import it from server.' => 'Podes subir un ficheiro SQL de gran tamaño vía FTP e importalo dende o servidor',
|
||||||
'Size' => 'Tamaño',
|
'Size' => 'Tamaño',
|
||||||
@@ -290,4 +291,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,
|
||||||
);
|
);
|
||||||
|
|||||||
316
adminer/lang/he.inc.php
Normal file
316
adminer/lang/he.inc.php
Normal file
@@ -0,0 +1,316 @@
|
|||||||
|
<?php
|
||||||
|
$translations = array(
|
||||||
|
'Home' => null,
|
||||||
|
'Login' => 'התחברות',
|
||||||
|
'Logout successful.' => 'ההתחברות הצליחה',
|
||||||
|
'Invalid server or credentials.' => null,
|
||||||
|
'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 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.' => 'כשל באבטחת נתונים, שלח טופס שוב',
|
||||||
|
'Comment' => 'הערה',
|
||||||
|
'Default values' => 'ערכי ברירת מחדל',
|
||||||
|
'%d byte(s)' => '%d בתים',
|
||||||
|
'No commands to execute.' => 'לא נמצאו פקודות להרצה',
|
||||||
|
'Unable to upload a file.' => 'העלאת הקובץ נכשלה',
|
||||||
|
'File upload' => 'העלה קובץ',
|
||||||
|
'File uploads are disabled.' => 'העלאת קבצים מבוטלת',
|
||||||
|
'Routine has been called, %d row(s) affected.' => 'הרוטינה נקראה, %d שורות הושפעו',
|
||||||
|
'Call' => 'קרא',
|
||||||
|
'No extension' => 'אין תוסף',
|
||||||
|
'None of the supported PHP extensions (%s) are available.' => 'שום תוסף PHP (%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 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' => 'אירוע',
|
||||||
|
'%d row(s)' => '%d שורות',
|
||||||
|
'Remove' => 'הסר',
|
||||||
|
'Are you sure?' => 'האם אתה בטוח?',
|
||||||
|
'Privileges' => 'פריווילגיות',
|
||||||
|
'Create user' => 'צור משתמש',
|
||||||
|
'User has been dropped.' => 'המשתמש הושלך',
|
||||||
|
'User has been altered.' => 'המשתמש שונה',
|
||||||
|
'User has been created.' => 'המשתמש נוצר',
|
||||||
|
'Hashed' => 'הצפנה',
|
||||||
|
'Column' => 'עמודה',
|
||||||
|
'Routine' => 'רוטינה',
|
||||||
|
'Grant' => 'הענק',
|
||||||
|
'Revoke' => 'שלול',
|
||||||
|
'%s version: %s through PHP extension %s' => '%s גרסה: %s דרך תוסף PHP %s',
|
||||||
|
'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' => 'לפי זמן נתון',
|
||||||
|
'Save and continue edit' => 'שמור והמשך לערוך',
|
||||||
|
'original' => 'מקורי',
|
||||||
|
'Tables have been truncated.' => 'הטבלה קוצרה',
|
||||||
|
'Tables have been moved.' => 'הטבלה הועברה',
|
||||||
|
'Tables have been dropped.' => 'הטבלה הושלכה',
|
||||||
|
'Tables and views' => 'טבלאות ותצוגות',
|
||||||
|
'Engine' => 'מנוע',
|
||||||
|
'Collation' => 'קולקציה',
|
||||||
|
'Data Length' => 'אורך נתונים',
|
||||||
|
'Index Length' => 'אורך אינדקס',
|
||||||
|
'Data Free' => 'נתונים משוחררים',
|
||||||
|
'Rows' => 'שורות',
|
||||||
|
',' => ',',
|
||||||
|
'0123456789' => '0123456789',
|
||||||
|
'Analyze' => 'נתח',
|
||||||
|
'Optimize' => 'יעל',
|
||||||
|
'Check' => 'בדוק',
|
||||||
|
'Repair' => 'תקן',
|
||||||
|
'Truncate' => 'קצר',
|
||||||
|
'Move to other database' => 'העבר למסד נתונים אחר',
|
||||||
|
'Move' => 'העבר',
|
||||||
|
'%d item(s) have been affected.' => '%d פריטים הושפעו',
|
||||||
|
'Whole result' => 'כל התוצאות',
|
||||||
|
'Clone' => 'שכפל',
|
||||||
|
'Maximum number of allowed fields exceeded. Please increase %s.' => 'הגעת למספר השדות המרבי. בבקשה הגדל את %s',
|
||||||
|
'Partition by' => 'מחיצות ע"י',
|
||||||
|
'Partition' => null,
|
||||||
|
'Partitions' => 'מחיצות',
|
||||||
|
'Partition name' => 'שם מחיצה',
|
||||||
|
'Values' => 'ערכים',
|
||||||
|
'%d row(s) have been imported.' => '%d שורות יובאו',
|
||||||
|
'anywhere' => 'בכל מקום',
|
||||||
|
'Import' => 'יבא',
|
||||||
|
'Stop on error' => 'עצור בעת שגיאה',
|
||||||
|
'%.3f s' => '%.3f s',
|
||||||
|
'$1-$3-$5' => '$1-$3-$5',
|
||||||
|
'[yyyy]-mm-dd' => '[yyyy]-mm-dd',
|
||||||
|
'History' => 'היסטוריה',
|
||||||
|
'Variables' => 'משתנים',
|
||||||
|
'Source and target columns must have the same data type, there must be an index on the target columns and referenced data must exist.' => 'על עמודות המקור והיעד להיות מאותו טיפוס נתונים, חובה שיהיה אינדקס בעמודת היעד ושהמידע המתאים יהיה קיים',
|
||||||
|
'Relations' => 'הקשרים',
|
||||||
|
'Run file' => 'הרץ קובץ',
|
||||||
|
'Clear' => 'נקה',
|
||||||
|
'Maximum allowed file size is %sB.' => 'גודל מקסימלאי להעלאה: %sB',
|
||||||
|
'Numbers' => 'מספרים',
|
||||||
|
'Date and time' => 'תאריך ושעה',
|
||||||
|
'Strings' => 'מחרוזות',
|
||||||
|
'Binary' => 'בינארי',
|
||||||
|
'Lists' => 'רשימות',
|
||||||
|
'Editor' => 'עורך',
|
||||||
|
'E-mail' => 'דוא"ל',
|
||||||
|
'From' => 'מ:',
|
||||||
|
'Subject' => 'נושא',
|
||||||
|
'Send' => 'שלח',
|
||||||
|
'%d e-mail(s) have been sent.' => '%d הודעות דוא"ל נשלחו',
|
||||||
|
'Webserver file %s' => 'קובץ השרת %s',
|
||||||
|
'File does not exist.' => 'הקובץ אינו קיים',
|
||||||
|
'%d in total' => '%d בסך הכל',
|
||||||
|
'Permanent login' => 'התחבר לצמיתות',
|
||||||
|
'Databases have been dropped.' => 'מסד הנתונים הושלך',
|
||||||
|
'Database has been dropped.' => 'מסד הנתונים הושלך',
|
||||||
|
'Search data in tables' => 'חפש מידע בטבלאות',
|
||||||
|
'as a regular expression' => null,
|
||||||
|
'Schema' => 'סכמה',
|
||||||
|
'Alter schema' => 'שנה סכמה',
|
||||||
|
'Create schema' => 'צור סכמה',
|
||||||
|
'Schema has been dropped.' => 'הסכמה הושלכה',
|
||||||
|
'Schema has been created.' => 'הסכמה נוצרה',
|
||||||
|
'Schema has been altered.' => 'הסכמה שונתה',
|
||||||
|
'Sequences' => 'סדרות',
|
||||||
|
'Create sequence' => 'צור סדרה',
|
||||||
|
'Alter sequence' => 'שנה סדרה',
|
||||||
|
'Sequence has been dropped.' => 'הסדרה הושלכה',
|
||||||
|
'Sequence has been created.' => 'הסדרה נוצרה',
|
||||||
|
'Sequence has been altered.' => 'הסדרה שונתה',
|
||||||
|
'User types' => 'סוגי משתמשים',
|
||||||
|
'Create type' => 'צור סוג',
|
||||||
|
'Alter type' => 'שנה סוג',
|
||||||
|
'Type has been dropped.' => 'הסוג הושלך',
|
||||||
|
'Type has been created.' => 'הסוג נוצר',
|
||||||
|
'Use edit link to modify this value.' => 'השתמש בקישור העריכה בשביל לשנות את הערך',
|
||||||
|
'last' => 'אחרון',
|
||||||
|
'From server' => 'משרת',
|
||||||
|
'System' => 'מערכת',
|
||||||
|
'Select data' => 'בחר נתונים',
|
||||||
|
'Show structure' => 'הראה מבנה',
|
||||||
|
'empty' => 'ריק',
|
||||||
|
'Network' => 'רשת',
|
||||||
|
'Geometry' => 'גיאומטריה',
|
||||||
|
'File exists.' => 'קובץ קיים',
|
||||||
|
'Attachments' => 'קבצים מצורפים',
|
||||||
|
'Item%s has been inserted.' => 'הפריט %s הוזן בהצלחה',
|
||||||
|
'now' => 'כעת',
|
||||||
|
'%d query(s) executed OK.' => '%d שאילתות בוצעו בהצלחה',
|
||||||
|
'Show only errors' => 'הראה שגיאות בלבד',
|
||||||
|
'Refresh' => 'רענן',
|
||||||
|
'Invalid schema.' => 'סכמה שגויה',
|
||||||
|
'Please use one of the extensions %s.' => 'בבקשה השתמש באחד מהתוספים %s',
|
||||||
|
'ltr' => 'rtl',
|
||||||
|
'Tables have been copied.' => 'הטבלה הועתקה',
|
||||||
|
'Copy' => 'העתק',
|
||||||
|
'Permanent link' => 'קישור סופי',
|
||||||
|
'Edit all' => 'ערוך הכל',
|
||||||
|
'HH:MM:SS' => 'HH:MM:SS',
|
||||||
|
'Tables have been optimized.' => 'הטבלאות עברו אופטימיזציה',
|
||||||
|
'Materialized view' => 'תצוגת מימוש ',
|
||||||
|
'Vacuum' => 'וואקום',
|
||||||
|
'Selected' => 'נבחרים',
|
||||||
|
'Ctrl+click on a value to modify it.' => 'לחץ ctrl + לחיצת עכבר לערוך ערך זה',
|
||||||
|
'File must be in UTF-8 encoding.' => 'על הקובץ להיות בקידוד utf-8',
|
||||||
|
'Modify' => 'ערוך',
|
||||||
|
'Loading' => 'טוען',
|
||||||
|
'Load more data' => 'טען נתונים נוספים',
|
||||||
|
'ATTACH queries are not supported.' => 'שאילתת ATTACH אינה נתמכת',
|
||||||
|
'%d / ' => '%d / ',
|
||||||
|
'Limit rows' => 'הגבל שורות',
|
||||||
|
'Default value' => 'ערך ברירת מחדל',
|
||||||
|
'Full table scan' => 'סריקה טבלה מלאה',
|
||||||
|
'Too many unsuccessful logins, try again in %d minute(s).' => 'יותר מידי נסיונות כניסה נכשלו, אנא נסה עוד %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> על מנת להפוך את זה לתמידי',
|
||||||
|
'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.' => 'ניתן לעלות קבצים ב-FTP ואז למשוך אותם מהשרת',
|
||||||
|
'Size' => 'גודל',
|
||||||
|
'Compute' => 'חישוב',
|
||||||
|
'You are offline.' => 'הינך לא מקוון',
|
||||||
|
'You have no privileges to update this table.' => 'אין לך ההרשאות המתאימות לעדכן טבלה זו',
|
||||||
|
'Saving' => 'שומר',
|
||||||
|
'yes' => 'כן',
|
||||||
|
'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,
|
||||||
|
);
|
||||||
@@ -1,14 +1,14 @@
|
|||||||
<?php
|
<?php
|
||||||
$translations = array(
|
$translations = array(
|
||||||
|
'Home' => null,
|
||||||
'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ó',
|
||||||
'Select database' => 'Adatbázis kiválasztása',
|
'Select database' => 'Adatbázis kiválasztása',
|
||||||
'Invalid database.' => 'Érvénytelen adatbázis.',
|
'Invalid database.' => 'Érvénytelen adatbázis.',
|
||||||
'Create new database' => 'Új adatbázis',
|
|
||||||
'Table has been dropped.' => 'A tábla eldobva.',
|
'Table has been dropped.' => 'A tábla eldobva.',
|
||||||
'Table has been altered.' => 'A tábla módosult.',
|
'Table has been altered.' => 'A tábla módosult.',
|
||||||
'Table has been created.' => 'A tábla létrejött.',
|
'Table has been created.' => 'A tábla létrejött.',
|
||||||
@@ -176,7 +176,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.',
|
||||||
@@ -186,10 +186,11 @@ $translations = array(
|
|||||||
'Save and continue edit' => 'Mentés és szerkesztés folytatása',
|
'Save and continue edit' => 'Mentés és szerkesztés folytatása',
|
||||||
'original' => 'eredeti',
|
'original' => 'eredeti',
|
||||||
'%d item(s) have been affected.' => array('%d tétel érintett.', '%d tétel érintett.', '%d tétel érintett.'),
|
'%d item(s) have been affected.' => array('%d tétel érintett.', '%d tétel érintett.', '%d tétel érintett.'),
|
||||||
'whole result' => 'összes eredményt mutatása',
|
'Whole result' => 'Összes eredményt mutatása',
|
||||||
'Tables have been dropped.' => 'Táblák eldobva.',
|
'Tables have been dropped.' => 'Táblák eldobva.',
|
||||||
'Clone' => 'Klónoz',
|
'Clone' => 'Klónoz',
|
||||||
'Partition by' => 'Particionálás ezzel',
|
'Partition by' => 'Particionálás ezzel',
|
||||||
|
'Partition' => null,
|
||||||
'Partitions' => 'Particiók',
|
'Partitions' => 'Particiók',
|
||||||
'Partition name' => 'Partició neve',
|
'Partition name' => 'Partició neve',
|
||||||
'Values' => 'Értékek',
|
'Values' => 'Értékek',
|
||||||
@@ -251,6 +252,7 @@ $translations = array(
|
|||||||
'Type has been created.' => 'Típus létrehozva.',
|
'Type has been created.' => 'Típus létrehozva.',
|
||||||
'Alter type' => 'Típus módosítása',
|
'Alter type' => 'Típus módosítása',
|
||||||
'Search data in tables' => 'Keresés a táblákban',
|
'Search data in tables' => 'Keresés a táblákban',
|
||||||
|
'as a regular expression' => null,
|
||||||
'From server' => 'Szerverről',
|
'From server' => 'Szerverről',
|
||||||
'empty' => 'üres',
|
'empty' => 'üres',
|
||||||
'now' => 'most',
|
'now' => 'most',
|
||||||
@@ -265,4 +267,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,
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
<?php
|
<?php
|
||||||
$translations = array(
|
$translations = array(
|
||||||
// label for database system selection (MySQL, SQLite, ...)
|
// label for database system selection (MySQL, SQLite, ...)
|
||||||
|
'Home' => null,
|
||||||
'System' => 'Sistem',
|
'System' => 'Sistem',
|
||||||
'Server' => 'Server',
|
'Server' => 'Server',
|
||||||
'Username' => 'Pengguna',
|
'Username' => 'Pengguna',
|
||||||
@@ -10,11 +11,11 @@ $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 invalid.',
|
'Invalid server or credentials.' => null,
|
||||||
'Language' => 'Bahasa',
|
'Language' => 'Bahasa',
|
||||||
'Invalid CSRF token. Send the form again.' => 'Token CSRF invalid. Kirim ulang formulir.',
|
'Invalid CSRF token. Send the form again.' => 'Token CSRF tidak sah. Kirim ulang formulir.',
|
||||||
'No extension' => 'Ekstensi tidak tersedia',
|
'No extension' => 'Ekstensi tidak ada',
|
||||||
'None of the supported PHP extensions (%s) are available.' => 'Ekstensi PHP yang didukung (%s) tidak tersedia.',
|
'None of the supported PHP extensions (%s) are available.' => 'Ekstensi PHP yang didukung (%s) tidak ada.',
|
||||||
'Session support must be enabled.' => 'Dukungan sesi harus aktif.',
|
'Session support must be enabled.' => 'Dukungan sesi harus aktif.',
|
||||||
'Session expired, please login again.' => 'Sesi habis, silakan masuk lagi.',
|
'Session expired, please login again.' => 'Sesi habis, silakan masuk lagi.',
|
||||||
'%s version: %s through PHP extension %s' => 'Versi %s: %s dengan ekstensi PHP %s',
|
'%s version: %s through PHP extension %s' => 'Versi %s: %s dengan ekstensi PHP %s',
|
||||||
@@ -44,26 +45,26 @@ $translations = array(
|
|||||||
'SQL command' => 'Perintah SQL',
|
'SQL command' => 'Perintah SQL',
|
||||||
'%d query(s) executed OK.' => '%d kueri berhasil dijalankan.',
|
'%d query(s) executed OK.' => '%d kueri berhasil dijalankan.',
|
||||||
'Query executed OK, %d row(s) affected.' => 'Kueri berhasil, %d baris terpengaruh.',
|
'Query executed OK, %d row(s) affected.' => 'Kueri berhasil, %d baris terpengaruh.',
|
||||||
'No commands to execute.' => 'Tiada perintah untuk dijalankan.',
|
'No commands to execute.' => 'Tidak ada perintah untuk dijalankan.',
|
||||||
'Error in query' => 'Kesalahan dalam kueri',
|
'Error in query' => 'Galat dalam kueri',
|
||||||
'Execute' => 'Jalankan',
|
'Execute' => 'Jalankan',
|
||||||
'Stop on error' => 'Hentikan pada kesalahan',
|
'Stop on error' => 'Hentikan jika galat',
|
||||||
'Show only errors' => 'Hanya tampilkan kesalahan',
|
'Show only errors' => 'Hanya tampilkan galat',
|
||||||
// sprintf() format for time of the command
|
// sprintf() format for time of the command
|
||||||
'%.3f s' => '%.3f s',
|
'%.3f s' => '%.3f s',
|
||||||
'History' => 'Riwayat',
|
'History' => 'Riwayat',
|
||||||
'Clear' => 'Bersihkan',
|
'Clear' => 'Bersihkan',
|
||||||
'Edit all' => 'Edit semua',
|
|
||||||
|
|
||||||
|
'Edit all' => 'Sunting semua',
|
||||||
'File upload' => 'Unggah berkas',
|
'File upload' => 'Unggah berkas',
|
||||||
'From server' => 'Dari server',
|
'From server' => 'Dari server',
|
||||||
'Webserver file %s' => 'Berkas server web %s',
|
'Webserver file %s' => 'Berkas server web %s',
|
||||||
'Run file' => 'Jalankan berkas',
|
'Run file' => 'Jalankan berkas',
|
||||||
'File does not exist.' => 'Berkas tidak ditemukan.',
|
'File does not exist.' => 'Berkas tidak ada.',
|
||||||
'File uploads are disabled.' => 'Pengunggahan berkas dimatikan.',
|
'File uploads are disabled.' => 'Pengunggahan berkas dimatikan.',
|
||||||
'Unable to upload a file.' => 'Tidak dapat mengunggah berkas.',
|
'Unable to upload a file.' => 'Tidak dapat mengunggah berkas.',
|
||||||
'Maximum allowed file size is %sB.' => 'Besar berkas yang diizinkan adalah %s bita.',
|
'Maximum allowed file size is %sB.' => 'Besar berkas yang diizinkan adalah %sB.',
|
||||||
'Too big POST data. Reduce the data or increase the %s configuration directive.' => 'Data POST terlalu besar. Kurangi data atau perbesar pengarah konfigurasi %s.',
|
'Too big POST data. Reduce the data or increase the %s configuration directive.' => 'Data POST terlalu besar. Kurangi data atau perbesar direktif konfigurasi %s.',
|
||||||
|
|
||||||
'Export' => 'Ekspor',
|
'Export' => 'Ekspor',
|
||||||
'Output' => 'Hasil',
|
'Output' => 'Hasil',
|
||||||
@@ -76,19 +77,18 @@ $translations = array(
|
|||||||
'database' => 'basis data',
|
'database' => 'basis data',
|
||||||
'Use' => 'Gunakan',
|
'Use' => 'Gunakan',
|
||||||
'Select database' => 'Pilih basis data',
|
'Select database' => 'Pilih basis data',
|
||||||
'Invalid database.' => 'Basis data invalid.',
|
'Invalid database.' => 'Basis data tidak sah.',
|
||||||
'Create new database' => 'Buat basis data baru',
|
|
||||||
'Database has been dropped.' => 'Basis data berhasil dihapus.',
|
'Database has been dropped.' => 'Basis data berhasil dihapus.',
|
||||||
'Databases have been dropped.' => 'Basis data berhasil dihapus.',
|
'Databases have been dropped.' => 'Basis data berhasil dihapus.',
|
||||||
'Database has been created.' => 'Basis data berhasil dibuat.',
|
'Database has been created.' => 'Basis data berhasil dibuat.',
|
||||||
'Database has been renamed.' => 'Basis data berhasil diganti nama.',
|
'Database has been renamed.' => 'Basis data berhasil diganti namanya.',
|
||||||
'Database has been altered.' => 'Basis data berhasil diubah.',
|
'Database has been altered.' => 'Basis data berhasil diubah.',
|
||||||
'Alter database' => 'Ubah basis data',
|
'Alter database' => 'Ubah basis data',
|
||||||
'Create database' => 'Buat basis data',
|
'Create database' => 'Buat basis data',
|
||||||
'Database schema' => 'Skema basis data',
|
'Database schema' => 'Skema basis data',
|
||||||
|
|
||||||
// link to current database schema layout
|
// link to current database schema layout
|
||||||
'Permanent link' => 'Tautan permanen',
|
'Permanent link' => 'Pranala permanen',
|
||||||
|
|
||||||
// thousands separator - must contain single byte
|
// thousands separator - must contain single byte
|
||||||
',' => '.',
|
',' => '.',
|
||||||
@@ -113,9 +113,9 @@ $translations = array(
|
|||||||
'Tables have been copied.' => 'Tabel berhasil disalin.',
|
'Tables have been copied.' => 'Tabel berhasil disalin.',
|
||||||
|
|
||||||
'Routines' => 'Rutin',
|
'Routines' => 'Rutin',
|
||||||
'Routine has been called, %d row(s) affected.' => array('Rutin telah dipanggil, %d baris terpengaruh.', 'Rutin telah dipanggil, %d baris terpengaruh'),
|
'Routine has been called, %d row(s) affected.' => 'Rutin telah dipanggil, %d baris terpengaruh.',
|
||||||
'Call' => 'Panggilan',
|
'Call' => 'Panggilan',
|
||||||
'Parameter name' => 'Nama paramater',
|
'Parameter name' => 'Nama parameter',
|
||||||
'Create procedure' => 'Buat prosedur',
|
'Create procedure' => 'Buat prosedur',
|
||||||
'Create function' => 'Buat fungsi',
|
'Create function' => 'Buat fungsi',
|
||||||
'Routine has been dropped.' => 'Rutin berhasil dihapus.',
|
'Routine has been dropped.' => 'Rutin berhasil dihapus.',
|
||||||
@@ -123,14 +123,14 @@ $translations = array(
|
|||||||
'Routine has been created.' => 'Rutin berhasil dibuat.',
|
'Routine has been created.' => 'Rutin berhasil dibuat.',
|
||||||
'Alter function' => 'Ubah fungsi',
|
'Alter function' => 'Ubah fungsi',
|
||||||
'Alter procedure' => 'Ubah prosedur',
|
'Alter procedure' => 'Ubah prosedur',
|
||||||
'Return type' => 'Jenis balikan',
|
'Return type' => 'Jenis pengembalian',
|
||||||
|
|
||||||
'Events' => 'Peristiwa',
|
'Events' => 'Even',
|
||||||
'Event has been dropped.' => 'Peristiwa berhasil dihapus.',
|
'Event has been dropped.' => 'Even berhasil dihapus.',
|
||||||
'Event has been altered.' => 'Peristiwa berhasil diubah.',
|
'Event has been altered.' => 'Even berhasil diubah.',
|
||||||
'Event has been created.' => 'Peristiwa berhasil dibuat.',
|
'Event has been created.' => 'Even berhasil dibuat.',
|
||||||
'Alter event' => 'Ubah peristiwa',
|
'Alter event' => 'Ubah even',
|
||||||
'Create event' => 'Buat peristiwa',
|
'Create event' => 'Buat even',
|
||||||
'At given time' => 'Pada waktu tertentu',
|
'At given time' => 'Pada waktu tertentu',
|
||||||
'Every' => 'Setiap',
|
'Every' => 'Setiap',
|
||||||
'Schedule' => 'Jadwal',
|
'Schedule' => 'Jadwal',
|
||||||
@@ -141,7 +141,7 @@ $translations = array(
|
|||||||
'Tables' => 'Tabel',
|
'Tables' => 'Tabel',
|
||||||
'Tables and views' => 'Tabel dan tampilan',
|
'Tables and views' => 'Tabel dan tampilan',
|
||||||
'Table' => 'Tabel',
|
'Table' => 'Tabel',
|
||||||
'No tables.' => 'Tiada tabel.',
|
'No tables.' => 'Tidak ada tabel.',
|
||||||
'Alter table' => 'Ubah tabel',
|
'Alter table' => 'Ubah tabel',
|
||||||
'Create table' => 'Buat tabel',
|
'Create table' => 'Buat tabel',
|
||||||
'Table has been dropped.' => 'Tabel berhasil dihapus.',
|
'Table has been dropped.' => 'Tabel berhasil dihapus.',
|
||||||
@@ -156,18 +156,19 @@ $translations = array(
|
|||||||
'Column name' => 'Nama kolom',
|
'Column name' => 'Nama kolom',
|
||||||
'Type' => 'Jenis',
|
'Type' => 'Jenis',
|
||||||
'Length' => 'Panjang',
|
'Length' => 'Panjang',
|
||||||
'Auto Increment' => 'Kenaikan Otomatis',
|
'Auto Increment' => 'Inkrementasi Otomatis',
|
||||||
'Options' => 'Opsi',
|
'Options' => 'Opsi',
|
||||||
'Comment' => 'Komentar',
|
'Comment' => 'Komentar',
|
||||||
'Default values' => 'Nilai bawaan',
|
'Default values' => 'Nilai bawaan',
|
||||||
'Drop' => 'Hapus',
|
'Drop' => 'Hapus',
|
||||||
'Are you sure?' => 'Anda yakin',
|
'Are you sure?' => 'Anda yakin?',
|
||||||
'Move up' => 'Naik',
|
'Move up' => 'Naik',
|
||||||
'Move down' => 'Turun',
|
'Move down' => 'Turun',
|
||||||
'Remove' => 'Hapus',
|
'Remove' => 'Hapus',
|
||||||
'Maximum number of allowed fields exceeded. Please increase %s.' => 'Jumlah ruas maksimum yang diizinkan dilewati. Harap naikkan %s.',
|
'Maximum number of allowed fields exceeded. Please increase %s.' => 'Sudah lebih dumlah ruas maksimum yang diizinkan. Harap naikkan %s.',
|
||||||
|
|
||||||
'Partition by' => 'Partisi menurut',
|
'Partition by' => 'Partisi menurut',
|
||||||
|
'Partition' => null,
|
||||||
'Partitions' => 'Partisi',
|
'Partitions' => 'Partisi',
|
||||||
'Partition name' => 'Nama partisi',
|
'Partition name' => 'Nama partisi',
|
||||||
'Values' => 'Nilai',
|
'Values' => 'Nilai',
|
||||||
@@ -202,15 +203,15 @@ $translations = array(
|
|||||||
'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.' => 'Kolom sumber dan sasaran harus memiliki jenis data yang sama. Kolom sasaran harus memiliki indeks dan data rujukan harus ada.',
|
'Source and target columns must have the same data type, there must be an index on the target columns and referenced data must exist.' => 'Kolom sumber dan sasaran harus memiliki jenis data yang sama. Kolom sasaran harus memiliki indeks dan data rujukan harus ada.',
|
||||||
|
|
||||||
'Triggers' => 'Picu',
|
'Triggers' => 'Pemicu',
|
||||||
'Add trigger' => 'Tambah picu',
|
'Add trigger' => 'Tambah pemicu',
|
||||||
'Trigger has been dropped.' => 'Picu berhasil dihapus.',
|
'Trigger has been dropped.' => 'Pemicu berhasil dihapus.',
|
||||||
'Trigger has been altered.' => 'Picu berhasil diubah.',
|
'Trigger has been altered.' => 'Pemicu berhasil diubah.',
|
||||||
'Trigger has been created.' => 'Picu berhasil dibuat.',
|
'Trigger has been created.' => 'Pemicu berhasil dibuat.',
|
||||||
'Alter trigger' => 'Ubah picu',
|
'Alter trigger' => 'Ubah pemicu',
|
||||||
'Create trigger' => 'Buat picu',
|
'Create trigger' => 'Buat pemicu',
|
||||||
'Time' => 'Waktu',
|
'Time' => 'Waktu',
|
||||||
'Event' => 'Peristiwa',
|
'Event' => 'Even',
|
||||||
'Name' => 'Nama',
|
'Name' => 'Nama',
|
||||||
|
|
||||||
'select' => 'pilih',
|
'select' => 'pilih',
|
||||||
@@ -221,25 +222,26 @@ $translations = array(
|
|||||||
'Search' => 'Cari',
|
'Search' => 'Cari',
|
||||||
'anywhere' => 'di mana pun',
|
'anywhere' => 'di mana pun',
|
||||||
'Search data in tables' => 'Cari data dalam tabel',
|
'Search data in tables' => 'Cari data dalam tabel',
|
||||||
'Sort' => 'Urutan',
|
'as a regular expression' => null,
|
||||||
|
'Sort' => 'Urutkan',
|
||||||
'descending' => 'menurun',
|
'descending' => 'menurun',
|
||||||
'Limit' => 'Limit',
|
'Limit' => 'Batas',
|
||||||
'Text length' => 'Panjang teks',
|
'Text length' => 'Panjang teks',
|
||||||
'Action' => 'Tindakan',
|
'Action' => 'Tindakan',
|
||||||
'Full table scan' => 'Pindai tabel lengkap',
|
'Full table scan' => 'Pindai tabel lengkap',
|
||||||
'Unable to select the table' => 'Gagal memilih tabel',
|
'Unable to select the table' => 'Gagal memilih tabel',
|
||||||
'No rows.' => 'Tiada baris.',
|
'No rows.' => 'Tidak ada baris.',
|
||||||
'%d row(s)' => '%d baris',
|
'%d row(s)' => '%d baris',
|
||||||
'Page' => 'Halaman',
|
'Page' => 'Halaman',
|
||||||
'last' => 'terakhir',
|
'last' => 'terakhir',
|
||||||
'whole result' => 'Seluruh hasil',
|
'Whole result' => 'Seluruh hasil',
|
||||||
'%d byte(s)' => '%d bita',
|
'%d byte(s)' => '%d bita',
|
||||||
|
|
||||||
'Import' => 'Impor',
|
'Import' => 'Impor',
|
||||||
'%d row(s) have been imported.' => '%d baris berhasil diimpor.',
|
'%d row(s) have been imported.' => '%d baris berhasil diimpor.',
|
||||||
|
|
||||||
// in-place editing in select
|
// in-place editing in select
|
||||||
'Use edit link to modify this value.' => 'Gunakan tautan edit untuk mengubah nilai ini.',
|
'Use edit link to modify this value.' => 'Gunakan pranala suntingan untuk mengubah nilai ini.',
|
||||||
|
|
||||||
// %s can contain auto-increment value
|
// %s can contain auto-increment value
|
||||||
'Item%s has been inserted.' => 'Entri%s berhasil disisipkan.',
|
'Item%s has been inserted.' => 'Entri%s berhasil disisipkan.',
|
||||||
@@ -247,30 +249,30 @@ $translations = array(
|
|||||||
'Item has been updated.' => 'Entri berhasil diperbarui.',
|
'Item has been updated.' => 'Entri berhasil diperbarui.',
|
||||||
'%d item(s) have been affected.' => '%d entri terpengaruh.',
|
'%d item(s) have been affected.' => '%d entri terpengaruh.',
|
||||||
'New item' => 'Entri baru',
|
'New item' => 'Entri baru',
|
||||||
'original' => 'orisinal',
|
'original' => 'asli',
|
||||||
// label for value '' in enum data type
|
// label for value '' in enum data type
|
||||||
'empty' => 'kosong',
|
'empty' => 'kosong',
|
||||||
'edit' => 'edit',
|
'edit' => 'sunting',
|
||||||
'Edit' => 'Edit',
|
'Edit' => 'Sunting',
|
||||||
'Insert' => 'Sisipkan',
|
'Insert' => 'Sisipkan',
|
||||||
'Save' => 'Simpan',
|
'Save' => 'Simpan',
|
||||||
'Save and continue edit' => 'Simpan dan terus mengedit',
|
'Save and continue edit' => 'Simpan dan lanjut menyunting',
|
||||||
'Save and insert next' => 'Simpan dan sisipkan yang lain',
|
'Save and insert next' => 'Simpan dan sisipkan berikutnya',
|
||||||
'Clone' => 'Gandakan',
|
'Clone' => 'Gandakan',
|
||||||
'Delete' => 'Hapus',
|
'Delete' => 'Hapus',
|
||||||
|
|
||||||
'E-mail' => 'Surel',
|
'E-mail' => 'Surel',
|
||||||
'From' => 'Dari',
|
'From' => 'Dari',
|
||||||
'Subject' => 'Subjek',
|
'Subject' => 'Judul',
|
||||||
'Attachments' => 'Lampiran',
|
'Attachments' => 'Lampiran',
|
||||||
'Send' => 'Kirim',
|
'Send' => 'Kirim',
|
||||||
'%d e-mail(s) have been sent.' => array('%d surel berhasil dikirim.', '%d surel berhasil dikirim'),
|
'%d e-mail(s) have been sent.' => '%d surel berhasil dikirim.',
|
||||||
|
|
||||||
// data type descriptions
|
// data type descriptions
|
||||||
'Numbers' => 'Angka',
|
'Numbers' => 'Angka',
|
||||||
'Date and time' => 'Tanggal dan waktu',
|
'Date and time' => 'Tanggal dan waktu',
|
||||||
'Strings' => 'String',
|
'Strings' => 'String',
|
||||||
'Binary' => 'Biner',
|
'Binary' => 'Binari',
|
||||||
'Lists' => 'Daftar',
|
'Lists' => 'Daftar',
|
||||||
'Network' => 'Jaringan',
|
'Network' => 'Jaringan',
|
||||||
'Geometry' => 'Geometri',
|
'Geometry' => 'Geometri',
|
||||||
@@ -298,7 +300,7 @@ $translations = array(
|
|||||||
'Schema has been created.' => 'Skema berhasil dibuat.',
|
'Schema has been created.' => 'Skema berhasil dibuat.',
|
||||||
'Schema has been altered.' => 'Skema berhasil diubah.',
|
'Schema has been altered.' => 'Skema berhasil diubah.',
|
||||||
'Schema' => 'Skema',
|
'Schema' => 'Skema',
|
||||||
'Invalid schema.' => 'Skema invalid.',
|
'Invalid schema.' => 'Skema tidak sah.',
|
||||||
|
|
||||||
// PostgreSQL sequences support
|
// PostgreSQL sequences support
|
||||||
'Sequences' => 'Deret',
|
'Sequences' => 'Deret',
|
||||||
@@ -314,4 +316,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,
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -1,14 +1,14 @@
|
|||||||
<?php
|
<?php
|
||||||
$translations = array(
|
$translations = array(
|
||||||
|
'Home' => null,
|
||||||
'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',
|
||||||
'Select database' => 'Seleziona database',
|
'Select database' => 'Seleziona database',
|
||||||
'Invalid database.' => 'Database non valido.',
|
'Invalid database.' => 'Database non valido.',
|
||||||
'Create new database' => 'Crea nuovo database',
|
|
||||||
'Table has been dropped.' => 'Tabella eliminata.',
|
'Table has been dropped.' => 'Tabella eliminata.',
|
||||||
'Table has been altered.' => 'Tabella modificata.',
|
'Table has been altered.' => 'Tabella modificata.',
|
||||||
'Table has been created.' => 'Tabella creata.',
|
'Table has been created.' => 'Tabella creata.',
|
||||||
@@ -187,10 +187,11 @@ $translations = array(
|
|||||||
'Move to other database' => 'Sposta in altro database',
|
'Move to other database' => 'Sposta in altro database',
|
||||||
'Move' => 'Sposta',
|
'Move' => 'Sposta',
|
||||||
'%d item(s) have been affected.' => array('Il risultato consiste in %d elemento.', 'Il risultato consiste in %d elementi.'),
|
'%d item(s) have been affected.' => array('Il risultato consiste in %d elemento.', 'Il risultato consiste in %d elementi.'),
|
||||||
'whole result' => 'intero risultato',
|
'Whole result' => 'Intero risultato',
|
||||||
'Clone' => 'Clona',
|
'Clone' => 'Clona',
|
||||||
'Maximum number of allowed fields exceeded. Please increase %s.' => 'Troppi campi. Per favore aumentare %s.',
|
'Maximum number of allowed fields exceeded. Please increase %s.' => 'Troppi campi. Per favore aumentare %s.',
|
||||||
'Partition by' => 'Partiziona per',
|
'Partition by' => 'Partiziona per',
|
||||||
|
'Partition' => null,
|
||||||
'Partitions' => 'Partizioni',
|
'Partitions' => 'Partizioni',
|
||||||
'Partition name' => 'Nome partizione',
|
'Partition name' => 'Nome partizione',
|
||||||
'Values' => 'Valori',
|
'Values' => 'Valori',
|
||||||
@@ -225,6 +226,7 @@ $translations = array(
|
|||||||
'Permanent login' => 'Login permanente',
|
'Permanent login' => 'Login permanente',
|
||||||
'Databases have been dropped.' => 'Database eliminati.',
|
'Databases have been dropped.' => 'Database eliminati.',
|
||||||
'Search data in tables' => 'Cerca nelle tabelle',
|
'Search data in tables' => 'Cerca nelle tabelle',
|
||||||
|
'as a regular expression' => 'come espressione regolare',
|
||||||
'Schema' => 'Schema',
|
'Schema' => 'Schema',
|
||||||
'Alter schema' => 'Modifica schema',
|
'Alter schema' => 'Modifica schema',
|
||||||
'Create schema' => 'Crea schema',
|
'Create schema' => 'Crea schema',
|
||||||
@@ -266,4 +268,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,
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -1,14 +1,14 @@
|
|||||||
<?php
|
<?php
|
||||||
$translations = array(
|
$translations = array(
|
||||||
|
'Home' => null,
|
||||||
'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.' => '不正なデータベース',
|
||||||
'Create new 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.' => 'テーブルを作成しました',
|
||||||
@@ -179,17 +179,18 @@ $translations = array(
|
|||||||
'Optimize' => '最適化',
|
'Optimize' => '最適化',
|
||||||
'Check' => 'チェック',
|
'Check' => 'チェック',
|
||||||
'Repair' => '修復',
|
'Repair' => '修復',
|
||||||
'Truncate' => 'Truncate',
|
'Truncate' => '空にする',
|
||||||
'Move to other database' => '別のデータベースへ移動',
|
'Move to other database' => '別のデータベースへ移動',
|
||||||
'Move' => '移動',
|
'Move' => '移動',
|
||||||
'Save and continue edit' => '保存して継続',
|
'Save and continue edit' => '保存して継続',
|
||||||
'original' => '元',
|
'original' => '元',
|
||||||
'%d item(s) have been affected.' => '%d を更新しました',
|
'%d item(s) have been affected.' => '%d を更新しました',
|
||||||
'whole result' => '全結果',
|
'Whole result' => '全結果',
|
||||||
'Tables have been dropped.' => 'テーブルを削除しました',
|
'Tables have been dropped.' => 'テーブルを削除しました',
|
||||||
'Clone' => 'クローン',
|
'Clone' => 'クローン',
|
||||||
'Maximum number of allowed fields exceeded. Please increase %s.' => '定義可能な最大フィールド数を越えました。%s を増やしてください。',
|
'Maximum number of allowed fields exceeded. Please increase %s.' => '定義可能な最大フィールド数を越えました。%s を増やしてください。',
|
||||||
'Partition by' => 'パーティション',
|
'Partition by' => 'パーティション',
|
||||||
|
'Partition' => null,
|
||||||
'Partitions' => 'パーティション',
|
'Partitions' => 'パーティション',
|
||||||
'Partition name' => 'パーティション名',
|
'Partition name' => 'パーティション名',
|
||||||
'Values' => '値',
|
'Values' => '値',
|
||||||
@@ -226,6 +227,7 @@ $translations = array(
|
|||||||
'Permanent login' => '永続的にログイン',
|
'Permanent login' => '永続的にログイン',
|
||||||
'Databases have been dropped.' => 'データベースを削除しました',
|
'Databases have been dropped.' => 'データベースを削除しました',
|
||||||
'Search data in tables' => 'データを検索する',
|
'Search data in tables' => 'データを検索する',
|
||||||
|
'as a regular expression' => null,
|
||||||
'Schema' => 'スキーマ',
|
'Schema' => 'スキーマ',
|
||||||
'Alter schema' => 'スキーマ変更',
|
'Alter schema' => 'スキーマ変更',
|
||||||
'Create schema' => 'スキーマ追加',
|
'Create schema' => 'スキーマ追加',
|
||||||
@@ -265,4 +267,50 @@ $translations = array(
|
|||||||
'Permanent link' => 'パーマネントリンク',
|
'Permanent link' => 'パーマネントリンク',
|
||||||
'Edit all' => 'すべて編集',
|
'Edit all' => 'すべて編集',
|
||||||
'HH:MM:SS' => '時:分:秒',
|
'HH:MM:SS' => '時:分:秒',
|
||||||
|
'Selected' => '選択済',
|
||||||
|
'Modify' => '修正',
|
||||||
|
'Load more data' => '続きを読み込み',
|
||||||
|
'Loading' => '読み込み中',
|
||||||
|
'Size' => 'サイズ',
|
||||||
|
'Compute' => '算出',
|
||||||
|
'Saving' => '保存中',
|
||||||
|
'yes' => 'はい',
|
||||||
|
'no' => 'いいえ',
|
||||||
|
'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,
|
||||||
);
|
);
|
||||||
|
|||||||
316
adminer/lang/ka.inc.php
Normal file
316
adminer/lang/ka.inc.php
Normal file
@@ -0,0 +1,316 @@
|
|||||||
|
<?php
|
||||||
|
$translations = array(
|
||||||
|
'Home' => null,
|
||||||
|
'Login' => 'შესვლა',
|
||||||
|
'Logout successful.' => 'გამოხვედით სისტემიდან.',
|
||||||
|
'Invalid server or credentials.' => null,
|
||||||
|
'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.' => 'ჩანაწერი განახლდა.',
|
||||||
|
'Item%s has been inserted.' => 'ჩანაწერი%s ჩაჯდა.',
|
||||||
|
'Edit' => 'შეცვლა',
|
||||||
|
'Insert' => 'ჩასმა',
|
||||||
|
'Save and insert next' => 'შენახვა და სხვის ჩასმა',
|
||||||
|
'Delete' => 'წაშლა',
|
||||||
|
'Database' => 'ბაზა',
|
||||||
|
'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 ბაიტი',
|
||||||
|
'No commands to execute.' => 'შესასრულებელი ბრძანება არაა.',
|
||||||
|
'Unable to upload a file.' => 'ფაილი არ აიტვირთა სერვერზე.',
|
||||||
|
'File upload' => 'ფაილის ატვირთვა სერვერზე',
|
||||||
|
'File uploads are disabled.' => 'ფაილის სერვერზე ატვირთვა გათიშულია.',
|
||||||
|
'Routine has been called, %d row(s) affected.' => 'გამოძახებულია პროცედურა, შეიცვალა %d ჩანაწერი.',
|
||||||
|
'Call' => 'გამოძახეება',
|
||||||
|
'No extension' => 'გაფართოება არაა',
|
||||||
|
'None of the supported PHP extensions (%s) are available.' => 'არც ერთი მხარდაჭერილი გაფართოება არ მოიძებნა (%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' => 'გარე გასაღები',
|
||||||
|
'Change' => 'შეცვლა',
|
||||||
|
'Source' => 'წყარო',
|
||||||
|
'Target' => 'სამიზნე',
|
||||||
|
'Add column' => 'ველის დამატება',
|
||||||
|
'Alter' => 'შეცვლა',
|
||||||
|
'Add foreign key' => 'გარე გასაღები დამატება',
|
||||||
|
'ON DELETE' => 'წაშლისას',
|
||||||
|
'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',
|
||||||
|
'%d row(s)' => '%d რიგი',
|
||||||
|
'Remove' => 'წაშლა',
|
||||||
|
'Are you sure?' => 'ნამდვილად?',
|
||||||
|
'Privileges' => 'უფლებამოსილება',
|
||||||
|
'Create user' => 'მომხმარებლის შექმან',
|
||||||
|
'User has been dropped.' => 'მომხმარებელი წაიშალა.',
|
||||||
|
'User has been altered.' => 'მომხმარებელი შეიცვალა.',
|
||||||
|
'User has been created.' => 'მომხმარებელი შეიქმნა.',
|
||||||
|
'Hashed' => 'ჰეშირებული',
|
||||||
|
'Column' => 'ველი',
|
||||||
|
'Routine' => 'პროცედურა',
|
||||||
|
'Grant' => 'დაშვება',
|
||||||
|
'Revoke' => 'შეზღუდვა',
|
||||||
|
'Too big POST data. Reduce the data or increase the %s configuration directive.' => 'POST ინფორმაცია ძალიან დიდია. შეამცირეთ ზომა ან გაზარდეს POST ინფორმაციის ზომა პარამეტრებიდან %s.',
|
||||||
|
'Logged as: %s' => 'შესული ხართ როგორც: %s',
|
||||||
|
'Move up' => 'ზემოთ ატანა',
|
||||||
|
'Move down' => 'ქვემოთ ჩატანა',
|
||||||
|
'Functions' => 'ფუნქციები',
|
||||||
|
'Aggregation' => 'აგრეგაცია',
|
||||||
|
'Export' => 'ექსპორტი',
|
||||||
|
'Output' => 'გამომავალი ინფორმაცია',
|
||||||
|
'open' => 'გახსნა',
|
||||||
|
'save' => 'შენახვა',
|
||||||
|
'Format' => 'ფორმატი',
|
||||||
|
'Tables' => 'ცხრილები',
|
||||||
|
'Data' => 'ინფორმაცია',
|
||||||
|
'Event has been dropped.' => 'ღონისძიება წაიშალა.',
|
||||||
|
'Event has been altered.' => 'ღონისძიება შეიცვალა.',
|
||||||
|
'Event has been created.' => 'ღონისძიება შეიქმნა.',
|
||||||
|
'Alter event' => 'ღონისძიების შეცვლა',
|
||||||
|
'Create event' => 'ღონისძიების შექმნა',
|
||||||
|
'At given time' => 'მოცემულ დროში',
|
||||||
|
'Every' => 'ყოველ',
|
||||||
|
'Events' => 'ღონისძიება',
|
||||||
|
'Schedule' => 'განრიგი',
|
||||||
|
'Start' => 'დასაწყისი',
|
||||||
|
'End' => 'დასასრული',
|
||||||
|
'Status' => 'მდგომარეობა',
|
||||||
|
'On completion preserve' => 'შენახვა დასრულებისას',
|
||||||
|
'Tables and views' => 'ცხრილები და წარმოდგენები',
|
||||||
|
'Data Length' => 'ინფორმაციის მოცულობა',
|
||||||
|
'Index Length' => 'ინდექსების მოცულობა',
|
||||||
|
'Data Free' => 'თავისუფალი სივრცე',
|
||||||
|
'Collation' => 'კოდირება',
|
||||||
|
'Analyze' => 'ანალიზი',
|
||||||
|
'Optimize' => 'ოპტიმიზაცია',
|
||||||
|
'Check' => 'შემოწმება',
|
||||||
|
'Repair' => 'გასწორება',
|
||||||
|
'Truncate' => 'გასუფთავება',
|
||||||
|
'Tables have been truncated.' => 'ცხრილი გასუფთავდა.',
|
||||||
|
'Rows' => 'რიგი',
|
||||||
|
',' => ' ',
|
||||||
|
'0123456789' => '0123456789',
|
||||||
|
'Tables have been moved.' => 'ცხრილი გადაადგილდა.',
|
||||||
|
'Move to other database' => 'გადატანა სხვა ბაზაში',
|
||||||
|
'Move' => 'გადატანა',
|
||||||
|
'Engine' => 'ძრავი',
|
||||||
|
'Save and continue edit' => 'შენახვა და ცვლილების გაგრძელება',
|
||||||
|
'original' => 'საწყისი',
|
||||||
|
'%d item(s) have been affected.' => 'შეიცვალა %d ჩანაწერი.',
|
||||||
|
'Whole result' => 'სრული შედეგი',
|
||||||
|
'Tables have been dropped.' => 'ცხრილები წაიშალა.',
|
||||||
|
'Clone' => 'კლონირება',
|
||||||
|
'Partition by' => 'დაყოფა',
|
||||||
|
'Partition' => null,
|
||||||
|
'Partitions' => 'დანაყოფები',
|
||||||
|
'Partition name' => 'დანაყოფის სახელი',
|
||||||
|
'Values' => 'პარამეტრები',
|
||||||
|
'%d row(s) have been imported.' => 'დაიმპორტდა %d რიგი.',
|
||||||
|
'Import' => 'იმპორტი',
|
||||||
|
'Stop on error' => 'გაჩერება შეცდომისას',
|
||||||
|
'Maximum number of allowed fields exceeded. Please increase %s.' => 'მიღწეულია დაშვებული ველების მაქსიმალური რაოდენობა, გაზარდეთ %s.',
|
||||||
|
'anywhere' => 'ნებისმიერ ადგილას',
|
||||||
|
'%.3f s' => '%.3f s',
|
||||||
|
'$1-$3-$5' => '$5.$3.$1',
|
||||||
|
'[yyyy]-mm-dd' => 'დდ.თთ.[წწწწ]',
|
||||||
|
'History' => 'ისტორია',
|
||||||
|
'Variables' => 'ცვლადები',
|
||||||
|
'Relations' => 'ურთიერთობა',
|
||||||
|
'Run file' => 'ფაილის გაშვება',
|
||||||
|
'Clear' => 'გასუფთავება',
|
||||||
|
'Maximum allowed file size is %sB.' => 'ფაილის მაქსიმალური ზომა - %sB.',
|
||||||
|
'Numbers' => 'ციფრები',
|
||||||
|
'Date and time' => 'დრო და თარიღი',
|
||||||
|
'Binary' => 'ორობითი',
|
||||||
|
'Lists' => 'სია',
|
||||||
|
'Editor' => 'რედაქტორი',
|
||||||
|
'E-mail' => 'ელ. ფოსტა',
|
||||||
|
'From' => 'ავტორი:',
|
||||||
|
'Subject' => 'თემა',
|
||||||
|
'Send' => 'გაგზავნა',
|
||||||
|
'%d e-mail(s) have been sent.' => 'გაიგზავნა %d წერილი.',
|
||||||
|
'Webserver file %s' => 'ფაილი %s ვებსერვერზე',
|
||||||
|
'File does not exist.' => 'ასეთი ფაილი არ არსებობს.',
|
||||||
|
'%d in total' => 'სულ %d',
|
||||||
|
'Permanent login' => 'სისტემაში დარჩენა',
|
||||||
|
'Databases have been dropped.' => 'ბაზა წაიშალა.',
|
||||||
|
'Search data in tables' => 'ცხრილებში ძებნა',
|
||||||
|
'as a regular expression' => null,
|
||||||
|
'Schema' => 'სქემა',
|
||||||
|
'Alter schema' => 'სქემის შეცვლა',
|
||||||
|
'Create schema' => 'ახალი სქემა',
|
||||||
|
'Schema has been dropped.' => 'სქემა წაიშალა.',
|
||||||
|
'Schema has been created.' => 'შეიქმნა ახალი სქემა.',
|
||||||
|
'Schema has been altered.' => 'სქემა შეიცვალა.',
|
||||||
|
'Sequences' => 'მიმდევრობა',
|
||||||
|
'Create sequence' => 'მიმდევრობის შექმნა',
|
||||||
|
'Alter sequence' => 'მიმდევრობის შეცვლა',
|
||||||
|
'Sequence has been dropped.' => 'მიმდევრობა წაიშალა.',
|
||||||
|
'Sequence has been created.' => 'მიმდევრობა შეიქმნა.',
|
||||||
|
'Sequence has been altered.' => 'მიმდევრობა შეიცვალა.',
|
||||||
|
'User types' => 'მომხმარებლის სახეობა',
|
||||||
|
'Create type' => 'სახეობის შექმნა',
|
||||||
|
'Alter type' => 'სახეობის შეცვლა',
|
||||||
|
'Type has been dropped.' => 'სახეობა წაიშალა.',
|
||||||
|
'Type has been created.' => 'სახეობა შეიქმნა.',
|
||||||
|
'Ctrl+click on a value to modify it.' => 'შესაცვლელად გამოიყენეთ Ctrl+თაგვის ღილაკი.',
|
||||||
|
'Use edit link to modify this value.' => 'ამ მნიშვნელობის შესაცვლელად გამოიყენეთ ბმული «შეცვლა».',
|
||||||
|
'last' => 'ბოლო',
|
||||||
|
'From server' => 'სერვერიდან',
|
||||||
|
'System' => 'სისტემა',
|
||||||
|
'Select data' => 'არჩევა',
|
||||||
|
'Show structure' => 'სტრუქტურის ჩვენება',
|
||||||
|
'empty' => 'ცარიელი',
|
||||||
|
'Network' => 'ქსელი',
|
||||||
|
'Geometry' => 'გეომეტრია',
|
||||||
|
'File exists.' => 'ფაილი უკვე არსებობს.',
|
||||||
|
'Attachments' => 'მიმაგრებული ფაილები',
|
||||||
|
'%d query(s) executed OK.' => '%d მოთხოვნა შესრულდა.',
|
||||||
|
'Show only errors' => 'მხოლოდ შეცდომები',
|
||||||
|
'Refresh' => 'განახლება',
|
||||||
|
'Invalid schema.' => 'არასწორი სქემა.',
|
||||||
|
'Please use one of the extensions %s.' => 'გამოიყენეთ ერთ-ერთი გაფართოება %s.',
|
||||||
|
'now' => 'ახლა',
|
||||||
|
'ltr' => 'ltr',
|
||||||
|
'Tables have been copied.' => 'ცხრილი დაკოპირდა.',
|
||||||
|
'Copy' => 'კოპირება',
|
||||||
|
'Permanent link' => 'მუდმივი ბმული',
|
||||||
|
'Edit all' => 'ყველას შეცვლა',
|
||||||
|
'HH:MM:SS' => 'სთ:წთ:წმ',
|
||||||
|
'Tables have been optimized.' => 'ცხრილებს გაუკეთდა ოპტიმიზაცია.',
|
||||||
|
'Materialized view' => 'მატერიალური ხედი',
|
||||||
|
'Vacuum' => 'ვაკუუმი',
|
||||||
|
'Selected' => 'არჩეული',
|
||||||
|
'File must be in UTF-8 encoding.' => 'ფაილი უნდა იყოს კოდირებაში UTF-8.',
|
||||||
|
'Modify' => 'შეცვლა',
|
||||||
|
'Loading' => 'ჩატვირთვა',
|
||||||
|
'Load more data' => 'მეტი ინფორმაციის ჩატვირთვა',
|
||||||
|
'ATTACH queries are not supported.' => 'ATTACH-მოთხოვნები არაა მხარდაჭერილი.',
|
||||||
|
'%d / ' => '%d / ',
|
||||||
|
'Limit rows' => 'რიგების შეზღუდვა',
|
||||||
|
'Default value' => 'სტანდარტული მნიშვნელობა',
|
||||||
|
'Full table scan' => 'სრული ცხრილის ანალიზი',
|
||||||
|
'Too many unsuccessful logins, try again in %d minute(s).' => 'ძალიან ბევრჯერ შეგეშალათ მომხმარებელი და პაროლი. სცადეთ %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, რათა ის მუდმივი გახადოთ.',
|
||||||
|
'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.' => 'დიდი ფაილი უნდა ატვირტოთ FTP-თი და შემდეგ გაუკეთოთ იმპორტი სერვერიდან.',
|
||||||
|
'Size' => 'ზომა',
|
||||||
|
'Compute' => 'გამოთვლა',
|
||||||
|
'You are offline.' => 'არ გაგივლიათ ავტორიზაცია.',
|
||||||
|
'You have no privileges to update this table.' => 'ამ ცხრილის განახლების უფლება არ გაქვთ.',
|
||||||
|
'Saving' => 'შენახვა',
|
||||||
|
'yes' => 'კი',
|
||||||
|
'no' => 'არა',
|
||||||
|
'Routines' => 'რუტინები',
|
||||||
|
'Target table' => 'მიზნობრივი ცხრილი',
|
||||||
|
'Strings' => 'ველები',
|
||||||
|
'Source and target columns must have the same data type, there must be an index on the target columns and referenced data must exist.' => 'საწყისი და მიზნობრივი ველები უნდა იყოს ერთიდაიგივე სახეობის, მიზნობრივ ველზე უნდა იყოს ინდექსი და უნდა არსებობდეს შესაბამისი ინფორმაცია.',
|
||||||
|
'Drop %s?' => 'წაიშალოს %s?',
|
||||||
|
'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>.',
|
||||||
|
'DB' => 'ბაზა',
|
||||||
|
'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 გაფართოება.',
|
||||||
|
|
||||||
|
'overwrite' => null,
|
||||||
|
|
||||||
|
'Columns' => null,
|
||||||
|
'Nullable' => null,
|
||||||
|
'Default' => null,
|
||||||
|
'Yes' => null,
|
||||||
|
'No' => null,
|
||||||
|
'One Time Password' => null,
|
||||||
|
'Invalid OTP code.' => null,
|
||||||
|
);
|
||||||
@@ -1,268 +1,316 @@
|
|||||||
<?php
|
<?php
|
||||||
$translations = array(
|
$translations = array(
|
||||||
'Login' => '로그인',
|
'Home' => null,
|
||||||
'Logout successful.' => '로그아웃',
|
'$1-$3-$5' => '$1-$3-$5',
|
||||||
'Invalid credentials.' => '잘못된 로그인',
|
'%.3f s' => '%.3f 초',
|
||||||
'Server' => '서버',
|
|
||||||
'Username' => '사용자이름',
|
|
||||||
'Password' => '비밀번호',
|
|
||||||
'Select database' => '데이터베이스를 선택하십시오.',
|
|
||||||
'Invalid database.' => '잘못된 데이터베이스입니다.',
|
|
||||||
'Create new 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' => '파티션 이름',
|
||||||
|
'Partition' => null,
|
||||||
|
'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' => '테이블 내 데이터 검색',
|
||||||
|
'as a regular expression' => null,
|
||||||
|
'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,
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
<?php
|
<?php
|
||||||
$translations = array(
|
$translations = array(
|
||||||
// label for database system selection (MySQL, SQLite, ...)
|
// label for database system selection (MySQL, SQLite, ...)
|
||||||
|
'Home' => null,
|
||||||
'System' => 'Sistema',
|
'System' => 'Sistema',
|
||||||
'Server' => 'Serveris',
|
'Server' => 'Serveris',
|
||||||
'Username' => 'Vartotojas',
|
'Username' => 'Vartotojas',
|
||||||
@@ -10,7 +11,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 +20,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 +34,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 +55,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,20 +65,19 @@ $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',
|
||||||
'Select database' => 'Pasirinkti duomenų bazę',
|
'Select database' => 'Pasirinkti duomenų bazę',
|
||||||
'Invalid database.' => 'Neteisinga duomenų bazė.',
|
'Invalid database.' => 'Neteisinga duomenų bazė.',
|
||||||
'Create new database' => 'Sukurti naują duomenų bazę',
|
|
||||||
'Database has been dropped.' => 'Duomenų bazė panaikinta.',
|
'Database has been dropped.' => 'Duomenų bazė panaikinta.',
|
||||||
'Databases have been dropped.' => 'Duomenų bazės panaikintos.',
|
'Databases have been dropped.' => 'Duomenų bazės panaikintos.',
|
||||||
'Database has been created.' => 'Duomenų bazė sukurta.',
|
'Database has been created.' => 'Duomenų bazė sukurta.',
|
||||||
@@ -86,10 +86,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',
|
||||||
@@ -111,7 +111,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',
|
||||||
@@ -124,7 +124,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.',
|
||||||
@@ -137,7 +137,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ė',
|
||||||
@@ -165,26 +165,27 @@ $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',
|
||||||
|
'Partition' => null,
|
||||||
'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.',
|
||||||
@@ -200,7 +201,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.',
|
||||||
@@ -211,7 +212,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',
|
||||||
@@ -220,6 +221,7 @@ $translations = array(
|
|||||||
'Search' => 'Ieškoti',
|
'Search' => 'Ieškoti',
|
||||||
'anywhere' => 'visur',
|
'anywhere' => 'visur',
|
||||||
'Search data in tables' => 'Ieškoti duomenų lentelėse',
|
'Search data in tables' => 'Ieškoti duomenų lentelėse',
|
||||||
|
'as a regular expression' => null,
|
||||||
'Sort' => 'Rikiuoti',
|
'Sort' => 'Rikiuoti',
|
||||||
'descending' => 'mažėjimo tvarka',
|
'descending' => 'mažėjimo tvarka',
|
||||||
'Limit' => 'Limitas',
|
'Limit' => 'Limitas',
|
||||||
@@ -230,15 +232,15 @@ $translations = array(
|
|||||||
'%d row(s)' => array('%d įrašas', '%d įrašai', '%d įrašų'),
|
'%d row(s)' => array('%d įrašas', '%d įrašai', '%d įrašų'),
|
||||||
'Page' => 'Puslapis',
|
'Page' => 'Puslapis',
|
||||||
'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.',
|
||||||
@@ -256,14 +258,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',
|
||||||
@@ -273,7 +275,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',
|
||||||
@@ -282,11 +284,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ą',
|
||||||
@@ -295,7 +297,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ą',
|
||||||
@@ -303,11 +305,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,
|
||||||
);
|
);
|
||||||
|
|||||||
316
adminer/lang/lv.inc.php
Normal file
316
adminer/lang/lv.inc.php
Normal file
@@ -0,0 +1,316 @@
|
|||||||
|
<?php
|
||||||
|
$translations = array(
|
||||||
|
'Home' => null,
|
||||||
|
'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',
|
||||||
|
'Partition' => null,
|
||||||
|
'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',
|
||||||
|
'as a regular expression' => null,
|
||||||
|
'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,
|
||||||
|
);
|
||||||
361
adminer/lang/ms.inc.php
Normal file
361
adminer/lang/ms.inc.php
Normal file
@@ -0,0 +1,361 @@
|
|||||||
|
<?php
|
||||||
|
$translations = array(
|
||||||
|
// label for database system selection (MySQL, SQLite, ...)
|
||||||
|
'Home' => null,
|
||||||
|
'System' => 'Sistem',
|
||||||
|
'Server' => 'Pelayan',
|
||||||
|
'Username' => 'Nama pengguna',
|
||||||
|
'Password' => 'Kata laluan',
|
||||||
|
'Permanent login' => 'Log masuk kekal',
|
||||||
|
'Login' => 'Log masuk',
|
||||||
|
'Logout' => 'Log keluar',
|
||||||
|
'Logged as: %s' => 'Log masuk sebagai: %s',
|
||||||
|
'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>.',
|
||||||
|
'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.',
|
||||||
|
'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',
|
||||||
|
'Invalid CSRF token. Send the form again.' => 'Token CSRF tidak sah. Sila hantar borang sekali lagi.',
|
||||||
|
'If you did not send this request from Adminer then close this page.' => 'Jika anda tidak menghantar permintaan ini dari Adminer sila tutup halaman ini.',
|
||||||
|
'No extension' => 'Tiada sambungan',
|
||||||
|
'None of the supported PHP extensions (%s) are available.' => 'Sambungan PHP yang (%s) disokong tidak wujud.',
|
||||||
|
'Connecting to privileged ports is not allowed.' => 'Penyambungan ke port yang istimewa tidak dibenarkan.',
|
||||||
|
'Session support must be enabled.' => 'Sokongan sesi perlu diaktifkan.',
|
||||||
|
'Session expired, please login again.' => 'Sesi telah luput, sila log masuk kembali.',
|
||||||
|
'%s version: %s through PHP extension %s' => 'Versi %s: %s melalui sambungan PHP %s',
|
||||||
|
'Refresh' => 'Segar kembali',
|
||||||
|
|
||||||
|
// text direction - 'ltr' or 'rtl'
|
||||||
|
'ltr' => 'ltr',
|
||||||
|
|
||||||
|
'Privileges' => 'Keistimewaan',
|
||||||
|
'Create user' => 'Bina pengguna',
|
||||||
|
'User has been dropped.' => 'Pengguna telah dijatuhkan.',
|
||||||
|
'User has been altered.' => 'Pengguna telah diubah.',
|
||||||
|
'User has been created.' => 'Pengguna telah dibuat.',
|
||||||
|
'Hashed' => 'Hashed',
|
||||||
|
'Column' => 'Kolum',
|
||||||
|
'Routine' => 'Rutin',
|
||||||
|
'Grant' => 'Beri',
|
||||||
|
'Revoke' => 'Batal',
|
||||||
|
|
||||||
|
'Process list' => 'Senarai proses',
|
||||||
|
'%d process(es) have been killed.' => '%d proses telah dihentikan.',
|
||||||
|
'Kill' => 'Henti',
|
||||||
|
|
||||||
|
'Variables' => 'Pembolehubah',
|
||||||
|
'Status' => 'Status',
|
||||||
|
|
||||||
|
'SQL command' => 'Arahan SQL',
|
||||||
|
'%d query(s) executed OK.' => '%d query berjaya dilaksanakan.',
|
||||||
|
'Query executed OK, %d row(s) affected.' => 'Query berjaya dilaksanakan, %d baris terjejas.',
|
||||||
|
'No commands to execute.' => 'Tiada arahan untuk dilaksanakan.',
|
||||||
|
'Error in query' => 'Ralat pada query',
|
||||||
|
'ATTACH queries are not supported.' => 'Query berikut tidak disokong.',
|
||||||
|
'Execute' => 'Laksana',
|
||||||
|
'Stop on error' => 'Berhenti jika ralat',
|
||||||
|
'Show only errors' => 'Paparkan jika ralat',
|
||||||
|
// sprintf() format for time of the command
|
||||||
|
'%.3f s' => '%.3f s',
|
||||||
|
'History' => 'Sejarah',
|
||||||
|
'Clear' => 'Bersih',
|
||||||
|
'Edit all' => 'Ubah semua',
|
||||||
|
|
||||||
|
'File upload' => 'Muat naik fail',
|
||||||
|
'From server' => 'Dari pelayan',
|
||||||
|
'Webserver file %s' => 'Fail pelayan sesawang %s',
|
||||||
|
'Run file' => 'Jalankan fail',
|
||||||
|
'File does not exist.' => 'Fail tidak wujud.',
|
||||||
|
'File uploads are disabled.' => 'Muat naik fail dihalang.',
|
||||||
|
'Unable to upload a file.' => 'Muat naik fail gagal.',
|
||||||
|
'Maximum allowed file size is %sB.' => 'Saiz fail maksimum yang dibenarkan adalah %sB.',
|
||||||
|
'Too big POST data. Reduce the data or increase the %s configuration directive.' => 'Data POST terlalu besar. Kecilkan data atau tingkatkan tetapan %s.',
|
||||||
|
'You can upload a big SQL file via FTP and import it from server.' => 'Anda boleh muat naik fail SQL yang besar melalui FTP dan import melalui pelayan.',
|
||||||
|
'You are offline.' => 'Anda sedang offline.',
|
||||||
|
|
||||||
|
'Export' => 'Eksport',
|
||||||
|
'Output' => 'Pengeluaran',
|
||||||
|
'open' => 'buka',
|
||||||
|
'save' => 'simpan',
|
||||||
|
'Saving' => 'Menyimpan',
|
||||||
|
'Format' => 'Format',
|
||||||
|
'Data' => 'Data',
|
||||||
|
|
||||||
|
'Database' => 'Pangkalan data',
|
||||||
|
'database' => 'pangkalan data',
|
||||||
|
'Use' => 'Guna',
|
||||||
|
'Select database' => 'Pilih pangkalan data',
|
||||||
|
'Invalid database.' => 'Pangkalan data tidak sah.',
|
||||||
|
'Database has been dropped.' => 'Pangkalan data telah dijatuhkan.',
|
||||||
|
'Databases have been dropped.' => 'Pangkalan data telah dijatuhkan.',
|
||||||
|
'Database has been created.' => 'Pangkalan data telah dibuat.',
|
||||||
|
'Database has been renamed.' => 'Pangkalan data telah ditukar nama.',
|
||||||
|
'Database has been altered.' => 'Pangkalan data telah diubah.',
|
||||||
|
'Alter database' => 'Ubah pangkalan data',
|
||||||
|
'Create database' => 'Bina pangkalan data',
|
||||||
|
'Database schema' => 'Skema pangkalan data',
|
||||||
|
|
||||||
|
// link to current database schema layout
|
||||||
|
'Permanent link' => 'Pautan kekal',
|
||||||
|
|
||||||
|
// thousands separator - must contain single byte
|
||||||
|
',' => ',',
|
||||||
|
'0123456789' => '0123456789',
|
||||||
|
'Engine' => 'Enjin',
|
||||||
|
'Collation' => 'Collation',
|
||||||
|
'Data Length' => 'Panjang Data',
|
||||||
|
'Index Length' => 'Panjang Indeks',
|
||||||
|
'Data Free' => 'Data Free',
|
||||||
|
'Rows' => 'Baris',
|
||||||
|
'%d in total' => '%d secara keseluruhan',
|
||||||
|
'Analyze' => 'Menganalisis',
|
||||||
|
'Optimize' => 'Mengoptimum',
|
||||||
|
'Vacuum' => 'Vacuum',
|
||||||
|
'Check' => 'Periksa',
|
||||||
|
'Repair' => 'Baiki',
|
||||||
|
'Truncate' => 'Memangkas',
|
||||||
|
'Tables have been truncated.' => 'Jadual telah dimangkaskan.',
|
||||||
|
'Move to other database' => 'Pindahkan ke pangkalan data yang lain',
|
||||||
|
'Move' => 'Pindah',
|
||||||
|
'Tables have been moved.' => 'Jadual telah dipindahkan.',
|
||||||
|
'Copy' => 'Salin',
|
||||||
|
'Tables have been copied.' => 'Jadual telah disalin.',
|
||||||
|
|
||||||
|
'Routines' => 'Rutin',
|
||||||
|
'Routine has been called, %d row(s) affected.' => 'Rutin telah dipanggil, %d baris terjejas.',
|
||||||
|
'Call' => 'Panggil',
|
||||||
|
'Parameter name' => 'Nama pembolehubah',
|
||||||
|
'Create procedure' => 'Bina prosedur',
|
||||||
|
'Create function' => 'Bina fungsi',
|
||||||
|
'Routine has been dropped.' => 'Rutin telah dijatuhkan.',
|
||||||
|
'Routine has been altered.' => 'Rutin telah diubah.',
|
||||||
|
'Routine has been created.' => 'Rutin telah dibuat.',
|
||||||
|
'Alter function' => 'Ubah fungsi',
|
||||||
|
'Alter procedure' => 'Ubah prosedur',
|
||||||
|
'Return type' => 'Jenis Return',
|
||||||
|
|
||||||
|
'Events' => 'Peristiwa',
|
||||||
|
'Event has been dropped.' => 'Peristiwa telah dijatuhkan.',
|
||||||
|
'Event has been altered.' => 'Peristiwa telah diubah.',
|
||||||
|
'Event has been created.' => 'Peristiwa telah dibuat.',
|
||||||
|
'Alter event' => 'Ubah peristiwa',
|
||||||
|
'Create event' => 'Bina peristiwa',
|
||||||
|
'At given time' => 'Pada masa tersebut',
|
||||||
|
'Every' => 'Setiap',
|
||||||
|
'Schedule' => 'Jadual',
|
||||||
|
'Start' => 'Mula',
|
||||||
|
'End' => 'Habis',
|
||||||
|
'On completion preserve' => 'Dalam melestarikan penyelesaian',
|
||||||
|
|
||||||
|
'Tables' => 'Jadual',
|
||||||
|
'Tables and views' => 'Jadual dan pandangan',
|
||||||
|
'Table' => 'Jadual',
|
||||||
|
'No tables.' => 'Tiada jadual.',
|
||||||
|
'Alter table' => 'Ubah jadual',
|
||||||
|
'Create table' => 'Bina jadual',
|
||||||
|
'Table has been dropped.' => 'Jadual telah dijatuhkan.',
|
||||||
|
'Tables have been dropped.' => 'Jadual telah dijatuhkan.',
|
||||||
|
'Tables have been optimized.' => 'Jadual telah dioptimumkan.',
|
||||||
|
'Table has been altered.' => 'Jadual telah diubah.',
|
||||||
|
'Table has been created.' => 'Jadual telah dibuat.',
|
||||||
|
'Table name' => 'Nama jadual',
|
||||||
|
'Show structure' => 'Paparkan struktur',
|
||||||
|
'engine' => 'enjin',
|
||||||
|
'collation' => 'collation',
|
||||||
|
'Column name' => 'Nama kolum',
|
||||||
|
'Type' => 'Jenis',
|
||||||
|
'Length' => 'Kepanjangan',
|
||||||
|
'Auto Increment' => 'Kenaikan Auto',
|
||||||
|
'Options' => 'Pilihan',
|
||||||
|
'Comment' => 'Komen',
|
||||||
|
'Default value' => 'Nilai lalai',
|
||||||
|
'Default values' => 'Nilai lalai',
|
||||||
|
'Drop' => 'Jatuh',
|
||||||
|
'Drop %s?' => 'Jatuhkan %s?',
|
||||||
|
'Are you sure?' => 'Anda pasti?',
|
||||||
|
'Size' => 'Saiz',
|
||||||
|
'Compute' => 'Kira',
|
||||||
|
'Move up' => 'Gerak ke atas',
|
||||||
|
'Move down' => 'Gerak ke bawah',
|
||||||
|
'Remove' => 'Buang',
|
||||||
|
'Maximum number of allowed fields exceeded. Please increase %s.' => 'Bilangan medan telah melebihi had yang dibenarkan. Sila tingkatkan %s.',
|
||||||
|
|
||||||
|
'Partition by' => 'Partition mengikut',
|
||||||
|
'Partition' => null,
|
||||||
|
'Partitions' => 'Partition',
|
||||||
|
'Partition name' => 'Nama partition',
|
||||||
|
'Values' => 'Nilai',
|
||||||
|
|
||||||
|
'View' => 'Papar',
|
||||||
|
'Materialized view' => 'Paparan yang menjadi kenyataan',
|
||||||
|
'View has been dropped.' => 'Paparan telah dijatuhkan.',
|
||||||
|
'View has been altered.' => 'Paparan telah diubah.',
|
||||||
|
'View has been created.' => 'Paparan telah dibuat.',
|
||||||
|
'Alter view' => 'Ubah paparan',
|
||||||
|
'Create view' => 'Bina paparan',
|
||||||
|
|
||||||
|
'Indexes' => 'Indeks',
|
||||||
|
'Indexes have been altered.' => 'Indeks telah diubah.',
|
||||||
|
'Alter indexes' => 'Ubah indeks',
|
||||||
|
'Add next' => 'Tambah yang seterusnya',
|
||||||
|
'Index Type' => 'Jenis Indeks',
|
||||||
|
'Column (length)' => 'Kolum (kepanjangan)',
|
||||||
|
|
||||||
|
'Foreign keys' => 'Kunci asing',
|
||||||
|
'Foreign key' => 'Kunci asing',
|
||||||
|
'Foreign key has been dropped.' => 'Kunci asing telah dijatuhkan.',
|
||||||
|
'Foreign key has been altered.' => 'Kunci asing telah diubah.',
|
||||||
|
'Foreign key has been created.' => 'Kunci asing telah dibuat.',
|
||||||
|
'Target table' => 'Jadual sasaran',
|
||||||
|
'Change' => 'Tukar',
|
||||||
|
'Source' => 'Sumber',
|
||||||
|
'Target' => 'Sasaran',
|
||||||
|
'Add column' => 'Tambah kolum',
|
||||||
|
'Alter' => 'Ubah',
|
||||||
|
'Add foreign key' => 'Tambah kunci asing',
|
||||||
|
'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.' => 'Kolum sumber dan sasaran perlu mempunyai jenis data yang sama, indeks diperlukan pada kolum sasaran dan data yang dirujuk wujud.',
|
||||||
|
|
||||||
|
'Triggers' => ' Pencetus',
|
||||||
|
'Add trigger' => 'Tambah pencetus',
|
||||||
|
'Trigger has been dropped.' => 'Pencetus telah dijatuhkan.',
|
||||||
|
'Trigger has been altered.' => 'Pencetus telah diubah.',
|
||||||
|
'Trigger has been created.' => 'Pencetus telah dibuat.',
|
||||||
|
'Alter trigger' => 'Ubah pencetus',
|
||||||
|
'Create trigger' => 'Buat pencetus',
|
||||||
|
'Time' => 'Masa',
|
||||||
|
'Event' => 'Peristiwa',
|
||||||
|
'Name' => 'Nama',
|
||||||
|
|
||||||
|
'select' => 'pilih',
|
||||||
|
'Select' => 'Pilih',
|
||||||
|
'Select data' => 'Pilih data',
|
||||||
|
'Functions' => 'Fungsi',
|
||||||
|
'Aggregation' => 'Pengagregatan',
|
||||||
|
'Search' => 'Cari',
|
||||||
|
'anywhere' => 'di mana-mana',
|
||||||
|
'Search data in tables' => 'Cari data dalam jadual',
|
||||||
|
'as a regular expression' => null,
|
||||||
|
'Sort' => 'Susun',
|
||||||
|
'descending' => 'menurun',
|
||||||
|
'Limit' => 'Had',
|
||||||
|
'Limit rows' => 'Had baris',
|
||||||
|
'Text length' => 'Kepanjangan teks',
|
||||||
|
'Action' => 'Aksi',
|
||||||
|
'Full table scan' => 'Imbasan penuh jadual',
|
||||||
|
'Unable to select the table' => 'Pemilihan jadual tidak berjaya',
|
||||||
|
'No rows.' => 'Tiada baris.',
|
||||||
|
'%d / ' => '%d / ',
|
||||||
|
'%d row(s)' => '%d baris',
|
||||||
|
'Page' => 'Halaman',
|
||||||
|
'last' => 'akhir',
|
||||||
|
'Load more data' => 'Load lebih data',
|
||||||
|
'Loading' => 'Loading',
|
||||||
|
'Whole result' => 'Keputusan keseluruhan',
|
||||||
|
'%d byte(s)' => array('%d byte', '%d bytes'),
|
||||||
|
|
||||||
|
'Import' => 'Import',
|
||||||
|
'%d row(s) have been imported.' => '%d baris telah diimport.',
|
||||||
|
'File must be in UTF-8 encoding.' => 'Fail mesti dalam pengekodan UTF-8.',
|
||||||
|
|
||||||
|
// in-place editing in select
|
||||||
|
'Modify' => 'Pinda',
|
||||||
|
'Ctrl+click on a value to modify it.' => 'Ctrl+click pada nilai untuk meminda.',
|
||||||
|
'Use edit link to modify this value.' => 'Guna pautan ubah untuk meminda nilai ini.',
|
||||||
|
|
||||||
|
// %s can contain auto-increment value
|
||||||
|
'Item%s has been inserted.' => 'Item%s telah dimasukkan.',
|
||||||
|
'Item has been deleted.' => 'Item telah dipadamkan.',
|
||||||
|
'Item has been updated.' => 'Item telah dikemaskini.',
|
||||||
|
'%d item(s) have been affected.' => '%d item telah terjejas.',
|
||||||
|
'New item' => 'Item baru',
|
||||||
|
'original' => 'asli',
|
||||||
|
// label for value '' in enum data type
|
||||||
|
'empty' => 'kosong',
|
||||||
|
'edit' => 'ubah',
|
||||||
|
'Edit' => 'Ubah',
|
||||||
|
'Insert' => 'Masukkan',
|
||||||
|
'Save' => 'Simpan',
|
||||||
|
'Save and continue edit' => 'Simpan dan sambung ubah',
|
||||||
|
'Save and insert next' => 'Simpan dan masukkan seterusnya',
|
||||||
|
'Selected' => 'Terpilih',
|
||||||
|
'Clone' => 'Klon',
|
||||||
|
'Delete' => 'Padam',
|
||||||
|
'You have no privileges to update this table.' => 'Anda tidak mempunyai keistimewaan untuk mengemaskini jadual ini.',
|
||||||
|
|
||||||
|
'E-mail' => 'Emel',
|
||||||
|
'From' => 'Dari',
|
||||||
|
'Subject' => 'Subjek',
|
||||||
|
'Attachments' => 'Lampiran',
|
||||||
|
'Send' => 'Hantar',
|
||||||
|
'%d e-mail(s) have been sent.' => '%d emel telah dihantar.',
|
||||||
|
|
||||||
|
// data type descriptions
|
||||||
|
'Numbers' => 'Nombor',
|
||||||
|
'Date and time' => 'Tarikh dan masa',
|
||||||
|
'Strings' => 'String',
|
||||||
|
'Binary' => 'Binari',
|
||||||
|
'Lists' => 'Senarai',
|
||||||
|
'Network' => 'Rangkaian',
|
||||||
|
'Geometry' => 'Geometri',
|
||||||
|
'Relations' => 'Hubungan',
|
||||||
|
|
||||||
|
'Editor' => 'Editor',
|
||||||
|
// date format in Editor: $1 yyyy, $2 yy, $3 mm, $4 m, $5 dd, $6 d
|
||||||
|
'$1-$3-$5' => '$1-$3-$5',
|
||||||
|
// hint for date format - use language equivalents for day, month and year shortcuts
|
||||||
|
'[yyyy]-mm-dd' => '[yyyy]-mm-dd',
|
||||||
|
// hint for time format - use language equivalents for hour, minute and second shortcuts
|
||||||
|
'HH:MM:SS' => 'HH:MM:SS',
|
||||||
|
'now' => 'sekarang',
|
||||||
|
'yes' => 'ya',
|
||||||
|
'no' => 'tidak',
|
||||||
|
|
||||||
|
// general SQLite error in create, drop or rename database
|
||||||
|
'File exists.' => 'Fail wujud.',
|
||||||
|
'Please use one of the extensions %s.' => 'Sila guna salah satu sambungan %s.',
|
||||||
|
|
||||||
|
// PostgreSQL and MS SQL schema support
|
||||||
|
'Alter schema' => 'Ubah skema',
|
||||||
|
'Create schema' => 'Buat skema',
|
||||||
|
'Schema has been dropped.' => 'Skema telah dijatuhkan.',
|
||||||
|
'Schema has been created.' => 'Skema telah dibuat.',
|
||||||
|
'Schema has been altered.' => 'Skema telah diubah.',
|
||||||
|
'Schema' => 'Skema',
|
||||||
|
'Invalid schema.' => 'Skema tidak sah.',
|
||||||
|
|
||||||
|
// PostgreSQL sequences support
|
||||||
|
'Sequences' => 'Turutan',
|
||||||
|
'Create sequence' => 'Buat turutan',
|
||||||
|
'Sequence has been dropped.' => 'Turutan telah dijatuhkan.',
|
||||||
|
'Sequence has been created.' => 'Turutan telah dibuat.',
|
||||||
|
'Sequence has been altered.' => 'Turutan telah diubah.',
|
||||||
|
'Alter sequence' => 'Ubah turutan',
|
||||||
|
|
||||||
|
// PostgreSQL user types support
|
||||||
|
'User types' => 'Jenis pengguna',
|
||||||
|
'Create type' => 'Buat jenis',
|
||||||
|
'Type has been dropped.' => 'Jenis telah dijatuhkan.',
|
||||||
|
'Type has been created.' => 'Jenis telah dibuat.',
|
||||||
|
'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,
|
||||||
|
);
|
||||||
@@ -1,14 +1,14 @@
|
|||||||
<?php
|
<?php
|
||||||
$translations = array(
|
$translations = array(
|
||||||
'Login' => 'Inloggen',
|
'Home' => null,
|
||||||
'Logout successful.' => 'Uitloggen geslaagd.',
|
'Login' => 'Aanmelden',
|
||||||
'Invalid credentials.' => 'Ongeldige logingegevens.',
|
'Logout successful.' => 'Successvol afgemeld.',
|
||||||
|
'Invalid server or credentials.' => null,
|
||||||
'Server' => 'Server',
|
'Server' => 'Server',
|
||||||
'Username' => 'Gebruikersnaam',
|
'Username' => 'Gebruikersnaam',
|
||||||
'Password' => 'Wachtwoord',
|
'Password' => 'Wachtwoord',
|
||||||
'Select database' => 'Database selecteren',
|
'Select database' => 'Database selecteren',
|
||||||
'Invalid database.' => 'Ongeldige database.',
|
'Invalid database.' => 'Ongeldige database.',
|
||||||
'Create new database' => 'Nieuwe database',
|
|
||||||
'Table has been dropped.' => 'Tabel verwijderd.',
|
'Table has been dropped.' => 'Tabel verwijderd.',
|
||||||
'Table has been altered.' => 'Tabel aangepast.',
|
'Table has been altered.' => 'Tabel aangepast.',
|
||||||
'Table has been created.' => 'Tabel aangemaakt.',
|
'Table has been created.' => 'Tabel aangemaakt.',
|
||||||
@@ -32,7 +32,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.',
|
||||||
@@ -42,7 +42,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',
|
||||||
@@ -61,7 +61,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 geraakt.'),
|
'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',
|
||||||
@@ -82,7 +82,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.',
|
||||||
@@ -188,10 +188,11 @@ $translations = array(
|
|||||||
'Move to other database' => 'Verplaats naar andere database',
|
'Move to other database' => 'Verplaats naar andere database',
|
||||||
'Move' => 'Verplaats',
|
'Move' => 'Verplaats',
|
||||||
'%d item(s) have been affected.' => array('%d item aangepast.', '%d items aangepast.'),
|
'%d item(s) have been affected.' => array('%d item aangepast.', '%d items aangepast.'),
|
||||||
'whole result' => 'volledig resultaat',
|
'Whole result' => 'Volledig resultaat',
|
||||||
'Clone' => 'Dupliceer',
|
'Clone' => 'Dupliceer',
|
||||||
'Maximum number of allowed fields exceeded. Please increase %s.' => 'Maximum aantal velden bereikt. Verhoog %s.',
|
'Maximum number of allowed fields exceeded. Please increase %s.' => 'Maximum aantal velden bereikt. Verhoog %s.',
|
||||||
'Partition by' => 'Partitioneren op',
|
'Partition by' => 'Partitioneren op',
|
||||||
|
'Partition' => null,
|
||||||
'Partitions' => 'Partities',
|
'Partitions' => 'Partities',
|
||||||
'Partition name' => 'Partitie naam',
|
'Partition name' => 'Partitie naam',
|
||||||
'Values' => 'Waarden',
|
'Values' => 'Waarden',
|
||||||
@@ -225,6 +226,7 @@ $translations = array(
|
|||||||
'%d in total' => '%d in totaal',
|
'%d in total' => '%d in totaal',
|
||||||
'Permanent login' => 'Blijf aangemeld',
|
'Permanent login' => 'Blijf aangemeld',
|
||||||
'Search data in tables' => 'Zoeken in database',
|
'Search data in tables' => 'Zoeken in database',
|
||||||
|
'as a regular expression' => 'als een regular expression',
|
||||||
'Schema' => 'Schema',
|
'Schema' => 'Schema',
|
||||||
'Alter schema' => 'Schema wijzigen',
|
'Alter schema' => 'Schema wijzigen',
|
||||||
'Create schema' => 'Schema maken',
|
'Create schema' => 'Schema maken',
|
||||||
@@ -266,4 +268,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,
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
$translations = array(
|
$translations = array(
|
||||||
|
'Home' => null,
|
||||||
'System' => 'System',
|
'System' => 'System',
|
||||||
'Server' => 'Server',
|
'Server' => 'Server',
|
||||||
'Username' => 'Brukernavn',
|
'Username' => 'Brukernavn',
|
||||||
@@ -9,8 +10,8 @@ $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/" target="_blank">Implement</a> %s method to make it permanent.' => 'Master-passord er utløpt. <a href="https://www.adminer.org/en/extension/" target="_blank">Implementer</a> en metode for %s for å gjøre det permanent.',
|
'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.',
|
||||||
'No extension' => 'Ingen utvidelse',
|
'No extension' => 'Ingen utvidelse',
|
||||||
@@ -68,7 +69,6 @@ $translations = array(
|
|||||||
'Use' => 'Bruk',
|
'Use' => 'Bruk',
|
||||||
'Select database' => 'Velg database',
|
'Select database' => 'Velg database',
|
||||||
'Invalid database.' => 'Ugyldig database.',
|
'Invalid database.' => 'Ugyldig database.',
|
||||||
'Create new database' => 'Lag ny database',
|
|
||||||
'Database has been dropped.' => 'Databasen har blitt slettet.',
|
'Database has been dropped.' => 'Databasen har blitt slettet.',
|
||||||
'Databases have been dropped.' => 'Databasene har blitt slettet.',
|
'Databases have been dropped.' => 'Databasene har blitt slettet.',
|
||||||
'Database has been created.' => 'Databasen er opprettet.',
|
'Database has been created.' => 'Databasen er opprettet.',
|
||||||
@@ -152,6 +152,7 @@ $translations = array(
|
|||||||
'Remove' => 'Fjern',
|
'Remove' => 'Fjern',
|
||||||
'Maximum number of allowed fields exceeded. Please increase %s.' => 'Maksimum antall feltnavn overskredet - venligst øk %s.',
|
'Maximum number of allowed fields exceeded. Please increase %s.' => 'Maksimum antall feltnavn overskredet - venligst øk %s.',
|
||||||
'Partition by' => 'Partisjoner ved',
|
'Partition by' => 'Partisjoner ved',
|
||||||
|
'Partition' => null,
|
||||||
'Partitions' => 'Partisjoner',
|
'Partitions' => 'Partisjoner',
|
||||||
'Partition name' => 'Partisjonsnavn',
|
'Partition name' => 'Partisjonsnavn',
|
||||||
'Values' => 'Verdier',
|
'Values' => 'Verdier',
|
||||||
@@ -200,6 +201,7 @@ $translations = array(
|
|||||||
'Search' => 'Søk',
|
'Search' => 'Søk',
|
||||||
'anywhere' => 'hvorsomhelst',
|
'anywhere' => 'hvorsomhelst',
|
||||||
'Search data in tables' => 'Søk data i tabeller',
|
'Search data in tables' => 'Søk data i tabeller',
|
||||||
|
'as a regular expression' => null,
|
||||||
'Sort' => 'Sorter',
|
'Sort' => 'Sorter',
|
||||||
'descending' => 'minkende',
|
'descending' => 'minkende',
|
||||||
'Limit' => 'Skranke',
|
'Limit' => 'Skranke',
|
||||||
@@ -213,7 +215,7 @@ $translations = array(
|
|||||||
'last' => 'siste',
|
'last' => 'siste',
|
||||||
'Load more data' => 'Last mer data',
|
'Load more data' => 'Last mer data',
|
||||||
'Loading' => 'Laster',
|
'Loading' => 'Laster',
|
||||||
'whole result' => 'hele resultatet',
|
'Whole result' => 'Hele resultatet',
|
||||||
'%d byte(s)' => array('%d byte', '%d bytes'),
|
'%d byte(s)' => array('%d byte', '%d bytes'),
|
||||||
'Import' => 'Importer',
|
'Import' => 'Importer',
|
||||||
'%d row(s) have been imported.' => array('%d rad er importert.', '%d rader er importert.'),
|
'%d row(s) have been imported.' => array('%d rad er importert.', '%d rader er importert.'),
|
||||||
@@ -280,4 +282,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,
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
<?php
|
<?php
|
||||||
$translations = array(
|
$translations = array(
|
||||||
// label for database system selection (MySQL, SQLite, ...)
|
// label for database system selection (MySQL, SQLite, ...)
|
||||||
|
'Home' => null,
|
||||||
'System' => 'Rodzaj bazy',
|
'System' => 'Rodzaj bazy',
|
||||||
'Server' => 'Serwer',
|
'Server' => 'Serwer',
|
||||||
'Username' => 'Użytkownik',
|
'Username' => 'Użytkownik',
|
||||||
@@ -10,14 +11,16 @@ $translations = array(
|
|||||||
'Logout' => 'Wyloguj',
|
'Logout' => 'Wyloguj',
|
||||||
'Logged as: %s' => 'Zalogowany jako: %s',
|
'Logged as: %s' => 'Zalogowany jako: %s',
|
||||||
'Logout successful.' => 'Wylogowano pomyślnie.',
|
'Logout successful.' => 'Wylogowano pomyślnie.',
|
||||||
'Invalid credentials.' => 'Nieprawidłowe dane logowania.',
|
'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 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/" target="_blank">Implement</a> %s method to make it permanent.' => 'Ważność hasła głównego wygasła. <a href="https://www.adminer.org/pl/extension/" target="_blank">Zaimplementuj</a> własną metodę %s, aby ustawić je na stałe.',
|
'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',
|
||||||
'Invalid CSRF token. Send the form again.' => 'Nieprawidłowy token CSRF. Spróbuj wysłać formularz ponownie.',
|
'Invalid CSRF token. Send the form again.' => 'Nieprawidłowy token CSRF. Spróbuj wysłać formularz ponownie.',
|
||||||
'If you did not send this request from Adminer then close this page.' => 'Jeżeli nie wywołałeś tej strony z Adminera, zamknij to okno.',
|
'If you did not send this request from Adminer then close this page.' => 'Jeżeli nie wywołałeś tej strony z Adminera, zamknij to okno.',
|
||||||
'No extension' => 'Brak rozszerzenia',
|
'No extension' => 'Brak rozszerzenia',
|
||||||
'None of the supported PHP extensions (%s) are available.' => 'Żadne z rozszerzeń PHP umożliwiających połączenie się z bazą danych (%s) nie jest dostępne.',
|
'None of the supported PHP extensions (%s) are available.' => 'Żadne z rozszerzeń PHP umożliwiających połączenie się z bazą danych (%s) nie jest dostępne.',
|
||||||
|
'Connecting to privileged ports is not allowed.' => 'Łączenie do portów uprzywilejowanych jest niedozwolone.',
|
||||||
'Session support must be enabled.' => 'Wymagana jest obsługa sesji w PHP.',
|
'Session support must be enabled.' => 'Wymagana jest obsługa sesji w PHP.',
|
||||||
'Session expired, please login again.' => 'Sesja wygasła, zaloguj się ponownie.',
|
'Session expired, please login again.' => 'Sesja wygasła, zaloguj się ponownie.',
|
||||||
'%s version: %s through PHP extension %s' => 'Wersja %s: %s za pomocą %s',
|
'%s version: %s through PHP extension %s' => 'Wersja %s: %s za pomocą %s',
|
||||||
@@ -40,15 +43,16 @@ $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.'),
|
||||||
'No commands to execute.' => 'Nic do wykonania.',
|
'No commands to execute.' => 'Nic do wykonania.',
|
||||||
'Error in query' => 'Błąd w zapytaniu',
|
'Error in query' => 'Błąd w zapytaniu',
|
||||||
|
'ATTACH queries are not supported.' => 'Zapytania ATTACH są niewspierane.',
|
||||||
'Execute' => 'Wykonaj',
|
'Execute' => 'Wykonaj',
|
||||||
'Stop on error' => 'Zatrzymaj w przypadku błędu',
|
'Stop on error' => 'Zatrzymaj w przypadku błędu',
|
||||||
'Show only errors' => 'Pokaż tylko błędy',
|
'Show only errors' => 'Pokaż tylko błędy',
|
||||||
@@ -57,7 +61,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',
|
||||||
@@ -69,20 +73,19 @@ $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',
|
||||||
'Select database' => 'Wybierz bazę danych',
|
'Select database' => 'Wybierz bazę danych',
|
||||||
'Invalid database.' => 'Nie znaleziono bazy danych.',
|
'Invalid database.' => 'Nie znaleziono bazy danych.',
|
||||||
'Create new database' => 'Utwórz nową bazę danych',
|
|
||||||
'Database has been dropped.' => 'Baza danych została usunięta.',
|
'Database has been dropped.' => 'Baza danych została usunięta.',
|
||||||
'Databases have been dropped.' => 'Bazy danych zostały usunięte.',
|
'Databases have been dropped.' => 'Bazy danych zostały usunięte.',
|
||||||
'Database has been created.' => 'Baza danych została utworzona.',
|
'Database has been created.' => 'Baza danych została utworzona.',
|
||||||
@@ -91,10 +94,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',
|
||||||
@@ -117,7 +120,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',
|
||||||
@@ -130,7 +133,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.',
|
||||||
@@ -143,7 +146,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',
|
||||||
@@ -168,6 +171,7 @@ $translations = array(
|
|||||||
'Default value' => 'Wartość domyślna',
|
'Default value' => 'Wartość domyślna',
|
||||||
'Default values' => 'Wartości domyślne',
|
'Default values' => 'Wartości domyślne',
|
||||||
'Drop' => 'Usuń',
|
'Drop' => 'Usuń',
|
||||||
|
'Drop %s?' => 'Usunąć %s?',
|
||||||
'Are you sure?' => 'Czy jesteś pewien?',
|
'Are you sure?' => 'Czy jesteś pewien?',
|
||||||
'Size' => 'Wielkość',
|
'Size' => 'Wielkość',
|
||||||
'Compute' => 'Oblicz',
|
'Compute' => 'Oblicz',
|
||||||
@@ -175,28 +179,28 @@ $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',
|
||||||
|
'Partition' => null,
|
||||||
'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.',
|
||||||
'View has been altered.' => 'Perspektywa została zmieniona.',
|
'View has been altered.' => 'Perspektywa została zmieniona.',
|
||||||
'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ę',
|
||||||
'Create materialized view' => 'Utwórz zmaterializowaną 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.',
|
||||||
@@ -212,7 +216,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.',
|
||||||
@@ -223,7 +227,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',
|
||||||
@@ -232,31 +236,34 @@ $translations = array(
|
|||||||
'Search' => 'Szukaj',
|
'Search' => 'Szukaj',
|
||||||
'anywhere' => 'gdziekolwiek',
|
'anywhere' => 'gdziekolwiek',
|
||||||
'Search data in tables' => 'Wyszukaj we wszystkich tabelach',
|
'Search data in tables' => 'Wyszukaj we wszystkich tabelach',
|
||||||
|
'as a regular expression' => null,
|
||||||
'Sort' => 'Sortuj',
|
'Sort' => 'Sortuj',
|
||||||
'descending' => 'malejąco',
|
'descending' => 'malejąco',
|
||||||
'Limit' => 'Limit',
|
'Limit' => 'Limit',
|
||||||
|
'Limit rows' => 'Limit rekordów',
|
||||||
'Text length' => 'Długość tekstu',
|
'Text length' => 'Długość tekstu',
|
||||||
'Action' => 'Czynność',
|
'Action' => 'Czynność',
|
||||||
'Full table scan' => 'Wymaga pełnego przeskanowania tabeli',
|
'Full table scan' => 'Wymaga pełnego przeskanowania tabeli',
|
||||||
'Unable to select the table' => 'Nie udało się pobrać danych z tabeli',
|
'Unable to select the table' => 'Nie udało się pobrać danych z tabeli',
|
||||||
'No rows.' => 'Brak rekordów.',
|
'No rows.' => 'Brak rekordów.',
|
||||||
|
'%d / ' => '%d / ',
|
||||||
'%d row(s)' => array('%d rekord', '%d rekordy', '%d rekordów'),
|
'%d row(s)' => array('%d rekord', '%d rekordy', '%d rekordów'),
|
||||||
'Page' => 'Strona',
|
'Page' => 'Strona',
|
||||||
'last' => 'ostatni',
|
'last' => 'ostatni',
|
||||||
'Load more data' => 'Wczytaj więcej danych',
|
'Load more data' => 'Wczytaj więcej danych',
|
||||||
'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.',
|
||||||
@@ -277,14 +284,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',
|
||||||
@@ -294,7 +301,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',
|
||||||
@@ -305,11 +312,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',
|
||||||
@@ -318,7 +325,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ę',
|
||||||
@@ -326,11 +333,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,
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -1,14 +1,14 @@
|
|||||||
<?php
|
<?php
|
||||||
$translations = array(
|
$translations = array(
|
||||||
|
'Home' => null,
|
||||||
'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',
|
||||||
'Select database' => 'Selecionar Base de dados',
|
'Select database' => 'Selecionar Base de dados',
|
||||||
'Invalid database.' => 'Base de dados inválida.',
|
'Invalid database.' => 'Base de dados inválida.',
|
||||||
'Create new database' => 'Criar nova base de dados',
|
|
||||||
'Table has been dropped.' => 'A Tabela foi eliminada.',
|
'Table has been dropped.' => 'A Tabela foi eliminada.',
|
||||||
'Table has been altered.' => 'A Tabela foi alterada.',
|
'Table has been altered.' => 'A Tabela foi alterada.',
|
||||||
'Table has been created.' => 'A Tabela foi criada.',
|
'Table has been created.' => 'A Tabela foi criada.',
|
||||||
@@ -48,7 +48,7 @@ $translations = array(
|
|||||||
'Indexes have been altered.' => 'Os Índices foram alterados.',
|
'Indexes have been altered.' => 'Os Índices foram alterados.',
|
||||||
'Indexes' => 'Índices',
|
'Indexes' => 'Índices',
|
||||||
'Alter indexes' => 'Alterar índices',
|
'Alter indexes' => 'Alterar índices',
|
||||||
'Add next' => 'Adicionar proximo',
|
'Add next' => 'Adicionar próximo',
|
||||||
'Language' => 'Idioma',
|
'Language' => 'Idioma',
|
||||||
'Select' => 'Selecionar',
|
'Select' => 'Selecionar',
|
||||||
'New item' => 'Novo Registro',
|
'New item' => 'Novo Registro',
|
||||||
@@ -67,19 +67,19 @@ $translations = array(
|
|||||||
'Foreign keys' => 'Chaves estrangeiras',
|
'Foreign keys' => 'Chaves estrangeiras',
|
||||||
'Triggers' => 'Triggers',
|
'Triggers' => 'Triggers',
|
||||||
'View' => 'Visão',
|
'View' => 'Visão',
|
||||||
'Unable to select the table' => 'Não é possivel selecionar a Tabela',
|
'Unable to select the table' => 'Não é possível selecionar a Tabela',
|
||||||
'Invalid CSRF token. Send the form again.' => 'Token CSRF inválido. Enviar o formulario novamente.',
|
'Invalid CSRF token. Send the form again.' => 'Token CSRF inválido. Enviar o formulário novamente.',
|
||||||
'Comment' => 'Comentário',
|
'Comment' => 'Comentário',
|
||||||
'Default values' => 'Valores padrões',
|
'Default values' => 'Valores padrões',
|
||||||
'%d byte(s)' => array('%d byte', '%d bytes'),
|
'%d byte(s)' => array('%d byte', '%d bytes'),
|
||||||
'No commands to execute.' => 'Nenhum comando para executar.',
|
'No commands to execute.' => 'Nenhum comando para executar.',
|
||||||
'Unable to upload a file.' => 'Não é possível enviar o arquivo.',
|
'Unable to upload a file.' => 'Não é possível enviar o arquivo.',
|
||||||
'File upload' => 'Importar arquivo',
|
'File upload' => 'Importar arquivo',
|
||||||
'File uploads are disabled.' => 'Importação de arquivos desablilitada.',
|
'File uploads are disabled.' => 'Importação de arquivos desabilitada.',
|
||||||
'Routine has been called, %d row(s) affected.' => array('Rotina executada, %d registro afetado.', 'Rotina executada, %d registros afetados.'),
|
'Routine has been called, %d row(s) affected.' => array('Rotina executada, %d registro afetado.', 'Rotina executada, %d registros afetados.'),
|
||||||
'Call' => 'Chamar',
|
'Call' => 'Chamar',
|
||||||
'No extension' => 'Não há extension',
|
'No extension' => 'Não há extension',
|
||||||
'None of the supported PHP extensions (%s) are available.' => 'Nenhuma das extensões PHP suportadas (%s) está disponivel.',
|
'None of the supported PHP extensions (%s) are available.' => 'Nenhuma das extensões PHP suportadas (%s) está disponível.',
|
||||||
'Session support must be enabled.' => 'Suporte a sessões deve estar habilitado.',
|
'Session support must be enabled.' => 'Suporte a sessões deve estar habilitado.',
|
||||||
'Session expired, please login again.' => 'Sessão expirada, por favor logue-se novamente.',
|
'Session expired, please login again.' => 'Sessão expirada, por favor logue-se novamente.',
|
||||||
'Text length' => 'Tamanho de texto',
|
'Text length' => 'Tamanho de texto',
|
||||||
@@ -170,7 +170,7 @@ $translations = array(
|
|||||||
'Index Length' => 'Tamanho de índice',
|
'Index Length' => 'Tamanho de índice',
|
||||||
'Data Free' => 'Espaço Livre',
|
'Data Free' => 'Espaço Livre',
|
||||||
'Collation' => 'Colação',
|
'Collation' => 'Colação',
|
||||||
'Analyze' => 'Analizar',
|
'Analyze' => 'Analisar',
|
||||||
'Optimize' => 'Otimizar',
|
'Optimize' => 'Otimizar',
|
||||||
'Check' => 'Verificar',
|
'Check' => 'Verificar',
|
||||||
'Repair' => 'Reparar',
|
'Repair' => 'Reparar',
|
||||||
@@ -187,10 +187,11 @@ $translations = array(
|
|||||||
'original' => 'original',
|
'original' => 'original',
|
||||||
'Tables have been dropped.' => 'As Tabelas foram eliminadas.',
|
'Tables have been dropped.' => 'As Tabelas foram eliminadas.',
|
||||||
'%d item(s) have been affected.' => array('%d item foi afetado.', '%d itens foram afetados.'),
|
'%d item(s) have been affected.' => array('%d item foi afetado.', '%d itens foram afetados.'),
|
||||||
'whole result' => 'resultado completo',
|
'Whole result' => 'Resultado completo',
|
||||||
'Clone' => 'Clonar',
|
'Clone' => 'Clonar',
|
||||||
'Maximum number of allowed fields exceeded. Please increase %s.' => 'Quantidade máxima de campos permitidos excedidos. Por favor aumente %s.',
|
'Maximum number of allowed fields exceeded. Please increase %s.' => 'Quantidade máxima de campos permitidos excedidos. Por favor aumente %s.',
|
||||||
'Partition by' => 'Particionar por',
|
'Partition by' => 'Particionar por',
|
||||||
|
'Partition' => null,
|
||||||
'Partitions' => 'Partições',
|
'Partitions' => 'Partições',
|
||||||
'Partition name' => 'Nome da Partição',
|
'Partition name' => 'Nome da Partição',
|
||||||
'Values' => 'Valores',
|
'Values' => 'Valores',
|
||||||
@@ -210,7 +211,7 @@ $translations = array(
|
|||||||
'Maximum allowed file size is %sB.' => 'Tamanho máximo do arquivo permitido é %sB.',
|
'Maximum allowed file size is %sB.' => 'Tamanho máximo do arquivo permitido é %sB.',
|
||||||
'Numbers' => 'Números',
|
'Numbers' => 'Números',
|
||||||
'Date and time' => 'Data e hora',
|
'Date and time' => 'Data e hora',
|
||||||
'Strings' => 'Cadena',
|
'Strings' => 'Strings',
|
||||||
'Binary' => 'Binário',
|
'Binary' => 'Binário',
|
||||||
'Lists' => 'Listas',
|
'Lists' => 'Listas',
|
||||||
'Editor' => 'Editor',
|
'Editor' => 'Editor',
|
||||||
@@ -225,6 +226,7 @@ $translations = array(
|
|||||||
'Permanent login' => 'Login permanente',
|
'Permanent login' => 'Login permanente',
|
||||||
'Databases have been dropped.' => 'A Base de dados foi apagada.',
|
'Databases have been dropped.' => 'A Base de dados foi apagada.',
|
||||||
'Search data in tables' => 'Buscar dados nas Tabelas',
|
'Search data in tables' => 'Buscar dados nas Tabelas',
|
||||||
|
'as a regular expression' => null,
|
||||||
'Schema' => 'Esquema',
|
'Schema' => 'Esquema',
|
||||||
'Alter schema' => 'Alterar esquema',
|
'Alter schema' => 'Alterar esquema',
|
||||||
'Create schema' => 'Criar esquema',
|
'Create schema' => 'Criar esquema',
|
||||||
@@ -261,4 +263,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,
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -1,14 +1,14 @@
|
|||||||
<?php
|
<?php
|
||||||
$translations = array(
|
$translations = array(
|
||||||
|
'Home' => null,
|
||||||
'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',
|
||||||
'Select database' => 'Selecionar Base de dados',
|
'Select database' => 'Selecionar Base de dados',
|
||||||
'Invalid database.' => 'Base de dados inválida.',
|
'Invalid database.' => 'Base de dados inválida.',
|
||||||
'Create new database' => 'Criar nova base de dados',
|
|
||||||
'Table has been dropped.' => 'Tabela eliminada.',
|
'Table has been dropped.' => 'Tabela eliminada.',
|
||||||
'Table has been altered.' => 'Tabela modificada.',
|
'Table has been altered.' => 'Tabela modificada.',
|
||||||
'Table has been created.' => 'Tabela criada.',
|
'Table has been created.' => 'Tabela criada.',
|
||||||
@@ -187,10 +187,11 @@ $translations = array(
|
|||||||
'original' => 'original',
|
'original' => 'original',
|
||||||
'Tables have been dropped.' => 'As tabelas foram eliminadas.',
|
'Tables have been dropped.' => 'As tabelas foram eliminadas.',
|
||||||
'%d item(s) have been affected.' => array('%d item afetado.', '%d itens afetados.'),
|
'%d item(s) have been affected.' => array('%d item afetado.', '%d itens afetados.'),
|
||||||
'whole result' => 'resultado completo',
|
'Whole result' => 'Resultado completo',
|
||||||
'Clone' => 'Clonar',
|
'Clone' => 'Clonar',
|
||||||
'Maximum number of allowed fields exceeded. Please increase %s.' => 'Quantidade máxima de campos permitidos excedidos. Por favor aumente %s.',
|
'Maximum number of allowed fields exceeded. Please increase %s.' => 'Quantidade máxima de campos permitidos excedidos. Por favor aumente %s.',
|
||||||
'Partition by' => 'Particionar por',
|
'Partition by' => 'Particionar por',
|
||||||
|
'Partition' => null,
|
||||||
'Partitions' => 'Partições',
|
'Partitions' => 'Partições',
|
||||||
'Partition name' => 'Nome da Partição',
|
'Partition name' => 'Nome da Partição',
|
||||||
'Values' => 'Valores',
|
'Values' => 'Valores',
|
||||||
@@ -225,6 +226,7 @@ $translations = array(
|
|||||||
'Permanent login' => 'Memorizar a senha',
|
'Permanent login' => 'Memorizar a senha',
|
||||||
'Databases have been dropped.' => 'Bases de dados eliminadas.',
|
'Databases have been dropped.' => 'Bases de dados eliminadas.',
|
||||||
'Search data in tables' => 'Pesquisar dados nas Tabelas',
|
'Search data in tables' => 'Pesquisar dados nas Tabelas',
|
||||||
|
'as a regular expression' => null,
|
||||||
'Schema' => 'Esquema',
|
'Schema' => 'Esquema',
|
||||||
'Alter schema' => 'Modificar esquema',
|
'Alter schema' => 'Modificar esquema',
|
||||||
'Create schema' => 'Criar esquema',
|
'Create schema' => 'Criar esquema',
|
||||||
@@ -261,4 +263,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,
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -1,14 +1,14 @@
|
|||||||
<?php
|
<?php
|
||||||
$translations = array(
|
$translations = array(
|
||||||
|
'Home' => null,
|
||||||
'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',
|
||||||
'Select database' => 'Alege baza de date',
|
'Select database' => 'Alege baza de date',
|
||||||
'Invalid database.' => 'Bază de deate invalidă.',
|
'Invalid database.' => 'Bază de deate invalidă.',
|
||||||
'Create new database' => 'Crează o bază de date nouă',
|
|
||||||
'Table has been dropped.' => 'Tabelul a fost șters.',
|
'Table has been dropped.' => 'Tabelul a fost șters.',
|
||||||
'Table has been altered.' => 'Tabelul a fost modificat.',
|
'Table has been altered.' => 'Tabelul a fost modificat.',
|
||||||
'Table has been created.' => 'Tabelul a fost creat.',
|
'Table has been created.' => 'Tabelul a fost creat.',
|
||||||
@@ -186,10 +186,11 @@ $translations = array(
|
|||||||
'Save and continue edit' => 'Salvează și continuă editarea',
|
'Save and continue edit' => 'Salvează și continuă editarea',
|
||||||
'original' => 'original',
|
'original' => 'original',
|
||||||
'%d item(s) have been affected.' => array('A fost modificată %d înscriere.', 'Au fost modificate %d înscrieri.'),
|
'%d item(s) have been affected.' => array('A fost modificată %d înscriere.', 'Au fost modificate %d înscrieri.'),
|
||||||
'whole result' => 'tot rezultatul',
|
'Whole result' => 'Tot rezultatul',
|
||||||
'Tables have been dropped.' => 'Tabelele au fost șterse.',
|
'Tables have been dropped.' => 'Tabelele au fost șterse.',
|
||||||
'Clone' => 'Clonează',
|
'Clone' => 'Clonează',
|
||||||
'Partition by' => 'Împarte',
|
'Partition by' => 'Împarte',
|
||||||
|
'Partition' => null,
|
||||||
'Partitions' => 'Secțiuni',
|
'Partitions' => 'Secțiuni',
|
||||||
'Partition name' => 'Denumirea secțiunii',
|
'Partition name' => 'Denumirea secțiunii',
|
||||||
'Values' => 'Parametru',
|
'Values' => 'Parametru',
|
||||||
@@ -225,6 +226,7 @@ $translations = array(
|
|||||||
'Permanent login' => 'Logare permanentă',
|
'Permanent login' => 'Logare permanentă',
|
||||||
'Databases have been dropped.' => 'Bazele de date au fost șterse.',
|
'Databases have been dropped.' => 'Bazele de date au fost șterse.',
|
||||||
'Search data in tables' => 'Caută în tabele',
|
'Search data in tables' => 'Caută în tabele',
|
||||||
|
'as a regular expression' => null,
|
||||||
'Schema' => 'Schema',
|
'Schema' => 'Schema',
|
||||||
'Alter schema' => 'Modifică schema',
|
'Alter schema' => 'Modifică schema',
|
||||||
'Create schema' => 'Crează o schemă',
|
'Create schema' => 'Crează o schemă',
|
||||||
@@ -266,4 +268,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,
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -1,21 +1,21 @@
|
|||||||
<?php
|
<?php
|
||||||
$translations = array(
|
$translations = array(
|
||||||
|
'Home' => null,
|
||||||
'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.' => 'Неверная база данных.',
|
||||||
'Create new 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' => 'Тип',
|
||||||
@@ -30,7 +30,7 @@ $translations = array(
|
|||||||
'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' => 'Выбрать',
|
||||||
@@ -68,7 +68,7 @@ $translations = array(
|
|||||||
'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 байтов'),
|
'%d byte(s)' => array('%d байт', '%d байта', '%d байтов'),
|
||||||
@@ -91,13 +91,13 @@ $translations = array(
|
|||||||
'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.' => 'Представление было создано.',
|
||||||
@@ -135,11 +135,11 @@ $translations = array(
|
|||||||
'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' => 'Переместить вниз',
|
||||||
@@ -182,14 +182,15 @@ $translations = array(
|
|||||||
'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' => 'исходный',
|
||||||
'%d item(s) have been affected.' => array('Была изменена %d запись.', 'Были изменены %d записи.', 'Было изменено %d записей.'),
|
'%d item(s) have been affected.' => array('Была изменена %d запись.', 'Были изменены %d записи.', 'Было изменено %d записей.'),
|
||||||
'whole result' => 'весь результат',
|
'Whole result' => 'Весь результат',
|
||||||
'Tables have been dropped.' => 'Таблицы были удалены.',
|
'Tables have been dropped.' => 'Таблицы были удалены.',
|
||||||
'Clone' => 'Клонировать',
|
'Clone' => 'Клонировать',
|
||||||
'Partition by' => 'Разделить по',
|
'Partition by' => 'Разделить по',
|
||||||
|
'Partition' => null,
|
||||||
'Partitions' => 'Разделы',
|
'Partitions' => 'Разделы',
|
||||||
'Partition name' => 'Название раздела',
|
'Partition name' => 'Название раздела',
|
||||||
'Values' => 'Параметры',
|
'Values' => 'Параметры',
|
||||||
@@ -203,20 +204,20 @@ $translations = array(
|
|||||||
'[yyyy]-mm-dd' => 'дд.мм.[гггг]',
|
'[yyyy]-mm-dd' => 'дд.мм.[гггг]',
|
||||||
'History' => 'История',
|
'History' => 'История',
|
||||||
'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.' => 'Колонки должны иметь одинаковые типы данных, в результирующей колонке должен быть индекс, данные для импорта должны существовать.',
|
'Source and target columns must have the same data type, there must be an index on the target columns and referenced data must exist.' => 'Поля должны иметь одинаковые типы данных, в результирующем поле должен быть индекс, данные для импорта должны существовать.',
|
||||||
'Relations' => 'Реляции',
|
'Relations' => 'Отношения',
|
||||||
'Run file' => 'Запустить файл',
|
'Run file' => 'Запустить файл',
|
||||||
'Clear' => 'Очистить',
|
'Clear' => 'Очистить',
|
||||||
'Maximum allowed file size is %sB.' => 'Максимальный разрешённый размер файла - %sB.',
|
'Maximum allowed file size is %sB.' => 'Максимальный разрешённый размер файла — %sB.',
|
||||||
'Numbers' => 'Число',
|
'Numbers' => 'Числа',
|
||||||
'Date and time' => 'Дата и время',
|
'Date and time' => 'Дата и время',
|
||||||
'Strings' => 'Строки',
|
'Strings' => 'Строки',
|
||||||
'Binary' => 'Двоичный тип',
|
'Binary' => 'Двоичный тип',
|
||||||
'Lists' => 'Списки',
|
'Lists' => 'Списки',
|
||||||
'Editor' => 'Редактор',
|
'Editor' => 'Редактор',
|
||||||
'E-mail' => 'Электропочта',
|
'E-mail' => 'Эл. почта',
|
||||||
'From' => 'От',
|
'From' => 'От',
|
||||||
'Subject' => 'Кому',
|
'Subject' => 'Тема',
|
||||||
'Send' => 'Послать',
|
'Send' => 'Послать',
|
||||||
'%d e-mail(s) have been sent.' => array('Было отправлено %d письмо.', 'Было отправлено %d письма.', 'Было отправлено %d писем.'),
|
'%d e-mail(s) have been sent.' => array('Было отправлено %d письмо.', 'Было отправлено %d письма.', 'Было отправлено %d писем.'),
|
||||||
'Webserver file %s' => 'Файл %s на вебсервере',
|
'Webserver file %s' => 'Файл %s на вебсервере',
|
||||||
@@ -225,6 +226,7 @@ $translations = array(
|
|||||||
'Permanent login' => 'Оставаться в системе',
|
'Permanent login' => 'Оставаться в системе',
|
||||||
'Databases have been dropped.' => 'Базы данных удалены.',
|
'Databases have been dropped.' => 'Базы данных удалены.',
|
||||||
'Search data in tables' => 'Поиск в таблицах',
|
'Search data in tables' => 'Поиск в таблицах',
|
||||||
|
'as a regular expression' => 'как регулярное выражение',
|
||||||
'Schema' => 'Схема',
|
'Schema' => 'Схема',
|
||||||
'Alter schema' => 'Изменить схему',
|
'Alter schema' => 'Изменить схему',
|
||||||
'Create schema' => 'Новая схема',
|
'Create schema' => 'Новая схема',
|
||||||
@@ -242,7 +244,7 @@ $translations = array(
|
|||||||
'Alter type' => 'Изменить тип',
|
'Alter type' => 'Изменить тип',
|
||||||
'Type has been dropped.' => 'Тип удален.',
|
'Type has been dropped.' => 'Тип удален.',
|
||||||
'Type has been created.' => 'Создан новый тип.',
|
'Type has been created.' => 'Создан новый тип.',
|
||||||
'Ctrl+click on a value to modify it.' => 'Ctrl+кликни по значению, чтобы его изменить.',
|
'Ctrl+click on a value to modify it.' => 'Выполните Ctrl+Щелчок мышью по значению, чтобы его изменить.',
|
||||||
'Use edit link to modify this value.' => 'Изменить это значение можно с помощью ссылки «изменить».',
|
'Use edit link to modify this value.' => 'Изменить это значение можно с помощью ссылки «изменить».',
|
||||||
'last' => 'последняя',
|
'last' => 'последняя',
|
||||||
'From server' => 'С сервера',
|
'From server' => 'С сервера',
|
||||||
@@ -266,4 +268,49 @@ $translations = array(
|
|||||||
'Permanent link' => 'Постоянная ссылка',
|
'Permanent link' => 'Постоянная ссылка',
|
||||||
'Edit all' => 'Редактировать всё',
|
'Edit all' => 'Редактировать всё',
|
||||||
'HH:MM:SS' => 'ЧЧ:ММ:СС',
|
'HH:MM:SS' => 'ЧЧ:ММ:СС',
|
||||||
|
'Tables have been optimized.' => 'Таблицы оптимизированы.',
|
||||||
|
'Materialized view' => 'Материализованное представление',
|
||||||
|
'Vacuum' => 'Вакуум',
|
||||||
|
'Selected' => 'Выбранные',
|
||||||
|
'File must be in UTF-8 encoding.' => 'Файл должен быть в кодировке UTF-8.',
|
||||||
|
'Modify' => 'Изменить',
|
||||||
|
'Loading' => 'Загрузка',
|
||||||
|
'Load more data' => 'Загрузить ещё данные',
|
||||||
|
'ATTACH queries are not supported.' => 'ATTACH-запросы не поддерживаются.',
|
||||||
|
'%d / ' => '%d / ',
|
||||||
|
'Limit rows' => 'Лимит строк',
|
||||||
|
'Default value' => 'Значение по умолчанию',
|
||||||
|
'Full table scan' => 'Анализ полной таблицы',
|
||||||
|
'Too many unsuccessful logins, try again in %d minute(s).' => array('Слишком много неудачных попыток входа. Попробуйте снова через %d минуту.', 'Слишком много неудачных попыток входа. Попробуйте снова через %d минуты.', 'Слишком много неудачных попыток входа. Попробуйте снова через %d минут.'),
|
||||||
|
'Master password expired. <a href="https://www.adminer.org/en/extension/"%s>Implement</a> %s method to make it permanent.' => 'Мастер-пароль истёк. <a href="https://www.adminer.org/en/extension/"%s>Реализуйте</a> метод %s, чтобы сделать его постоянным.',
|
||||||
|
'If you did not send this request from Adminer then close this page.' => 'Если вы не посылали этот запрос из Adminer, закройте эту страницу.',
|
||||||
|
'You can upload a big SQL file via FTP and import it from server.' => 'Вы можете закачать большой SQL-файл по FTP и затем импортировать его с сервера.',
|
||||||
|
'Size' => 'Размер',
|
||||||
|
'Compute' => 'Вычислить',
|
||||||
|
'You are offline.' => 'Вы не выполнили вход.',
|
||||||
|
'You have no privileges to update this table.' => 'У вас нет прав на обновление этой таблицы.',
|
||||||
|
'Saving' => 'Сохранение',
|
||||||
|
'yes' => 'да',
|
||||||
|
'no' => 'нет',
|
||||||
|
'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,
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -1,14 +1,14 @@
|
|||||||
<?php
|
<?php
|
||||||
$translations = array(
|
$translations = array(
|
||||||
|
'Home' => 'Domov',
|
||||||
'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',
|
||||||
'Select database' => 'Vybrať databázu',
|
'Select database' => 'Vybrať databázu',
|
||||||
'Invalid database.' => 'Nesprávna databáza.',
|
'Invalid database.' => 'Nesprávna databáza.',
|
||||||
'Create new database' => 'Vytvoriť novú databázu',
|
|
||||||
'Table has been dropped.' => 'Tabuľka bola odstránená.',
|
'Table has been dropped.' => 'Tabuľka bola odstránená.',
|
||||||
'Table has been altered.' => 'Tabuľka bola zmenená.',
|
'Table has been altered.' => 'Tabuľka bola zmenená.',
|
||||||
'Table has been created.' => 'Tabuľka bola vytvorená.',
|
'Table has been created.' => 'Tabuľka bola vytvorená.',
|
||||||
@@ -71,7 +71,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ť.',
|
||||||
@@ -95,8 +95,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ý.',
|
||||||
@@ -188,9 +188,10 @@ $translations = array(
|
|||||||
'Move to other database' => 'Presunúť do inej databázy',
|
'Move to other database' => 'Presunúť do inej databázy',
|
||||||
'Move' => 'Presunúť',
|
'Move' => 'Presunúť',
|
||||||
'%d item(s) have been affected.' => '%d položiek bolo ovplyvnených.',
|
'%d item(s) have been affected.' => '%d položiek bolo ovplyvnených.',
|
||||||
'whole result' => 'celý výsledok',
|
'Whole result' => 'Celý výsledok',
|
||||||
'Clone' => 'Klonovať',
|
'Clone' => 'Klonovať',
|
||||||
'Partition by' => 'Rozdeliť podľa',
|
'Partition by' => 'Rozdeliť podľa',
|
||||||
|
'Partition' => 'Oddiel',
|
||||||
'Partitions' => 'Oddiely',
|
'Partitions' => 'Oddiely',
|
||||||
'Partition name' => 'Názov oddielu',
|
'Partition name' => 'Názov oddielu',
|
||||||
'Values' => 'Hodnoty',
|
'Values' => 'Hodnoty',
|
||||||
@@ -225,6 +226,7 @@ $translations = array(
|
|||||||
'Permanent login' => 'Trvalé prihlásenie',
|
'Permanent login' => 'Trvalé prihlásenie',
|
||||||
'%d in total' => '%d celkom',
|
'%d in total' => '%d celkom',
|
||||||
'Search data in tables' => 'Vyhľadať dáta v tabuľkách',
|
'Search data in tables' => 'Vyhľadať dáta v tabuľkách',
|
||||||
|
'as a regular expression' => 'ako regulárny výraz',
|
||||||
'Alter schema' => 'Pozmeniť schému',
|
'Alter schema' => 'Pozmeniť schému',
|
||||||
'Create schema' => 'Vytvoriť schému',
|
'Create schema' => 'Vytvoriť schému',
|
||||||
'Schema has been dropped.' => 'Schéma bola odstránená.',
|
'Schema has been dropped.' => 'Schéma bola odstránená.',
|
||||||
@@ -266,4 +268,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' => 'Načítať ďalšie dáta',
|
||||||
|
'Loading' => 'Načítava 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.',
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
<?php
|
<?php
|
||||||
$translations = array(
|
$translations = array(
|
||||||
// label for database system selection (MySQL, SQLite, ...)
|
// label for database system selection (MySQL, SQLite, ...)
|
||||||
|
'Home' => null,
|
||||||
'System' => 'Sistem',
|
'System' => 'Sistem',
|
||||||
'Server' => 'Strežnik',
|
'Server' => 'Strežnik',
|
||||||
'Username' => 'Uporabniško ime',
|
'Username' => 'Uporabniško ime',
|
||||||
@@ -10,7 +11,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 +20,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 +34,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 +54,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,20 +64,19 @@ $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',
|
||||||
'Select database' => 'Izberi bazo',
|
'Select database' => 'Izberi bazo',
|
||||||
'Invalid database.' => 'Neveljavna baza.',
|
'Invalid database.' => 'Neveljavna baza.',
|
||||||
'Create new database' => 'Ustvari novo bazo',
|
|
||||||
'Database has been dropped.' => 'Baza je zavržena.',
|
'Database has been dropped.' => 'Baza je zavržena.',
|
||||||
'Databases have been dropped.' => 'Baze so zavržene.',
|
'Databases have been dropped.' => 'Baze so zavržene.',
|
||||||
'Database has been created.' => 'Baza je ustvarjena.',
|
'Database has been created.' => 'Baza je ustvarjena.',
|
||||||
@@ -85,7 +85,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',
|
||||||
@@ -107,7 +107,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',
|
||||||
@@ -120,7 +120,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.',
|
||||||
@@ -133,7 +133,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',
|
||||||
@@ -161,26 +161,27 @@ $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',
|
||||||
|
'Partition' => null,
|
||||||
'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.',
|
||||||
@@ -196,7 +197,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.',
|
||||||
@@ -207,7 +208,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',
|
||||||
@@ -216,6 +217,7 @@ $translations = array(
|
|||||||
'Search' => 'Išči',
|
'Search' => 'Išči',
|
||||||
'anywhere' => 'kjerkoli',
|
'anywhere' => 'kjerkoli',
|
||||||
'Search data in tables' => 'Išče podatke po tabelah',
|
'Search data in tables' => 'Išče podatke po tabelah',
|
||||||
|
'as a regular expression' => null,
|
||||||
'Sort' => 'Sortiraj',
|
'Sort' => 'Sortiraj',
|
||||||
'descending' => 'padajoče',
|
'descending' => 'padajoče',
|
||||||
'Limit' => 'Limita',
|
'Limit' => 'Limita',
|
||||||
@@ -226,16 +228,16 @@ $translations = array(
|
|||||||
'%d row(s)' => array('%d vrstica', '%d vrstici', '%d vrstice', '%d vrstic'),
|
'%d row(s)' => array('%d vrstica', '%d vrstici', '%d vrstice', '%d vrstic'),
|
||||||
'Page' => 'Stran',
|
'Page' => 'Stran',
|
||||||
'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.',
|
||||||
@@ -253,14 +255,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',
|
||||||
@@ -270,18 +272,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',
|
||||||
@@ -290,7 +292,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',
|
||||||
@@ -298,11 +300,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,
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
<?php
|
<?php
|
||||||
$translations = array(
|
$translations = array(
|
||||||
// label for database system selection (MySQL, SQLite, ...)
|
// label for database system selection (MySQL, SQLite, ...)
|
||||||
|
'Home' => null,
|
||||||
'System' => 'Систем',
|
'System' => 'Систем',
|
||||||
'Server' => 'Сервер',
|
'Server' => 'Сервер',
|
||||||
'Username' => 'Корисничко име',
|
'Username' => 'Корисничко име',
|
||||||
@@ -10,7 +11,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' => 'Без додатака',
|
||||||
@@ -77,7 +78,6 @@ $translations = array(
|
|||||||
'Use' => 'Користи',
|
'Use' => 'Користи',
|
||||||
'Select database' => 'Изаберите базу',
|
'Select database' => 'Изаберите базу',
|
||||||
'Invalid database.' => 'Неисправна база података.',
|
'Invalid database.' => 'Неисправна база података.',
|
||||||
'Create new 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.' => 'База података је креирана.',
|
||||||
@@ -168,6 +168,7 @@ $translations = array(
|
|||||||
'Maximum number of allowed fields exceeded. Please increase %s.' => 'Премашен је максимални број дозвољених поља. Молим увећајте %s.',
|
'Maximum number of allowed fields exceeded. Please increase %s.' => 'Премашен је максимални број дозвољених поља. Молим увећајте %s.',
|
||||||
|
|
||||||
'Partition by' => 'Подели по',
|
'Partition by' => 'Подели по',
|
||||||
|
'Partition' => null,
|
||||||
'Partitions' => 'Поделе',
|
'Partitions' => 'Поделе',
|
||||||
'Partition name' => 'Име поделе',
|
'Partition name' => 'Име поделе',
|
||||||
'Values' => 'Вредности',
|
'Values' => 'Вредности',
|
||||||
@@ -221,6 +222,7 @@ $translations = array(
|
|||||||
'Search' => 'Претрага',
|
'Search' => 'Претрага',
|
||||||
'anywhere' => 'било где',
|
'anywhere' => 'било где',
|
||||||
'Search data in tables' => 'Претражи податке у табелама',
|
'Search data in tables' => 'Претражи податке у табелама',
|
||||||
|
'as a regular expression' => null,
|
||||||
'Sort' => 'Поређај',
|
'Sort' => 'Поређај',
|
||||||
'descending' => 'опадајуће',
|
'descending' => 'опадајуће',
|
||||||
'Limit' => 'Граница',
|
'Limit' => 'Граница',
|
||||||
@@ -232,9 +234,9 @@ $translations = array(
|
|||||||
'%d row(s)' => array('%d ред', '%d реда', '%d редова'),
|
'%d row(s)' => array('%d ред', '%d реда', '%d редова'),
|
||||||
'Page' => 'Страна',
|
'Page' => 'Страна',
|
||||||
'last' => 'последња',
|
'last' => 'последња',
|
||||||
'Loading' => 'Учитавам',
|
'Loading' => 'Учитавам',
|
||||||
'Load more data' => 'Учитавам још података',
|
'Load more data' => 'Учитавам још података',
|
||||||
'whole result' => 'цео резултат',
|
'Whole result' => 'Цео резултат',
|
||||||
'%d byte(s)' => array('%d бајт', '%d бајта', '%d бајтова'),
|
'%d byte(s)' => array('%d бајт', '%d бајта', '%d бајтова'),
|
||||||
|
|
||||||
'Import' => 'Увоз',
|
'Import' => 'Увоз',
|
||||||
@@ -317,4 +319,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,
|
||||||
);
|
);
|
||||||
|
|||||||
360
adminer/lang/sv.inc.php
Normal file
360
adminer/lang/sv.inc.php
Normal file
@@ -0,0 +1,360 @@
|
|||||||
|
<?php
|
||||||
|
$translations = array(
|
||||||
|
// label for database system selection (MySQL, SQLite, ...)
|
||||||
|
'Home' => null,
|
||||||
|
'System' => 'System',
|
||||||
|
'Server' => 'Server',
|
||||||
|
'Username' => 'Användarnamn',
|
||||||
|
'Password' => 'Lösenord',
|
||||||
|
'Permanent login' => 'Permanent inloggning',
|
||||||
|
'Login' => 'Logga in',
|
||||||
|
'Logout' => 'Logga ut',
|
||||||
|
'Logged as: %s' => 'Inloggad som: %s',
|
||||||
|
'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>.',
|
||||||
|
'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.',
|
||||||
|
'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ö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.'),
|
||||||
|
'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',
|
||||||
|
'Invalid CSRF token. Send the form again.' => 'Ogiltig CSRF-token. Skicka formuläret igen.',
|
||||||
|
'If you did not send this request from Adminer then close this page.' => 'Om du inte skickade en förfrågan från Adminer så kan du stänga den här sidan.',
|
||||||
|
'No extension' => 'Inget tillägg',
|
||||||
|
'None of the supported PHP extensions (%s) are available.' => 'Inga av de PHP-tilläggen som stöds (%s) är tillgängliga.',
|
||||||
|
'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.',
|
||||||
|
'Session support must be enabled.' => 'Support för sessioner måste vara på.',
|
||||||
|
'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.',
|
||||||
|
'%s version: %s through PHP extension %s' => '%s version: %s genom PHP-tillägg %s',
|
||||||
|
'Refresh' => 'Ladda om',
|
||||||
|
|
||||||
|
// text direction - 'ltr' or 'rtl'
|
||||||
|
'ltr' => 'ltr',
|
||||||
|
|
||||||
|
'Privileges' => 'Privilegier',
|
||||||
|
'Create user' => 'Skapa användare',
|
||||||
|
'User has been dropped.' => 'Användare har blivit borttagen.',
|
||||||
|
'User has been altered.' => 'Användare har blivit ändrad.',
|
||||||
|
'User has been created.' => 'Användare har blivit skapad.',
|
||||||
|
'Hashed' => 'Hashad',
|
||||||
|
'Column' => 'Kolumn',
|
||||||
|
'Routine' => 'Rutin',
|
||||||
|
'Grant' => 'Tillåt',
|
||||||
|
'Revoke' => 'Neka',
|
||||||
|
|
||||||
|
'Process list' => 'Processlista',
|
||||||
|
'%d process(es) have been killed.' => array('%d process har avslutats.', '%d processer har avslutats.'),
|
||||||
|
'Kill' => 'Avsluta',
|
||||||
|
|
||||||
|
'Variables' => 'Variabler',
|
||||||
|
'Status' => 'Status',
|
||||||
|
|
||||||
|
'SQL command' => 'SQL-kommando',
|
||||||
|
'%d query(s) executed OK.' => array('%d förfrågan lyckades.', '%d förfrågor lyckades.'),
|
||||||
|
'Query executed OK, %d row(s) affected.' => array('Förfrågan lyckades, %d rad påverkades.', 'Förfrågan lyckades, %d rader påverkades.'),
|
||||||
|
'No commands to execute.' => 'Inga kommandon att köra.',
|
||||||
|
'Error in query' => 'Fel i förfrågan',
|
||||||
|
'Unknown error.' => 'Okänt fel.',
|
||||||
|
'Warnings' => 'Varningar',
|
||||||
|
'ATTACH queries are not supported.' => 'ATTACH-förfrågor stöds inte.',
|
||||||
|
'Execute' => 'Kör',
|
||||||
|
'Stop on error' => 'Stanna på fel',
|
||||||
|
'Show only errors' => 'Visa bara fel',
|
||||||
|
// sprintf() format for time of the command
|
||||||
|
'%.3f s' => '%.3f s',
|
||||||
|
'History' => 'Historia',
|
||||||
|
'Clear' => 'Rensa',
|
||||||
|
'Edit all' => 'Redigera alla',
|
||||||
|
|
||||||
|
'File upload' => 'Ladda upp fil',
|
||||||
|
'From server' => 'Från server',
|
||||||
|
'Webserver file %s' => 'Serverfil %s',
|
||||||
|
'Run file' => 'Kör fil',
|
||||||
|
'File does not exist.' => 'Filen finns inte.',
|
||||||
|
'File uploads are disabled.' => 'Filuppladdningar är avstängda.',
|
||||||
|
'Unable to upload a file.' => 'Det går inte add ladda upp filen.',
|
||||||
|
'Maximum allowed file size is %sB.' => 'Högsta tillåtna storlek är %sB.',
|
||||||
|
'Too big POST data. Reduce the data or increase the %s configuration directive.' => 'POST-datan är för stor. Minska det eller höj %s-direktivet.',
|
||||||
|
'You can upload a big SQL file via FTP and import it from server.' => 'Du kan ladda upp en stor SQL-fil via FTP och importera det från servern.',
|
||||||
|
'You are offline.' => 'Du är offline.',
|
||||||
|
|
||||||
|
'Export' => 'Exportera',
|
||||||
|
'Output' => 'Utmatning',
|
||||||
|
'open' => 'Öppna',
|
||||||
|
'save' => 'Spara',
|
||||||
|
'Saving' => 'Sparar',
|
||||||
|
'Format' => 'Format',
|
||||||
|
'Data' => 'Data',
|
||||||
|
|
||||||
|
'Database' => 'Databas',
|
||||||
|
'database' => 'databas',
|
||||||
|
'DB' => 'DB',
|
||||||
|
'Use' => 'Använd',
|
||||||
|
'Select database' => 'Välj databas',
|
||||||
|
'Invalid database.' => 'Ogiltig databas.',
|
||||||
|
'Database has been dropped.' => 'Databasen har tagits bort.',
|
||||||
|
'Databases have been dropped.' => 'Databaserna har tagits bort.',
|
||||||
|
'Database has been created.' => 'Databasen har skapats.',
|
||||||
|
'Database has been renamed.' => 'Databasen har fått sitt namn ändrat.',
|
||||||
|
'Database has been altered.' => 'Databasen har ändrats.',
|
||||||
|
'Alter database' => 'Ändra databas',
|
||||||
|
'Create database' => 'Skapa databas',
|
||||||
|
'Database schema' => 'Databasschema',
|
||||||
|
|
||||||
|
// link to current database schema layout
|
||||||
|
'Permanent link' => 'Permanent länk',
|
||||||
|
|
||||||
|
// thousands separator - must contain single byte
|
||||||
|
',' => ',',
|
||||||
|
'0123456789' => '0123456789',
|
||||||
|
'Engine' => 'Motor',
|
||||||
|
'Collation' => 'Kollationering',
|
||||||
|
'Data Length' => 'Datalängd',
|
||||||
|
'Index Length' => 'Indexlängd',
|
||||||
|
'Data Free' => 'Ledig data',
|
||||||
|
'Rows' => 'Rader',
|
||||||
|
'%d in total' => 'totalt %d',
|
||||||
|
'Analyze' => 'Analysera',
|
||||||
|
'Optimize' => 'Optimera',
|
||||||
|
'Vacuum' => 'Städa',
|
||||||
|
'Check' => 'Kolla',
|
||||||
|
'Repair' => 'Reparera',
|
||||||
|
'Truncate' => 'Avkorta',
|
||||||
|
'Tables have been truncated.' => 'Tabeller har blivit avkortade.',
|
||||||
|
'Move to other database' => 'Flytta till en annan databas',
|
||||||
|
'Move' => 'Flytta',
|
||||||
|
'Tables have been moved.' => 'Tabeller har flyttats.',
|
||||||
|
'Copy' => 'Kopiera',
|
||||||
|
'Tables have been copied.' => 'Tabeller har kopierats.',
|
||||||
|
'overwrite' => 'Skriv över',
|
||||||
|
|
||||||
|
'Routines' => 'Rutiner',
|
||||||
|
'Routine has been called, %d row(s) affected.' => array('Rutin har kallats, %d rad påverkades.', 'Rutin har kallats, %d rader påverkades.'),
|
||||||
|
'Call' => 'Kalla',
|
||||||
|
'Parameter name' => 'Namn på parameter',
|
||||||
|
'Create procedure' => 'Skapa procedur',
|
||||||
|
'Create function' => 'Skapa funktion',
|
||||||
|
'Routine has been dropped.' => 'Rutin har tagits bort.',
|
||||||
|
'Routine has been altered.' => 'Rutin har ändrats.',
|
||||||
|
'Routine has been created.' => 'Rutin har skapats.',
|
||||||
|
'Alter function' => 'Ändra funktion',
|
||||||
|
'Alter procedure' => 'Ändra procedur',
|
||||||
|
'Return type' => 'Återvändningstyp',
|
||||||
|
|
||||||
|
'Events' => 'Event',
|
||||||
|
'Event has been dropped.' => 'Event har tagits bort.',
|
||||||
|
'Event has been altered.' => 'Event har ändrats.',
|
||||||
|
'Event has been created.' => 'Event har skapats.',
|
||||||
|
'Alter event' => 'Ändra event',
|
||||||
|
'Create event' => 'Skapa event',
|
||||||
|
'At given time' => 'Vid en tid',
|
||||||
|
'Every' => 'Varje',
|
||||||
|
'Schedule' => 'Schemalägga',
|
||||||
|
'Start' => 'Start',
|
||||||
|
'End' => 'Slut',
|
||||||
|
'On completion preserve' => 'Bibehåll vid slutet',
|
||||||
|
|
||||||
|
'Tables' => 'Tabeller',
|
||||||
|
'Tables and views' => 'Tabeller och vyer',
|
||||||
|
'Table' => 'Tabell',
|
||||||
|
'No tables.' => 'Inga tabeller.',
|
||||||
|
'Alter table' => 'Ändra tabell',
|
||||||
|
'Create table' => 'Skapa tabell',
|
||||||
|
'Table has been dropped.' => 'Tabell har tagits bort.',
|
||||||
|
'Tables have been dropped.' => 'Tabeller har tagits bort.',
|
||||||
|
'Tables have been optimized.' => 'Tabeller har optimerats.',
|
||||||
|
'Table has been altered.' => 'Tabell har ändrats.',
|
||||||
|
'Table has been created.' => 'Tabell har skapats.',
|
||||||
|
'Table name' => 'Tabellnamn',
|
||||||
|
'Show structure' => 'Visa struktur',
|
||||||
|
'engine' => 'motor',
|
||||||
|
'collation' => 'kollationering',
|
||||||
|
'Column name' => 'Kolumnnamn',
|
||||||
|
'Type' => 'Typ',
|
||||||
|
'Length' => 'Längd',
|
||||||
|
'Auto Increment' => 'Automatisk uppräkning',
|
||||||
|
'Options' => 'Inställningar',
|
||||||
|
'Comment' => 'Kommentar',
|
||||||
|
'Default value' => 'Standardvärde',
|
||||||
|
'Default values' => 'Standardvärden',
|
||||||
|
'Drop' => 'Ta bort',
|
||||||
|
'Drop %s?' => 'Ta bort %s?',
|
||||||
|
'Are you sure?' => 'Är du säker?',
|
||||||
|
'Size' => 'Storlek',
|
||||||
|
'Compute' => 'Beräkna',
|
||||||
|
'Move up' => 'Flytta upp',
|
||||||
|
'Move down' => 'Flytta ner',
|
||||||
|
'Remove' => 'Ta bort',
|
||||||
|
'Maximum number of allowed fields exceeded. Please increase %s.' => 'Högsta nummer tillåtna fält är överskridet. Vänligen höj %s.',
|
||||||
|
|
||||||
|
'Partition by' => 'Partitionera om',
|
||||||
|
'Partition' => null,
|
||||||
|
'Partitions' => 'Partitioner',
|
||||||
|
'Partition name' => 'Partition',
|
||||||
|
'Values' => 'Värden',
|
||||||
|
|
||||||
|
'View' => 'Vy',
|
||||||
|
'Materialized view' => 'Materialiserad vy',
|
||||||
|
'View has been dropped.' => 'Vy har tagits bort.',
|
||||||
|
'View has been altered.' => 'Vy har ändrats.',
|
||||||
|
'View has been created.' => 'Vy har skapats.',
|
||||||
|
'Alter view' => 'Ändra vy',
|
||||||
|
'Create view' => 'Skapa vy',
|
||||||
|
|
||||||
|
'Indexes' => 'Index',
|
||||||
|
'Indexes have been altered.' => 'Index har ändrats.',
|
||||||
|
'Alter indexes' => 'Ändra index',
|
||||||
|
'Add next' => 'Lägg till nästa',
|
||||||
|
'Index Type' => 'Indextyp',
|
||||||
|
'Column (length)' => 'Kolumn (längd)',
|
||||||
|
|
||||||
|
'Foreign keys' => 'Främmande nycklar',
|
||||||
|
'Foreign key' => 'Främmande nyckel',
|
||||||
|
'Foreign key has been dropped.' => 'Främmande nyckel har tagits bort.',
|
||||||
|
'Foreign key has been altered.' => 'Främmande nyckel har ändrats.',
|
||||||
|
'Foreign key has been created.' => 'Främmande nyckel har skapats.',
|
||||||
|
'Target table' => 'Måltabell',
|
||||||
|
'Change' => 'Ändra',
|
||||||
|
'Source' => 'Källa',
|
||||||
|
'Target' => 'Mål',
|
||||||
|
'Add column' => 'Lägg till kolumn',
|
||||||
|
'Alter' => 'Ändra',
|
||||||
|
'Add foreign key' => 'Lägg till främmande nyckel',
|
||||||
|
'ON DELETE' => 'VID BORTTAGNING',
|
||||||
|
'ON UPDATE' => 'VID UPPDATERING',
|
||||||
|
'Source and target columns must have the same data type, there must be an index on the target columns and referenced data must exist.' => 'Käll- och mål-tabellen måste ha samma datatyp, ett index på målkolumnerna och refererad data måste finnas.',
|
||||||
|
|
||||||
|
'Triggers' => 'Avtryckare',
|
||||||
|
'Add trigger' => 'Lägg till avtryckare',
|
||||||
|
'Trigger has been dropped.' => 'Avtryckare har tagits bort.',
|
||||||
|
'Trigger has been altered.' => 'Avtryckare har ändrats.',
|
||||||
|
'Trigger has been created.' => 'Avtryckare har skapats.',
|
||||||
|
'Alter trigger' => 'Ändra avtryckare',
|
||||||
|
'Create trigger' => 'Skapa avtryckare',
|
||||||
|
'Time' => 'Tid',
|
||||||
|
'Event' => 'Event',
|
||||||
|
'Name' => 'Namn',
|
||||||
|
|
||||||
|
'select' => 'välj',
|
||||||
|
'Select' => 'Välj',
|
||||||
|
'Select data' => 'Välj data',
|
||||||
|
'Functions' => 'Funktioner',
|
||||||
|
'Aggregation' => 'Aggregation',
|
||||||
|
'Search' => 'Sök',
|
||||||
|
'anywhere' => 'överallt',
|
||||||
|
'Search data in tables' => 'Sök data i tabeller',
|
||||||
|
'as a regular expression' => null,
|
||||||
|
'Sort' => 'Sortera',
|
||||||
|
'descending' => 'Fallande',
|
||||||
|
'Limit' => 'Begränsning',
|
||||||
|
'Limit rows' => 'Begränsa rader',
|
||||||
|
'Text length' => 'Textlängd',
|
||||||
|
'Action' => 'Åtgärd',
|
||||||
|
'Full table scan' => 'Full tabellskanning',
|
||||||
|
'Unable to select the table' => 'Kunde inte välja tabellen',
|
||||||
|
'No rows.' => 'Inga rader.',
|
||||||
|
'%d / ' => '%d / ',
|
||||||
|
'%d row(s)' => array('%d rad', '%d rader'),
|
||||||
|
'Page' => 'Sida',
|
||||||
|
'last' => 'sist',
|
||||||
|
'Load more data' => 'Ladda mer data',
|
||||||
|
'Loading' => 'Laddar',
|
||||||
|
'Whole result' => 'Hela resultatet',
|
||||||
|
'%d byte(s)' => array('%d byte', '%d bytes'),
|
||||||
|
|
||||||
|
'Import' => 'Importera',
|
||||||
|
'%d row(s) have been imported.' => array('%d rad har importerats.', '%d rader har importerats.'),
|
||||||
|
'File must be in UTF-8 encoding.' => 'Filer måste vara i UTF-8-format.',
|
||||||
|
|
||||||
|
// in-place editing in select
|
||||||
|
'Modify' => 'Ändra',
|
||||||
|
'Ctrl+click on a value to modify it.' => 'Ctrl+klicka på ett värde för att ändra det.',
|
||||||
|
'Use edit link to modify this value.' => 'Använd redigeringslänken för att ändra värdet.',
|
||||||
|
|
||||||
|
// %s can contain auto-increment value
|
||||||
|
'Item%s has been inserted.' => 'Sak%s har skapats.',
|
||||||
|
'Item has been deleted.' => 'En sak har tagits bort.',
|
||||||
|
'Item has been updated.' => 'En sak har ändrats.',
|
||||||
|
'%d item(s) have been affected.' => array('%d sak har blivit förändrad.', '%d saker har blivit förändrade.'),
|
||||||
|
'New item' => 'Ny sak',
|
||||||
|
'original' => 'original',
|
||||||
|
// label for value '' in enum data type
|
||||||
|
'empty' => 'tom',
|
||||||
|
'edit' => 'redigera',
|
||||||
|
'Edit' => 'Redigera',
|
||||||
|
'Insert' => 'Infoga',
|
||||||
|
'Save' => 'Spara',
|
||||||
|
'Save and continue edit' => 'Spara och fortsätt att redigera',
|
||||||
|
'Save and insert next' => 'Spara och infoga nästa',
|
||||||
|
'Selected' => 'Vald',
|
||||||
|
'Clone' => 'Klona',
|
||||||
|
'Delete' => 'Ta bort',
|
||||||
|
'You have no privileges to update this table.' => 'Du har inga privilegier för att uppdatera den här tabellen.',
|
||||||
|
|
||||||
|
'E-mail' => 'Email',
|
||||||
|
'From' => 'Från',
|
||||||
|
'Subject' => 'Ämne',
|
||||||
|
'Attachments' => 'Bilagor',
|
||||||
|
'Send' => 'Skicka',
|
||||||
|
'%d e-mail(s) have been sent.' => array('%d email har blivit skickat.', '%d email har blivit skickade.'),
|
||||||
|
|
||||||
|
// data type descriptions
|
||||||
|
'Numbers' => 'Nummer',
|
||||||
|
'Date and time' => 'Datum och tid',
|
||||||
|
'Strings' => 'Strängar',
|
||||||
|
'Binary' => 'Binärt',
|
||||||
|
'Lists' => 'Listor',
|
||||||
|
'Network' => 'Nätverk',
|
||||||
|
'Geometry' => 'Geometri',
|
||||||
|
'Relations' => 'Relationer',
|
||||||
|
|
||||||
|
'Editor' => 'Redigerare',
|
||||||
|
// date format in Editor: $1 yyyy, $2 yy, $3 mm, $4 m, $5 dd, $6 d
|
||||||
|
'$1-$3-$5' => '$1-$3-$5',
|
||||||
|
// hint for date format - use language equivalents for day, month and year shortcuts
|
||||||
|
'[yyyy]-mm-dd' => 'yyyy-mm-dd',
|
||||||
|
// hint for time format - use language equivalents for hour, minute and second shortcuts
|
||||||
|
'HH:MM:SS' => 'HH:MM:SS',
|
||||||
|
'now' => 'nu',
|
||||||
|
'yes' => 'ja',
|
||||||
|
'no' => 'nej',
|
||||||
|
|
||||||
|
// general SQLite error in create, drop or rename database
|
||||||
|
'File exists.' => 'Filen finns redan.',
|
||||||
|
'Please use one of the extensions %s.' => 'Vänligen använd en av filändelserna %s.',
|
||||||
|
|
||||||
|
// PostgreSQL and MS SQL schema support
|
||||||
|
'Alter schema' => 'Redigera schema',
|
||||||
|
'Create schema' => 'Skapa schema',
|
||||||
|
'Schema has been dropped.' => 'Schema har tagits bort.',
|
||||||
|
'Schema has been created.' => 'Schema har skapats.',
|
||||||
|
'Schema has been altered.' => 'Schema har ändrats.',
|
||||||
|
'Schema' => 'Schema',
|
||||||
|
'Invalid schema.' => 'Ogiltigt schema.',
|
||||||
|
|
||||||
|
// PostgreSQL sequences support
|
||||||
|
'Sequences' => 'Sekvenser',
|
||||||
|
'Create sequence' => 'Skapa sekvens',
|
||||||
|
'Sequence has been dropped.' => 'Sekvens har tagits bort.',
|
||||||
|
'Sequence has been created.' => 'Sekvens har skapats.',
|
||||||
|
'Sequence has been altered.' => 'Sekvens har ändrats.',
|
||||||
|
'Alter sequence' => 'Ändra sekvens',
|
||||||
|
|
||||||
|
// PostgreSQL user types support
|
||||||
|
'User types' => 'Användartyper',
|
||||||
|
'Create type' => 'Skapa typ',
|
||||||
|
'Type has been dropped.' => 'Typ har, typ, tagits bort.',
|
||||||
|
'Type has been created.' => 'Typ har skapats.',
|
||||||
|
'Alter type' => 'Ändra typ',
|
||||||
|
|
||||||
|
'Columns' => null,
|
||||||
|
'Nullable' => null,
|
||||||
|
'Default' => null,
|
||||||
|
'Yes' => 'Ja',
|
||||||
|
'No' => 'Nej',
|
||||||
|
'One Time Password' => null,
|
||||||
|
'Invalid OTP code.' => null,
|
||||||
|
);
|
||||||
@@ -1,14 +1,14 @@
|
|||||||
<?php
|
<?php
|
||||||
$translations = array(
|
$translations = array(
|
||||||
|
'Home' => null,
|
||||||
'Login' => 'நுழை',
|
'Login' => 'நுழை',
|
||||||
'Logout successful.' => 'வெற்றிகரமாய் வெளியேறியாயிற்று.',
|
'Logout successful.' => 'வெற்றிகரமாய் வெளியேறியாயிற்று.',
|
||||||
'Invalid credentials.' => 'சரியான விபரங்கள் இல்லை.',
|
'Invalid server or credentials.' => null,
|
||||||
'Server' => 'வழங்கி (Server)',
|
'Server' => 'வழங்கி (Server)',
|
||||||
'Username' => 'பயனாளர் (User)',
|
'Username' => 'பயனாளர் (User)',
|
||||||
'Password' => 'கடவுச்சொல்',
|
'Password' => 'கடவுச்சொல்',
|
||||||
'Select database' => 'தகவல்தளத்தை தேர்வு செய்',
|
'Select database' => 'தகவல்தளத்தை தேர்வு செய்',
|
||||||
'Invalid database.' => 'தகவல்தளம் சரியானதல்ல.',
|
'Invalid database.' => 'தகவல்தளம் சரியானதல்ல.',
|
||||||
'Create new 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.' => 'அட்டவணை உருவாக்கப்பட்டது.',
|
||||||
@@ -184,10 +184,11 @@ $translations = array(
|
|||||||
'original' => 'அசல்',
|
'original' => 'அசல்',
|
||||||
'Tables have been dropped.' => 'அட்டவணை நீக்கப்பட்டது.',
|
'Tables have been dropped.' => 'அட்டவணை நீக்கப்பட்டது.',
|
||||||
'%d item(s) have been affected.' => array('%d உருப்படி மாற்றமடைந்தது.', '%d உருப்படிகள் மாற்றமடைந்தன.'),
|
'%d item(s) have been affected.' => array('%d உருப்படி மாற்றமடைந்தது.', '%d உருப்படிகள் மாற்றமடைந்தன.'),
|
||||||
'whole result' => 'முழுமையான முடிவு',
|
'Whole result' => 'முழுமையான முடிவு',
|
||||||
'Clone' => 'நகலி (Clone)',
|
'Clone' => 'நகலி (Clone)',
|
||||||
'Maximum number of allowed fields exceeded. Please increase %s.' => 'அனுமதிக்கப்பட்ட அதிகபட்ச கோப்புகளின் எண்ணிக்கை மீறப்பட்டது. தயவு செய்து %s மற்றும் %s யை அதிகரிக்கவும்.',
|
'Maximum number of allowed fields exceeded. Please increase %s.' => 'அனுமதிக்கப்பட்ட அதிகபட்ச கோப்புகளின் எண்ணிக்கை மீறப்பட்டது. தயவு செய்து %s மற்றும் %s யை அதிகரிக்கவும்.',
|
||||||
'Partition by' => 'பிரித்தது',
|
'Partition by' => 'பிரித்தது',
|
||||||
|
'Partition' => null,
|
||||||
'Partitions' => 'பிரிவுகள்',
|
'Partitions' => 'பிரிவுகள்',
|
||||||
'Partition name' => 'பிரிவின் பெயர்',
|
'Partition name' => 'பிரிவின் பெயர்',
|
||||||
'Values' => 'மதிப்புகள்',
|
'Values' => 'மதிப்புகள்',
|
||||||
@@ -225,6 +226,7 @@ $translations = array(
|
|||||||
'Alter schema' => 'அமைப்புமுறையை மாற்று',
|
'Alter schema' => 'அமைப்புமுறையை மாற்று',
|
||||||
'Create schema' => 'அமைப்புமுறையை உருவாக்கு',
|
'Create schema' => 'அமைப்புமுறையை உருவாக்கு',
|
||||||
'Search data in tables' => 'தகவலை அட்டவணையில் தேடு',
|
'Search data in tables' => 'தகவலை அட்டவணையில் தேடு',
|
||||||
|
'as a regular expression' => null,
|
||||||
'Sequences' => 'வரிசைமுறை',
|
'Sequences' => 'வரிசைமுறை',
|
||||||
'Create sequence' => 'வரிசைமுறையை உருவாக்கு',
|
'Create sequence' => 'வரிசைமுறையை உருவாக்கு',
|
||||||
'User types' => 'பயனாளர் வகைகள்',
|
'User types' => 'பயனாளர் வகைகள்',
|
||||||
@@ -265,4 +267,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,
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -1,14 +1,14 @@
|
|||||||
<?php
|
<?php
|
||||||
$translations = array(
|
$translations = array(
|
||||||
|
'Home' => null,
|
||||||
'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.' => 'ฐานข้อมูลไม่ถูกต้อง.',
|
||||||
'Create new 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.' => 'สร้างตารางใหม่แล้ว.',
|
||||||
@@ -187,10 +187,11 @@ $translations = array(
|
|||||||
'original' => 'ต้นฉบับ',
|
'original' => 'ต้นฉบับ',
|
||||||
'Tables have been dropped.' => 'ตารางถูกลบแล้ว.',
|
'Tables have been dropped.' => 'ตารางถูกลบแล้ว.',
|
||||||
'%d item(s) have been affected.' => 'มี %d รายการถูกดำเนินการแล้ว.',
|
'%d item(s) have been affected.' => 'มี %d รายการถูกดำเนินการแล้ว.',
|
||||||
'whole result' => 'รวมผล',
|
'Whole result' => 'รวมผล',
|
||||||
'Clone' => 'ทำซ้ำ',
|
'Clone' => 'ทำซ้ำ',
|
||||||
'Maximum number of allowed fields exceeded. Please increase %s.' => 'จำนวนสูงสุดของฟิลด์อนุญาตให้เกิน กรุณาเพิ่มอีก %s.',
|
'Maximum number of allowed fields exceeded. Please increase %s.' => 'จำนวนสูงสุดของฟิลด์อนุญาตให้เกิน กรุณาเพิ่มอีก %s.',
|
||||||
'Partition by' => 'พาร์ทิชันโดย',
|
'Partition by' => 'พาร์ทิชันโดย',
|
||||||
|
'Partition' => null,
|
||||||
'Partitions' => 'พาร์ทิชัน',
|
'Partitions' => 'พาร์ทิชัน',
|
||||||
'Partition name' => 'ชื่อของพาร์ทิชัน',
|
'Partition name' => 'ชื่อของพาร์ทิชัน',
|
||||||
'Values' => 'ค่า',
|
'Values' => 'ค่า',
|
||||||
@@ -225,6 +226,7 @@ $translations = array(
|
|||||||
'Permanent login' => 'จดจำการเข้าสู่ระบบตลอดไป',
|
'Permanent login' => 'จดจำการเข้าสู่ระบบตลอดไป',
|
||||||
'Databases have been dropped.' => 'ฐานข้อมูลถูกลบแล้ว.',
|
'Databases have been dropped.' => 'ฐานข้อมูลถูกลบแล้ว.',
|
||||||
'Search data in tables' => 'ค้นหาในตาราง',
|
'Search data in tables' => 'ค้นหาในตาราง',
|
||||||
|
'as a regular expression' => null,
|
||||||
'Schema' => 'Schema',
|
'Schema' => 'Schema',
|
||||||
'Alter schema' => 'เปลี่ยนแปลง schema',
|
'Alter schema' => 'เปลี่ยนแปลง schema',
|
||||||
'Create schema' => 'สร้าง schema',
|
'Create schema' => 'สร้าง schema',
|
||||||
@@ -266,4 +268,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,
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
<?php
|
<?php
|
||||||
$translations = array(
|
$translations = array(
|
||||||
// label for database system selection (MySQL, SQLite, ...)
|
// label for database system selection (MySQL, SQLite, ...)
|
||||||
|
'Home' => null,
|
||||||
'System' => 'Sistem',
|
'System' => 'Sistem',
|
||||||
'Server' => 'Sunucu',
|
'Server' => 'Sunucu',
|
||||||
'Username' => 'Kullanıcı',
|
'Username' => 'Kullanıcı',
|
||||||
@@ -9,14 +10,20 @@ $translations = array(
|
|||||||
'Login' => 'Giriş',
|
'Login' => 'Giriş',
|
||||||
'Logout' => 'Çıkış',
|
'Logout' => 'Çıkış',
|
||||||
'Logged as: %s' => '%s olarak giriş yapıldı.',
|
'Logged as: %s' => '%s olarak giriş yapıldı.',
|
||||||
'Logout successful.' => 'Başarıyla çıkış yapıldı.',
|
'Logout successful.' => 'Oturum başarıyla sonlandı.',
|
||||||
'Invalid credentials.' => 'Geçersiz kimlik.',
|
'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 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.'),
|
||||||
|
'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',
|
||||||
'Invalid CSRF token. Send the form again.' => 'Geçersiz (CSRF) jetonu. Formu tekrar yolla.',
|
'Invalid CSRF token. Send the form again.' => 'Geçersiz (CSRF) jetonu. Formu tekrar yolla.',
|
||||||
|
'If you did not send this request from Adminer then close this page.' => 'Bu isteği Adminer\'den göndermediyseniz bu sayfayı kapatın.',
|
||||||
'No extension' => 'Uzantı yok',
|
'No extension' => 'Uzantı yok',
|
||||||
'None of the supported PHP extensions (%s) are available.' => 'Desteklenen PHP eklentilerinden (%s) hiçbiri mevcut değil.',
|
'None of the supported PHP extensions (%s) are available.' => 'Desteklenen PHP eklentilerinden (%s) hiçbiri mevcut değil.',
|
||||||
|
'Connecting to privileged ports is not allowed.' => 'Ayrıcalıklı bağlantı noktalarına bağlanmaya izin verilmiyor.',
|
||||||
'Session support must be enabled.' => 'Oturum desteği etkin olmalıdır.',
|
'Session support must be enabled.' => 'Oturum desteği etkin olmalıdır.',
|
||||||
'Session expired, please login again.' => 'Oturum süresi doldu, lütfen tekrar giriş yapın.',
|
'Session expired, please login again.' => 'Oturum süresi doldu, lütfen tekrar giriş yapın.',
|
||||||
|
'The action will be performed after successful login with the same credentials.' => 'İşlem, aynı kimlik bilgileriyle başarıyla oturum açıldıktan sonra gerçekleştirilecektir.',
|
||||||
'%s version: %s through PHP extension %s' => '%s sürüm: %s, %s PHP eklentisi ile',
|
'%s version: %s through PHP extension %s' => '%s sürüm: %s, %s PHP eklentisi ile',
|
||||||
'Refresh' => 'Tazele',
|
'Refresh' => 'Tazele',
|
||||||
|
|
||||||
@@ -46,6 +53,8 @@ $translations = array(
|
|||||||
'Query executed OK, %d row(s) affected.' => array('Sorgu başarıyla çalıştırıldı, %d adet kayıt etkilendi.', 'Sorgu başarıyla çalıştırıldı, %d adet kayıt etkilendi.'),
|
'Query executed OK, %d row(s) affected.' => array('Sorgu başarıyla çalıştırıldı, %d adet kayıt etkilendi.', 'Sorgu başarıyla çalıştırıldı, %d adet kayıt etkilendi.'),
|
||||||
'No commands to execute.' => 'Çalıştırılacak komut yok.',
|
'No commands to execute.' => 'Çalıştırılacak komut yok.',
|
||||||
'Error in query' => 'Sorguda hata',
|
'Error in query' => 'Sorguda hata',
|
||||||
|
'Warnings' => 'Uyarılar',
|
||||||
|
'ATTACH queries are not supported.' => 'ATTACH sorguları desteklenmiyor.',
|
||||||
'Execute' => 'Çalıştır',
|
'Execute' => 'Çalıştır',
|
||||||
'Stop on error' => 'Hata oluşursa dur',
|
'Stop on error' => 'Hata oluşursa dur',
|
||||||
'Show only errors' => 'Sadece hataları göster.',
|
'Show only errors' => 'Sadece hataları göster.',
|
||||||
@@ -64,20 +73,23 @@ $translations = array(
|
|||||||
'Unable to upload a file.' => 'Dosya gönderilemiyor.',
|
'Unable to upload a file.' => 'Dosya gönderilemiyor.',
|
||||||
'Maximum allowed file size is %sB.' => 'İzin verilen dosya boyutu sınırı %sB.',
|
'Maximum allowed file size is %sB.' => 'İzin verilen dosya boyutu sınırı %sB.',
|
||||||
'Too big POST data. Reduce the data or increase the %s configuration directive.' => 'Çok büyük POST verisi, veriyi azaltın ya da %s ayar yönergesini uygun olarak yapılandırın.',
|
'Too big POST data. Reduce the data or increase the %s configuration directive.' => 'Çok büyük POST verisi, veriyi azaltın ya da %s ayar yönergesini uygun olarak yapılandırın.',
|
||||||
|
'You can upload a big SQL file via FTP and import it from server.' => 'FTP yoluyla büyük bir SQL dosyası yükleyebilir ve sunucudan içe aktarabilirsiniz.',
|
||||||
|
'You are offline.' => 'Çevrimdışısınız.',
|
||||||
|
|
||||||
'Export' => 'Dışarı Aktar',
|
'Export' => 'Dışarı Aktar',
|
||||||
'Output' => 'Çıktı',
|
'Output' => 'Çıktı',
|
||||||
'open' => 'aç',
|
'open' => 'aç',
|
||||||
'save' => 'kaydet',
|
'save' => 'kaydet',
|
||||||
|
'Saving' => 'Saydediliyor',
|
||||||
'Format' => 'Biçim',
|
'Format' => 'Biçim',
|
||||||
'Data' => 'Veri',
|
'Data' => 'Veri',
|
||||||
|
|
||||||
'Database' => 'Veri Tabanı',
|
'Database' => 'Veri Tabanı',
|
||||||
'database' => 'veri tabanı',
|
'database' => 'veri tabanı',
|
||||||
|
'DB' => 'DB',
|
||||||
'Use' => 'Kullan',
|
'Use' => 'Kullan',
|
||||||
'Select database' => 'Veri tabanı seç',
|
'Select database' => 'Veri tabanı seç',
|
||||||
'Invalid database.' => 'Geçersiz veri tabanı.',
|
'Invalid database.' => 'Geçersiz veri tabanı.',
|
||||||
'Create new database' => 'Yeni veri tabanı oluştur',
|
|
||||||
'Database has been dropped.' => 'Veri tabanı silindi.',
|
'Database has been dropped.' => 'Veri tabanı silindi.',
|
||||||
'Databases have been dropped.' => 'Veritabanları silindi.',
|
'Databases have been dropped.' => 'Veritabanları silindi.',
|
||||||
'Database has been created.' => 'Veri tabanı oluşturuldu.',
|
'Database has been created.' => 'Veri tabanı oluşturuldu.',
|
||||||
@@ -96,12 +108,13 @@ $translations = array(
|
|||||||
'Engine' => 'Motor',
|
'Engine' => 'Motor',
|
||||||
'Collation' => 'Karşılaştırma',
|
'Collation' => 'Karşılaştırma',
|
||||||
'Data Length' => 'Veri Uzunluğu',
|
'Data Length' => 'Veri Uzunluğu',
|
||||||
'Index Length' => 'Dizin Uzunluğu',
|
'Index Length' => 'İndex Uzunluğu',
|
||||||
'Data Free' => 'Boş Veri',
|
'Data Free' => 'Boş Veri',
|
||||||
'Rows' => 'Kayıtlar',
|
'Rows' => 'Kayıtlar',
|
||||||
'%d in total' => 'toplam %d',
|
'%d in total' => 'toplam %d',
|
||||||
'Analyze' => 'Çözümle',
|
'Analyze' => 'Çözümle',
|
||||||
'Optimize' => 'En uygun hale getir',
|
'Optimize' => 'Optimize Et',
|
||||||
|
'Vacuum' => 'Vakumla',
|
||||||
'Check' => 'Denetle',
|
'Check' => 'Denetle',
|
||||||
'Repair' => 'Tamir Et',
|
'Repair' => 'Tamir Et',
|
||||||
'Truncate' => 'Boşalt',
|
'Truncate' => 'Boşalt',
|
||||||
@@ -159,31 +172,37 @@ $translations = array(
|
|||||||
'Auto Increment' => 'Otomatik Artır',
|
'Auto Increment' => 'Otomatik Artır',
|
||||||
'Options' => 'Seçenekler',
|
'Options' => 'Seçenekler',
|
||||||
'Comment' => 'Yorum',
|
'Comment' => 'Yorum',
|
||||||
|
'Default value' => 'Varsayılan değer',
|
||||||
'Default values' => 'Varsayılan değerler',
|
'Default values' => 'Varsayılan değerler',
|
||||||
'Drop' => 'Sil',
|
'Drop' => 'Sil',
|
||||||
|
'Drop %s?' => 'Sil %s?',
|
||||||
'Are you sure?' => 'Emin misiniz?',
|
'Are you sure?' => 'Emin misiniz?',
|
||||||
|
'Size' => 'Boyut',
|
||||||
|
'Compute' => 'Hesapla',
|
||||||
'Move up' => 'Yukarı taşı',
|
'Move up' => 'Yukarı taşı',
|
||||||
'Move down' => 'Aşağı taşı',
|
'Move down' => 'Aşağı taşı',
|
||||||
'Remove' => 'Sil',
|
'Remove' => 'Sil',
|
||||||
'Maximum number of allowed fields exceeded. Please increase %s.' => 'İzin verilen en fazla alan sayısı aşıldı. Lütfen %s değerlerini artırın.',
|
'Maximum number of allowed fields exceeded. Please increase %s.' => 'İzin verilen en fazla alan sayısı aşıldı. Lütfen %s değerlerini artırın.',
|
||||||
|
|
||||||
'Partition by' => 'Bununla bölümle',
|
'Partition by' => 'Bununla bölümle',
|
||||||
|
'Partition' => null,
|
||||||
'Partitions' => 'Bölümler',
|
'Partitions' => 'Bölümler',
|
||||||
'Partition name' => 'Bölüm adı',
|
'Partition name' => 'Bölüm adı',
|
||||||
'Values' => 'Değerler',
|
'Values' => 'Değerler',
|
||||||
|
|
||||||
'View' => 'Görünüm',
|
'View' => 'Görünüm',
|
||||||
|
'Materialized view' => 'Materialized Görünüm',
|
||||||
'View has been dropped.' => 'Görünüm silindi.',
|
'View has been dropped.' => 'Görünüm silindi.',
|
||||||
'View has been altered.' => 'Görünüm değiştirildi.',
|
'View has been altered.' => 'Görünüm değiştirildi.',
|
||||||
'View has been created.' => 'Görünüm oluşturuldu.',
|
'View has been created.' => 'Görünüm oluşturuldu.',
|
||||||
'Alter view' => 'Görünümü değiştir',
|
'Alter view' => 'Görünümü değiştir',
|
||||||
'Create view' => 'Görünüm oluştur',
|
'Create view' => 'Görünüm oluştur',
|
||||||
|
|
||||||
'Indexes' => 'Dizinler',
|
'Indexes' => 'İndeksler',
|
||||||
'Indexes have been altered.' => 'Dizinler değiştirildi.',
|
'Indexes have been altered.' => 'İndeksler değiştirildi.',
|
||||||
'Alter indexes' => 'Dizinleri değiştir',
|
'Alter indexes' => 'İndeksleri değiştir',
|
||||||
'Add next' => 'Bundan sonra ekle',
|
'Add next' => 'Bundan sonra ekle',
|
||||||
'Index Type' => 'Dizin Türü',
|
'Index Type' => 'İndex Türü',
|
||||||
'Column (length)' => 'Kolon (uzunluğu)',
|
'Column (length)' => 'Kolon (uzunluğu)',
|
||||||
|
|
||||||
'Foreign keys' => 'Dış anahtarlar',
|
'Foreign keys' => 'Dış anahtarlar',
|
||||||
@@ -221,26 +240,31 @@ $translations = array(
|
|||||||
'Search' => 'Ara',
|
'Search' => 'Ara',
|
||||||
'anywhere' => 'hiçbir yerde',
|
'anywhere' => 'hiçbir yerde',
|
||||||
'Search data in tables' => 'Tablolarda veri ara',
|
'Search data in tables' => 'Tablolarda veri ara',
|
||||||
|
'as a regular expression' => null,
|
||||||
'Sort' => 'Sırala',
|
'Sort' => 'Sırala',
|
||||||
'descending' => 'azalan',
|
'descending' => 'Azalan',
|
||||||
'Limit' => 'sınır',
|
'Limit' => 'Limit',
|
||||||
'Text length' => 'Yazı uzunluğu',
|
'Limit rows' => 'Satır Limiti',
|
||||||
'Action' => 'Eylem',
|
'Text length' => 'Metin Boyutu',
|
||||||
'Full table scan' => 'Tam tablo tarama',
|
'Action' => 'İşlem',
|
||||||
|
'Full table scan' => 'Tam tablo taraması',
|
||||||
'Unable to select the table' => 'Tablo seçilemedi',
|
'Unable to select the table' => 'Tablo seçilemedi',
|
||||||
'No rows.' => 'Kayıt yok.',
|
'No rows.' => 'Kayıt yok.',
|
||||||
|
'%d / ' => '%d / ',
|
||||||
'%d row(s)' => array('%d kayıt', '%d adet kayıt'),
|
'%d row(s)' => array('%d kayıt', '%d adet kayıt'),
|
||||||
'Page' => 'Sayfa',
|
'Page' => 'Sayfa',
|
||||||
'last' => 'son',
|
'last' => 'son',
|
||||||
'Load more data' => 'Daha fazla veri yükle',
|
'Load more data' => 'Daha fazla veri yükle',
|
||||||
'Loading' => 'Yükleniyor',
|
'Loading' => 'Yükleniyor',
|
||||||
'whole result' => 'tüm sonuç',
|
'Whole result' => 'Tüm sonuç',
|
||||||
'%d byte(s)' => array('%d bayt', '%d bayt'),
|
'%d byte(s)' => array('%d bayt', '%d bayt'),
|
||||||
|
|
||||||
'Import' => 'İçeri Aktar',
|
'Import' => 'İçeri Aktar',
|
||||||
'%d row(s) have been imported.' => array('%d kayıt içeri aktarıldı.', '%d adet kayıt içeri aktarıldı.'),
|
'%d row(s) have been imported.' => array('%d kayıt içeri aktarıldı.', '%d adet kayıt içeri aktarıldı.'),
|
||||||
|
'File must be in UTF-8 encoding.' => 'Dosya UTF-8 kodlamasında olmalıdır.',
|
||||||
|
|
||||||
// in-place editing in select
|
// in-place editing in select
|
||||||
|
'Modify' => 'Düzenle',
|
||||||
'Ctrl+click on a value to modify it.' => 'Bir değeri değiştirmek için üzerine Ctrl+tıklayın.',
|
'Ctrl+click on a value to modify it.' => 'Bir değeri değiştirmek için üzerine Ctrl+tıklayın.',
|
||||||
'Use edit link to modify this value.' => 'Değeri değiştirmek için düzenleme bağlantısını kullanın.',
|
'Use edit link to modify this value.' => 'Değeri değiştirmek için düzenleme bağlantısını kullanın.',
|
||||||
|
|
||||||
@@ -259,8 +283,10 @@ $translations = array(
|
|||||||
'Save' => 'Kaydet',
|
'Save' => 'Kaydet',
|
||||||
'Save and continue edit' => 'Kaydet ve düzenlemeye devam et',
|
'Save and continue edit' => 'Kaydet ve düzenlemeye devam et',
|
||||||
'Save and insert next' => 'Kaydet ve sonrakini ekle',
|
'Save and insert next' => 'Kaydet ve sonrakini ekle',
|
||||||
|
'Selected' => 'Seçildi',
|
||||||
'Clone' => 'Kopyala',
|
'Clone' => 'Kopyala',
|
||||||
'Delete' => 'Sil',
|
'Delete' => 'Sil',
|
||||||
|
'You have no privileges to update this table.' => 'Bu tabloyu güncellemek için yetkiniz yok.',
|
||||||
|
|
||||||
'E-mail' => 'E-posta',
|
'E-mail' => 'E-posta',
|
||||||
'From' => 'Gönderen',
|
'From' => 'Gönderen',
|
||||||
@@ -317,4 +343,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,
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
<?php
|
<?php
|
||||||
$translations = array(
|
$translations = array(
|
||||||
// label for database system selection (MySQL, SQLite, ...)
|
// label for database system selection (MySQL, SQLite, ...)
|
||||||
|
'Home' => null,
|
||||||
'System' => 'Система Бази Даних',
|
'System' => 'Система Бази Даних',
|
||||||
'Server' => 'Сервер',
|
'Server' => 'Сервер',
|
||||||
'Username' => 'Користувач',
|
'Username' => 'Користувач',
|
||||||
@@ -10,7 +11,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 +20,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 +34,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 +55,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,20 +65,19 @@ $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' => 'Обрати',
|
||||||
'Select database' => 'Обрати базу даних',
|
'Select database' => 'Обрати базу даних',
|
||||||
'Invalid database.' => 'Погана база даних.',
|
'Invalid database.' => 'Погана база даних.',
|
||||||
'Create new 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.' => 'Базу даних було створено.',
|
||||||
@@ -86,10 +86,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,7 +111,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' => 'Викликати',
|
||||||
@@ -124,7 +124,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.' => 'Подію було змінено.',
|
||||||
@@ -137,7 +137,7 @@ $translations = array(
|
|||||||
'Start' => 'Початок',
|
'Start' => 'Початок',
|
||||||
'End' => 'Кінець',
|
'End' => 'Кінець',
|
||||||
'On completion preserve' => 'Після завершення зберегти',
|
'On completion preserve' => 'Після завершення зберегти',
|
||||||
|
|
||||||
'Tables' => 'Таблиці',
|
'Tables' => 'Таблиці',
|
||||||
'Tables and views' => 'Таблиці і вигляди',
|
'Tables and views' => 'Таблиці і вигляди',
|
||||||
'Table' => 'Таблиця',
|
'Table' => 'Таблиця',
|
||||||
@@ -166,26 +166,27 @@ $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' => 'Розділити по',
|
||||||
|
'Partition' => null,
|
||||||
'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.' => 'Зовнішній ключ було видалено.',
|
||||||
@@ -201,7 +202,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.' => 'Тригер було видалено.',
|
||||||
@@ -212,7 +213,7 @@ $translations = array(
|
|||||||
'Time' => 'Час',
|
'Time' => 'Час',
|
||||||
'Event' => 'Подія',
|
'Event' => 'Подія',
|
||||||
'Name' => 'Назва',
|
'Name' => 'Назва',
|
||||||
|
|
||||||
'select' => 'вибрати',
|
'select' => 'вибрати',
|
||||||
'Select' => 'Вибрати',
|
'Select' => 'Вибрати',
|
||||||
'Select data' => 'Вибрати дані',
|
'Select data' => 'Вибрати дані',
|
||||||
@@ -221,6 +222,7 @@ $translations = array(
|
|||||||
'Search' => 'Пошук',
|
'Search' => 'Пошук',
|
||||||
'anywhere' => 'будь-де',
|
'anywhere' => 'будь-де',
|
||||||
'Search data in tables' => 'Шукати дані в таблицях',
|
'Search data in tables' => 'Шукати дані в таблицях',
|
||||||
|
'as a regular expression' => null,
|
||||||
'Sort' => 'Сортувати',
|
'Sort' => 'Сортувати',
|
||||||
'descending' => 'по спаданню',
|
'descending' => 'по спаданню',
|
||||||
'Limit' => 'Обмеження',
|
'Limit' => 'Обмеження',
|
||||||
@@ -231,16 +233,16 @@ $translations = array(
|
|||||||
'%d row(s)' => array('%d рядок', '%d рядки', '%d рядків'),
|
'%d row(s)' => array('%d рядок', '%d рядки', '%d рядків'),
|
||||||
'Page' => 'Сторінка',
|
'Page' => 'Сторінка',
|
||||||
'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.' => 'Запис було видалено.',
|
||||||
@@ -258,24 +260,24 @@ $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' => 'Дата і час',
|
||||||
'Strings' => 'Радки',
|
'Strings' => 'Рядки',
|
||||||
'Binary' => 'Двійкові',
|
'Binary' => 'Двійкові',
|
||||||
'Lists' => 'Списки',
|
'Lists' => 'Списки',
|
||||||
'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',
|
||||||
@@ -286,11 +288,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' => 'Створити схему',
|
||||||
@@ -299,7 +301,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' => 'Створити послідовність',
|
||||||
@@ -307,11 +309,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,
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
<?php
|
<?php
|
||||||
$translations = array(
|
$translations = array(
|
||||||
// label for database system selection (MySQL, SQLite, ...)
|
// label for database system selection (MySQL, SQLite, ...)
|
||||||
|
'Home' => null,
|
||||||
'System' => 'Hệ thống',
|
'System' => 'Hệ thống',
|
||||||
'Server' => 'Máy chủ',
|
'Server' => 'Máy chủ',
|
||||||
'Username' => 'Tên người dùng',
|
'Username' => 'Tên người dùng',
|
||||||
@@ -10,9 +11,9 @@ $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/" target="_blank">Implement</a> %s method to make it permanent.' => 'Mật khẩu đã hết hạn. <a href="https://www.adminer.org/en/extension/" target="_blank">Thử cách làm</a> để giữ cố định.',
|
'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ữ',
|
||||||
'Invalid CSRF token. Send the form again.' => 'Mã kiểm tra CSRF sai, hãy nhập lại biểu mẫu.',
|
'Invalid CSRF token. Send the form again.' => 'Mã kiểm tra CSRF sai, hãy nhập lại biểu mẫu.',
|
||||||
'No extension' => 'Không có phần mở rộng',
|
'No extension' => 'Không có phần mở rộng',
|
||||||
@@ -21,10 +22,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 +36,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 +57,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,20 +68,19 @@ $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',
|
||||||
'Select database' => 'Chọn CSDL',
|
'Select database' => 'Chọn CSDL',
|
||||||
'Invalid database.' => 'CSDL sai.',
|
'Invalid database.' => 'CSDL sai.',
|
||||||
'Create new database' => 'Tạo CSDL',
|
|
||||||
'Database has been dropped.' => 'CSDL đã bị xoá.',
|
'Database has been dropped.' => 'CSDL đã bị xoá.',
|
||||||
'Databases have been dropped.' => 'Các CSDL đã bị xoá.',
|
'Databases have been dropped.' => 'Các CSDL đã bị xoá.',
|
||||||
'Database has been created.' => 'Đã tạo CSDL.',
|
'Database has been created.' => 'Đã tạo CSDL.',
|
||||||
@@ -89,10 +89,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',
|
||||||
@@ -115,7 +115,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',
|
||||||
@@ -140,7 +140,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',
|
||||||
@@ -171,26 +171,27 @@ $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',
|
||||||
|
'Partition' => null,
|
||||||
'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á.',
|
||||||
@@ -206,9 +207,9 @@ $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' => 'xx',
|
'Triggers' => 'Phản xạ',
|
||||||
'Add trigger' => 'xx',
|
'Add trigger' => 'Thêm phản xạ',
|
||||||
'Trigger has been dropped.' => 'Đã xoá phản xạ.',
|
'Trigger has been dropped.' => 'Đã xoá phản xạ.',
|
||||||
'Trigger has been altered.' => 'Đã sửa phản xạ.',
|
'Trigger has been altered.' => 'Đã sửa phản xạ.',
|
||||||
'Trigger has been created.' => 'Đã tạo phản xạ.',
|
'Trigger has been created.' => 'Đã tạo phản xạ.',
|
||||||
@@ -217,7 +218,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',
|
||||||
@@ -226,6 +227,7 @@ $translations = array(
|
|||||||
'Search' => 'Tìm kiếm',
|
'Search' => 'Tìm kiếm',
|
||||||
'anywhere' => 'bất cứ đâu',
|
'anywhere' => 'bất cứ đâu',
|
||||||
'Search data in tables' => 'Tìm kiếm dữ liệu trong các bảng',
|
'Search data in tables' => 'Tìm kiếm dữ liệu trong các bảng',
|
||||||
|
'as a regular expression' => null,
|
||||||
'Sort' => 'Sắp xếp',
|
'Sort' => 'Sắp xếp',
|
||||||
'descending' => 'giảm dần',
|
'descending' => 'giảm dần',
|
||||||
'Limit' => 'Giới hạn',
|
'Limit' => 'Giới hạn',
|
||||||
@@ -239,18 +241,18 @@ $translations = array(
|
|||||||
'last' => 'cuối',
|
'last' => 'cuối',
|
||||||
'Load more data' => 'Xem thêm dữ liệu',
|
'Load more data' => 'Xem thêm dữ liệu',
|
||||||
'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á.',
|
||||||
@@ -270,14 +272,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ờ',
|
||||||
@@ -287,7 +289,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',
|
||||||
@@ -298,32 +300,61 @@ $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',
|
||||||
'Schema has been dropped.' => 'Đã xoá schema.',
|
'Schema has been dropped.' => 'Đã xoá schema.',
|
||||||
'Schema has been created.' => 'Đã tạo schema.',
|
'Schema has been created.' => 'Đã tạo schema.',
|
||||||
'Schema has been altered.' => 'Đã thay đổi schema.',
|
'Schema has been altered.' => 'Đã thay đổi schema.',
|
||||||
'Schema' => 'schema',
|
'Schema' => 'Schema',
|
||||||
'Invalid schema.' => 'Schema khong 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 đãy số',
|
'Create sequence' => 'Tạo dãy số',
|
||||||
'Sequence has been dropped.' => 'Dãy số đã bị xoá.',
|
'Sequence has been dropped.' => 'Dãy số đã bị xoá.',
|
||||||
'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,
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
<?php
|
<?php
|
||||||
$translations = array(
|
$translations = array(
|
||||||
// label for database system selection (MySQL, SQLite, ...)
|
// label for database system selection (MySQL, SQLite, ...)
|
||||||
|
'Home' => 'Xx',
|
||||||
'System' => 'Xx',
|
'System' => 'Xx',
|
||||||
'Server' => 'Xx',
|
'Server' => 'Xx',
|
||||||
'Username' => 'Xx',
|
'Username' => 'Xx',
|
||||||
@@ -8,24 +9,31 @@ $translations = array(
|
|||||||
'Permanent login' => 'Xx',
|
'Permanent login' => 'Xx',
|
||||||
'Login' => 'Xx',
|
'Login' => 'Xx',
|
||||||
'Logout' => 'Xx',
|
'Logout' => 'Xx',
|
||||||
'Logged as: %s' => 'Xx',
|
'Logged as: %s' => 'Xx: %s',
|
||||||
'Logout successful.' => 'Xx.',
|
'Logout successful.' => 'Xx.',
|
||||||
'Invalid credentials.' => '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>.',
|
||||||
'Too many unsuccessful logins, try again in %d minute(s).' => array('Xx.', 'Xx.'),
|
'Invalid server or credentials.' => 'Xx.',
|
||||||
'Master password expired. <a href="https://www.adminer.org/en/extension/" target="_blank">Implement</a> %s method to make it permanent.' => '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>.',
|
||||||
|
'Database does not support password.' => 'Xx.',
|
||||||
|
'Too many unsuccessful logins, try again in %d minute(s).' => array('Xx %d.', 'Xx %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>Xx</a> %s xx.',
|
||||||
'Language' => 'Xx',
|
'Language' => 'Xx',
|
||||||
'Invalid CSRF token. Send the form again.' => 'Xx.',
|
'Invalid CSRF token. Send the form again.' => 'Xx.',
|
||||||
'If you did not send this request from Adminer then close this page.' => 'Xx.',
|
'If you did not send this request from Adminer then close this page.' => 'Xx.',
|
||||||
'No extension' => 'Xx',
|
'No extension' => 'Xx',
|
||||||
'None of the supported PHP extensions (%s) are available.' => 'Xx.',
|
'None of the supported PHP extensions (%s) are available.' => 'Xx (%s).',
|
||||||
|
'Connecting to privileged ports is not allowed.' => 'Xx.',
|
||||||
|
'Disable %s or enable %s or %s extensions.' => 'Xx %s xx %s xx %s xx.',
|
||||||
'Session support must be enabled.' => 'Xx.',
|
'Session support must be enabled.' => 'Xx.',
|
||||||
'Session expired, please login again.' => 'Xx.',
|
'Session expired, please login again.' => 'Xx.',
|
||||||
'%s version: %s through PHP extension %s' => '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',
|
||||||
'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.',
|
||||||
@@ -36,41 +44,43 @@ $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('Xx.', '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('Xx.', 'Xx.'),
|
'%d query(s) executed OK.' => array('%d xx.', '%d xx.'),
|
||||||
'Query executed OK, %d row(s) affected.' => array('Xx.', 'Xx.'),
|
'Query executed OK, %d row(s) affected.' => array('Xx, %d.', 'Xx, %d.'),
|
||||||
'No commands to execute.' => 'Xx.',
|
'No commands to execute.' => 'Xx.',
|
||||||
'Error in query' => 'Xx',
|
'Error in query' => 'Xx',
|
||||||
|
'Unknown error.' => 'Xx.',
|
||||||
|
'Warnings' => 'Xx',
|
||||||
'ATTACH queries are not supported.' => 'Xx.',
|
'ATTACH queries are not supported.' => 'Xx.',
|
||||||
'Execute' => 'Xx',
|
'Execute' => 'Xx',
|
||||||
'Stop on error' => 'Xx',
|
'Stop on error' => 'Xx',
|
||||||
'Show only errors' => 'Xx',
|
'Show only errors' => 'Xx',
|
||||||
// sprintf() format for time of the command
|
// sprintf() format for time of the command
|
||||||
'%.3f s' => 'xx',
|
'%.3f s' => '%.3f xx',
|
||||||
'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',
|
'Webserver file %s' => 'Xx %s',
|
||||||
'Run file' => 'Xx',
|
'Run file' => 'Xx',
|
||||||
'File does not exist.' => 'Xx.',
|
'File does not exist.' => 'Xx.',
|
||||||
'File uploads are disabled.' => 'Xx.',
|
'File uploads are disabled.' => 'Xx.',
|
||||||
'Unable to upload a file.' => 'Xx.',
|
'Unable to upload a file.' => 'Xx.',
|
||||||
'Maximum allowed file size is %sB.' => 'Xx.',
|
'Maximum allowed file size is %sB.' => 'Xx %sB.',
|
||||||
'Too big POST data. Reduce the data or increase the %s configuration directive.' => 'Xx.',
|
'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',
|
||||||
@@ -78,13 +88,13 @@ $translations = array(
|
|||||||
'Saving' => 'Xx',
|
'Saving' => 'Xx',
|
||||||
'Format' => 'Xx',
|
'Format' => 'Xx',
|
||||||
'Data' => 'Xx',
|
'Data' => 'Xx',
|
||||||
|
|
||||||
'Database' => 'Xx',
|
'Database' => 'Xx',
|
||||||
'database' => 'xx',
|
'database' => 'xx',
|
||||||
|
'DB' => 'XX',
|
||||||
'Use' => 'Xx',
|
'Use' => 'Xx',
|
||||||
'Select database' => 'Xx',
|
'Select database' => 'Xx',
|
||||||
'Invalid database.' => 'Xx.',
|
'Invalid database.' => 'Xx.',
|
||||||
'Create new database' => 'Xx',
|
|
||||||
'Database has been dropped.' => 'Xx.',
|
'Database has been dropped.' => 'Xx.',
|
||||||
'Databases have been dropped.' => 'Xx.',
|
'Databases have been dropped.' => 'Xx.',
|
||||||
'Database has been created.' => 'Xx.',
|
'Database has been created.' => 'Xx.',
|
||||||
@@ -93,10 +103,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',
|
||||||
@@ -106,7 +116,7 @@ $translations = array(
|
|||||||
'Index Length' => 'Xx',
|
'Index Length' => 'Xx',
|
||||||
'Data Free' => 'Xx',
|
'Data Free' => 'Xx',
|
||||||
'Rows' => 'Xx',
|
'Rows' => 'Xx',
|
||||||
'%d in total' => 'xx',
|
'%d in total' => '%d xx',
|
||||||
'Analyze' => 'Xx',
|
'Analyze' => 'Xx',
|
||||||
'Optimize' => 'Xx',
|
'Optimize' => 'Xx',
|
||||||
'Vacuum' => 'Xx',
|
'Vacuum' => 'Xx',
|
||||||
@@ -119,9 +129,10 @@ $translations = array(
|
|||||||
'Tables have been moved.' => 'Xx.',
|
'Tables have been moved.' => 'Xx.',
|
||||||
'Copy' => 'Xx',
|
'Copy' => 'Xx',
|
||||||
'Tables have been copied.' => 'Xx.',
|
'Tables have been copied.' => 'Xx.',
|
||||||
|
'overwrite' => 'xx',
|
||||||
|
|
||||||
'Routines' => 'Xx',
|
'Routines' => 'Xx',
|
||||||
'Routine has been called, %d row(s) affected.' => array('Xx.', 'Xx.'),
|
'Routine has been called, %d row(s) affected.' => array('Xx, %d.', 'Xx, %d.'),
|
||||||
'Call' => 'Xx',
|
'Call' => 'Xx',
|
||||||
'Parameter name' => 'Xx',
|
'Parameter name' => 'Xx',
|
||||||
'Create procedure' => 'Xx',
|
'Create procedure' => 'Xx',
|
||||||
@@ -132,7 +143,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.',
|
||||||
@@ -145,7 +156,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',
|
||||||
@@ -170,35 +181,36 @@ $translations = array(
|
|||||||
'Default value' => 'Xx',
|
'Default value' => 'Xx',
|
||||||
'Default values' => 'Xx',
|
'Default values' => 'Xx',
|
||||||
'Drop' => 'Xx',
|
'Drop' => 'Xx',
|
||||||
'Are you sure?' => 'Xx',
|
'Drop %s?' => 'Xx %s?',
|
||||||
|
'Are you sure?' => 'Xx?',
|
||||||
'Size' => 'Xx',
|
'Size' => 'Xx',
|
||||||
'Compute' => 'Xx',
|
'Compute' => 'Xx',
|
||||||
'Move up' => 'Xx',
|
'Move up' => 'Xx',
|
||||||
'Move down' => 'Xx',
|
'Move down' => 'Xx',
|
||||||
'Remove' => 'Xx',
|
'Remove' => 'Xx',
|
||||||
'Maximum number of allowed fields exceeded. Please increase %s.' => 'Xx.',
|
'Maximum number of allowed fields exceeded. Please increase %s.' => 'Xx %s.',
|
||||||
|
|
||||||
'Partition by' => 'Xx',
|
'Partition by' => 'Xx',
|
||||||
|
'Partition' => '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.',
|
||||||
'View has been altered.' => 'Xx.',
|
'View has been altered.' => 'Xx.',
|
||||||
'View has been created.' => 'Xx.',
|
'View has been created.' => 'Xx.',
|
||||||
'Alter view' => 'Xx',
|
'Alter view' => 'Xx',
|
||||||
'Create view' => 'Xx',
|
'Create view' => 'Xx',
|
||||||
'Create materialized 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.',
|
||||||
@@ -214,7 +226,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.',
|
||||||
@@ -225,7 +237,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',
|
||||||
@@ -234,6 +246,7 @@ $translations = array(
|
|||||||
'Search' => 'Xx',
|
'Search' => 'Xx',
|
||||||
'anywhere' => 'xx',
|
'anywhere' => 'xx',
|
||||||
'Search data in tables' => 'Xx',
|
'Search data in tables' => 'Xx',
|
||||||
|
'as a regular expression' => 'xx',
|
||||||
'Sort' => 'Xx',
|
'Sort' => 'Xx',
|
||||||
'descending' => 'xx',
|
'descending' => 'xx',
|
||||||
'Limit' => 'Xx',
|
'Limit' => 'Xx',
|
||||||
@@ -243,29 +256,29 @@ $translations = array(
|
|||||||
'Full table scan' => 'Xx',
|
'Full table scan' => 'Xx',
|
||||||
'Unable to select the table' => 'Xx',
|
'Unable to select the table' => 'Xx',
|
||||||
'No rows.' => 'Xx.',
|
'No rows.' => 'Xx.',
|
||||||
'%d / ' => 'xx',
|
'%d / ' => '%d / ',
|
||||||
'%d row(s)' => array('xx', 'xx'),
|
'%d row(s)' => array('%d xx', '%d xx'),
|
||||||
'Page' => 'Xx',
|
'Page' => 'Xx',
|
||||||
'last' => 'xx',
|
'last' => 'xx',
|
||||||
'Load more data' => 'Xx',
|
'Load more data' => 'Xx',
|
||||||
'Loading' => 'Xx',
|
'Loading' => 'Xx',
|
||||||
'whole result' => 'xx',
|
'Whole result' => 'Xx',
|
||||||
'%d byte(s)' => array('xx', 'xx'),
|
'%d byte(s)' => array('%d xx', '%d xx'),
|
||||||
|
|
||||||
'Import' => 'Xx',
|
'Import' => 'Xx',
|
||||||
'%d row(s) have been imported.' => array('Xx.', '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.',
|
'Item%s has been inserted.' => 'Xx%s.',
|
||||||
'Item has been deleted.' => 'Xx.',
|
'Item has been deleted.' => 'Xx.',
|
||||||
'Item has been updated.' => 'Xx.',
|
'Item has been updated.' => 'Xx.',
|
||||||
'%d item(s) have been affected.' => array('Xx.', 'Xx.'),
|
'%d item(s) have been affected.' => array('%d xx.', '%d xx.'),
|
||||||
'New item' => 'Xx',
|
'New item' => 'Xx',
|
||||||
'original' => 'xx',
|
'original' => 'xx',
|
||||||
// label for value '' in enum data type
|
// label for value '' in enum data type
|
||||||
@@ -280,14 +293,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('Xx.', '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',
|
||||||
@@ -297,7 +310,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',
|
||||||
@@ -308,11 +321,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.',
|
'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',
|
||||||
@@ -321,7 +334,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',
|
||||||
@@ -329,11 +342,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.',
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -1,120 +1,233 @@
|
|||||||
<?php
|
<?php
|
||||||
$translations = array(
|
$translations = array(
|
||||||
'Login' => '登入',
|
// label for database system selection (MySQL, SQLite, ...)
|
||||||
'Logout successful.' => '成功登出。',
|
'Home' => null,
|
||||||
'Invalid credentials.' => '無效的憑證。',
|
'System' => '資料庫系統',
|
||||||
'Server' => '伺服器',
|
'Server' => '伺服器',
|
||||||
'Username' => '帳號',
|
'Username' => '帳號',
|
||||||
'Password' => '密碼',
|
'Password' => '密碼',
|
||||||
|
'Permanent login' => '永久登入',
|
||||||
|
'Login' => '登入',
|
||||||
|
'Logout' => '登出',
|
||||||
|
'Logged as: %s' => '登錄為: %s',
|
||||||
|
'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>.',
|
||||||
|
'Invalid server or credentials.' => null,
|
||||||
|
'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>.',
|
||||||
|
'Database does not support password.' => '資料庫不支援密碼。',
|
||||||
|
'Too many unsuccessful logins, try again in %d minute(s).' => '登錄失敗次數過多,請 %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 方法讓它永久化。',
|
||||||
|
'Language' => '語言',
|
||||||
|
'Invalid CSRF token. Send the form again.' => '無效的 CSRF token。請重新發送表單。',
|
||||||
|
'If you did not send this request from Adminer then close this page.' => '如果您並沒有從Adminer發送請求,請關閉此頁面。',
|
||||||
|
'No extension' => '無擴充模組',
|
||||||
|
'None of the supported PHP extensions (%s) are available.' => '沒有任何支援的 PHP 擴充模組(%s)。',
|
||||||
|
'Connecting to privileged ports is not allowed.' => '不允許連接到特權埠。',
|
||||||
|
'Disable %s or enable %s or %s extensions.' => '禁用 %s 或啟用 %s 或 %s 擴充模組。',
|
||||||
|
'Session support must be enabled.' => 'Session 必須被啟用。',
|
||||||
|
'Session expired, please login again.' => 'Session 已過期,請重新登入。',
|
||||||
|
'The action will be performed after successful login with the same credentials.' => '此操作將在成功使用相同的憑據登錄後執行。',
|
||||||
|
'%s version: %s through PHP extension %s' => '%s 版本:%s 透過 PHP 擴充模組 %s',
|
||||||
|
'Refresh' => '重新載入',
|
||||||
|
|
||||||
|
// text direction - 'ltr' or 'rtl'
|
||||||
|
'ltr' => 'ltr',
|
||||||
|
|
||||||
|
'Privileges' => '權限',
|
||||||
|
'Create user' => '建立使用者',
|
||||||
|
'User has been dropped.' => '已刪除使用者。',
|
||||||
|
'User has been altered.' => '已修改使用者。',
|
||||||
|
'User has been created.' => '已建立使用者。',
|
||||||
|
'Hashed' => 'Hashed',
|
||||||
|
'Column' => '欄位',
|
||||||
|
'Routine' => '程序',
|
||||||
|
'Grant' => '授權',
|
||||||
|
'Revoke' => '廢除',
|
||||||
|
|
||||||
|
'Process list' => '處理程序列表',
|
||||||
|
'%d process(es) have been killed.' => '%d 個 Process(es) 被終止',
|
||||||
|
'Kill' => '終止',
|
||||||
|
|
||||||
|
'Variables' => '變數',
|
||||||
|
'Status' => '狀態',
|
||||||
|
|
||||||
|
'SQL command' => 'SQL 命令',
|
||||||
|
'%d query(s) executed OK.' => '已順利執行 %d 個查詢。',
|
||||||
|
'Query executed OK, %d row(s) affected.' => '執行查詢 OK,%d 行受影響。',
|
||||||
|
'No commands to execute.' => '沒有命令可執行。',
|
||||||
|
'Error in query' => '查詢發生錯誤',
|
||||||
|
'Unknown error.' => '未知錯誤。',
|
||||||
|
'Warnings' => '警告',
|
||||||
|
'ATTACH queries are not supported.' => '不支援ATTACH查詢。',
|
||||||
|
'Execute' => '執行',
|
||||||
|
'Stop on error' => '出錯時停止',
|
||||||
|
'Show only errors' => '僅顯示錯誤訊息',
|
||||||
|
// sprintf() format for time of the command
|
||||||
|
'%.3f s' => '%.3f 秒',
|
||||||
|
'History' => '紀錄',
|
||||||
|
'Clear' => '清除',
|
||||||
|
'Edit all' => '編輯全部',
|
||||||
|
|
||||||
|
'File upload' => '檔案上傳',
|
||||||
|
'From server' => '從伺服器',
|
||||||
|
'Webserver file %s' => '網頁伺服器檔案 %s',
|
||||||
|
'Run file' => '執行檔案',
|
||||||
|
'File does not exist.' => '檔案不存在',
|
||||||
|
'File uploads are disabled.' => '檔案上傳已經被停用。',
|
||||||
|
'Unable to upload a file.' => '無法上傳檔案。',
|
||||||
|
'Maximum allowed file size is %sB.' => '允許的檔案上限大小為 %sB',
|
||||||
|
'Too big POST data. Reduce the data or increase the %s configuration directive.' => 'POST 資料太大。減少資料或者增加 %s 的設定值。',
|
||||||
|
'You can upload a big SQL file via FTP and import it from server.' => '您可以通過FTP上傳大型SQL檔並從伺服器導入。',
|
||||||
|
'You are offline.' => '您離線了。',
|
||||||
|
|
||||||
|
'Export' => '匯出',
|
||||||
|
'Output' => '輸出',
|
||||||
|
'open' => '打開',
|
||||||
|
'save' => '儲存',
|
||||||
|
'Saving' => '保存中',
|
||||||
|
'Format' => '格式',
|
||||||
|
'Data' => '資料',
|
||||||
|
|
||||||
|
'Database' => '資料庫',
|
||||||
|
'database' => '資料庫',
|
||||||
|
'DB' => '資料庫',
|
||||||
|
'Use' => '使用',
|
||||||
'Select database' => '選擇資料庫',
|
'Select database' => '選擇資料庫',
|
||||||
'Invalid database.' => '無效的資料庫。',
|
'Invalid database.' => '無效的資料庫。',
|
||||||
'Create new database' => '建立新資料庫',
|
|
||||||
'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 dropped.' => '資料庫已刪除。',
|
||||||
|
'Databases have 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命令',
|
'Database schema' => '資料庫結構',
|
||||||
'Logout' => '登出',
|
|
||||||
'database' => '資料庫',
|
// link to current database schema layout
|
||||||
'Use' => '使用',
|
'Permanent link' => '永久連結',
|
||||||
'No tables.' => '沒有資料表。',
|
|
||||||
'select' => '選擇',
|
// thousands separator - must contain single byte
|
||||||
'Item has been updated.' => '已更新項目。',
|
',' => ',',
|
||||||
'Item%s has been inserted.' => '已新增項目%s。',
|
'0123456789' => '0123456789',
|
||||||
'Edit' => '編輯',
|
'Engine' => '引擎',
|
||||||
'Insert' => '新增',
|
'Collation' => '校對',
|
||||||
'Save and insert next' => '儲存並新增下一筆',
|
'Data Length' => '資料長度',
|
||||||
'Delete' => '刪除',
|
'Index Length' => '索引長度',
|
||||||
'Database' => '資料庫',
|
'Data Free' => '資料空閒',
|
||||||
|
'Rows' => '行數',
|
||||||
|
'%d in total' => '總共 %d 個',
|
||||||
|
'Analyze' => '分析',
|
||||||
|
'Optimize' => '最佳化',
|
||||||
|
'Vacuum' => '整理(Vacuum)',
|
||||||
|
'Check' => '檢查',
|
||||||
|
'Repair' => '修復',
|
||||||
|
'Truncate' => '清空',
|
||||||
|
'Tables have been truncated.' => '已清空資料表。',
|
||||||
|
'Move to other database' => '轉移到其它資料庫',
|
||||||
|
'Move' => '轉移',
|
||||||
|
'Tables have been moved.' => '已轉移資料表。',
|
||||||
|
'Copy' => '複製',
|
||||||
|
'Tables have been copied.' => '資料表已經複製',
|
||||||
|
'overwrite' => '覆蓋',
|
||||||
|
|
||||||
'Routines' => '程序',
|
'Routines' => '程序',
|
||||||
'Indexes have been altered.' => '已修改索引。',
|
'Routine has been called, %d row(s) affected.' => '程序已被執行,%d 行被影響',
|
||||||
'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.' => '執行查詢OK,%d行受影響',
|
|
||||||
'Error in query' => '查詢發生錯誤',
|
|
||||||
'Execute' => '執行',
|
|
||||||
'Table' => '資料表',
|
|
||||||
'Foreign keys' => '外來鍵',
|
|
||||||
'Triggers' => '觸發器',
|
|
||||||
'View' => '檢視表',
|
|
||||||
'Unable to select the table' => '無法選擇該資料表',
|
|
||||||
'Invalid CSRF token. Send the form again.' => '無效的 CSRF token。請重新發送表單。',
|
|
||||||
'Comment' => '註解',
|
|
||||||
'Default values' => '預設值',
|
|
||||||
'%d byte(s)' => '%d byte(s)',
|
|
||||||
'No commands to execute.' => '沒有命令可執行。',
|
|
||||||
'Unable to upload a file.' => '無法上傳檔案。',
|
|
||||||
'File upload' => '檔案上傳',
|
|
||||||
'File uploads are disabled.' => '檔案上傳已經被停用。',
|
|
||||||
'Routine has been called, %d row(s) affected.' => '程序已被執行,%d行被影響',
|
|
||||||
'Call' => '呼叫',
|
'Call' => '呼叫',
|
||||||
'No extension' => '無擴充模組',
|
'Parameter name' => '參數名稱',
|
||||||
'None of the supported PHP extensions (%s) are available.' => '沒有任何支援的PHP擴充模組(%s)。',
|
'Create procedure' => '建立預存程序',
|
||||||
'Session support must be enabled.' => 'Session 必須被啟用。',
|
'Create function' => '建立函式',
|
||||||
'Session expired, please login again.' => 'Session 已過期,請重新登入。',
|
'Routine has been dropped.' => '已刪除程序。',
|
||||||
'Text length' => 'Text 長度',
|
'Routine has been altered.' => '已修改子程序。',
|
||||||
'Foreign key has been dropped.' => '已刪除外來鍵。',
|
'Routine has been created.' => '已建立子程序。',
|
||||||
'Foreign key has been altered.' => '已修改外來鍵。',
|
'Alter function' => '修改函式',
|
||||||
'Foreign key has been created.' => '已建立外來鍵。',
|
'Alter procedure' => '修改預存程序',
|
||||||
'Foreign key' => '外來鍵',
|
'Return type' => '回傳類型',
|
||||||
'Target table' => '目標資料表',
|
|
||||||
'Change' => '修改',
|
'Events' => '事件',
|
||||||
'Source' => '來源',
|
'Event has been dropped.' => '已刪除事件。',
|
||||||
'Target' => '目標',
|
'Event has been altered.' => '已修改事件。',
|
||||||
'Add column' => '新增資料列',
|
'Event has been created.' => '已建立事件。',
|
||||||
'Alter' => '修改',
|
'Alter event' => '修改事件',
|
||||||
'Add foreign key' => '新增外來鍵',
|
'Create event' => '建立事件',
|
||||||
'ON DELETE' => 'ON DELETE',
|
'At given time' => '在指定時間',
|
||||||
'ON UPDATE' => 'ON UPDATE',
|
'Every' => '每',
|
||||||
'Index Type' => '索引類型',
|
'Schedule' => '排程',
|
||||||
'Column (length)' => '列(長度)',
|
'Start' => '開始',
|
||||||
|
'End' => '結束',
|
||||||
|
'On completion preserve' => '在完成後儲存',
|
||||||
|
|
||||||
|
'Tables' => '資料表',
|
||||||
|
'Tables and views' => '資料表和檢視表',
|
||||||
|
'Table' => '資料表',
|
||||||
|
'No tables.' => '沒有資料表。',
|
||||||
|
'Alter table' => '修改資料表',
|
||||||
|
'Create table' => '建立資料表',
|
||||||
|
'Table has been dropped.' => '已經刪除資料表。',
|
||||||
|
'Tables have been dropped.' => '已經將資料表刪除。',
|
||||||
|
'Tables have been optimized.' => '已優化資料表。',
|
||||||
|
'Table has been altered.' => '資料表已修改。',
|
||||||
|
'Table has been created.' => '資料表已建立。',
|
||||||
|
'Table name' => '資料表名稱',
|
||||||
|
'Show structure' => '顯示結構',
|
||||||
|
'engine' => '引擎',
|
||||||
|
'collation' => '校對',
|
||||||
|
'Column name' => '欄位名稱',
|
||||||
|
'Type' => '類型',
|
||||||
|
'Length' => '長度',
|
||||||
|
'Auto Increment' => '自動遞增',
|
||||||
|
'Options' => '選項',
|
||||||
|
'Comment' => '註解',
|
||||||
|
'Default value' => '預設值',
|
||||||
|
'Default values' => '預設值',
|
||||||
|
'Drop' => '刪除',
|
||||||
|
'Drop %s?' => '刪除 %s?',
|
||||||
|
'Are you sure?' => '你確定嗎?',
|
||||||
|
'Size' => '大小',
|
||||||
|
'Compute' => '計算',
|
||||||
|
'Move up' => '上移',
|
||||||
|
'Move down' => '下移',
|
||||||
|
'Remove' => '移除',
|
||||||
|
'Maximum number of allowed fields exceeded. Please increase %s.' => '超過允許的字段數量的最大值。請增加 %s。',
|
||||||
|
|
||||||
|
'Partition by' => '分區類型',
|
||||||
|
'Partition' => null,
|
||||||
|
'Partitions' => '分區',
|
||||||
|
'Partition name' => '分區名稱',
|
||||||
|
'Values' => '值',
|
||||||
|
|
||||||
|
'View' => '檢視表',
|
||||||
|
'Materialized 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' => '建立檢視表',
|
||||||
'Name' => '名稱',
|
|
||||||
'Process list' => '處理程序列表',
|
'Indexes' => '索引',
|
||||||
'%d process(es) have been killed.' => '%d 個 Process(es) 被終止',
|
'Indexes have been altered.' => '已修改索引。',
|
||||||
'Kill' => '終止',
|
'Alter indexes' => '修改索引',
|
||||||
'Parameter name' => '參數名稱',
|
'Add next' => '新增下一筆',
|
||||||
'Database schema' => '資料庫架構',
|
'Index Type' => '索引類型',
|
||||||
'Create procedure' => '建立預存程序',
|
'Column (length)' => '欄位(長度)',
|
||||||
'Create function' => '建立函數',
|
|
||||||
'Routine has been dropped.' => '已刪除程序。',
|
'Foreign keys' => '外來鍵',
|
||||||
'Routine has been altered.' => '已修改子程序。',
|
'Foreign key' => '外來鍵',
|
||||||
'Routine has been created.' => '已建立子程序。',
|
'Foreign key has been dropped.' => '已刪除外來鍵。',
|
||||||
'Alter function' => '修改函數',
|
'Foreign key has been altered.' => '已修改外來鍵。',
|
||||||
'Alter procedure' => '修改過程',
|
'Foreign key has been created.' => '已建立外來鍵。',
|
||||||
'Return type' => '回傳類型',
|
'Target table' => '目標資料表',
|
||||||
|
'Change' => '變更',
|
||||||
|
'Source' => '來源',
|
||||||
|
'Target' => '目標',
|
||||||
|
'Add column' => '新增欄位',
|
||||||
|
'Alter' => '修改',
|
||||||
|
'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.' => '來源列和目標列必須具有相同的資料類型,在目標列上必須有一個索引並且引用的資料必須存在。',
|
||||||
|
|
||||||
|
'Triggers' => '觸發器',
|
||||||
'Add trigger' => '建立觸發器',
|
'Add trigger' => '建立觸發器',
|
||||||
'Trigger has been dropped.' => '已刪除觸發器。',
|
'Trigger has been dropped.' => '已刪除觸發器。',
|
||||||
'Trigger has been altered.' => '已修改觸發器。',
|
'Trigger has been altered.' => '已修改觸發器。',
|
||||||
@@ -123,146 +236,126 @@ $translations = array(
|
|||||||
'Create trigger' => '建立觸發器',
|
'Create trigger' => '建立觸發器',
|
||||||
'Time' => '時間',
|
'Time' => '時間',
|
||||||
'Event' => '事件',
|
'Event' => '事件',
|
||||||
'%s version: %s through PHP extension %s' => '%s版本:%s 透過PHP擴充模組 %s',
|
'Name' => '名稱',
|
||||||
'%d row(s)' => '%d行',
|
|
||||||
'Remove' => '移除',
|
'select' => '選擇',
|
||||||
'Are you sure?' => '你確定嗎?',
|
'Select' => '選擇',
|
||||||
'Privileges' => '權限',
|
'Select data' => '選擇資料',
|
||||||
'Create user' => '建立使用者',
|
'Functions' => '函式',
|
||||||
'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' => '集合',
|
'Aggregation' => '集合',
|
||||||
'Event has been dropped.' => '已刪除事件。',
|
'Search' => '搜尋',
|
||||||
'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.' => '已清空資料表。',
|
|
||||||
'Tables have been moved.' => '已轉移資料表。',
|
|
||||||
'Tables and views' => '資料表和檢視表',
|
|
||||||
'Engine' => '引擎',
|
|
||||||
'Collation' => '校對',
|
|
||||||
'Data Length' => '資料長度',
|
|
||||||
'Index Length' => '索引長度',
|
|
||||||
'Data Free' => '資料空閒',
|
|
||||||
'Rows' => '行數',
|
|
||||||
',' => ',',
|
|
||||||
'0123456789' => '0123456789',
|
|
||||||
'Analyze' => '分析',
|
|
||||||
'Optimize' => '最佳化',
|
|
||||||
'Check' => '檢查',
|
|
||||||
'Repair' => '修復',
|
|
||||||
'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行。',
|
|
||||||
'anywhere' => '任意位置',
|
'anywhere' => '任意位置',
|
||||||
|
'Search data in tables' => '在資料庫搜尋',
|
||||||
|
'as a regular expression' => null,
|
||||||
|
'Sort' => '排序',
|
||||||
|
'descending' => '降冪 (遞減)',
|
||||||
|
'Limit' => '限定',
|
||||||
|
'Limit rows' => '限制行數',
|
||||||
|
'Text length' => 'Text 長度',
|
||||||
|
'Action' => '動作',
|
||||||
|
'Full table scan' => '全資料表掃描',
|
||||||
|
'Unable to select the table' => '無法選擇該資料表',
|
||||||
|
'No rows.' => '沒有資料行。',
|
||||||
|
'%d / ' => '%d / ',
|
||||||
|
'%d row(s)' => '%d 行',
|
||||||
|
'Page' => '頁',
|
||||||
|
'last' => '最後一頁',
|
||||||
|
'Load more data' => '載入更多資料',
|
||||||
|
'Loading' => '載入中',
|
||||||
|
'Whole result' => '所有結果',
|
||||||
|
'%d byte(s)' => '%d byte(s)',
|
||||||
|
|
||||||
'Import' => '匯入',
|
'Import' => '匯入',
|
||||||
'Stop on error' => '出錯時停止',
|
'%d row(s) have been imported.' => '已匯入 %d 行。',
|
||||||
'%.3f s' => '%.3f秒',
|
'File must be in UTF-8 encoding.' => '檔必須使用UTF-8編碼。',
|
||||||
'$1-$3-$5' => '$1.$3.$5',
|
|
||||||
'[yyyy]-mm-dd' => '[yyyy].mm.dd',
|
// in-place editing in select
|
||||||
'History' => '紀錄',
|
'Modify' => '修改',
|
||||||
'Variables' => '變數',
|
'Ctrl+click on a value to modify it.' => '按住Ctrl並按一下某個值進行修改。',
|
||||||
'Source and target columns must have the same data type, there must be an index on the target columns and referenced data must exist.' => '來源列和目標列必須具有相同的資料類型,在目標列上必須有一個索引並且引用的資料必須存在。',
|
'Use edit link to modify this value.' => '使用編輯連結來修改。',
|
||||||
'Relations' => '關聯',
|
|
||||||
'Run file' => '執行檔案',
|
// %s can contain auto-increment value
|
||||||
'Clear' => '清除',
|
'Item%s has been inserted.' => '已新增項目 %s。',
|
||||||
'Maximum allowed file size is %sB.' => '允許的檔案上限大小為%sB',
|
'Item has been deleted.' => '該項目已被刪除',
|
||||||
|
'Item has been updated.' => '已更新項目。',
|
||||||
|
'%d item(s) have been affected.' => '%d 個項目受到影響。',
|
||||||
|
'New item' => '新增項目',
|
||||||
|
'original' => '原始',
|
||||||
|
// label for value '' in enum data type
|
||||||
|
'empty' => '空值',
|
||||||
|
'edit' => '編輯',
|
||||||
|
'Edit' => '編輯',
|
||||||
|
'Insert' => '新增',
|
||||||
|
'Save' => '儲存',
|
||||||
|
'Save and continue edit' => '儲存並繼續編輯',
|
||||||
|
'Save and insert next' => '儲存並新增下一筆',
|
||||||
|
'Selected' => '已選中',
|
||||||
|
'Clone' => '複製',
|
||||||
|
'Delete' => '刪除',
|
||||||
|
'You have no privileges to update this table.' => '您沒有許可權更新這個資料表。',
|
||||||
|
|
||||||
|
'E-mail' => '電子郵件',
|
||||||
|
'From' => '來自',
|
||||||
|
'Subject' => '主旨',
|
||||||
|
'Attachments' => '附件',
|
||||||
|
'Send' => '寄出',
|
||||||
|
'%d e-mail(s) have been sent.' => '已寄出 %d 封郵件。',
|
||||||
|
|
||||||
|
// data type descriptions
|
||||||
'Numbers' => '數字',
|
'Numbers' => '數字',
|
||||||
'Date and time' => '日期時間',
|
'Date and time' => '日期時間',
|
||||||
'Strings' => '字串',
|
'Strings' => '字串',
|
||||||
'Binary' => '二進位',
|
'Binary' => '二進位',
|
||||||
'Lists' => '列表',
|
'Lists' => '列表',
|
||||||
|
'Network' => '網路',
|
||||||
|
'Geometry' => '幾何',
|
||||||
|
'Relations' => '關聯',
|
||||||
|
|
||||||
'Editor' => '編輯器',
|
'Editor' => '編輯器',
|
||||||
'E-mail' => '電子郵件',
|
// date format in Editor: $1 yyyy, $2 yy, $3 mm, $4 m, $5 dd, $6 d
|
||||||
'From' => '來自',
|
'$1-$3-$5' => '$1.$3.$5',
|
||||||
'Subject' => '主旨',
|
// hint for date format - use language equivalents for day, month and year shortcuts
|
||||||
'Send' => '寄出',
|
'[yyyy]-mm-dd' => '[yyyy].mm.dd',
|
||||||
'%d e-mail(s) have been sent.' => '已寄出 %d 封郵件。',
|
// hint for time format - use language equivalents for hour, minute and second shortcuts
|
||||||
'Webserver file %s' => '網頁伺服器檔案 %s',
|
'HH:MM:SS' => 'HH:MM:SS',
|
||||||
'File does not exist.' => '檔案不存在',
|
'now' => '現在',
|
||||||
'Item has been deleted.' => '該項目已被刪除',
|
'yes' => '是',
|
||||||
'%d in total' => '總共 %d 個',
|
'no' => '否',
|
||||||
'Permanent login' => '永久登入',
|
|
||||||
'Table has been dropped.' => '已經刪除資料表。',
|
// general SQLite error in create, drop or rename database
|
||||||
'Databases have been dropped.' => '資料庫已刪除。',
|
'File exists.' => '檔案已存在。',
|
||||||
'Search data in tables' => '在資料庫搜尋',
|
'Please use one of the extensions %s.' => '請使用下列其中一個擴充模組 %s。',
|
||||||
'Schema' => '資料表結構',
|
|
||||||
|
// PostgreSQL and MS SQL schema support
|
||||||
'Alter schema' => '修改資料表結構',
|
'Alter schema' => '修改資料表結構',
|
||||||
'Create schema' => '建立資料表結構',
|
'Create schema' => '建立資料表結構',
|
||||||
'Schema has been dropped.' => '已刪除資料表結構。',
|
'Schema has been dropped.' => '已刪除資料表結構。',
|
||||||
'Schema has been created.' => '已建立資料表結構。',
|
'Schema has been created.' => '已建立資料表結構。',
|
||||||
'Schema has been altered.' => '已修改資料表結構。',
|
'Schema has been altered.' => '已修改資料表結構。',
|
||||||
|
'Schema' => '資料表結構',
|
||||||
|
'Invalid schema.' => '無效的資料表結構。',
|
||||||
|
|
||||||
|
// PostgreSQL sequences support
|
||||||
'Sequences' => '序列',
|
'Sequences' => '序列',
|
||||||
'Create sequence' => '建立序列',
|
'Create sequence' => '建立序列',
|
||||||
'Alter sequence' => '修改序列',
|
|
||||||
'Sequence has been dropped.' => '已刪除序列。',
|
'Sequence has been dropped.' => '已刪除序列。',
|
||||||
'Sequence has been created.' => '已建立序列。',
|
'Sequence has been created.' => '已建立序列。',
|
||||||
'Sequence has been altered.' => '已修改序列。',
|
'Sequence has been altered.' => '已修改序列。',
|
||||||
|
'Alter sequence' => '修改序列',
|
||||||
|
|
||||||
|
// PostgreSQL user types support
|
||||||
'User types' => '使用者類型',
|
'User types' => '使用者類型',
|
||||||
'Create type' => '建立類型',
|
'Create 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.' => '使用編輯連結來修改。',
|
'Alter type' => '修改類型',
|
||||||
'last' => '最後一頁',
|
|
||||||
'From server' => '從伺服器',
|
// Plugins
|
||||||
'System' => '資料庫系統',
|
'Columns' => null,
|
||||||
'Select data' => '選擇資料',
|
'Nullable' => null,
|
||||||
'Show structure' => '顯示結構',
|
'Default' => null,
|
||||||
'empty' => '空值',
|
'Yes' => null,
|
||||||
'Network' => '網路',
|
'No' => null,
|
||||||
'Geometry' => '幾何',
|
'One Time Password' => null,
|
||||||
'File exists.' => '檔案已存在。',
|
'Invalid OTP code.' => null,
|
||||||
'Attachments' => '附件',
|
|
||||||
'%d query(s) executed OK.' => '已順利執行 %d 個查詢。',
|
|
||||||
'Show only errors' => '僅顯示錯誤訊息',
|
|
||||||
'Refresh' => '重新載入',
|
|
||||||
'Invalid schema.' => '無效的資料表結構。',
|
|
||||||
'Please use one of the extensions %s.' => '請使用下列其中一個擴充模組 %s。',
|
|
||||||
'now' => '現在',
|
|
||||||
'ltr' => 'ltr',
|
|
||||||
'Tables have been copied.' => '資料表已經複製',
|
|
||||||
'Copy' => '複製',
|
|
||||||
'Permanent link' => '永久連結',
|
|
||||||
'Edit all' => '編輯全部',
|
|
||||||
'HH:MM:SS' => 'HH:MM:SS',
|
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -1,134 +1,39 @@
|
|||||||
<?php
|
<?php
|
||||||
$translations = array(
|
$translations = array(
|
||||||
'Login' => '登录',
|
// label for database system selection (MySQL, SQLite, ...)
|
||||||
'Logout successful.' => '注销成功。',
|
'Home' => null,
|
||||||
'Invalid credentials.' => '无效凭据。',
|
'System' => '系统',
|
||||||
'Server' => '服务器',
|
'Server' => '服务器',
|
||||||
'Username' => '用户名',
|
'Username' => '用户名',
|
||||||
'Password' => '密码',
|
'Password' => '密码',
|
||||||
'Select database' => '选择数据库',
|
'Permanent login' => '保持登录',
|
||||||
'Invalid database.' => '无效数据库。',
|
'Login' => '登录',
|
||||||
'Create new database' => '创建新数据库',
|
'Logout' => '登出',
|
||||||
'Table has been dropped.' => '已删除表。',
|
'Logged as: %s' => '登录用户:%s',
|
||||||
'Table has been altered.' => '已修改表。',
|
'Logout successful.' => '成功登出。',
|
||||||
'Table has been created.' => '已创建表。',
|
'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>.',
|
||||||
'Alter table' => '修改表',
|
'Invalid server or credentials.' => null,
|
||||||
'Create table' => '创建表',
|
'There is a space in the input password which might be the cause.' => '您输入的密码中有一个空格,这可能是导致问题的原因。',
|
||||||
'Table name' => '表名',
|
'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>.',
|
||||||
'engine' => '引擎',
|
'Database does not support password.' => '数据库不支持密码。',
|
||||||
'collation' => '校对',
|
'Too many unsuccessful logins, try again in %d minute(s).' => '登录失败次数过多,请 %d 分钟后重试。',
|
||||||
'Column name' => '字段名',
|
'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 方法让它永久化。',
|
||||||
'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.' => '已更新项目。',
|
|
||||||
'Item%s has been inserted.' => '已插入项目%s。',
|
|
||||||
'Edit' => '编辑',
|
|
||||||
'Insert' => '插入',
|
|
||||||
'Save and insert next' => '保存并插入下一个',
|
|
||||||
'Delete' => '删除',
|
|
||||||
'Database' => '数据库',
|
|
||||||
'Routines' => '子程序',
|
|
||||||
'Indexes have been altered.' => '已修改索引。',
|
|
||||||
'Indexes' => '索引',
|
|
||||||
'Alter indexes' => '修改索引',
|
|
||||||
'Add next' => '下一行插入',
|
|
||||||
'Language' => '语言',
|
'Language' => '语言',
|
||||||
'Select' => '选择',
|
'Invalid CSRF token. Send the form again.' => '无效 CSRF 令牌。请重新发送表单。',
|
||||||
'New item' => '新建数据',
|
'If you did not send this request from Adminer then close this page.' => '如果您并没有从Adminer发送请求,请关闭此页面。',
|
||||||
'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 字节',
|
|
||||||
'No commands to execute.' => '没有命令被执行。',
|
|
||||||
'Unable to upload a file.' => '不能上传文件。',
|
|
||||||
'File upload' => '文件上传',
|
|
||||||
'File uploads are disabled.' => '文件上传被禁用。',
|
|
||||||
'Routine has been called, %d row(s) affected.' => '子程序被调用,%d 行被影响。',
|
|
||||||
'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 必须被启用。',
|
'Connecting to privileged ports is not allowed.' => '不允许连接到特权端口。',
|
||||||
'Session expired, please login again.' => 'Session 已过期,请重新登录。',
|
'Disable %s or enable %s or %s extensions.' => '禁用 %s 或启用 %s 或 %s 扩展。',
|
||||||
'Text length' => '文本显示限制',
|
'Session support must be enabled.' => '必须启用会话支持。',
|
||||||
'Foreign key has been dropped.' => '已删除外键。',
|
'Session expired, please login again.' => '会话已过期,请重新登录。',
|
||||||
'Foreign key has been altered.' => '已修改外键。',
|
'The action will be performed after successful login with the same credentials.' => '此操作将在成功使用相同的凭据登录后执行。',
|
||||||
'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 行',
|
'Refresh' => '刷新',
|
||||||
'Remove' => '移除',
|
|
||||||
'Are you sure?' => '你确定吗?',
|
// text direction - 'ltr' or 'rtl'
|
||||||
|
'ltr' => 'ltr',
|
||||||
|
|
||||||
'Privileges' => '权限',
|
'Privileges' => '权限',
|
||||||
'Create user' => '创建用户',
|
'Create user' => '创建用户',
|
||||||
'User has been dropped.' => '已删除用户。',
|
'User has been dropped.' => '已删除用户。',
|
||||||
@@ -139,130 +44,317 @@ $translations = array(
|
|||||||
'Routine' => '子程序',
|
'Routine' => '子程序',
|
||||||
'Grant' => '授权',
|
'Grant' => '授权',
|
||||||
'Revoke' => '废除',
|
'Revoke' => '废除',
|
||||||
'Logged as: %s' => '登录用户:%s',
|
|
||||||
'Too big POST data. Reduce the data or increase the %s configuration directive.' => '太大的 POST 数据。减少数据或者增加 %s 配置命令。',
|
'Process list' => '进程列表',
|
||||||
'Move up' => '上移',
|
'%d process(es) have been killed.' => '%d 个进程被终止',
|
||||||
'Move down' => '下移',
|
'Kill' => '终止',
|
||||||
|
|
||||||
|
'Variables' => '变量',
|
||||||
|
'Status' => '状态',
|
||||||
|
|
||||||
|
'SQL command' => 'SQL命令',
|
||||||
|
'%d query(s) executed OK.' => '%d 条查询已成功执行。',
|
||||||
|
'Query executed OK, %d row(s) affected.' => '查询执行完毕,%d 行受影响。',
|
||||||
|
'No commands to execute.' => '没有命令被执行。',
|
||||||
|
'Error in query' => '查询出错',
|
||||||
|
'Unknown error.' => '未知错误。',
|
||||||
|
'Warnings' => '警告',
|
||||||
|
'ATTACH queries are not supported.' => '不支持ATTACH查询。',
|
||||||
|
'Execute' => '执行',
|
||||||
|
'Stop on error' => '出错时停止',
|
||||||
|
'Show only errors' => '仅显示错误',
|
||||||
|
// sprintf() format for time of the command
|
||||||
|
'%.3f s' => '%.3f 秒',
|
||||||
|
'History' => '历史',
|
||||||
|
'Clear' => '清除',
|
||||||
|
'Edit all' => '编辑全部',
|
||||||
|
|
||||||
|
'File upload' => '文件上传',
|
||||||
|
'From server' => '来自服务器',
|
||||||
|
'Webserver file %s' => 'Web服务器文件 %s',
|
||||||
|
'Run file' => '运行文件',
|
||||||
|
'File does not exist.' => '文件不存在。',
|
||||||
|
'File uploads are disabled.' => '文件上传被禁用。',
|
||||||
|
'Unable to upload a file.' => '不能上传文件。',
|
||||||
|
'Maximum allowed file size is %sB.' => '最多允许的文件大小为 %sB。',
|
||||||
|
'Too big POST data. Reduce the data or increase the %s configuration directive.' => 'POST 数据太大。请减少数据或者增加 %s 配置命令。',
|
||||||
|
'You can upload a big SQL file via FTP and import it from server.' => '您可以通过FTP上传大型SQL文件并从服务器导入。',
|
||||||
|
'You are offline.' => '您离线了。',
|
||||||
|
|
||||||
'Export' => '导出',
|
'Export' => '导出',
|
||||||
'Tables' => '表',
|
|
||||||
'Data' => '数据',
|
|
||||||
'Output' => '输出',
|
'Output' => '输出',
|
||||||
'open' => '打开',
|
'open' => '打开',
|
||||||
'save' => '保存',
|
'save' => '保存',
|
||||||
|
'Saving' => '保存中',
|
||||||
'Format' => '格式',
|
'Format' => '格式',
|
||||||
'Functions' => '函数',
|
'Data' => '数据',
|
||||||
'Aggregation' => '集合',
|
|
||||||
'Event has been dropped.' => '已删除事件。',
|
'Database' => '数据库',
|
||||||
'Event has been altered.' => '已修改事件。',
|
'database' => '数据库',
|
||||||
'Event has been created.' => '已创建事件。',
|
'DB' => '数据库',
|
||||||
'Alter event' => '修改事件',
|
'Use' => '使用',
|
||||||
'Create event' => '创建事件',
|
'Select database' => '选择数据库',
|
||||||
'Start' => '开始',
|
'Invalid database.' => '无效数据库。',
|
||||||
'End' => '结束',
|
'Database has been dropped.' => '已删除数据库。',
|
||||||
'Every' => '每',
|
'Databases have been dropped.' => '已删除数据库。',
|
||||||
'Status' => '状态',
|
'Database has been created.' => '已创建数据库。',
|
||||||
'On completion preserve' => '完成后保存',
|
'Database has been renamed.' => '已重命名数据库。',
|
||||||
'Events' => '事件',
|
'Database has been altered.' => '已修改数据库。',
|
||||||
'Schedule' => '调度',
|
'Alter database' => '修改数据库',
|
||||||
'At given time' => '在指定时间',
|
'Create database' => '创建数据库',
|
||||||
'Tables have been truncated.' => '已清空表。',
|
'Database schema' => '数据库概要',
|
||||||
'Tables have been moved.' => '已转移表。',
|
|
||||||
'Tables and views' => '表和视图',
|
// link to current database schema layout
|
||||||
|
'Permanent link' => '固定链接',
|
||||||
|
|
||||||
|
// thousands separator - must contain single byte
|
||||||
|
',' => ',',
|
||||||
|
'0123456789' => '0123456789',
|
||||||
'Engine' => '引擎',
|
'Engine' => '引擎',
|
||||||
'Collation' => '校对',
|
'Collation' => '校对',
|
||||||
'Data Length' => '数据长度',
|
'Data Length' => '数据长度',
|
||||||
'Index Length' => '索引长度',
|
'Index Length' => '索引长度',
|
||||||
'Data Free' => '数据空闲',
|
'Data Free' => '数据空闲',
|
||||||
'Rows' => '行数',
|
'Rows' => '行数',
|
||||||
',' => ',',
|
'%d in total' => '共计 %d',
|
||||||
'0123456789' => '0123456789',
|
|
||||||
'Analyze' => '分析',
|
'Analyze' => '分析',
|
||||||
'Optimize' => '优化',
|
'Optimize' => '优化',
|
||||||
|
'Vacuum' => '整理(Vacuum)',
|
||||||
'Check' => '检查',
|
'Check' => '检查',
|
||||||
'Repair' => '修复',
|
'Repair' => '修复',
|
||||||
'Truncate' => '清空',
|
'Truncate' => '清空',
|
||||||
|
'Tables have been truncated.' => '已清空表。',
|
||||||
'Move to other database' => '转移到其它数据库',
|
'Move to other database' => '转移到其它数据库',
|
||||||
'Move' => '转移',
|
'Move' => '转移',
|
||||||
'Save and continue edit' => '保存并继续编辑',
|
'Tables have been moved.' => '已转移表。',
|
||||||
'original' => '原始',
|
'Copy' => '复制',
|
||||||
'%d item(s) have been affected.' => '%d 个项目受到影响。',
|
'Tables have been copied.' => '已复制表。',
|
||||||
'whole result' => '所有结果',
|
'overwrite' => '覆盖',
|
||||||
|
|
||||||
|
'Routines' => '子程序',
|
||||||
|
'Routine has been called, %d row(s) affected.' => '子程序被调用,%d 行被影响。',
|
||||||
|
'Call' => '调用',
|
||||||
|
'Parameter name' => '参数名',
|
||||||
|
'Create procedure' => '创建过程',
|
||||||
|
'Create function' => '创建函数',
|
||||||
|
'Routine has been dropped.' => '已删除子程序。',
|
||||||
|
'Routine has been altered.' => '已修改子程序。',
|
||||||
|
'Routine has been created.' => '已创建子程序。',
|
||||||
|
'Alter function' => '修改函数',
|
||||||
|
'Alter procedure' => '修改过程',
|
||||||
|
'Return type' => '返回类型',
|
||||||
|
|
||||||
|
'Events' => '事件',
|
||||||
|
'Event has been dropped.' => '已删除事件。',
|
||||||
|
'Event has been altered.' => '已修改事件。',
|
||||||
|
'Event has been created.' => '已创建事件。',
|
||||||
|
'Alter event' => '修改事件',
|
||||||
|
'Create event' => '创建事件',
|
||||||
|
'At given time' => '在指定时间',
|
||||||
|
'Every' => '每',
|
||||||
|
'Schedule' => '调度',
|
||||||
|
'Start' => '开始',
|
||||||
|
'End' => '结束',
|
||||||
|
'On completion preserve' => '完成后仍保留',
|
||||||
|
|
||||||
|
'Tables' => '表',
|
||||||
|
'Tables and views' => '表和视图',
|
||||||
|
'Table' => '表',
|
||||||
|
'No tables.' => '没有表。',
|
||||||
|
'Alter table' => '修改表',
|
||||||
|
'Create table' => '创建表',
|
||||||
|
'Table has been dropped.' => '已删除表。',
|
||||||
'Tables have been dropped.' => '已删除表。',
|
'Tables have been dropped.' => '已删除表。',
|
||||||
'Clone' => '复制',
|
'Tables have been optimized.' => '已优化表。',
|
||||||
|
'Table has been altered.' => '已修改表。',
|
||||||
|
'Table has been created.' => '已创建表。',
|
||||||
|
'Table name' => '表名',
|
||||||
|
'Show structure' => '显示结构',
|
||||||
|
'engine' => '引擎',
|
||||||
|
'collation' => '校对',
|
||||||
|
'Column name' => '字段名',
|
||||||
|
'Type' => '类型',
|
||||||
|
'Length' => '长度',
|
||||||
|
'Auto Increment' => '自动增量',
|
||||||
|
'Options' => '选项',
|
||||||
|
'Comment' => '注释',
|
||||||
|
'Default value' => '默认值',
|
||||||
|
'Default values' => '默认值',
|
||||||
|
'Drop' => '删除',
|
||||||
|
'Drop %s?' => '删除 %s?',
|
||||||
|
'Are you sure?' => '您确定吗?',
|
||||||
|
'Size' => '大小',
|
||||||
|
'Compute' => '计算',
|
||||||
|
'Move up' => '上移',
|
||||||
|
'Move down' => '下移',
|
||||||
|
'Remove' => '移除',
|
||||||
'Maximum number of allowed fields exceeded. Please increase %s.' => '超过最多允许的字段数量。请增加 %s。',
|
'Maximum number of allowed fields exceeded. Please increase %s.' => '超过最多允许的字段数量。请增加 %s。',
|
||||||
|
|
||||||
'Partition by' => '分区类型',
|
'Partition by' => '分区类型',
|
||||||
|
'Partition' => null,
|
||||||
'Partitions' => '分区',
|
'Partitions' => '分区',
|
||||||
'Partition name' => '分区名',
|
'Partition name' => '分区名',
|
||||||
'Values' => '值',
|
'Values' => '值',
|
||||||
'%d row(s) have been imported.' => '%d 行已导入。',
|
|
||||||
'anywhere' => '任意位置',
|
'View' => '视图',
|
||||||
'Import' => '导入',
|
'Materialized view' => '物化视图',
|
||||||
'Stop on error' => '出错时停止',
|
'View has been dropped.' => '已删除视图。',
|
||||||
'%.3f s' => '%.3f 秒',
|
'View has been altered.' => '已修改视图。',
|
||||||
'$1-$3-$5' => '$1.$3.$5',
|
'View has been created.' => '已创建视图。',
|
||||||
'[yyyy]-mm-dd' => '[yyyy].mm.dd',
|
'Alter view' => '修改视图',
|
||||||
'History' => '历史',
|
'Create view' => '创建视图',
|
||||||
'Variables' => '变量',
|
|
||||||
|
'Indexes' => '索引',
|
||||||
|
'Indexes have been altered.' => '已修改索引。',
|
||||||
|
'Alter indexes' => '修改索引',
|
||||||
|
'Add next' => '下一行插入',
|
||||||
|
'Index Type' => '索引类型',
|
||||||
|
'Column (length)' => '列(长度)',
|
||||||
|
|
||||||
|
'Foreign keys' => '外键',
|
||||||
|
'Foreign key' => '外键',
|
||||||
|
'Foreign key has been dropped.' => '已删除外键。',
|
||||||
|
'Foreign key has been altered.' => '已修改外键。',
|
||||||
|
'Foreign key has been created.' => '已创建外键。',
|
||||||
|
'Target table' => '目标表',
|
||||||
|
'Change' => '修改',
|
||||||
|
'Source' => '源',
|
||||||
|
'Target' => '目标',
|
||||||
|
'Add column' => '增加列',
|
||||||
|
'Alter' => '修改',
|
||||||
|
'Add foreign key' => '添加外键',
|
||||||
|
'ON DELETE' => 'ON 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.' => '源列和目标列必须具有相同的数据类型,在目标列上必须有一个索引并且引用的数据必须存在。',
|
||||||
'Relations' => '关联信息',
|
|
||||||
'Run file' => '运行文件',
|
'Triggers' => '触发器',
|
||||||
'Clear' => '清除',
|
'Add trigger' => '创建触发器',
|
||||||
'Maximum allowed file size is %sB.' => '最多允许的文件大小为 %sB',
|
'Trigger has been dropped.' => '已删除触发器。',
|
||||||
|
'Trigger has been altered.' => '已修改触发器。',
|
||||||
|
'Trigger has been created.' => '已创建触发器。',
|
||||||
|
'Alter trigger' => '修改触发器',
|
||||||
|
'Create trigger' => '创建触发器',
|
||||||
|
'Time' => '时间',
|
||||||
|
'Event' => '事件',
|
||||||
|
'Name' => '名称',
|
||||||
|
|
||||||
|
'select' => '选择',
|
||||||
|
'Select' => '选择',
|
||||||
|
'Select data' => '选择数据',
|
||||||
|
'Functions' => '函数',
|
||||||
|
'Aggregation' => '集合',
|
||||||
|
'Search' => '搜索',
|
||||||
|
'anywhere' => '任意位置',
|
||||||
|
'Search data in tables' => '在表中搜索数据',
|
||||||
|
'as a regular expression' => null,
|
||||||
|
'Sort' => '排序',
|
||||||
|
'descending' => '降序',
|
||||||
|
'Limit' => '范围',
|
||||||
|
'Limit rows' => '限制行数',
|
||||||
|
'Text length' => '文本显示限制',
|
||||||
|
'Action' => '动作',
|
||||||
|
'Full table scan' => '全表扫描',
|
||||||
|
'Unable to select the table' => '不能选择该表',
|
||||||
|
'No rows.' => '无数据。',
|
||||||
|
'%d / ' => '%d / ',
|
||||||
|
'%d row(s)' => '%d 行',
|
||||||
|
'Page' => '页面',
|
||||||
|
'last' => '最后',
|
||||||
|
'Load more data' => '加载更多数据',
|
||||||
|
'Loading' => '加载中',
|
||||||
|
'Whole result' => '所有结果',
|
||||||
|
'%d byte(s)' => '%d 字节',
|
||||||
|
|
||||||
|
'Import' => '导入',
|
||||||
|
'%d row(s) have been imported.' => '%d 行已导入。',
|
||||||
|
'File must be in UTF-8 encoding.' => '文件必须使用UTF-8编码。',
|
||||||
|
|
||||||
|
// in-place editing in select
|
||||||
|
'Modify' => '修改',
|
||||||
|
'Ctrl+click on a value to modify it.' => '按住Ctrl并单击某个值进行修改。',
|
||||||
|
'Use edit link to modify this value.' => '使用编辑链接修改该值。',
|
||||||
|
|
||||||
|
// %s can contain auto-increment value
|
||||||
|
'Item%s has been inserted.' => '已插入项目%s。',
|
||||||
|
'Item has been deleted.' => '已删除项目。',
|
||||||
|
'Item has been updated.' => '已更新项目。',
|
||||||
|
'%d item(s) have been affected.' => '%d 个项目受到影响。',
|
||||||
|
'New item' => '新建数据',
|
||||||
|
'original' => '原始',
|
||||||
|
// label for value '' in enum data type
|
||||||
|
'empty' => '空',
|
||||||
|
'edit' => '编辑',
|
||||||
|
'Edit' => '编辑',
|
||||||
|
'Insert' => '插入',
|
||||||
|
'Save' => '保存',
|
||||||
|
'Save and continue edit' => '保存并继续编辑',
|
||||||
|
'Save and insert next' => '保存并插入下一个',
|
||||||
|
'Selected' => '已选中',
|
||||||
|
'Clone' => '复制',
|
||||||
|
'Delete' => '删除',
|
||||||
|
'You have no privileges to update this table.' => '您没有权限更新这个表。',
|
||||||
|
|
||||||
|
'E-mail' => '电子邮件',
|
||||||
|
'From' => '来自',
|
||||||
|
'Subject' => '主题',
|
||||||
|
'Attachments' => '附件',
|
||||||
|
'Send' => '发送',
|
||||||
|
'%d e-mail(s) have been sent.' => '%d 封邮件已发送。',
|
||||||
|
|
||||||
|
// data type descriptions
|
||||||
'Numbers' => '数字',
|
'Numbers' => '数字',
|
||||||
'Date and time' => '日期时间',
|
'Date and time' => '日期时间',
|
||||||
'Strings' => '字符串',
|
'Strings' => '字符串',
|
||||||
'Binary' => '二进制',
|
'Binary' => '二进制',
|
||||||
'Lists' => '列表',
|
'Lists' => '列表',
|
||||||
|
'Network' => '网络',
|
||||||
|
'Geometry' => '几何图形',
|
||||||
|
'Relations' => '关联信息',
|
||||||
|
|
||||||
'Editor' => '编辑器',
|
'Editor' => '编辑器',
|
||||||
'E-mail' => '电子邮件',
|
// date format in Editor: $1 yyyy, $2 yy, $3 mm, $4 m, $5 dd, $6 d
|
||||||
'From' => '来自',
|
'$1-$3-$5' => '$1.$3.$5',
|
||||||
'Subject' => '主题',
|
// hint for date format - use language equivalents for day, month and year shortcuts
|
||||||
'Send' => '发送',
|
'[yyyy]-mm-dd' => '[yyyy].mm.dd',
|
||||||
'%d e-mail(s) have been sent.' => '%d 封邮件已发送。',
|
// hint for time format - use language equivalents for hour, minute and second shortcuts
|
||||||
'Webserver file %s' => 'Web服务器文件 %s',
|
'HH:MM:SS' => 'HH:MM:SS',
|
||||||
'File does not exist.' => '文件不存在。',
|
'now' => '现在',
|
||||||
'%d in total' => '共计 %d',
|
'yes' => '是',
|
||||||
'Permanent login' => '保持登录',
|
'no' => '否',
|
||||||
'Databases have been dropped.' => '已删除数据库。',
|
|
||||||
'Search data in tables' => '在表中搜索数据',
|
// general SQLite error in create, drop or rename database
|
||||||
'Schema' => '模式',
|
'File exists.' => '文件已存在。',
|
||||||
|
'Please use one of the extensions %s.' => '请使用其中一个扩展:%s。',
|
||||||
|
|
||||||
|
// PostgreSQL and MS SQL schema support
|
||||||
'Alter schema' => '修改模式',
|
'Alter schema' => '修改模式',
|
||||||
'Create schema' => '创建模式',
|
'Create schema' => '创建模式',
|
||||||
'Schema has been dropped.' => '已删除模式。',
|
'Schema has been dropped.' => '已删除模式。',
|
||||||
'Schema has been created.' => '已创建模式。',
|
'Schema has been created.' => '已创建模式。',
|
||||||
'Schema has been altered.' => '已修改模式。',
|
'Schema has been altered.' => '已修改模式。',
|
||||||
|
'Schema' => '模式',
|
||||||
|
'Invalid schema.' => '非法模式。',
|
||||||
|
|
||||||
|
// PostgreSQL sequences support
|
||||||
'Sequences' => '序列',
|
'Sequences' => '序列',
|
||||||
'Create sequence' => '创建序列',
|
'Create sequence' => '创建序列',
|
||||||
'Alter sequence' => '修改序列',
|
|
||||||
'Sequence has been dropped.' => '已删除序列。',
|
'Sequence has been dropped.' => '已删除序列。',
|
||||||
'Sequence has been created.' => '已创建序列。',
|
'Sequence has been created.' => '已创建序列。',
|
||||||
'Sequence has been altered.' => '已修改序列。',
|
'Sequence has been altered.' => '已修改序列。',
|
||||||
|
'Alter sequence' => '修改序列',
|
||||||
|
|
||||||
|
// PostgreSQL user types support
|
||||||
'User types' => '用户类型',
|
'User types' => '用户类型',
|
||||||
'Create type' => '创建类型',
|
'Create 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.' => '使用编辑链接来修改该值。',
|
'Alter type' => '修改类型',
|
||||||
'last' => '最后',
|
|
||||||
'From server' => '来自服务器',
|
'Columns' => null,
|
||||||
'System' => '系统',
|
'Nullable' => null,
|
||||||
'Select data' => '选择数据',
|
'Default' => null,
|
||||||
'Show structure' => '显示结构',
|
'Yes' => null,
|
||||||
'empty' => '空',
|
'No' => null,
|
||||||
'Network' => '网络',
|
'One Time Password' => null,
|
||||||
'Geometry' => '几何图形',
|
'Invalid OTP code.' => null,
|
||||||
'File exists.' => '文件已存在。',
|
|
||||||
'Attachments' => '附件',
|
|
||||||
'%d query(s) executed OK.' => '%d 条查询已成功执行。',
|
|
||||||
'Show only errors' => '仅显示错误',
|
|
||||||
'Refresh' => '刷新',
|
|
||||||
'Invalid schema.' => '非法模式。',
|
|
||||||
'Please use one of the extensions %s.' => '请使用这些扩展中的一个:%s。',
|
|
||||||
'now' => '现在',
|
|
||||||
'ltr' => 'ltr',
|
|
||||||
'Tables have been copied.' => '表已复制。',
|
|
||||||
'Copy' => '复制',
|
|
||||||
'Permanent link' => '固定链接',
|
|
||||||
'Edit all' => '编辑全部',
|
|
||||||
'HH:MM:SS' => 'HH:MM:SS',
|
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -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')),
|
||||||
@@ -17,7 +20,7 @@ function adminer_object() {
|
|||||||
new AdminerDumpXml,
|
new AdminerDumpXml,
|
||||||
new AdminerDumpAlter,
|
new AdminerDumpAlter,
|
||||||
//~ new AdminerSqlLog("past-" . rtrim(`git describe --tags --abbrev=0`) . ".sql"),
|
//~ new AdminerSqlLog("past-" . rtrim(`git describe --tags --abbrev=0`) . ".sql"),
|
||||||
//~ new AdminerEditCalendar("<script type='text/javascript' src='../externals/jquery-ui/jquery-1.4.4.js'></script>\n<script type='text/javascript' src='../externals/jquery-ui/ui/jquery.ui.core.js'></script>\n<script type='text/javascript' src='../externals/jquery-ui/ui/jquery.ui.widget.js'></script>\n<script type='text/javascript' src='../externals/jquery-ui/ui/jquery.ui.datepicker.js'></script>\n<script type='text/javascript' src='../externals/jquery-ui/ui/jquery.ui.mouse.js'></script>\n<script type='text/javascript' src='../externals/jquery-ui/ui/jquery.ui.slider.js'></script>\n<script type='text/javascript' src='../externals/jquery-timepicker/jquery-ui-timepicker-addon.js'></script>\n<link rel='stylesheet' href='../externals/jquery-ui/themes/base/jquery.ui.all.css'>\n<style type='text/css'>\n.ui-timepicker-div .ui-widget-header { margin-bottom: 8px; }\n.ui-timepicker-div dl { text-align: left; }\n.ui-timepicker-div dl dt { height: 25px; }\n.ui-timepicker-div dl dd { margin: -25px 0 10px 65px; }\n.ui-timepicker-div td { font-size: 90%; }\n</style>\n", "../externals/jquery-ui/ui/i18n/jquery.ui.datepicker-%s.js"),
|
//~ new AdminerEditCalendar(script_src("../externals/jquery-ui/jquery-1.4.4.js") . script_src("../externals/jquery-ui/ui/jquery.ui.core.js") . script_src("../externals/jquery-ui/ui/jquery.ui.widget.js") . script_src("../externals/jquery-ui/ui/jquery.ui.datepicker.js") . script_src("../externals/jquery-ui/ui/jquery.ui.mouse.js") . script_src("../externals/jquery-ui/ui/jquery.ui.slider.js") . script_src("../externals/jquery-timepicker/jquery-ui-timepicker-addon.js") . "<link rel='stylesheet' href='../externals/jquery-ui/themes/base/jquery.ui.all.css'>\n<style>\n.ui-timepicker-div .ui-widget-header { margin-bottom: 8px; }\n.ui-timepicker-div dl { text-align: left; }\n.ui-timepicker-div dl dt { height: 25px; }\n.ui-timepicker-div dl dd { margin: -25px 0 10px 65px; }\n.ui-timepicker-div td { font-size: 90%; }\n</style>\n", "../externals/jquery-ui/ui/i18n/jquery.ui.datepicker-%s.js"),
|
||||||
//~ new AdminerTinymce("../externals/tinymce/jscripts/tiny_mce/tiny_mce_dev.js"),
|
//~ new AdminerTinymce("../externals/tinymce/jscripts/tiny_mce/tiny_mce_dev.js"),
|
||||||
//~ new AdminerWymeditor(array("../externals/wymeditor/src/jquery/jquery.js", "../externals/wymeditor/src/wymeditor/jquery.wymeditor.js", "../externals/wymeditor/src/wymeditor/jquery.wymeditor.explorer.js", "../externals/wymeditor/src/wymeditor/jquery.wymeditor.mozilla.js", "../externals/wymeditor/src/wymeditor/jquery.wymeditor.opera.js", "../externals/wymeditor/src/wymeditor/jquery.wymeditor.safari.js")),
|
//~ new AdminerWymeditor(array("../externals/wymeditor/src/jquery/jquery.js", "../externals/wymeditor/src/wymeditor/jquery.wymeditor.js", "../externals/wymeditor/src/wymeditor/jquery.wymeditor.explorer.js", "../externals/wymeditor/src/wymeditor/jquery.wymeditor.mozilla.js", "../externals/wymeditor/src/wymeditor/jquery.wymeditor.opera.js", "../externals/wymeditor/src/wymeditor/jquery.wymeditor.safari.js")),
|
||||||
new AdminerFileUpload(""),
|
new AdminerFileUpload(""),
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
<?php
|
<?php
|
||||||
page_header(lang('Privileges'));
|
page_header(lang('Privileges'));
|
||||||
|
|
||||||
|
echo '<p class="links"><a href="' . h(ME) . 'user=">' . lang('Create user') . "</a>";
|
||||||
|
|
||||||
$result = $connection->query("SELECT User, Host FROM mysql." . (DB == "" ? "user" : "db WHERE " . q(DB) . " LIKE Db") . " ORDER BY Host, User");
|
$result = $connection->query("SELECT User, Host FROM mysql." . (DB == "" ? "user" : "db WHERE " . q(DB) . " LIKE Db") . " ORDER BY Host, User");
|
||||||
$grant = $result;
|
$grant = $result;
|
||||||
if (!$result) {
|
if (!$result) {
|
||||||
@@ -12,8 +14,8 @@ echo "<form action=''><p>\n";
|
|||||||
hidden_fields_get();
|
hidden_fields_get();
|
||||||
echo "<input type='hidden' name='db' value='" . h(DB) . "'>\n";
|
echo "<input type='hidden' name='db' value='" . h(DB) . "'>\n";
|
||||||
echo ($grant ? "" : "<input type='hidden' name='grant' value=''>\n");
|
echo ($grant ? "" : "<input type='hidden' name='grant' value=''>\n");
|
||||||
echo "<table cellspacing='0'>\n";
|
echo "<table>\n";
|
||||||
echo "<thead><tr><th>" . lang('Username') . "<th>" . lang('Server') . "<th> </thead>\n";
|
echo "<thead><tr><th>" . lang('Username') . "<th>" . lang('Server') . "<th></thead>\n";
|
||||||
|
|
||||||
while ($row = $result->fetch_assoc()) {
|
while ($row = $result->fetch_assoc()) {
|
||||||
echo '<tr' . odd() . '><td>' . h($row["User"]) . "<td>" . h($row["Host"]) . '<td><a href="' . h(ME . 'user=' . urlencode($row["User"]) . '&host=' . urlencode($row["Host"])) . '">' . lang('Edit') . "</a>\n";
|
echo '<tr' . odd() . '><td>' . h($row["User"]) . "<td>" . h($row["Host"]) . '<td><a href="' . h(ME . 'user=' . urlencode($row["User"]) . '&host=' . urlencode($row["Host"])) . '">' . lang('Edit') . "</a>\n";
|
||||||
@@ -25,5 +27,3 @@ if (!$grant || DB != "") {
|
|||||||
|
|
||||||
echo "</table>\n";
|
echo "</table>\n";
|
||||||
echo "</form>\n";
|
echo "</form>\n";
|
||||||
|
|
||||||
echo '<p class="links"><a href="' . h(ME) . 'user=">' . lang('Create user') . "</a>";
|
|
||||||
|
|||||||
@@ -1,17 +1,18 @@
|
|||||||
<?php
|
<?php
|
||||||
$PROCEDURE = $_GET["procedure"];
|
$PROCEDURE = ($_GET["name"] ? $_GET["name"] : $_GET["procedure"]);
|
||||||
$routine = (isset($_GET["function"]) ? "FUNCTION" : "PROCEDURE");
|
$routine = (isset($_GET["function"]) ? "FUNCTION" : "PROCEDURE");
|
||||||
$row = $_POST;
|
$row = $_POST;
|
||||||
$row["fields"] = (array) $row["fields"];
|
$row["fields"] = (array) $row["fields"];
|
||||||
|
|
||||||
if ($_POST && !process_fields($row["fields"]) && !$error) {
|
if ($_POST && !process_fields($row["fields"]) && !$error) {
|
||||||
|
$orig = routine($_GET["procedure"], $routine);
|
||||||
$temp_name = "$row[name]_adminer_" . uniqid();
|
$temp_name = "$row[name]_adminer_" . uniqid();
|
||||||
drop_create(
|
drop_create(
|
||||||
"DROP $routine " . idf_escape($PROCEDURE),
|
"DROP $routine " . routine_id($PROCEDURE, $orig),
|
||||||
create_routine($routine, $row),
|
create_routine($routine, $row),
|
||||||
"DROP $routine " . idf_escape($row["name"]),
|
"DROP $routine " . routine_id($row["name"], $row),
|
||||||
create_routine($routine, array("name" => $temp_name) + $row),
|
create_routine($routine, array("name" => $temp_name) + $row),
|
||||||
"DROP $routine " . idf_escape($temp_name),
|
"DROP $routine " . routine_id($temp_name, $row),
|
||||||
substr(ME, 0, -1),
|
substr(ME, 0, -1),
|
||||||
lang('Routine has been dropped.'),
|
lang('Routine has been dropped.'),
|
||||||
lang('Routine has been altered.'),
|
lang('Routine has been altered.'),
|
||||||
@@ -24,7 +25,7 @@ if ($_POST && !process_fields($row["fields"]) && !$error) {
|
|||||||
page_header(($PROCEDURE != "" ? (isset($_GET["function"]) ? lang('Alter function') : lang('Alter procedure')) . ": " . h($PROCEDURE) : (isset($_GET["function"]) ? lang('Create function') : lang('Create procedure'))), $error);
|
page_header(($PROCEDURE != "" ? (isset($_GET["function"]) ? lang('Alter function') : lang('Alter procedure')) . ": " . h($PROCEDURE) : (isset($_GET["function"]) ? lang('Create function') : lang('Create procedure'))), $error);
|
||||||
|
|
||||||
if (!$_POST && $PROCEDURE != "") {
|
if (!$_POST && $PROCEDURE != "") {
|
||||||
$row = routine($PROCEDURE, $routine);
|
$row = routine($_GET["procedure"], $routine);
|
||||||
$row["name"] = $PROCEDURE;
|
$row["name"] = $PROCEDURE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -34,21 +35,28 @@ $routine_languages = routine_languages();
|
|||||||
?>
|
?>
|
||||||
|
|
||||||
<form action="" method="post" id="form">
|
<form action="" method="post" id="form">
|
||||||
<p><?php echo lang('Name'); ?>: <input name="name" value="<?php echo h($row["name"]); ?>" maxlength="64" autocapitalize="off">
|
<p><?php echo lang('Name'); ?>: <input name="name" value="<?php echo h($row["name"]); ?>" data-maxlength="64" autocapitalize="off">
|
||||||
<?php echo ($routine_languages ? lang('Language') . ": " . html_select("language", $routine_languages, $row["language"]) : ""); ?>
|
<?php echo ($routine_languages ? lang('Language') . ": " . html_select("language", $routine_languages, $row["language"]) . "\n" : ""); ?>
|
||||||
<input type="submit" value="<?php echo lang('Save'); ?>">
|
<input type="submit" value="<?php echo lang('Save'); ?>">
|
||||||
<table cellspacing="0" class="nowrap">
|
<div class="scrollable">
|
||||||
|
<table cellspacing="0" class="nowrap" id="edit-fields">
|
||||||
<?php
|
<?php
|
||||||
edit_fields($row["fields"], $collations, $routine);
|
edit_fields($row["fields"], $collations, $routine);
|
||||||
if (isset($_GET["function"])) {
|
if (isset($_GET["function"])) {
|
||||||
echo "<tr><td>" . lang('Return type');
|
echo "<tbody><tr><th></th>",
|
||||||
edit_type("returns", $row["returns"], $collations);
|
"<th>", lang('Return type'), "</th>";
|
||||||
|
|
||||||
|
edit_type("returns", $row["returns"], $collations, array(), ($jush == "pgsql" ? array("void", "trigger") : array()));
|
||||||
|
|
||||||
|
echo "<td></td></tr></tbody>\n";
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
</table>
|
</table>
|
||||||
|
<?php echo script("editFields();"); ?>
|
||||||
|
</div>
|
||||||
<p><?php textarea("definition", $row["definition"]); ?>
|
<p><?php textarea("definition", $row["definition"]); ?>
|
||||||
<p>
|
<p>
|
||||||
<input type="submit" value="<?php echo lang('Save'); ?>">
|
<input type="submit" value="<?php echo lang('Save'); ?>">
|
||||||
<?php if ($PROCEDURE != "") { ?><input type="submit" name="drop" value="<?php echo lang('Drop'); ?>"<?php echo confirm(); ?>><?php } ?>
|
<?php if ($PROCEDURE != "") { ?><input type="submit" name="drop" value="<?php echo lang('Drop'); ?>"><?php echo confirm(lang('Drop %s?', $PROCEDURE)); ?><?php } ?>
|
||||||
<input type="hidden" name="token" value="<?php echo $token; ?>">
|
<input type="hidden" name="token" value="<?php echo $token; ?>">
|
||||||
</form>
|
</form>
|
||||||
|
|||||||
@@ -1,57 +1,61 @@
|
|||||||
<?php
|
<?php
|
||||||
if (support("kill") && $_POST && !$error) {
|
if (support("kill")) {
|
||||||
$killed = 0;
|
if ($_POST && !$error) {
|
||||||
foreach ((array) $_POST["kill"] as $val) {
|
$killed = 0;
|
||||||
if (queries("KILL " . number($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);
|
||||||
?>
|
?>
|
||||||
|
|
||||||
<form action="" method="post">
|
<form action="" method="post">
|
||||||
<table cellspacing="0" onclick="tableClick(event);" ondblclick="tableClick(event, true);" class="nowrap checkable">
|
<div class="scrollable">
|
||||||
|
<table cellspacing="0" class="nowrap checkable">
|
||||||
<?php
|
<?php
|
||||||
|
echo script("mixin(qsl('table'), {onclick: tableClick, ondblclick: partialArg(tableClick, true)});");
|
||||||
// HTML valid because there is always at least one process
|
// HTML valid because there is always at least one process
|
||||||
$i = -1;
|
$i = -1;
|
||||||
foreach (process_list() as $i => $row) {
|
foreach (process_list() as $i => $row) {
|
||||||
|
|
||||||
if (!$i) {
|
if (!$i) {
|
||||||
echo "<thead><tr lang='en'>" . (support("kill") ? "<th> " : "");
|
echo "<thead><tr lang='en'>" . (support("kill") ? "<th>" : "");
|
||||||
foreach ($row as $key => $val) {
|
foreach ($row as $key => $val) {
|
||||||
echo "<th>$key" . doc_link(array(
|
echo "<th>$key" . doc_link(array(
|
||||||
'sql' => "show-processlist.html#processlist_" . strtolower($key),
|
'sql' => "show-processlist.html#processlist_" . strtolower($key),
|
||||||
'pgsql' => "monitoring-stats.html#PG-STAT-ACTIVITY-VIEW",
|
'pgsql' => "monitoring-stats.html#PG-STAT-ACTIVITY-VIEW",
|
||||||
'oracle' => "../b14237/dynviews_2088.htm",
|
'oracle' => "REFRN30223",
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
echo "</thead>\n";
|
echo "</thead>\n";
|
||||||
}
|
}
|
||||||
|
echo "<tr" . odd() . ">" . (support("kill") ? "<td>" . checkbox("kill[]", $row[$jush == "sql" ? "Id" : "pid"], 0) : "");
|
||||||
echo "<tr" . odd() . ">" . (support("kill") ? "<td>" . checkbox("kill[]", $row["Id"], 0) : "");
|
|
||||||
foreach ($row as $key => $val) {
|
foreach ($row as $key => $val) {
|
||||||
echo "<td>" . (
|
echo "<td>" . (
|
||||||
($jush == "sql" && $key == "Info" && preg_match("~Query|Killed~", $row["Command"]) && $val != "") ||
|
($jush == "sql" && $key == "Info" && preg_match("~Query|Killed~", $row["Command"]) && $val != "") ||
|
||||||
($jush == "pgsql" && $key == "current_query" && $val != "<IDLE>") ||
|
($jush == "pgsql" && $key == "current_query" && $val != "<IDLE>") ||
|
||||||
($jush == "oracle" && $key == "sql_text" && $val != "")
|
($jush == "oracle" && $key == "sql_text" && $val != "")
|
||||||
? "<code class='jush-$jush'>" . shorten_utf8($val, 100, "</code>") . ' <a href="' . h(ME . ($row["db"] != "" ? "db=" . urlencode($row["db"]) . "&" : "") . "sql=" . urlencode($val)) . '">' . lang('Clone') . '</a>'
|
? "<code class='jush-$jush'>" . shorten_utf8($val, 100, "</code>") . ' <a href="' . h(ME . ($row["db"] != "" ? "db=" . urlencode($row["db"]) . "&" : "") . "sql=" . urlencode($val)) . '">' . lang('Clone') . '</a>'
|
||||||
: nbsp($val)
|
: h($val)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
echo "\n";
|
echo "\n";
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
</table>
|
</table>
|
||||||
<script type='text/javascript'>tableCheck();</script>
|
</div>
|
||||||
<p>
|
<p>
|
||||||
<?php
|
<?php
|
||||||
if (support("kill")) {
|
if (support("kill")) {
|
||||||
echo ($i + 1) . "/" . lang('%d in total', $connection->result("SELECT @@max_connections"));
|
echo ($i + 1) . "/" . lang('%d in total', max_connections());
|
||||||
echo "<p><input type='submit' value='" . lang('Kill') . "'>\n";
|
echo "<p><input type='submit' value='" . lang('Kill') . "'>\n";
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
<input type="hidden" name="token" value="<?php echo $token; ?>">
|
<input type="hidden" name="token" value="<?php echo $token; ?>">
|
||||||
</form>
|
</form>
|
||||||
|
<?php echo script("tableCheck();"); ?>
|
||||||
|
|||||||
@@ -48,25 +48,25 @@ foreach (table_status('', true) as $table => $table_status) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
?>
|
?>
|
||||||
<div id="schema" style="height: <?php echo $top; ?>em;" onselectstart="return false;">
|
<div id="schema" style="height: <?php echo $top; ?>em;">
|
||||||
<script type="text/javascript">
|
<script<?php echo nonce(); ?>>
|
||||||
|
gid('schema').onselectstart = function () { return false; };
|
||||||
var tablePos = {<?php echo implode(",", $table_pos_js) . "\n"; ?>};
|
var tablePos = {<?php echo implode(",", $table_pos_js) . "\n"; ?>};
|
||||||
var em = document.getElementById('schema').offsetHeight / <?php echo $top; ?>;
|
var em = gid('schema').offsetHeight / <?php echo $top; ?>;
|
||||||
document.onmousemove = schemaMousemove;
|
document.onmousemove = schemaMousemove;
|
||||||
document.onmouseup = function (ev) {
|
document.onmouseup = partialArg(schemaMouseup, '<?php echo js_escape(DB); ?>');
|
||||||
schemaMouseup(ev, '<?php echo js_escape(DB); ?>');
|
|
||||||
};
|
|
||||||
</script>
|
</script>
|
||||||
<?php
|
<?php
|
||||||
foreach ($schema as $name => $table) {
|
foreach ($schema as $name => $table) {
|
||||||
echo "<div class='table' style='top: " . $table["pos"][0] . "em; left: " . $table["pos"][1] . "em;' onmousedown='schemaMousedown(this, event);'>";
|
echo "<div class='table' style='top: " . $table["pos"][0] . "em; left: " . $table["pos"][1] . "em;'>";
|
||||||
echo '<a href="' . h(ME) . 'table=' . urlencode($name) . '"><b>' . h($name) . "</b></a>";
|
echo '<a href="' . h(ME) . 'table=' . urlencode($name) . '"><b>' . h($name) . "</b></a>";
|
||||||
|
echo script("qsl('div').onmousedown = schemaMousedown;");
|
||||||
|
|
||||||
foreach ($table["fields"] as $field) {
|
foreach ($table["fields"] as $field) {
|
||||||
$val = '<span' . type_class($field["type"]) . ' title="' . h($field["full_type"] . ($field["null"] ? " NULL" : '')) . '">' . h($field["field"]) . '</span>';
|
$val = '<span' . type_class($field["type"]) . ' title="' . h($field["full_type"] . ($field["null"] ? " NULL" : '')) . '">' . h($field["field"]) . '</span>';
|
||||||
echo "<br>" . ($field["primary"] ? "<i>$val</i>" : $val);
|
echo "<br>" . ($field["primary"] ? "<i>$val</i>" : $val);
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach ((array) $table["references"] as $target_name => $refs) {
|
foreach ((array) $table["references"] as $target_name => $refs) {
|
||||||
foreach ($refs as $left => $ref) {
|
foreach ($refs as $left => $ref) {
|
||||||
$left1 = $left - $table_pos[$name][1];
|
$left1 = $left - $table_pos[$name][1];
|
||||||
@@ -76,7 +76,7 @@ foreach ($schema as $name => $table) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach ((array) $referenced[$name] as $target_name => $refs) {
|
foreach ((array) $referenced[$name] as $target_name => $refs) {
|
||||||
foreach ($refs as $left => $columns) {
|
foreach ($refs as $left => $columns) {
|
||||||
$left1 = $left - $table_pos[$name][1];
|
$left1 = $left - $table_pos[$name][1];
|
||||||
@@ -86,7 +86,7 @@ foreach ($schema as $name => $table) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
echo "\n</div>\n";
|
echo "\n</div>\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -27,11 +27,11 @@ if (!$row) {
|
|||||||
|
|
||||||
<form action="" method="post">
|
<form action="" method="post">
|
||||||
<p><input name="name" id="name" value="<?php echo h($row["name"]); ?>" autocapitalize="off">
|
<p><input name="name" id="name" value="<?php echo h($row["name"]); ?>" autocapitalize="off">
|
||||||
<script type='text/javascript'>focus(document.getElementById('name'));</script>
|
<?php echo script("focus(gid('name'));"); ?>
|
||||||
<input type="submit" value="<?php echo lang('Save'); ?>">
|
<input type="submit" value="<?php echo lang('Save'); ?>">
|
||||||
<?php
|
<?php
|
||||||
if ($_GET["ns"] != "") {
|
if ($_GET["ns"] != "") {
|
||||||
echo "<input type='submit' name='drop' value='" . lang('Drop') . "'" . confirm() . ">\n";
|
echo "<input type='submit' name='drop' value='" . lang('Drop') . "'>" . confirm(lang('Drop %s?', $_GET["ns"])) . "\n";
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
<input type="hidden" name="token" value="<?php echo $token; ?>">
|
<input type="hidden" name="token" value="<?php echo $token; ?>">
|
||||||
|
|||||||
@@ -4,15 +4,15 @@ header("Content-Type: text/javascript; charset=utf-8");
|
|||||||
if ($_GET["script"] == "db") {
|
if ($_GET["script"] == "db") {
|
||||||
$sums = array("Data_length" => 0, "Index_length" => 0, "Data_free" => 0);
|
$sums = array("Data_length" => 0, "Index_length" => 0, "Data_free" => 0);
|
||||||
foreach (table_status() as $name => $table_status) {
|
foreach (table_status() as $name => $table_status) {
|
||||||
json_row("Comment-$name", nbsp($table_status["Comment"]));
|
json_row("Comment-$name", h($table_status["Comment"]));
|
||||||
if (!is_view($table_status)) {
|
if (!is_view($table_status)) {
|
||||||
foreach (array("Engine", "Collation") as $key) {
|
foreach (array("Engine", "Collation") as $key) {
|
||||||
json_row("$key-$name", nbsp($table_status[$key]));
|
json_row("$key-$name", h($table_status[$key]));
|
||||||
}
|
}
|
||||||
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
|
||||||
));
|
));
|
||||||
|
|||||||
@@ -4,15 +4,13 @@ $table_status = table_status1($TABLE);
|
|||||||
$indexes = indexes($TABLE);
|
$indexes = indexes($TABLE);
|
||||||
$fields = fields($TABLE);
|
$fields = fields($TABLE);
|
||||||
$foreign_keys = column_foreign_keys($TABLE);
|
$foreign_keys = column_foreign_keys($TABLE);
|
||||||
$oid = "";
|
$oid = $table_status["Oid"];
|
||||||
if ($table_status["Oid"]) {
|
|
||||||
$oid = ($jush == "sqlite" ? "rowid" : "oid");
|
|
||||||
$indexes[] = array("type" => "PRIMARY", "columns" => array($oid));
|
|
||||||
}
|
|
||||||
parse_str($_COOKIE["adminer_import"], $adminer_import);
|
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);
|
||||||
@@ -22,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"];
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -30,10 +34,6 @@ $is_group = count($group) < count($select);
|
|||||||
$where = $adminer->selectSearchProcess($fields, $indexes);
|
$where = $adminer->selectSearchProcess($fields, $indexes);
|
||||||
$order = $adminer->selectOrderProcess($fields, $indexes);
|
$order = $adminer->selectOrderProcess($fields, $indexes);
|
||||||
$limit = $adminer->selectLimitProcess();
|
$limit = $adminer->selectLimitProcess();
|
||||||
$from = ($select ? implode(", ", $select) : "*" . ($oid ? ", $oid" : ""))
|
|
||||||
. convert_fields($columns, $fields, $select)
|
|
||||||
. "\nFROM " . table($TABLE);
|
|
||||||
$group_by = ($group && $is_group ? "\nGROUP BY " . implode(", ", $group) : "") . ($order ? "\nORDER BY " . implode(", ", $order) : "");
|
|
||||||
|
|
||||||
if ($_GET["val"] && is_ajax()) {
|
if ($_GET["val"] && is_ajax()) {
|
||||||
header("Content-Type: text/plain; charset=utf-8");
|
header("Content-Type: text/plain; charset=utf-8");
|
||||||
@@ -49,6 +49,24 @@ if ($_GET["val"] && is_ajax()) {
|
|||||||
exit;
|
exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$primary = $unselected = null;
|
||||||
|
foreach ($indexes as $index) {
|
||||||
|
if ($index["type"] == "PRIMARY") {
|
||||||
|
$primary = array_flip($index["columns"]);
|
||||||
|
$unselected = ($select ? $primary : array());
|
||||||
|
foreach ($unselected as $key => $val) {
|
||||||
|
if (in_array(idf_escape($key), $select)) {
|
||||||
|
unset($unselected[$key]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ($oid && !$primary) {
|
||||||
|
$primary = $unselected = array($oid => 0);
|
||||||
|
$indexes[] = array("type" => "PRIMARY", "columns" => array($oid));
|
||||||
|
}
|
||||||
|
|
||||||
if ($_POST && !$error) {
|
if ($_POST && !$error) {
|
||||||
$where_check = $where;
|
$where_check = $where;
|
||||||
if (!$_POST["all"] && is_array($_POST["check"])) {
|
if (!$_POST["all"] && is_array($_POST["check"])) {
|
||||||
@@ -59,25 +77,15 @@ if ($_POST && !$error) {
|
|||||||
$where_check[] = "((" . implode(") OR (", $checks) . "))";
|
$where_check[] = "((" . implode(") OR (", $checks) . "))";
|
||||||
}
|
}
|
||||||
$where_check = ($where_check ? "\nWHERE " . implode(" AND ", $where_check) : "");
|
$where_check = ($where_check ? "\nWHERE " . implode(" AND ", $where_check) : "");
|
||||||
$primary = $unselected = null;
|
|
||||||
foreach ($indexes as $index) {
|
|
||||||
if ($index["type"] == "PRIMARY") {
|
|
||||||
$primary = array_flip($index["columns"]);
|
|
||||||
$unselected = ($select ? $primary : array());
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
foreach ((array) $unselected as $key => $val) {
|
|
||||||
if (in_array(idf_escape($key), $select)) {
|
|
||||||
unset($unselected[$key]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($_POST["export"]) {
|
if ($_POST["export"]) {
|
||||||
cookie("adminer_import", "output=" . urlencode($_POST["output"]) . "&format=" . urlencode($_POST["format"]));
|
cookie("adminer_import", "output=" . urlencode($_POST["output"]) . "&format=" . urlencode($_POST["format"]));
|
||||||
dump_headers($TABLE);
|
dump_headers($TABLE);
|
||||||
$adminer->dumpTable($TABLE, "");
|
$adminer->dumpTable($TABLE, "");
|
||||||
if (!is_array($_POST["check"]) || $unselected === array()) {
|
$from = ($select ? implode(", ", $select) : "*")
|
||||||
|
. convert_fields($columns, $fields, $select)
|
||||||
|
. "\nFROM " . table($TABLE);
|
||||||
|
$group_by = ($group && $is_group ? "\nGROUP BY " . implode(", ", $group) : "") . ($order ? "\nORDER BY " . implode(", ", $order) : "");
|
||||||
|
if (!is_array($_POST["check"]) || $primary) {
|
||||||
$query = "SELECT $from$where_check$group_by";
|
$query = "SELECT $from$where_check$group_by";
|
||||||
} else {
|
} else {
|
||||||
$union = array();
|
$union = array();
|
||||||
@@ -108,7 +116,7 @@ if ($_POST && !$error) {
|
|||||||
if ($_POST["clone"]) {
|
if ($_POST["clone"]) {
|
||||||
$query = "INTO " . table($TABLE) . " (" . implode(", ", array_keys($set)) . ")\nSELECT " . implode(", ", $set) . "\nFROM " . table($TABLE);
|
$query = "INTO " . table($TABLE) . " (" . implode(", ", array_keys($set)) . ")\nSELECT " . implode(", ", $set) . "\nFROM " . table($TABLE);
|
||||||
}
|
}
|
||||||
if ($_POST["all"] || ($unselected === array() && is_array($_POST["check"])) || $is_group) {
|
if ($_POST["all"] || ($primary && is_array($_POST["check"])) || $is_group) {
|
||||||
$result = ($_POST["delete"]
|
$result = ($_POST["delete"]
|
||||||
? $driver->delete($TABLE, $where_check)
|
? $driver->delete($TABLE, $where_check)
|
||||||
: ($_POST["clone"]
|
: ($_POST["clone"]
|
||||||
@@ -124,8 +132,8 @@ if ($_POST && !$error) {
|
|||||||
$result = ($_POST["delete"]
|
$result = ($_POST["delete"]
|
||||||
? $driver->delete($TABLE, $where2, 1)
|
? $driver->delete($TABLE, $where2, 1)
|
||||||
: ($_POST["clone"]
|
: ($_POST["clone"]
|
||||||
? queries("INSERT" . limit1($query, $where2))
|
? queries("INSERT" . limit1($TABLE, $query, $where2))
|
||||||
: $driver->update($TABLE, $set, $where2)
|
: $driver->update($TABLE, $set, $where2, 1)
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
if (!$result) {
|
if (!$result) {
|
||||||
@@ -165,7 +173,7 @@ if ($_POST && !$error) {
|
|||||||
$TABLE,
|
$TABLE,
|
||||||
$set,
|
$set,
|
||||||
" WHERE " . ($where ? implode(" AND ", $where) . " AND " : "") . where_check($unique_idf, $fields),
|
" WHERE " . ($where ? implode(" AND ", $where) . " AND " : "") . where_check($unique_idf, $fields),
|
||||||
!($is_group || $unselected === array()),
|
!$is_group && !$primary,
|
||||||
" "
|
" "
|
||||||
);
|
);
|
||||||
if (!$result) {
|
if (!$result) {
|
||||||
@@ -184,7 +192,7 @@ if ($_POST && !$error) {
|
|||||||
cookie("adminer_import", "output=" . urlencode($adminer_import["output"]) . "&format=" . urlencode($_POST["separator"]));
|
cookie("adminer_import", "output=" . urlencode($adminer_import["output"]) . "&format=" . urlencode($_POST["separator"]));
|
||||||
$result = true;
|
$result = true;
|
||||||
$cols = array_keys($fields);
|
$cols = array_keys($fields);
|
||||||
preg_match_all('~(?>"[^"]*"|[^"\\r\\n]+)+~', $file, $matches);
|
preg_match_all('~(?>"[^"]*"|[^"\r\n]+)+~', $file, $matches);
|
||||||
$affected = count($matches[0]);
|
$affected = count($matches[0]);
|
||||||
$driver->begin();
|
$driver->begin();
|
||||||
$separator = ($_POST["separator"] == "csv" ? "," : ($_POST["separator"] == "tsv" ? "\t" : ";"));
|
$separator = ($_POST["separator"] == "csv" ? "," : ($_POST["separator"] == "tsv" ? "\t" : ";"));
|
||||||
@@ -205,7 +213,7 @@ if ($_POST && !$error) {
|
|||||||
}
|
}
|
||||||
$result = (!$rows || $driver->insertUpdate($TABLE, $rows, $primary));
|
$result = (!$rows || $driver->insertUpdate($TABLE, $rows, $primary));
|
||||||
if ($result) {
|
if ($result) {
|
||||||
$driver->commit();
|
$result = $driver->commit();
|
||||||
}
|
}
|
||||||
queries_redirect(remove_from_uri("page"), lang('%d row(s) have been imported.', $affected), $result);
|
queries_redirect(remove_from_uri("page"), lang('%d row(s) have been imported.', $affected), $result);
|
||||||
$driver->rollback(); // after queries_redirect() to not overwrite error
|
$driver->rollback(); // after queries_redirect() to not overwrite error
|
||||||
@@ -224,14 +232,16 @@ if (is_ajax()) {
|
|||||||
|
|
||||||
$set = null;
|
$set = null;
|
||||||
if (isset($rights["insert"]) || !support("table")) {
|
if (isset($rights["insert"]) || !support("table")) {
|
||||||
$set = "";
|
$params = [];
|
||||||
foreach ((array) $_GET["where"] as $val) {
|
foreach ((array) $_GET["where"] as $val) {
|
||||||
if (count($foreign_keys[$val["col"]]) == 1 && ($val["op"] == "="
|
if (isset($foreign_keys[$val["col"]]) && count($foreign_keys[$val["col"]]) == 1
|
||||||
|| (!$val["op"] && !preg_match('~[_%]~', $val["val"])) // LIKE in Editor
|
&& ($val["op"] == "=" || (!$val["op"] && (is_array($val["val"]) || !preg_match('~[_%]~', $val["val"]))) // LIKE in Editor
|
||||||
)) {
|
)) {
|
||||||
$set .= "&set" . urlencode("[" . bracket_escape($val["col"]) . "]") . "=" . urlencode($val["val"]);
|
$params["set" . "[" . bracket_escape($val["col"]) . "]"] = $val["val"];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$set = $params ? "&" . http_build_query($params) : "";
|
||||||
}
|
}
|
||||||
$adminer->selectLinks($table_status, $set);
|
$adminer->selectLinks($table_status, $set);
|
||||||
|
|
||||||
@@ -243,10 +253,11 @@ if (!$columns && support("table")) {
|
|||||||
hidden_fields_get();
|
hidden_fields_get();
|
||||||
echo (DB != "" ? '<input type="hidden" name="db" value="' . h(DB) . '">' . (isset($_GET["ns"]) ? '<input type="hidden" name="ns" value="' . h($_GET["ns"]) . '">' : "") : ""); // not used in Editor
|
echo (DB != "" ? '<input type="hidden" name="db" value="' . h(DB) . '">' . (isset($_GET["ns"]) ? '<input type="hidden" name="ns" value="' . h($_GET["ns"]) . '">' : "") : ""); // not used in Editor
|
||||||
echo '<input type="hidden" name="select" value="' . h($TABLE) . '">';
|
echo '<input type="hidden" name="select" value="' . h($TABLE) . '">';
|
||||||
|
echo '<input type="submit" value="' . h(lang('Select')) . '">'; # hidden default submit so filter remove buttons aren't "clicked" on submission from enter key
|
||||||
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);
|
||||||
@@ -259,17 +270,29 @@ if (!$columns && support("table")) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
$select2 = $select;
|
$select2 = $select;
|
||||||
|
$group2 = $group;
|
||||||
if (!$select2) {
|
if (!$select2) {
|
||||||
$select2[] = "*";
|
$select2[] = "*";
|
||||||
if ($oid) {
|
$convert_fields = convert_fields($columns, $fields, $select);
|
||||||
$select2[] = $oid;
|
if ($convert_fields) {
|
||||||
|
$select2[] = substr($convert_fields, 2);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$convert_fields = convert_fields($columns, $fields, $select);
|
foreach ($select as $key => $val) {
|
||||||
if ($convert_fields) {
|
$field = $fields[idf_unescape($val)];
|
||||||
$select2[] = substr($convert_fields, 2);
|
if ($field && ($as = convert_field($field))) {
|
||||||
|
$select2[$key] = "$as AS $val";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
$result = $driver->select($TABLE, $select2, $where, $group, $order, $limit, $page, true);
|
if (!$is_group && $unselected) {
|
||||||
|
foreach ($unselected as $key => $val) {
|
||||||
|
$select2[] = idf_escape($key);
|
||||||
|
if ($group2) {
|
||||||
|
$group2[] = idf_escape($key);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$result = $driver->select($TABLE, $select2, $where, $group2, $order, $limit, $page, true);
|
||||||
|
|
||||||
if (!$result) {
|
if (!$result) {
|
||||||
echo "<p class='error'>" . error() . "\n";
|
echo "<p class='error'>" . error() . "\n";
|
||||||
@@ -288,7 +311,7 @@ if (!$columns && support("table")) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// use count($rows) without LIMIT, COUNT(*) without grouping, FOUND_ROWS otherwise (slowest)
|
// use count($rows) without LIMIT, COUNT(*) without grouping, FOUND_ROWS otherwise (slowest)
|
||||||
if ($_GET["page"] != "last" && +$limit && $group && $is_group && $jush == "sql") {
|
if ($_GET["page"] != "last" && $limit != "" && $group && $is_group && $jush == "sql") {
|
||||||
$found_rows = $connection->result(" SELECT FOUND_ROWS()"); // space to allow mysql.trace_mode
|
$found_rows = $connection->result(" SELECT FOUND_ROWS()"); // space to allow mysql.trace_mode
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -297,14 +320,19 @@ if (!$columns && support("table")) {
|
|||||||
} else {
|
} else {
|
||||||
$backward_keys = $adminer->backwardKeys($TABLE, $table_name);
|
$backward_keys = $adminer->backwardKeys($TABLE, $table_name);
|
||||||
|
|
||||||
echo "<table id='table' cellspacing='0' class='nowrap checkable' onclick='tableClick(event);' ondblclick='tableClick(event, true);' onkeydown='return editingKeydown(event);'>\n";
|
echo "<div class='scrollable'>";
|
||||||
echo "<thead><tr>" . (!$group && $select ? "" : "<td><input type='checkbox' id='all-page' onclick='formCheck(this, /check/);'> <a href='" . h($_GET["modify"] ? remove_from_uri("modify") : $_SERVER["REQUEST_URI"] . "&modify=1") . "'>" . lang('Modify') . "</a>");
|
echo "<table id='table' cellspacing='0' class='nowrap checkable'>";
|
||||||
|
echo script("mixin(gid('table'), {onclick: tableClick, ondblclick: partialArg(tableClick, true), onkeydown: editingKeydown});");
|
||||||
|
echo "<thead><tr>" . (!$group && $select
|
||||||
|
? ""
|
||||||
|
: "<td><input type='checkbox' id='all-page' class='jsonly'>" . script("gid('all-page').onclick = partial(formCheck, /check/);", "")
|
||||||
|
. " <a href='" . h($_GET["modify"] ? remove_from_uri("modify") : $_SERVER["REQUEST_URI"] . "&modify=1") . "'>" . lang('Modify') . "</a>");
|
||||||
$names = array();
|
$names = array();
|
||||||
$functions = array();
|
$functions = array();
|
||||||
reset($select);
|
reset($select);
|
||||||
$rank = 1;
|
$rank = 1;
|
||||||
foreach ($rows[0] as $key => $val) {
|
foreach ($rows[0] as $key => $val) {
|
||||||
if ($key != $oid) {
|
if (!isset($unselected[$key])) {
|
||||||
$val = $_GET["columns"][key($select)];
|
$val = $_GET["columns"][key($select)];
|
||||||
$field = $fields[$select ? ($val ? $val["col"] : current($select)) : $key];
|
$field = $fields[$select ? ($val ? $val["col"] : current($select)) : $key];
|
||||||
$name = ($field ? $adminer->fieldName($field, $rank) : ($val["fun"] ? "*" : $key));
|
$name = ($field ? $adminer->fieldName($field, $rank) : ($val["fun"] ? "*" : $key));
|
||||||
@@ -314,13 +342,22 @@ 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 onmouseover="columnMouse(this);" onmouseout="columnMouse(this, \' 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>";
|
||||||
echo '<a href="#fieldset-search" onclick="selectSearch(\'' . h(js_escape($key)) . '\'); return false;" title="' . lang('Search') . '" class="text jsonly"> =</a>';
|
}
|
||||||
|
if (!$val["fun"] && isset($field["privileges"]["where"])) {
|
||||||
|
echo '<a href="#fieldset-search" title="' . lang('Search') . '" class="text jsonly"> =</a>';
|
||||||
|
echo script("qsl('a').onclick = partial(selectSearch, '" . js_escape($key) . "');");
|
||||||
}
|
}
|
||||||
echo "</span>";
|
echo "</span>";
|
||||||
}
|
}
|
||||||
@@ -352,25 +389,29 @@ if (!$columns && support("table")) {
|
|||||||
if (!$unique_array) {
|
if (!$unique_array) {
|
||||||
$unique_array = array();
|
$unique_array = array();
|
||||||
foreach ($rows[$n] as $key => $val) {
|
foreach ($rows[$n] as $key => $val) {
|
||||||
if (!preg_match('~^(COUNT\\((\\*|(DISTINCT )?`(?:[^`]|``)+`)\\)|(AVG|GROUP_CONCAT|MAX|MIN|SUM)\\(`(?:[^`]|``)+`\\))$~', $key)) { //! columns looking like functions
|
if (!preg_match('~^(COUNT\((\*|(DISTINCT )?`(?:[^`]|``)+`)\)|(AVG|GROUP_CONCAT|MAX|MIN|SUM)\(`(?:[^`]|``)+`\))$~', $key)) { //! columns looking like functions
|
||||||
$unique_array[$key] = $val;
|
$unique_array[$key] = $val;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$unique_idf = "";
|
$unique_idf = "";
|
||||||
foreach ($unique_array as $key => $val) {
|
foreach ($unique_array as $key => $val) {
|
||||||
if (($jush == "sql" || $jush == "pgsql") && strlen($val) > 64) {
|
if (($jush == "sql" || $jush == "pgsql") && preg_match('~char|text|enum|set~', $fields[$key]["type"]) && strlen($val) > 64) {
|
||||||
$key = (strpos($key, '(') ? $key : idf_escape($key)); //! columns looking like functions
|
$key = (strpos($key, '(') ? $key : idf_escape($key)); //! columns looking like functions
|
||||||
$key = "MD5(" . ($jush == 'sql' && preg_match("~^utf8_~", $fields[$key]["collation"]) ? $key : "CONVERT($key USING " . charset($connection) . ")") . ")";
|
$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>" . checkbox("check[]", substr($unique_idf, 1), in_array(substr($unique_idf, 1), (array) $_POST["check"]), "", "this.form['all'].checked = false; formUncheck('all-page');") . ($is_group || information_schema(DB) ? "" : " <a href='" . h(ME . "edit=" . urlencode($TABLE) . $unique_idf) . "'>" . lang('edit') . "</a>"));
|
echo "<tr" . odd() . ">" . (!$group && $select ? "" : "<td>"
|
||||||
|
. checkbox("check[]", substr($unique_idf, 1), in_array(substr($unique_idf, 1), (array) $_POST["check"]))
|
||||||
|
. ($is_group || information_schema(DB) ? "" : " <a href='" . h(ME . "edit=" . urlencode($TABLE) . $unique_idf) . "' class='edit'>" . lang('edit') . "</a>")
|
||||||
|
);
|
||||||
|
|
||||||
foreach ($row as $key => $val) {
|
foreach ($row as $key => $val) {
|
||||||
if (isset($names[$key])) {
|
if (isset($names[$key])) {
|
||||||
$field = $fields[$key];
|
$field = $fields[$key];
|
||||||
|
$val = $driver->value($val, $field);
|
||||||
if ($val != "" && (!isset($email_fields[$key]) || $email_fields[$key] != "")) {
|
if ($val != "" && (!isset($email_fields[$key]) || $email_fields[$key] != "")) {
|
||||||
$email_fields[$key] = (is_mail($val) ? $names[$key] : ""); //! filled e-mails can be contained on other pages
|
$email_fields[$key] = (is_mail($val) ? $names[$key] : ""); //! filled e-mails can be contained on other pages
|
||||||
}
|
}
|
||||||
@@ -386,7 +427,10 @@ if (!$columns && support("table")) {
|
|||||||
foreach ($foreign_key["source"] as $i => $source) {
|
foreach ($foreign_key["source"] as $i => $source) {
|
||||||
$link .= where_link($i, $foreign_key["target"][$i], $rows[$n][$source]);
|
$link .= where_link($i, $foreign_key["target"][$i], $rows[$n][$source]);
|
||||||
}
|
}
|
||||||
$link = ($foreign_key["db"] != "" ? preg_replace('~([?&]db=)[^&]+~', '\\1' . urlencode($foreign_key["db"]), ME) : ME) . 'select=' . urlencode($foreign_key["table"]) . $link; // InnoDB supports non-UNIQUE keys
|
$link = ($foreign_key["db"] != "" ? preg_replace('~([?&]db=)[^&]+~', '\1' . urlencode($foreign_key["db"]), ME) : ME) . 'select=' . urlencode($foreign_key["table"]) . $link; // InnoDB supports non-UNIQUE keys
|
||||||
|
if ($foreign_key["ns"]) {
|
||||||
|
$link = preg_replace('~([?&]ns=)[^&]+~', '\1' . urlencode($foreign_key["ns"]), $link);
|
||||||
|
}
|
||||||
if (count($foreign_key["source"]) == 1) {
|
if (count($foreign_key["source"]) == 1) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -405,18 +449,22 @@ if (!$columns && support("table")) {
|
|||||||
$link .= where_link($i++, $k, $v);
|
$link .= where_link($i++, $k, $v);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$val = select_value($val, $link, $field, $text_length);
|
$val = select_value($val, $link, $field, $text_length);
|
||||||
$id = h("val[$unique_idf][" . bracket_escape($key) . "]");
|
$id = h("val[$unique_idf][" . bracket_escape($key) . "]");
|
||||||
$value = $_POST["val"][$unique_idf][bracket_escape($key)];
|
$value = $_POST["val"][$unique_idf][bracket_escape($key)];
|
||||||
$editable = !is_array($row[$key]) && is_utf8($val) && $rows[$n][$key] == $row[$key] && !$functions[$key];
|
$editable = !is_array($row[$key]) && is_utf8($val) && $rows[$n][$key] == $row[$key] && !$functions[$key];
|
||||||
$text = preg_match('~text|lob~', $field["type"]);
|
$text = preg_match('~text|lob~', $field["type"]);
|
||||||
|
echo "<td id='$id'";
|
||||||
if (($_GET["modify"] && $editable) || $value !== null) {
|
if (($_GET["modify"] && $editable) || $value !== null) {
|
||||||
$h_value = h($value !== null ? $value : $row[$key]);
|
$h_value = h($value !== null ? $value : $row[$key]);
|
||||||
echo "<td>" . ($text ? "<textarea name='$id' cols='30' rows='" . (substr_count($row[$key], "\n") + 1) . "'>$h_value</textarea>" : "<input name='$id' value='$h_value' size='$lengths[$key]'>");
|
echo ">" . ($text ? "<textarea name='$id' cols='30' rows='" . (substr_count($row[$key], "\n") + 1) . "'>$h_value</textarea>" : "<input name='$id' value='$h_value' size='$lengths[$key]'>");
|
||||||
} else {
|
} else {
|
||||||
$long = strpos($val, "<i>...</i>");
|
$long = strpos($val, "<i>…</i>");
|
||||||
echo "<td id='$id' onclick=\"selectClick(this, event, " . ($long ? 2 : ($text ? 1 : 0)) . ($editable ? "" : ", '" . h(lang('Use edit link to modify this value.')) . "'") . ");\">$val";
|
echo " data-text='" . ($long ? 2 : ($text ? 1 : 0)) . "'"
|
||||||
|
. ($editable ? "" : " data-warning='" . h(lang('Use edit link to modify this value.')) . "'")
|
||||||
|
. ">$val</td>"
|
||||||
|
;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -432,105 +480,125 @@ if (!$columns && support("table")) {
|
|||||||
exit;
|
exit;
|
||||||
}
|
}
|
||||||
echo "</table>\n";
|
echo "</table>\n";
|
||||||
|
echo "</div>\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
if (($rows || $page) && !is_ajax()) {
|
if (!is_ajax()) {
|
||||||
$exact_count = true;
|
if ($rows || $page) {
|
||||||
if ($_GET["page"] != "last") {
|
$exact_count = true;
|
||||||
if (!+$limit) {
|
if ($_GET["page"] != "last") {
|
||||||
$found_rows = count($rows);
|
if ($limit == "" || (count($rows) < $limit && ($rows || !$page))) {
|
||||||
} elseif ($jush != "sql" || !$is_group) {
|
$found_rows = ($page ? $page * $limit : 0) + count($rows);
|
||||||
$found_rows = ($is_group ? false : found_rows($table_status, $where));
|
} elseif ($jush != "sql" || !$is_group) {
|
||||||
if ($found_rows < max(1e4, 2 * ($page + 1) * $limit)) {
|
$found_rows = ($is_group ? false : found_rows($table_status, $where));
|
||||||
// slow with big tables
|
if ($found_rows < max(1e4, 2 * ($page + 1) * $limit)) {
|
||||||
$found_rows = reset(slow_query(count_rows($TABLE, $where, $is_group, $group)));
|
// slow with big tables
|
||||||
} else {
|
$found_rows = reset(slow_query(count_rows($TABLE, $where, $is_group, $group)));
|
||||||
$exact_count = false;
|
} else {
|
||||||
|
$exact_count = false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if (+$limit && ($found_rows === false || $found_rows > $limit || $page)) {
|
$pagination = ($limit != "" && ($found_rows === false || $found_rows > $limit || $page));
|
||||||
echo "<p class='pages'>";
|
if ($pagination) {
|
||||||
// display first, previous 4, next 4 and last page
|
|
||||||
$max_page = ($found_rows === false
|
|
||||||
? $page + (count($rows) >= $limit ? 2 : 1)
|
|
||||||
: floor(($found_rows - 1) / $limit)
|
|
||||||
);
|
|
||||||
if ($jush != "simpledb") {
|
|
||||||
echo '<a href="' . h(remove_from_uri("page")) . "\" onclick=\"pageClick(this.href, +prompt('" . lang('Page') . "', '" . ($page + 1) . "'), event); return false;\">" . lang('Page') . "</a>:";
|
|
||||||
echo pagination(0, $page) . ($page > 5 ? " ..." : "");
|
|
||||||
for ($i = max(1, $page - 4); $i < min($max_page, $page + 5); $i++) {
|
|
||||||
echo pagination($i, $page);
|
|
||||||
}
|
|
||||||
if ($max_page > 0) {
|
|
||||||
echo ($page + 5 < $max_page ? " ..." : "");
|
|
||||||
echo ($exact_count && $found_rows !== false
|
|
||||||
? pagination($max_page, $page)
|
|
||||||
: " <a href='" . h(remove_from_uri("page") . "&page=last") . "' title='~$max_page'>" . lang('last') . "</a>"
|
|
||||||
);
|
|
||||||
}
|
|
||||||
echo (($found_rows === false ? count($rows) + 1 : $found_rows - $page * $limit) > $limit
|
echo (($found_rows === false ? count($rows) + 1 : $found_rows - $page * $limit) > $limit
|
||||||
? ' <a href="' . h(remove_from_uri("page") . "&page=" . ($page + 1)) . '" onclick="return !selectLoadMore(this, ' . (+$limit) . ', \'' . lang('Loading') . '...\');" class="loadmore">' . lang('Load more data') . '</a>'
|
? '<p><a href="' . h(remove_from_uri("page") . "&page=" . ($page + 1)) . '" class="loadmore">' . lang('Load more data') . '</a>'
|
||||||
|
. script("qsl('a').onclick = partial(selectLoadMore, " . (+$limit) . ", '" . lang('Loading') . "…');", "")
|
||||||
: ''
|
: ''
|
||||||
);
|
);
|
||||||
} else {
|
echo "\n";
|
||||||
echo lang('Page') . ":";
|
|
||||||
echo pagination(0, $page) . ($page > 1 ? " ..." : "");
|
|
||||||
echo ($page ? pagination($page, $page) : "");
|
|
||||||
echo ($max_page > $page ? pagination($page + 1, $page) . ($max_page > $page + 1 ? " ..." : "") : "");
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
echo "<p class='count'>\n";
|
echo "<div class='footer'><div>\n";
|
||||||
echo ($found_rows !== false ? "(" . ($exact_count ? "" : "~ ") . lang('%d row(s)', $found_rows) . ") " : "");
|
if ($rows || $page) {
|
||||||
$display_rows = ($exact_count ? "" : "~ ") . $found_rows;
|
if ($pagination) {
|
||||||
echo checkbox("all", 1, 0, lang('whole result'), "var checked = formChecked(this, /check/); selectCount('selected', this.checked ? '$display_rows' : checked); selectCount('selected2', this.checked || !checked ? '$display_rows' : checked);") . "\n";
|
// display first, previous 4, next 4 and last page
|
||||||
|
$max_page = ($found_rows === false
|
||||||
|
? $page + (count($rows) >= $limit ? 2 : 1)
|
||||||
|
: floor(($found_rows - 1) / $limit)
|
||||||
|
);
|
||||||
|
echo "<fieldset>";
|
||||||
|
if ($jush != "simpledb") {
|
||||||
|
echo "<legend><a href='" . h(remove_from_uri("page")) . "'>" . lang('Page') . "</a></legend>";
|
||||||
|
echo script("qsl('a').onclick = function () { pageClick(this.href, +prompt('" . lang('Page') . "', '" . ($page + 1) . "')); return false; };");
|
||||||
|
echo pagination(0, $page) . ($page > 5 ? " …" : "");
|
||||||
|
for ($i = max(1, $page - 4); $i < min($max_page, $page + 5); $i++) {
|
||||||
|
echo pagination($i, $page);
|
||||||
|
}
|
||||||
|
if ($max_page > 0) {
|
||||||
|
echo ($page + 5 < $max_page ? " …" : "");
|
||||||
|
echo ($exact_count && $found_rows !== false
|
||||||
|
? pagination($max_page, $page)
|
||||||
|
: " <a href='" . h(remove_from_uri("page") . "&page=last") . "' title='~$max_page'>" . lang('last') . "</a>"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
echo "<legend>" . lang('Page') . "</legend>";
|
||||||
|
echo pagination(0, $page) . ($page > 1 ? " …" : "");
|
||||||
|
echo ($page ? pagination($page, $page) : "");
|
||||||
|
echo ($max_page > $page ? pagination($page + 1, $page) . ($max_page > $page + 1 ? " …" : "") : "");
|
||||||
|
}
|
||||||
|
echo "</fieldset>\n";
|
||||||
|
}
|
||||||
|
|
||||||
if ($adminer->selectCommandPrint()) {
|
echo "<fieldset>";
|
||||||
?>
|
echo "<legend>" . lang('Whole result') . "</legend>";
|
||||||
|
$display_rows = ($exact_count ? "" : "~ ") . $found_rows;
|
||||||
|
echo checkbox("all", 1, 0, ($found_rows !== false ? ($exact_count ? "" : "~ ") . lang('%d row(s)', $found_rows) : ""), "var checked = formChecked(this, /check/); selectCount('selected', this.checked ? '$display_rows' : checked); selectCount('selected2', this.checked || !checked ? '$display_rows' : checked);") . "\n";
|
||||||
|
echo "</fieldset>\n";
|
||||||
|
|
||||||
|
if ($adminer->selectCommandPrint()) {
|
||||||
|
?>
|
||||||
<fieldset<?php echo ($_GET["modify"] ? '' : ' class="jsonly"'); ?>><legend><?php echo lang('Modify'); ?></legend><div>
|
<fieldset<?php echo ($_GET["modify"] ? '' : ' class="jsonly"'); ?>><legend><?php echo lang('Modify'); ?></legend><div>
|
||||||
<input type="submit" value="<?php echo lang('Save'); ?>"<?php echo ($_GET["modify"] ? '' : ' title="' . lang('Ctrl+click on a value to modify it.') . '"'); ?>>
|
<input type="submit" value="<?php echo lang('Save'); ?>"<?php echo ($_GET["modify"] ? '' : ' title="' . lang('Ctrl+click on a value to modify it.') . '"'); ?>>
|
||||||
</div></fieldset>
|
</div></fieldset>
|
||||||
<fieldset><legend><?php echo lang('Selected'); ?> <span id="selected"></span></legend><div>
|
<fieldset><legend><?php echo lang('Selected'); ?> <span id="selected"></span></legend><div>
|
||||||
<input type="submit" name="edit" value="<?php echo lang('Edit'); ?>">
|
<input type="submit" name="edit" value="<?php echo lang('Edit'); ?>">
|
||||||
<input type="submit" name="clone" value="<?php echo lang('Clone'); ?>">
|
<input type="submit" name="clone" value="<?php echo lang('Clone'); ?>">
|
||||||
<input type="submit" name="delete" value="<?php echo lang('Delete'); ?>"<?php echo confirm(); ?>>
|
<input type="submit" name="delete" value="<?php echo lang('Delete'); ?>"><?php echo confirm(); ?>
|
||||||
</div></fieldset>
|
</div></fieldset>
|
||||||
<?php
|
<?php
|
||||||
}
|
|
||||||
|
|
||||||
$format = $adminer->dumpFormat();
|
|
||||||
foreach ((array) $_GET["columns"] as $column) {
|
|
||||||
if ($column["fun"]) {
|
|
||||||
unset($format['sql']);
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
if ($format) {
|
$format = $adminer->dumpFormat();
|
||||||
print_fieldset("export", lang('Export') . " <span id='selected2'></span>");
|
foreach ((array) $_GET["columns"] as $column) {
|
||||||
$output = $adminer->dumpOutput();
|
if ($column["fun"]) {
|
||||||
echo ($output ? html_select("output", $output, $adminer_import["output"]) . " " : "");
|
unset($format['sql']);
|
||||||
echo html_select("format", $format, $adminer_import["format"]);
|
break;
|
||||||
echo " <input type='submit' name='export' value='" . lang('Export') . "'>\n";
|
}
|
||||||
echo "</div></fieldset>\n";
|
}
|
||||||
|
if ($format) {
|
||||||
|
print_fieldset("export", lang('Export') . " <span id='selected2'></span>");
|
||||||
|
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 "</div></fieldset>\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
$adminer->selectEmailPrint(array_filter($email_fields, 'strlen'), $columns);
|
||||||
}
|
}
|
||||||
|
|
||||||
echo (!$group && $select ? "" : "<script type='text/javascript'>tableCheck();</script>\n");
|
echo "</div></div>\n";
|
||||||
|
|
||||||
|
if ($adminer->selectImportPrint()) {
|
||||||
|
echo "<div>";
|
||||||
|
echo "<a href='#import'>" . lang('Import') . "</a>";
|
||||||
|
echo script("qsl('a').onclick = partial(toggle, 'import');", "");
|
||||||
|
echo "<span id='import' class='hidden'>: ";
|
||||||
|
echo "<input type='file' name='csv_file'> ";
|
||||||
|
echo html_select("separator", array("csv" => "CSV,", "csv;" => "CSV;", "tsv" => "TSV"), $adminer_import["format"]);
|
||||||
|
echo " <input type='submit' name='import' value='" . lang('Import') . "'>";
|
||||||
|
echo "</span>";
|
||||||
|
echo "</div>";
|
||||||
|
}
|
||||||
|
|
||||||
|
echo "<input type='hidden' name='token' value='$token'>\n";
|
||||||
|
echo "</form>\n";
|
||||||
|
echo (!$group && $select ? "" : script("tableCheck();"));
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($adminer->selectImportPrint()) {
|
|
||||||
print_fieldset("import", lang('Import'), !$rows);
|
|
||||||
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 " <input type='submit' name='import' value='" . lang('Import') . "'>";
|
|
||||||
echo "</div></fieldset>\n";
|
|
||||||
}
|
|
||||||
|
|
||||||
$adminer->selectEmailPrint(array_filter($email_fields, 'strlen'), $columns);
|
|
||||||
|
|
||||||
echo "<p><input type='hidden' name='token' value='$token'></p>\n";
|
|
||||||
echo "</form>\n";
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ if (!$row) {
|
|||||||
<input type="submit" value="<?php echo lang('Save'); ?>">
|
<input type="submit" value="<?php echo lang('Save'); ?>">
|
||||||
<?php
|
<?php
|
||||||
if ($SEQUENCE != "") {
|
if ($SEQUENCE != "") {
|
||||||
echo "<input type='submit' name='drop' value='" . lang('Drop') . "'" . confirm() . ">\n";
|
echo "<input type='submit' name='drop' value='" . lang('Drop') . "'>" . confirm(lang('Drop %s?', $SEQUENCE)) . "\n";
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
<input type="hidden" name="token" value="<?php echo $token; ?>">
|
<input type="hidden" name="token" value="<?php echo $token; ?>">
|
||||||
|
|||||||
@@ -21,18 +21,25 @@ if (!$error && $_POST) {
|
|||||||
if (!isset($_GET["import"])) {
|
if (!isset($_GET["import"])) {
|
||||||
$query = $_POST["query"];
|
$query = $_POST["query"];
|
||||||
} elseif ($_POST["webfile"]) {
|
} elseif ($_POST["webfile"]) {
|
||||||
$fp = @fopen((file_exists("adminer.sql")
|
$import_file_path = $adminer->importServerPath();
|
||||||
? "adminer.sql"
|
if (!$import_file_path) {
|
||||||
: "compress.zlib://adminer.sql.gz"
|
$fp = false;
|
||||||
), "rb");
|
} elseif (file_exists($import_file_path)) {
|
||||||
$query = ($fp ? fread($fp, 1e6) : false);
|
$fp = fopen($import_file_path, "rb");
|
||||||
|
} elseif (file_exists("$import_file_path.gz")) {
|
||||||
|
$fp = fopen("compress.zlib://$import_file_path.gz", "rb");
|
||||||
|
} else {
|
||||||
|
$fp = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
$query = $fp ? fread($fp, 1e6) : false;
|
||||||
} else {
|
} else {
|
||||||
$query = get_file("sql_file", true);
|
$query = get_file("sql_file", true);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (is_string($query)) { // get_file() returns error as number, fread() as false
|
if (is_string($query)) { // get_file() returns error as number, fread() as false
|
||||||
if (function_exists('memory_get_usage')) {
|
if (function_exists('memory_get_usage') && ($memory_limit = ini_bytes("memory_limit")) != "-1") {
|
||||||
@ini_set("memory_limit", max(ini_bytes("memory_limit"), 2 * strlen($query) + memory_get_usage() + 8e6)); // @ - may be disabled, 2 - substr and trim, 8e6 - other variables
|
@ini_set("memory_limit", max($memory_limit, 2 * strlen($query) + memory_get_usage() + 8e6)); // @ - may be disabled, 2 - substr and trim, 8e6 - other variables
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($query != "" && strlen($query) < 1e6) { // don't add big queries
|
if ($query != "" && strlen($query) < 1e6) { // don't add big queries
|
||||||
@@ -45,24 +52,27 @@ if (!$error && $_POST) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$space = "(?:\\s|/\\*.*\\*/|(?:#|-- )[^\n]*\n|--\r?\n)";
|
$space = "(?:\\s|/\\*[\s\S]*?\\*/|(?:#|-- )[^\n]*\n?|--\r?\n)";
|
||||||
$delimiter = ";";
|
$delimiter = ";";
|
||||||
$offset = 0;
|
$offset = 0;
|
||||||
$empty = true;
|
$empty = true;
|
||||||
$connection2 = connect(); // connection for exploring indexes and EXPLAIN (to not replace FOUND_ROWS()) //! PDO - silent error
|
$connection2 = connect(); // connection for exploring indexes and EXPLAIN (to not replace FOUND_ROWS()) //! PDO - silent error
|
||||||
if (is_object($connection2) && DB != "") {
|
if (is_object($connection2) && DB != "") {
|
||||||
$connection2->select_db(DB);
|
$connection2->select_db(DB);
|
||||||
|
if ($_GET["ns"] != "") {
|
||||||
|
set_schema($_GET["ns"], $connection2);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
$commands = 0;
|
$commands = 0;
|
||||||
$errors = array();
|
$errors = array();
|
||||||
$parse = '[\'"' . ($jush == "sql" ? '`#' : ($jush == "sqlite" ? '`[' : ($jush == "mssql" ? '[' : ''))) . ']|/\\*|-- |$' . ($jush == "pgsql" ? '|\\$[^$]*\\$' : '');
|
$parse = '[\'"' . ($jush == "sql" ? '`#' : ($jush == "sqlite" ? '`[' : ($jush == "mssql" ? '[' : ''))) . ']|/\*|-- |$' . ($jush == "pgsql" ? '|\$[^$]*\$' : '');
|
||||||
$total_start = microtime(true);
|
$total_start = microtime(true);
|
||||||
parse_str($_COOKIE["adminer_export"], $adminer_export);
|
parse_str($_COOKIE["adminer_export"], $adminer_export);
|
||||||
$dump_format = $adminer->dumpFormat();
|
$dump_format = $adminer->dumpFormat();
|
||||||
unset($dump_format["sql"]);
|
unset($dump_format["sql"]);
|
||||||
|
|
||||||
while ($query != "") {
|
while ($query != "") {
|
||||||
if (!$offset && preg_match("~^$space*DELIMITER\\s+(\\S+)~i", $query, $match)) {
|
if (!$offset && preg_match("~^$space*+DELIMITER\\s+(\\S+)~i", $query, $match)) {
|
||||||
$delimiter = $match[1];
|
$delimiter = $match[1];
|
||||||
$query = substr($query, strlen($match[0]));
|
$query = substr($query, strlen($match[0]));
|
||||||
} else {
|
} else {
|
||||||
@@ -77,13 +87,27 @@ if (!$error && $_POST) {
|
|||||||
$offset = $pos + strlen($found);
|
$offset = $pos + strlen($found);
|
||||||
|
|
||||||
if ($found && rtrim($found) != $delimiter) { // find matching quote or comment end
|
if ($found && rtrim($found) != $delimiter) { // find matching quote or comment end
|
||||||
while (preg_match('(' . ($found == '/*' ? '\\*/' : ($found == '[' ? ']' : (preg_match('~^-- |^#~', $found) ? "\n" : preg_quote($found) . "|\\\\."))) . '|$)s', $query, $match, PREG_OFFSET_CAPTURE, $offset)) { //! respect sql_mode NO_BACKSLASH_ESCAPES
|
$c_style_escapes = is_c_style_escapes() || ($jush == "pgsql" && ($pos > 0 && strtolower($query[$pos - 1]) == "e"));
|
||||||
|
|
||||||
|
$pattern = '(';
|
||||||
|
if ($found == '/*') {
|
||||||
|
$pattern .= '\*/';
|
||||||
|
} elseif ($found == '[') {
|
||||||
|
$pattern .= ']';
|
||||||
|
} elseif (preg_match('~^-- |^#~', $found)) {
|
||||||
|
$pattern .= "\n";
|
||||||
|
} else {
|
||||||
|
$pattern .= preg_quote($found) . ($c_style_escapes ? "|\\\\." : "");
|
||||||
|
}
|
||||||
|
$pattern .= '|$)s';
|
||||||
|
|
||||||
|
while (preg_match($pattern, $query, $match, PREG_OFFSET_CAPTURE, $offset)) {
|
||||||
$s = $match[0][0];
|
$s = $match[0][0];
|
||||||
if (!$s && $fp && !feof($fp)) {
|
if (!$s && $fp && !feof($fp)) {
|
||||||
$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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -93,8 +117,8 @@ if (!$error && $_POST) {
|
|||||||
$empty = false;
|
$empty = false;
|
||||||
$q = substr($query, 0, $pos);
|
$q = substr($query, 0, $pos);
|
||||||
$commands++;
|
$commands++;
|
||||||
$print = "<pre id='sql-$commands'><code class='jush-$jush'>" . shorten_utf8(trim($q), 1000) . "</code></pre>\n";
|
$print = "<pre id='sql-$commands'><code class='jush-$jush'>" . $adminer->sqlCommandQuery($q) . "</code></pre>\n";
|
||||||
if ($jush == "sqlite" && preg_match("~^$space*ATTACH\b~i", $q, $match)) {
|
if ($jush == "sqlite" && preg_match("~^$space*+ATTACH\\b~i", $q, $match)) {
|
||||||
// PHP doesn't support setting SQLITE_LIMIT_ATTACHED
|
// PHP doesn't support setting SQLITE_LIMIT_ATTACHED
|
||||||
echo $print;
|
echo $print;
|
||||||
echo "<p class='error'>" . lang('ATTACH queries are not supported.') . "\n";
|
echo "<p class='error'>" . lang('ATTACH queries are not supported.') . "\n";
|
||||||
@@ -110,59 +134,70 @@ if (!$error && $_POST) {
|
|||||||
}
|
}
|
||||||
$start = microtime(true);
|
$start = microtime(true);
|
||||||
//! don't allow changing of character_set_results, convert encoding of displayed query
|
//! don't allow changing of character_set_results, convert encoding of displayed query
|
||||||
if ($connection->multi_query($q) && is_object($connection2) && preg_match("~^$space*USE\\b~isU", $q)) {
|
if ($connection->multi_query($q) && is_object($connection2) && preg_match("~^$space*+USE\\b~i", $q)) {
|
||||||
$connection2->query($q);
|
$connection2->query($q);
|
||||||
}
|
}
|
||||||
|
|
||||||
do {
|
do {
|
||||||
$result = $connection->store_result();
|
$result = $connection->store_result();
|
||||||
$time = " <span class='time'>(" . format_time($start) . ")</span>"
|
|
||||||
. (strlen($q) < 1000 ? " <a href='" . h(ME) . "sql=" . urlencode(trim($q)) . "'>" . lang('Edit') . "</a>" : "") // 1000 - maximum length of encoded URL in IE is 2083 characters
|
|
||||||
;
|
|
||||||
|
|
||||||
if ($connection->error) {
|
if ($connection->error) {
|
||||||
echo ($_POST["only_errors"] ? $print : "");
|
echo ($_POST["only_errors"] ? $print : "");
|
||||||
echo "<p class='error'>" . lang('Error in query') . ($connection->errno ? " ($connection->errno)" : "") . ": " . error() . "\n";
|
echo "<p class='error'>" . lang('Error in query') . (!empty($connection->errno) ? " ($connection->errno)" : "") . ": " . error() . "\n";
|
||||||
$errors[] = " <a href='#sql-$commands'>$commands</a>";
|
$errors[] = " <a href='#sql-$commands'>$commands</a>";
|
||||||
if ($_POST["error_stops"]) {
|
if ($_POST["error_stops"]) {
|
||||||
break 2;
|
break 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
} elseif (is_object($result)) {
|
|
||||||
$limit = $_POST["limit"];
|
|
||||||
$orgtables = select($result, $connection2, array(), $limit);
|
|
||||||
if (!$_POST["only_errors"]) {
|
|
||||||
echo "<form action='' method='post'>\n";
|
|
||||||
$num_rows = $result->num_rows;
|
|
||||||
echo "<p>" . ($num_rows ? ($limit && $num_rows > $limit ? lang('%d / ', $limit) : "") . lang('%d row(s)', $num_rows) : "");
|
|
||||||
echo $time;
|
|
||||||
$id = "export-$commands";
|
|
||||||
$export = ", <a href='#$id' onclick=\"return !toggle('$id');\">" . lang('Export') . "</a><span id='$id' class='hidden'>: "
|
|
||||||
. html_select("output", $adminer->dumpOutput(), $adminer_export["output"]) . " "
|
|
||||||
. html_select("format", $dump_format, $adminer_export["format"])
|
|
||||||
. "<input type='hidden' name='query' value='" . h($q) . "'>"
|
|
||||||
. " <input type='submit' name='export' value='" . lang('Export') . "'><input type='hidden' name='token' value='$token'></span>\n"
|
|
||||||
;
|
|
||||||
if ($connection2 && preg_match("~^($space|\\()*SELECT\\b~isU", $q) && ($explain = explain($connection2, $q))) {
|
|
||||||
$id = "explain-$commands";
|
|
||||||
echo ", <a href='#$id' onclick=\"return !toggle('$id');\">EXPLAIN</a>$export";
|
|
||||||
echo "<div id='$id' class='hidden'>\n";
|
|
||||||
select($explain, $connection2, $orgtables);
|
|
||||||
echo "</div>\n";
|
|
||||||
} else {
|
|
||||||
echo $export;
|
|
||||||
}
|
|
||||||
echo "</form>\n";
|
|
||||||
}
|
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
if (preg_match("~^$space*(CREATE|DROP|ALTER)$space+(DATABASE|SCHEMA)\\b~isU", $q)) {
|
$time = " <span class='time'>(" . format_time($start) . ")</span>"
|
||||||
restart_session();
|
. (strlen($q) < 1000 ? " <a href='" . h(ME) . "sql=" . urlencode(trim($q)) . "'>" . lang('Edit') . "</a>" : "") // 1000 - maximum length of encoded URL in IE is 2083 characters
|
||||||
set_session("dbs", null); // clear cache
|
;
|
||||||
stop_session();
|
$affected = $connection->affected_rows; // getting warnigns overwrites this
|
||||||
|
$warnings = ($_POST["only_errors"] ? "" : $driver->warnings());
|
||||||
|
$warnings_id = "warnings-$commands";
|
||||||
|
if ($warnings) {
|
||||||
|
$time .= ", <a href='#$warnings_id'>" . lang('Warnings') . "</a>" . script("qsl('a').onclick = partial(toggle, '$warnings_id');", "");
|
||||||
}
|
}
|
||||||
if (!$_POST["only_errors"]) {
|
$explain = null;
|
||||||
echo "<p class='message' title='" . h($connection->info) . "'>" . lang('Query executed OK, %d row(s) affected.', $connection->affected_rows) . "$time\n";
|
$explain_id = "explain-$commands";
|
||||||
|
if (is_object($result)) {
|
||||||
|
$limit = $_POST["limit"];
|
||||||
|
$orgtables = select($result, $connection2, array(), $limit);
|
||||||
|
if (!$_POST["only_errors"]) {
|
||||||
|
echo "<form action='' method='post'>\n";
|
||||||
|
$num_rows = $result->num_rows;
|
||||||
|
echo "<p>" . ($num_rows ? ($limit && $num_rows > $limit ? lang('%d / ', $limit) : "") . lang('%d row(s)', $num_rows) : "");
|
||||||
|
echo $time;
|
||||||
|
if ($connection2 && preg_match("~^($space|\\()*+SELECT\\b~i", $q) && ($explain = explain($connection2, $q))) {
|
||||||
|
echo ", <a href='#$explain_id'>Explain</a>" . script("qsl('a').onclick = partial(toggle, '$explain_id');", "");
|
||||||
|
}
|
||||||
|
$id = "export-$commands";
|
||||||
|
echo ", <a href='#$id'>" . lang('Export') . "</a>" . script("qsl('a').onclick = partial(toggle, '$id');", "") . "<span id='$id' class='hidden'>: "
|
||||||
|
. html_select("output", $adminer->dumpOutput(), $adminer_export["output"]) . " "
|
||||||
|
. html_select("format", $dump_format, $adminer_export["format"])
|
||||||
|
. "<input type='hidden' name='query' value='" . h($q) . "'>"
|
||||||
|
. " <input type='submit' name='export' value='" . lang('Export') . "'><input type='hidden' name='token' value='$token'></span>\n"
|
||||||
|
. "</form>\n"
|
||||||
|
;
|
||||||
|
}
|
||||||
|
|
||||||
|
} else {
|
||||||
|
if (preg_match("~^$space*+(CREATE|DROP|ALTER)$space++(DATABASE|SCHEMA)\\b~i", $q)) {
|
||||||
|
restart_session();
|
||||||
|
set_session("dbs", null); // clear cache
|
||||||
|
stop_session();
|
||||||
|
}
|
||||||
|
if (!$_POST["only_errors"]) {
|
||||||
|
$title = isset($connection->info) ? "title='" . h($connection->info) . "'" : "";
|
||||||
|
echo "<p class='message' $title>" . lang('Query executed OK, %d row(s) affected.', $affected) . "$time\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
echo ($warnings ? "<div id='$warnings_id' class='hidden'>\n$warnings</div>\n" : "");
|
||||||
|
if ($explain) {
|
||||||
|
echo "<div id='$explain_id' class='hidden'>\n";
|
||||||
|
select($explain, $connection2, $orgtables);
|
||||||
|
echo "</div>\n";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -208,26 +243,30 @@ if (!isset($_GET["import"])) {
|
|||||||
}
|
}
|
||||||
echo "<p>";
|
echo "<p>";
|
||||||
textarea("query", $q, 20);
|
textarea("query", $q, 20);
|
||||||
echo ($_POST ? "" : "<script type='text/javascript'>focus(document.getElementsByTagName('textarea')[0]);</script>\n");
|
echo script(($_POST ? "" : "qs('textarea').focus();\n") . "gid('form').onsubmit = partial(sqlSubmit, gid('form'), '" . js_escape(remove_from_uri("sql|limit|error_stops|only_errors|history")) . "');");
|
||||||
echo "<p>$execute\n";
|
echo "<p>$execute\n";
|
||||||
echo lang('Limit rows') . ": <input type='number' name='limit' class='size' value='" . h($_POST ? $_POST["limit"] : $_GET["limit"]) . "'>\n";
|
echo lang('Limit rows') . ": <input type='number' name='limit' class='size' value='" . h($_POST ? $_POST["limit"] : $_GET["limit"]) . "'>\n";
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
echo "<fieldset><legend>" . lang('File upload') . "</legend><div>";
|
echo "<fieldset><legend>" . lang('File upload') . "</legend><div>";
|
||||||
|
$gz = (extension_loaded("zlib") ? "[.gz]" : "");
|
||||||
echo (ini_bool("file_uploads")
|
echo (ini_bool("file_uploads")
|
||||||
? "SQL (< " . ini_get("upload_max_filesize") . "B): <input type='file' name='sql_file[]' multiple>\n$execute" // ignore post_max_size because it is for all form fields together and bytes computing would be necessary
|
? "SQL$gz (< " . ini_get("upload_max_filesize") . "B): <input type='file' name='sql_file[]' multiple>\n$execute" // ignore post_max_size because it is for all form fields together and bytes computing would be necessary
|
||||||
: lang('File uploads are disabled.')
|
: lang('File uploads are disabled.')
|
||||||
);
|
);
|
||||||
echo "</div></fieldset>\n";
|
echo "</div></fieldset>\n";
|
||||||
echo "<fieldset><legend>" . lang('From server') . "</legend><div>";
|
$import_file_path = $adminer->importServerPath();
|
||||||
echo lang('Webserver file %s', "<code>adminer.sql" . (extension_loaded("zlib") ? "[.gz]" : "") . "</code>");
|
if ($import_file_path) {
|
||||||
echo ' <input type="submit" name="webfile" value="' . lang('Run file') . '">';
|
echo "<fieldset><legend>" . lang('From server') . "</legend><div>";
|
||||||
echo "</div></fieldset>\n";
|
echo lang('Webserver file %s', "<code>" . h($import_file_path) . "$gz</code>");
|
||||||
|
echo ' <input type="submit" name="webfile" value="' . lang('Run file') . '">';
|
||||||
|
echo "</div></fieldset>\n";
|
||||||
|
}
|
||||||
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) {
|
||||||
|
|||||||
11
adminer/sqlite.php
Normal file
11
adminer/sqlite.php
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
<?php
|
||||||
|
function adminer_object() {
|
||||||
|
include_once "../plugins/plugin.php";
|
||||||
|
include_once "../plugins/login-password-less.php";
|
||||||
|
return new AdminerPlugin(array(
|
||||||
|
// 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";
|
||||||
@@ -1,8 +1,7 @@
|
|||||||
/** @author Ondrej Valka, http://valka.info */
|
/** @author Ondrej Valka, http://valka.info */
|
||||||
body { color: #000; background: #fff; font: 90%/1.25 Verdana, Arial, Helvetica, sans-serif; margin: 0; }
|
body { color: #000; background: #fff; font: 90%/1.25 Verdana, Arial, Helvetica, sans-serif; margin: 0; width: -moz-fit-content; width: fit-content; }
|
||||||
a { color: blue; text-decoration: none; }
|
a { color: blue; text-decoration: none; }
|
||||||
a:visited { color: navy; }
|
a:link:hover { color: red; text-decoration: underline; }
|
||||||
a:link:hover, a:visited:hover { color: red; text-decoration: underline; }
|
|
||||||
a.text:hover { text-decoration: none; }
|
a.text:hover { text-decoration: none; }
|
||||||
a.jush-help:hover { color: inherit; }
|
a.jush-help:hover { color: inherit; }
|
||||||
h1 { font-size: 150%; margin: 0; padding: .8em 1em; border-bottom: 1px solid #999; font-weight: normal; color: #777; background: #eee; }
|
h1 { font-size: 150%; margin: 0; padding: .8em 1em; border-bottom: 1px solid #999; font-weight: normal; color: #777; background: #eee; }
|
||||||
@@ -10,31 +9,42 @@ h2 { font-size: 150%; margin: 0 0 20px -18px; padding: .8em 1em; border-bottom:
|
|||||||
h3 { font-weight: normal; font-size: 130%; margin: 1em 0 0; }
|
h3 { font-weight: normal; font-size: 130%; margin: 1em 0 0; }
|
||||||
form { margin: 0; }
|
form { margin: 0; }
|
||||||
td table { width: 100%; margin: 0; }
|
td table { width: 100%; margin: 0; }
|
||||||
table { margin: 1em 20px 0 0; border: 0; border-top: 1px solid #999; border-left: 1px solid #999; font-size: 90%; }
|
table { margin: 1em 20px 0 0; border-collapse: collapse; font-size: 90%; }
|
||||||
td, th { border: 0; border-right: 1px solid #999; border-bottom: 1px solid #999; padding: .2em .3em; }
|
td, th { box-sizing: border-box; border: 1px solid #999; padding: .2em .3em; }
|
||||||
th { background: #eee; text-align: left; }
|
th { background: #eee; text-align: left; }
|
||||||
thead th { text-align: center; padding: .2em .5em; }
|
thead th { text-align: center; padding: .2em .5em; }
|
||||||
thead td, thead th { background: #ddf; }
|
thead td, thead th { background: #ddf; } /* position: sticky; causes Firefox to lose borders */
|
||||||
fieldset { display: inline; vertical-align: top; padding: .5em .8em; margin: .8em .5em 0 0; border: 1px solid #999; }
|
fieldset { display: inline; vertical-align: top; padding: .5em .8em; margin: .8em .5em 0 0; border: 1px solid #999; }
|
||||||
p { margin: .8em 20px 0 0; }
|
p { margin: .8em 20px 0 0; }
|
||||||
img { vertical-align: middle; border: 0; }
|
img { vertical-align: middle; border: 0; }
|
||||||
td img { max-width: 200px; max-height: 200px; }
|
td img { max-width: 200px; max-height: 200px; }
|
||||||
code { background: #eee; }
|
|
||||||
tbody tr:hover td, tbody tr:hover th { background: #eee; }
|
tbody tr:hover td, tbody tr:hover th { background: #eee; }
|
||||||
|
code { font-size: 110%; padding: 1px 2px; background: #eee; }
|
||||||
pre { margin: 1em 0 0; }
|
pre { margin: 1em 0 0; }
|
||||||
pre, textarea { font: 100%/1.25 monospace; }
|
pre code { display: block; font-size: 100%; }
|
||||||
input[type=image] { vertical-align: middle; }
|
pre, textarea { font: 110%/1.25 monospace; }
|
||||||
|
pre.jush { background: #fff; }
|
||||||
|
input, textarea, select { box-sizing: border-box; }
|
||||||
|
input[type="image"] { vertical-align: middle; margin-top: -3px; }
|
||||||
|
input[type="number"] { -moz-appearance: textfield; }
|
||||||
|
input::-webkit-inner-spin-button { -webkit-appearance: none; }
|
||||||
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.wayoff { left: -1000px; position: absolute; }
|
||||||
|
input::placeholder { color: #000; opacity: 0.4; }
|
||||||
|
.center { text-align: center; }
|
||||||
.block { display: block; }
|
.block { display: block; }
|
||||||
.version { color: #777; font-size: 67%; }
|
.version { color: #777; font-size: 62%; }
|
||||||
.js .hidden, .nojs .jsonly { display: none; }
|
.js .hidden, .nojs .jsonly { display: none; }
|
||||||
.js .column { position: absolute; background: #ddf; padding: .27em 1ex .3em 0; margin-top: -.27em; }
|
.js .column { position: absolute; background: #ddf; padding: .27em 1ex .3em 0; margin-top: -.27em; }
|
||||||
.nowrap td, .nowrap th, td.nowrap { white-space: pre; }
|
.nowrap { white-space: nowrap; }
|
||||||
|
p.nowrap { white-space: pre; }
|
||||||
.wrap td { white-space: normal; }
|
.wrap td { white-space: normal; }
|
||||||
.error { color: red; background: #fee; }
|
.error { color: red; background: #fee; }
|
||||||
.error b { background: #fff; font-weight: normal; }
|
.error b { background: #fff; font-weight: normal; }
|
||||||
.message { color: green; background: #efe; }
|
.message { color: green; background: #efe; }
|
||||||
|
.message table { color: #000; background: #fff; }
|
||||||
.error, .message { padding: .5em .8em; margin: 1em 20px 0 0; }
|
.error, .message { padding: .5em .8em; margin: 1em 20px 0 0; }
|
||||||
.char { color: #007F00; }
|
.char { color: #007F00; }
|
||||||
.date { color: #7F007F; }
|
.date { color: #7F007F; }
|
||||||
@@ -55,38 +65,58 @@ input.required { box-shadow: 1px 1px 1px red; }
|
|||||||
.icon:hover { background-color: red; }
|
.icon:hover { background-color: red; }
|
||||||
.size { width: 6ex; }
|
.size { width: 6ex; }
|
||||||
.help { cursor: help; }
|
.help { cursor: help; }
|
||||||
.pages { position: fixed; bottom: 0; left: 21em; padding: 5px; background: #ddf; border: 1px solid #999; }
|
.footer { position: sticky; bottom: 0; margin-right: -20px; border-top: 20px solid rgba(255, 255, 255, .7); border-image: linear-gradient(rgba(255, 255, 255, .2), #fff) 100% 0; }
|
||||||
|
.footer > div { background: #fff; padding: 0 0 .5em; }
|
||||||
|
.footer fieldset { margin-top: 0; }
|
||||||
.links a { white-space: nowrap; margin-right: 20px; }
|
.links a { white-space: nowrap; margin-right: 20px; }
|
||||||
.logout { margin-top: .5em; position: absolute; top: 0; right: 0; }
|
.logout { margin: .5em 20px 0 0; position: absolute; top: 0; right: 0; }
|
||||||
.loadmore { margin-left: 1ex; }
|
.loadmore { margin-left: 1ex; }
|
||||||
|
.tables-filter { padding: .8em 1em 0; }
|
||||||
|
.handle { cursor: grab; vertical-align: middle; }
|
||||||
|
.handle:before { content: "="; display: inline-block; width: 18px; height: 18px; overflow: hidden; font-size: 130%; text-align: center; line-height: 16px; opacity: 0.2; }
|
||||||
|
span.handle { display: inline-block; width: 18px; height: 18px; padding-right: .3em; }
|
||||||
|
th.handle:before { vertical-align: middle; }
|
||||||
|
.no-sort .handle { cursor: default; }
|
||||||
|
.no-sort .handle:before { content: "•"; font-size: 100%; }
|
||||||
|
.placeholder { opacity: 0; }
|
||||||
|
.dragging { position: absolute; margin: 0; background: #fff; }
|
||||||
|
.dragging * { cursor: grabbing; }
|
||||||
|
table.dragging { background: #eee; }
|
||||||
|
/* .edit used in designs */
|
||||||
#menu { position: absolute; margin: 10px 0 0; padding: 0 0 30px 0; top: 2em; left: 0; width: 19em; }
|
#menu { position: absolute; margin: 10px 0 0; padding: 0 0 30px 0; top: 2em; left: 0; width: 19em; }
|
||||||
#menu p { padding: .8em 1em; margin: 0; border-bottom: 1px solid #ccc; }
|
#menu p, #logins, #tables { padding: .8em 1em; margin: 0; border-bottom: 1px solid #ccc; }
|
||||||
|
#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; }
|
||||||
#breadcrumb { white-space: nowrap; position: absolute; top: 0; left: 21em; background: #eee; height: 2em; line-height: 1.8em; padding: 0 1em; margin: 0 0 0 -18px; }
|
#breadcrumb { white-space: nowrap; position: absolute; top: 0; left: 21em; background: #eee; height: 2em; line-height: 1.8em; padding: 0 1em; margin: 0 0 0 -18px; }
|
||||||
#h1 { color: #777; text-decoration: none; font-style: italic; }
|
#h1 { color: #777; text-decoration: none; font-style: italic; }
|
||||||
#version { font-size: 67%; color: red; }
|
#version { color: red; }
|
||||||
#schema { margin-left: 60px; position: relative; -moz-user-select: none; -webkit-user-select: none; }
|
#schema { margin-left: 60px; position: relative; -moz-user-select: none; -webkit-user-select: none; }
|
||||||
#schema .table { border: 1px solid silver; padding: 0 2px; cursor: move; position: absolute; }
|
#schema .table { border: 1px solid silver; padding: 0 2px; cursor: move; position: absolute; }
|
||||||
#schema .references { position: absolute; }
|
#schema .references { position: absolute; }
|
||||||
|
#tables-filter, #database-select, #scheme-select { width: 100%; }
|
||||||
#help { position: absolute; border: 1px solid #999; background: #eee; padding: 5px; font-family: monospace; z-index: 1; }
|
#help { position: absolute; border: 1px solid #999; background: #eee; padding: 5px; font-family: monospace; z-index: 1; }
|
||||||
|
#fieldset-select div:last-child > .remove, #fieldset-search div:last-child > .remove, #fieldset-sort div:last-child > .remove { display: none; }
|
||||||
|
|
||||||
.rtl h2 { margin: 0 -18px 20px 0; }
|
.rtl h2 { margin: 0 -18px 20px 0; }
|
||||||
.rtl p, .rtl table, .rtl .error, .rtl .message { margin: 1em 0 0 20px; }
|
.rtl p, .rtl table, .rtl .error, .rtl .message { margin: 1em 0 0 20px; }
|
||||||
.rtl .logout { left: 0; right: auto; }
|
.rtl .logout { left: 0; right: auto; }
|
||||||
.rtl #content { margin: 2em 21em 0 0; padding: 10px 0 20px 20px; }
|
.rtl #content { margin: 2em 21em 0 0; padding: 10px 0 20px 20px; }
|
||||||
.rtl #breadcrumb { left: auto; right: 21em; margin: 0 -18px 0 0; }
|
.rtl #breadcrumb { left: auto; right: 21em; margin: 0 -18px 0 0; }
|
||||||
|
.rtl .pages { left: auto; right: 21em; }
|
||||||
|
.rtl input.wayoff { left: auto; right: -1000px; }
|
||||||
.rtl #lang, .rtl #menu { left: auto; right: 0; }
|
.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; }
|
||||||
#lang { position: static; border-top: 1px solid #999; }
|
#lang { position: static; border-top: 1px solid #999; }
|
||||||
#breadcrumb { left: auto; }
|
#breadcrumb { left: auto; }
|
||||||
|
.rtl .pages { right: auto; }
|
||||||
.rtl #content { margin-right: 10px; }
|
.rtl #content { margin-right: 10px; }
|
||||||
.rtl #breadcrumb { right: auto; }
|
.rtl #breadcrumb { right: auto; }
|
||||||
}
|
}
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user