mirror of
https://github.com/PurpleI2P/i2pd
synced 2024-11-10 00:00:29 +03:00
[webconsole] add external CSS support (#1682)
Signed-off-by: R4SAS <r4sas@i2pmail.org>
This commit is contained in:
parent
37f1a55147
commit
28a055bd78
@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: i2pd\n"
|
||||
"Report-Msgid-Bugs-To: https://github.com/PurpleI2P/i2pd/issues\n"
|
||||
"POT-Creation-Date: 2021-06-15 17:40\n"
|
||||
"POT-Creation-Date: 2021-08-06 17:12\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
@ -18,556 +18,564 @@ msgstr ""
|
||||
"X-Poedit-SearchPath-0: daemon/HTTPServer.cpp\n"
|
||||
"X-Poedit-SearchPath-1: libi2pd_client/HTTPProxy.cpp\n"
|
||||
|
||||
#: daemon/HTTPServer.cpp:85
|
||||
msgid "Disabled"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/HTTPServer.cpp:86
|
||||
msgid "Enabled"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/HTTPServer.cpp:147
|
||||
#: daemon/HTTPServer.cpp:175
|
||||
msgid "day"
|
||||
msgid_plural "days"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
|
||||
#: daemon/HTTPServer.cpp:151
|
||||
#: daemon/HTTPServer.cpp:179
|
||||
msgid "hour"
|
||||
msgid_plural "hours"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
|
||||
#: daemon/HTTPServer.cpp:155
|
||||
#: daemon/HTTPServer.cpp:183
|
||||
msgid "minute"
|
||||
msgid_plural "minutes"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
|
||||
#: daemon/HTTPServer.cpp:158
|
||||
#: daemon/HTTPServer.cpp:186
|
||||
msgid "second"
|
||||
msgid_plural "seconds"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
|
||||
#. tr: Kibibit
|
||||
#: daemon/HTTPServer.cpp:166 daemon/HTTPServer.cpp:194
|
||||
#: daemon/HTTPServer.cpp:194 daemon/HTTPServer.cpp:222
|
||||
msgid "KiB"
|
||||
msgstr ""
|
||||
|
||||
#. tr: Mebibit
|
||||
#: daemon/HTTPServer.cpp:168
|
||||
#: daemon/HTTPServer.cpp:196
|
||||
msgid "MiB"
|
||||
msgstr ""
|
||||
|
||||
#. tr: Gibibit
|
||||
#: daemon/HTTPServer.cpp:170
|
||||
#: daemon/HTTPServer.cpp:198
|
||||
msgid "GiB"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/HTTPServer.cpp:187
|
||||
#: daemon/HTTPServer.cpp:215
|
||||
msgid "building"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/HTTPServer.cpp:188
|
||||
#: daemon/HTTPServer.cpp:216
|
||||
msgid "failed"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/HTTPServer.cpp:189
|
||||
#: daemon/HTTPServer.cpp:217
|
||||
msgid "expiring"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/HTTPServer.cpp:190
|
||||
#: daemon/HTTPServer.cpp:218
|
||||
msgid "established"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/HTTPServer.cpp:191
|
||||
#: daemon/HTTPServer.cpp:219
|
||||
msgid "unknown"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/HTTPServer.cpp:193
|
||||
#: daemon/HTTPServer.cpp:221
|
||||
msgid "exploratory"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/HTTPServer.cpp:229
|
||||
#: daemon/HTTPServer.cpp:257
|
||||
msgid "<b>i2pd</b> webconsole"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/HTTPServer.cpp:232
|
||||
#: daemon/HTTPServer.cpp:260
|
||||
msgid "Main page"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/HTTPServer.cpp:233 daemon/HTTPServer.cpp:690
|
||||
#: daemon/HTTPServer.cpp:261 daemon/HTTPServer.cpp:723
|
||||
msgid "Router commands"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/HTTPServer.cpp:234 daemon/HTTPServer.cpp:413
|
||||
#: daemon/HTTPServer.cpp:425
|
||||
#: daemon/HTTPServer.cpp:262 daemon/HTTPServer.cpp:446
|
||||
#: daemon/HTTPServer.cpp:458
|
||||
msgid "Local Destinations"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/HTTPServer.cpp:236 daemon/HTTPServer.cpp:388
|
||||
#: daemon/HTTPServer.cpp:469 daemon/HTTPServer.cpp:475
|
||||
#: daemon/HTTPServer.cpp:606 daemon/HTTPServer.cpp:649
|
||||
#: daemon/HTTPServer.cpp:653
|
||||
#: daemon/HTTPServer.cpp:264 daemon/HTTPServer.cpp:416
|
||||
#: daemon/HTTPServer.cpp:502 daemon/HTTPServer.cpp:508
|
||||
#: daemon/HTTPServer.cpp:639 daemon/HTTPServer.cpp:682
|
||||
#: daemon/HTTPServer.cpp:686
|
||||
msgid "LeaseSets"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/HTTPServer.cpp:238 daemon/HTTPServer.cpp:659
|
||||
#: daemon/HTTPServer.cpp:266 daemon/HTTPServer.cpp:692
|
||||
msgid "Tunnels"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/HTTPServer.cpp:239 daemon/HTTPServer.cpp:395
|
||||
#: daemon/HTTPServer.cpp:753 daemon/HTTPServer.cpp:769
|
||||
#: daemon/HTTPServer.cpp:267 daemon/HTTPServer.cpp:423
|
||||
#: daemon/HTTPServer.cpp:785 daemon/HTTPServer.cpp:801
|
||||
msgid "Transit Tunnels"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/HTTPServer.cpp:240 daemon/HTTPServer.cpp:818
|
||||
#: daemon/HTTPServer.cpp:268 daemon/HTTPServer.cpp:850
|
||||
msgid "Transports"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/HTTPServer.cpp:241
|
||||
#: daemon/HTTPServer.cpp:269
|
||||
msgid "I2P tunnels"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/HTTPServer.cpp:243 daemon/HTTPServer.cpp:880
|
||||
#: daemon/HTTPServer.cpp:890
|
||||
#: daemon/HTTPServer.cpp:271 daemon/HTTPServer.cpp:912
|
||||
#: daemon/HTTPServer.cpp:922
|
||||
msgid "SAM sessions"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/HTTPServer.cpp:259 daemon/HTTPServer.cpp:1280
|
||||
#: daemon/HTTPServer.cpp:1283 daemon/HTTPServer.cpp:1286
|
||||
#: daemon/HTTPServer.cpp:1300 daemon/HTTPServer.cpp:1345
|
||||
#: daemon/HTTPServer.cpp:1348 daemon/HTTPServer.cpp:1351
|
||||
#: daemon/HTTPServer.cpp:287 daemon/HTTPServer.cpp:1304
|
||||
#: daemon/HTTPServer.cpp:1307 daemon/HTTPServer.cpp:1310
|
||||
#: daemon/HTTPServer.cpp:1324 daemon/HTTPServer.cpp:1369
|
||||
#: daemon/HTTPServer.cpp:1372 daemon/HTTPServer.cpp:1375
|
||||
msgid "ERROR"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/HTTPServer.cpp:266
|
||||
#: daemon/HTTPServer.cpp:294
|
||||
msgid "OK"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/HTTPServer.cpp:267
|
||||
#: daemon/HTTPServer.cpp:295
|
||||
msgid "Testing"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/HTTPServer.cpp:268
|
||||
#: daemon/HTTPServer.cpp:296
|
||||
msgid "Firewalled"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/HTTPServer.cpp:269 daemon/HTTPServer.cpp:290
|
||||
#: daemon/HTTPServer.cpp:376
|
||||
#: daemon/HTTPServer.cpp:297 daemon/HTTPServer.cpp:318
|
||||
#: daemon/HTTPServer.cpp:404
|
||||
msgid "Unknown"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/HTTPServer.cpp:270 daemon/HTTPServer.cpp:400
|
||||
#: daemon/HTTPServer.cpp:401 daemon/HTTPServer.cpp:948
|
||||
#: daemon/HTTPServer.cpp:957
|
||||
#: daemon/HTTPServer.cpp:298 daemon/HTTPServer.cpp:433
|
||||
#: daemon/HTTPServer.cpp:434 daemon/HTTPServer.cpp:980
|
||||
#: daemon/HTTPServer.cpp:989
|
||||
msgid "Proxy"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/HTTPServer.cpp:271
|
||||
#: daemon/HTTPServer.cpp:299
|
||||
msgid "Mesh"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/HTTPServer.cpp:274
|
||||
#: daemon/HTTPServer.cpp:302
|
||||
msgid "Error"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/HTTPServer.cpp:278
|
||||
#: daemon/HTTPServer.cpp:306
|
||||
msgid "Clock skew"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/HTTPServer.cpp:281
|
||||
#: daemon/HTTPServer.cpp:309
|
||||
msgid "Offline"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/HTTPServer.cpp:284
|
||||
#: daemon/HTTPServer.cpp:312
|
||||
msgid "Symmetric NAT"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/HTTPServer.cpp:296
|
||||
#: daemon/HTTPServer.cpp:324
|
||||
msgid "Uptime"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/HTTPServer.cpp:299
|
||||
#: daemon/HTTPServer.cpp:327
|
||||
msgid "Network status"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/HTTPServer.cpp:304
|
||||
#: daemon/HTTPServer.cpp:332
|
||||
msgid "Network status v6"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/HTTPServer.cpp:310 daemon/HTTPServer.cpp:317
|
||||
#: daemon/HTTPServer.cpp:338 daemon/HTTPServer.cpp:345
|
||||
msgid "Stopping in"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/HTTPServer.cpp:324
|
||||
#: daemon/HTTPServer.cpp:352
|
||||
msgid "Family"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/HTTPServer.cpp:325
|
||||
#: daemon/HTTPServer.cpp:353
|
||||
msgid "Tunnel creation success rate"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/HTTPServer.cpp:326
|
||||
#: daemon/HTTPServer.cpp:354
|
||||
msgid "Received"
|
||||
msgstr ""
|
||||
|
||||
#. tr: Kibibit/s
|
||||
#: daemon/HTTPServer.cpp:328 daemon/HTTPServer.cpp:331
|
||||
#: daemon/HTTPServer.cpp:334
|
||||
#: daemon/HTTPServer.cpp:356 daemon/HTTPServer.cpp:359
|
||||
#: daemon/HTTPServer.cpp:362
|
||||
msgid "KiB/s"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/HTTPServer.cpp:329
|
||||
#: daemon/HTTPServer.cpp:357
|
||||
msgid "Sent"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/HTTPServer.cpp:332
|
||||
#: daemon/HTTPServer.cpp:360
|
||||
msgid "Transit"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/HTTPServer.cpp:335
|
||||
#: daemon/HTTPServer.cpp:363
|
||||
msgid "Data path"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/HTTPServer.cpp:338
|
||||
#: daemon/HTTPServer.cpp:366
|
||||
msgid "Hidden content. Press on text to see."
|
||||
msgstr ""
|
||||
|
||||
#: daemon/HTTPServer.cpp:341
|
||||
#: daemon/HTTPServer.cpp:369
|
||||
msgid "Router Ident"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/HTTPServer.cpp:343
|
||||
#: daemon/HTTPServer.cpp:371
|
||||
msgid "Router Family"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/HTTPServer.cpp:344
|
||||
#: daemon/HTTPServer.cpp:372
|
||||
msgid "Router Caps"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/HTTPServer.cpp:345
|
||||
#: daemon/HTTPServer.cpp:373
|
||||
msgid "Version"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/HTTPServer.cpp:346
|
||||
#: daemon/HTTPServer.cpp:374
|
||||
msgid "Our external address"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/HTTPServer.cpp:354
|
||||
#: daemon/HTTPServer.cpp:382
|
||||
msgid "supported"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/HTTPServer.cpp:386
|
||||
#: daemon/HTTPServer.cpp:414
|
||||
msgid "Routers"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/HTTPServer.cpp:387
|
||||
#: daemon/HTTPServer.cpp:415
|
||||
msgid "Floodfills"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/HTTPServer.cpp:394 daemon/HTTPServer.cpp:934
|
||||
#: daemon/HTTPServer.cpp:422 daemon/HTTPServer.cpp:966
|
||||
msgid "Client Tunnels"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/HTTPServer.cpp:399
|
||||
#: daemon/HTTPServer.cpp:432
|
||||
msgid "Services"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/HTTPServer.cpp:448
|
||||
#: daemon/HTTPServer.cpp:433 daemon/HTTPServer.cpp:434
|
||||
#: daemon/HTTPServer.cpp:435 daemon/HTTPServer.cpp:436
|
||||
#: daemon/HTTPServer.cpp:437 daemon/HTTPServer.cpp:438
|
||||
msgid "Enabled"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/HTTPServer.cpp:433 daemon/HTTPServer.cpp:434
|
||||
#: daemon/HTTPServer.cpp:435 daemon/HTTPServer.cpp:436
|
||||
#: daemon/HTTPServer.cpp:437 daemon/HTTPServer.cpp:438
|
||||
msgid "Disabled"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/HTTPServer.cpp:481
|
||||
msgid "Encrypted B33 address"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/HTTPServer.cpp:457
|
||||
#: daemon/HTTPServer.cpp:490
|
||||
msgid "Address registration line"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/HTTPServer.cpp:462
|
||||
#: daemon/HTTPServer.cpp:495
|
||||
msgid "Domain"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/HTTPServer.cpp:463
|
||||
#: daemon/HTTPServer.cpp:496
|
||||
msgid "Generate"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/HTTPServer.cpp:464
|
||||
#: daemon/HTTPServer.cpp:497
|
||||
msgid ""
|
||||
"<b>Note:</b> result string can be used only for registering 2LD domains "
|
||||
"(example.i2p). For registering subdomains please use i2pd-tools."
|
||||
msgstr ""
|
||||
|
||||
#: daemon/HTTPServer.cpp:470
|
||||
#: daemon/HTTPServer.cpp:503
|
||||
msgid "Address"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/HTTPServer.cpp:470
|
||||
#: daemon/HTTPServer.cpp:503
|
||||
msgid "Type"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/HTTPServer.cpp:470
|
||||
#: daemon/HTTPServer.cpp:503
|
||||
msgid "EncType"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/HTTPServer.cpp:480 daemon/HTTPServer.cpp:664
|
||||
#: daemon/HTTPServer.cpp:513 daemon/HTTPServer.cpp:697
|
||||
msgid "Inbound tunnels"
|
||||
msgstr ""
|
||||
|
||||
#. tr: Milliseconds
|
||||
#: daemon/HTTPServer.cpp:485 daemon/HTTPServer.cpp:495
|
||||
#: daemon/HTTPServer.cpp:669 daemon/HTTPServer.cpp:679
|
||||
#: daemon/HTTPServer.cpp:518 daemon/HTTPServer.cpp:528
|
||||
#: daemon/HTTPServer.cpp:702 daemon/HTTPServer.cpp:712
|
||||
msgid "ms"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/HTTPServer.cpp:490 daemon/HTTPServer.cpp:674
|
||||
#: daemon/HTTPServer.cpp:523 daemon/HTTPServer.cpp:707
|
||||
msgid "Outbound tunnels"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/HTTPServer.cpp:502
|
||||
#: daemon/HTTPServer.cpp:535
|
||||
msgid "Tags"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/HTTPServer.cpp:502
|
||||
#: daemon/HTTPServer.cpp:535
|
||||
msgid "Incoming"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/HTTPServer.cpp:509 daemon/HTTPServer.cpp:512
|
||||
#: daemon/HTTPServer.cpp:542 daemon/HTTPServer.cpp:545
|
||||
msgid "Outgoing"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/HTTPServer.cpp:510 daemon/HTTPServer.cpp:526
|
||||
#: daemon/HTTPServer.cpp:543 daemon/HTTPServer.cpp:559
|
||||
msgid "Destination"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/HTTPServer.cpp:510
|
||||
#: daemon/HTTPServer.cpp:543
|
||||
msgid "Amount"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/HTTPServer.cpp:517
|
||||
#: daemon/HTTPServer.cpp:550
|
||||
msgid "Incoming Tags"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/HTTPServer.cpp:525 daemon/HTTPServer.cpp:528
|
||||
#: daemon/HTTPServer.cpp:558 daemon/HTTPServer.cpp:561
|
||||
msgid "Tags sessions"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/HTTPServer.cpp:526
|
||||
#: daemon/HTTPServer.cpp:559
|
||||
msgid "Status"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/HTTPServer.cpp:535 daemon/HTTPServer.cpp:591
|
||||
#: daemon/HTTPServer.cpp:568 daemon/HTTPServer.cpp:624
|
||||
msgid "Local Destination"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/HTTPServer.cpp:545 daemon/HTTPServer.cpp:913
|
||||
#: daemon/HTTPServer.cpp:578 daemon/HTTPServer.cpp:945
|
||||
msgid "Streams"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/HTTPServer.cpp:567
|
||||
#: daemon/HTTPServer.cpp:600
|
||||
msgid "Close stream"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/HTTPServer.cpp:596
|
||||
#: daemon/HTTPServer.cpp:629
|
||||
msgid "I2CP session not found"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/HTTPServer.cpp:599
|
||||
#: daemon/HTTPServer.cpp:632
|
||||
msgid "I2CP is not enabled"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/HTTPServer.cpp:625
|
||||
#: daemon/HTTPServer.cpp:658
|
||||
msgid "Invalid"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/HTTPServer.cpp:628
|
||||
#: daemon/HTTPServer.cpp:661
|
||||
msgid "Store type"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/HTTPServer.cpp:629
|
||||
#: daemon/HTTPServer.cpp:662
|
||||
msgid "Expires"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/HTTPServer.cpp:634
|
||||
#: daemon/HTTPServer.cpp:667
|
||||
msgid "Non Expired Leases"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/HTTPServer.cpp:637
|
||||
#: daemon/HTTPServer.cpp:670
|
||||
msgid "Gateway"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/HTTPServer.cpp:638
|
||||
#: daemon/HTTPServer.cpp:671
|
||||
msgid "TunnelID"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/HTTPServer.cpp:639
|
||||
#: daemon/HTTPServer.cpp:672
|
||||
msgid "EndDate"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/HTTPServer.cpp:649
|
||||
#: daemon/HTTPServer.cpp:682
|
||||
msgid "not floodfill"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/HTTPServer.cpp:660
|
||||
#: daemon/HTTPServer.cpp:693
|
||||
msgid "Queue size"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/HTTPServer.cpp:691
|
||||
#: daemon/HTTPServer.cpp:724
|
||||
msgid "Run peer test"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/HTTPServer.cpp:698
|
||||
#: daemon/HTTPServer.cpp:729
|
||||
msgid "Decline transit tunnels"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/HTTPServer.cpp:700
|
||||
#: daemon/HTTPServer.cpp:731
|
||||
msgid "Accept transit tunnels"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/HTTPServer.cpp:704 daemon/HTTPServer.cpp:709
|
||||
#: daemon/HTTPServer.cpp:735 daemon/HTTPServer.cpp:740
|
||||
msgid "Cancel graceful shutdown"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/HTTPServer.cpp:706 daemon/HTTPServer.cpp:711
|
||||
#: daemon/HTTPServer.cpp:737 daemon/HTTPServer.cpp:742
|
||||
msgid "Start graceful shutdown"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/HTTPServer.cpp:714
|
||||
#: daemon/HTTPServer.cpp:745
|
||||
msgid "Force shutdown"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/HTTPServer.cpp:717
|
||||
#: daemon/HTTPServer.cpp:746
|
||||
msgid "Reload external CSS styles"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/HTTPServer.cpp:749
|
||||
msgid ""
|
||||
"<b>Note:</b> any action done here are not persistent and not changes your "
|
||||
"config files."
|
||||
msgstr ""
|
||||
|
||||
#: daemon/HTTPServer.cpp:719
|
||||
#: daemon/HTTPServer.cpp:751
|
||||
msgid "Logging level"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/HTTPServer.cpp:727
|
||||
#: daemon/HTTPServer.cpp:759
|
||||
msgid "Transit tunnels limit"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/HTTPServer.cpp:732 daemon/HTTPServer.cpp:744
|
||||
#: daemon/HTTPServer.cpp:764 daemon/HTTPServer.cpp:776
|
||||
msgid "Change"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/HTTPServer.cpp:736
|
||||
#: daemon/HTTPServer.cpp:768
|
||||
msgid "Change language"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/HTTPServer.cpp:769
|
||||
#: daemon/HTTPServer.cpp:801
|
||||
msgid "no transit tunnels currently built"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/HTTPServer.cpp:874 daemon/HTTPServer.cpp:897
|
||||
#: daemon/HTTPServer.cpp:906 daemon/HTTPServer.cpp:929
|
||||
msgid "SAM disabled"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/HTTPServer.cpp:890
|
||||
#: daemon/HTTPServer.cpp:922
|
||||
msgid "no sessions currently running"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/HTTPServer.cpp:903
|
||||
#: daemon/HTTPServer.cpp:935
|
||||
msgid "SAM session not found"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/HTTPServer.cpp:908
|
||||
#: daemon/HTTPServer.cpp:940
|
||||
msgid "SAM Session"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/HTTPServer.cpp:965
|
||||
#: daemon/HTTPServer.cpp:997
|
||||
msgid "Server Tunnels"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/HTTPServer.cpp:981
|
||||
#: daemon/HTTPServer.cpp:1013
|
||||
msgid "Client Forwards"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/HTTPServer.cpp:995
|
||||
#: daemon/HTTPServer.cpp:1027
|
||||
msgid "Server Forwards"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/HTTPServer.cpp:1201
|
||||
#: daemon/HTTPServer.cpp:1225
|
||||
msgid "Unknown page"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/HTTPServer.cpp:1220
|
||||
#: daemon/HTTPServer.cpp:1244
|
||||
msgid "Invalid token"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/HTTPServer.cpp:1278 daemon/HTTPServer.cpp:1335
|
||||
#: daemon/HTTPServer.cpp:1371
|
||||
#: daemon/HTTPServer.cpp:1302 daemon/HTTPServer.cpp:1359
|
||||
#: daemon/HTTPServer.cpp:1399
|
||||
msgid "SUCCESS"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/HTTPServer.cpp:1278
|
||||
#: daemon/HTTPServer.cpp:1302
|
||||
msgid "Stream closed"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/HTTPServer.cpp:1280
|
||||
#: daemon/HTTPServer.cpp:1304
|
||||
msgid "Stream not found or already was closed"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/HTTPServer.cpp:1283
|
||||
#: daemon/HTTPServer.cpp:1307
|
||||
msgid "Destination not found"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/HTTPServer.cpp:1286
|
||||
#: daemon/HTTPServer.cpp:1310
|
||||
msgid "StreamID can't be null"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/HTTPServer.cpp:1288 daemon/HTTPServer.cpp:1353
|
||||
#: daemon/HTTPServer.cpp:1312 daemon/HTTPServer.cpp:1377
|
||||
msgid "Return to destination page"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/HTTPServer.cpp:1289 daemon/HTTPServer.cpp:1302
|
||||
#: daemon/HTTPServer.cpp:1373
|
||||
#: daemon/HTTPServer.cpp:1313 daemon/HTTPServer.cpp:1326
|
||||
#: daemon/HTTPServer.cpp:1401
|
||||
msgid "You will be redirected in 5 seconds"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/HTTPServer.cpp:1300
|
||||
#: daemon/HTTPServer.cpp:1324
|
||||
msgid "Transit tunnels count must not exceed 65535"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/HTTPServer.cpp:1301 daemon/HTTPServer.cpp:1372
|
||||
#: daemon/HTTPServer.cpp:1325 daemon/HTTPServer.cpp:1400
|
||||
msgid "Back to commands list"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/HTTPServer.cpp:1337
|
||||
#: daemon/HTTPServer.cpp:1361
|
||||
msgid "Register at reg.i2p"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/HTTPServer.cpp:1338
|
||||
#: daemon/HTTPServer.cpp:1362
|
||||
msgid "Description"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/HTTPServer.cpp:1338
|
||||
#: daemon/HTTPServer.cpp:1362
|
||||
msgid "A bit information about service on domain"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/HTTPServer.cpp:1339
|
||||
#: daemon/HTTPServer.cpp:1363
|
||||
msgid "Submit"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/HTTPServer.cpp:1345
|
||||
#: daemon/HTTPServer.cpp:1369
|
||||
msgid "Domain can't end with .b32.i2p"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/HTTPServer.cpp:1348
|
||||
#: daemon/HTTPServer.cpp:1372
|
||||
msgid "Domain must end with .i2p"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/HTTPServer.cpp:1351
|
||||
#: daemon/HTTPServer.cpp:1375
|
||||
msgid "Such destination is not found"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/HTTPServer.cpp:1367
|
||||
#: daemon/HTTPServer.cpp:1395
|
||||
msgid "Unknown command"
|
||||
msgstr ""
|
||||
|
||||
#: daemon/HTTPServer.cpp:1371
|
||||
#: daemon/HTTPServer.cpp:1399
|
||||
msgid "Command accepted"
|
||||
msgstr ""
|
||||
|
||||
|
29
contrib/i18n/README.md
Normal file
29
contrib/i18n/README.md
Normal file
@ -0,0 +1,29 @@
|
||||
`xgettext` command for extracting translation
|
||||
===
|
||||
|
||||
```
|
||||
xgettext --omit-header -ctr: -ktr -ktr:1,2 daemon/HTTPServer.cpp libi2pd_client/HTTPProxy.cpp
|
||||
```
|
||||
|
||||
Regex for transforming gettext translations to our format:
|
||||
===
|
||||
|
||||
```
|
||||
in: msgid\ \"(.*)\"\nmsgid_plural\ \"(.*)\"\nmsgstr\[0\]\ \"(.*)\"\nmsgstr\[1\]\ \"(.*)\"\n(msgstr\[2\]\ \"(.*)\"\n)?(msgstr\[3\]\ \"(.*)\"\n)?(msgstr\[4\]\ \"(.*)\"\n)?(msgstr\[5\]\ \"(.*)\"\n)?
|
||||
out: #{"$2", {"$3", "$4", "$6", "$8", "$10"}},\n
|
||||
```
|
||||
|
||||
```
|
||||
in: msgid\ \"(.*)\"\nmsgstr\ \"(.*)\"\n
|
||||
out: {"$1", "$2"},\n
|
||||
```
|
||||
|
||||
```
|
||||
in: ^#[:.](.*)$\n
|
||||
out: <to empty line>
|
||||
```
|
||||
|
||||
```
|
||||
in: \n\n
|
||||
out: \n
|
||||
```
|
@ -1,10 +0,0 @@
|
||||
Regex for transforming gettext translations to our format
|
||||
|
||||
msgid\ \"(.*)\"\nmsgid_plural\ \"(.*)\"\nmsgstr\[0\]\ \"(.*)\"\nmsgstr\[1\]\ \"(.*)\"\n(msgstr\[2\]\ \"(.*)\"\n)?(msgstr\[3\]\ \"(.*)\"\n)?(msgstr\[4\]\ \"(.*)\"\n)?(msgstr\[5\]\ \"(.*)\"\n)?
|
||||
#{"$2", {"$3", "$4", "$6", "$8", "$10"}},\n
|
||||
|
||||
msgid\ \"(.*)\"\nmsgstr\ \"(.*)\"\n
|
||||
{"$1", "$2"},\n
|
||||
|
||||
^#:(.*)$\n
|
||||
<to empty line>
|
245
contrib/webconsole/style.css
Normal file
245
contrib/webconsole/style.css
Normal file
@ -0,0 +1,245 @@
|
||||
body {
|
||||
font: 100%/1.5em sans-serif;
|
||||
margin: 0;
|
||||
padding: 1.5em;
|
||||
background: #FAFAFA;
|
||||
color: #103456;
|
||||
}
|
||||
|
||||
a, .slide label {
|
||||
text-decoration: none;
|
||||
color: #894C84;
|
||||
}
|
||||
|
||||
a:hover, .slide label:hover {
|
||||
color: #FAFAFA;
|
||||
background: #894C84;
|
||||
}
|
||||
|
||||
a.button {
|
||||
-webkit-appearance: button;
|
||||
-moz-appearance: button;
|
||||
appearance: button;
|
||||
text-decoration: none;
|
||||
color: initial;
|
||||
padding: 0 5px;
|
||||
border: 1px solid #894C84;
|
||||
}
|
||||
|
||||
.header {
|
||||
font-size: 2.5em;
|
||||
text-align: center;
|
||||
margin: 1em 0;
|
||||
color: #894C84;
|
||||
}
|
||||
|
||||
.wrapper {
|
||||
margin: 0 auto;
|
||||
padding: 1em;
|
||||
max-width: 64em;
|
||||
}
|
||||
|
||||
.menu {
|
||||
display: block;
|
||||
float: left;
|
||||
overflow: hidden;
|
||||
max-width: 12em;
|
||||
white-space: nowrap;
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
|
||||
.listitem {
|
||||
display: block;
|
||||
font-family: monospace;
|
||||
font-size: 1.2em;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.tableitem {
|
||||
font-family: monospace;
|
||||
font-size: 1.2em;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.content {
|
||||
float: left;
|
||||
font-size: 1em;
|
||||
margin-left: 4em;
|
||||
max-width: 48em;
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
.tunnel.established {
|
||||
color: #56B734;
|
||||
}
|
||||
|
||||
.tunnel.expiring {
|
||||
color: #D3AE3F;
|
||||
}
|
||||
|
||||
.tunnel.failed {
|
||||
color: #D33F3F;
|
||||
}
|
||||
|
||||
.tunnel.building {
|
||||
color: #434343;
|
||||
}
|
||||
|
||||
caption {
|
||||
font-size: 1.5em;
|
||||
text-align: center;
|
||||
color: #894C84;
|
||||
}
|
||||
|
||||
table {
|
||||
display: table;
|
||||
border-collapse: collapse;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
table.extaddr {
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
table.services {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
textarea {
|
||||
word-break: break-all;
|
||||
}
|
||||
|
||||
.streamdest {
|
||||
width: 120px;
|
||||
max-width: 240px;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
|
||||
.slide div.slidecontent, .slide [type="checkbox"] {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.slide [type="checkbox"]:checked ~ div.slidecontent {
|
||||
display: block;
|
||||
margin-top: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.disabled {
|
||||
color: #D33F3F;
|
||||
}
|
||||
|
||||
.enabled {
|
||||
color: #56B734;
|
||||
}
|
||||
|
||||
@media screen and (max-width: 1150px) { /* adaptive style */
|
||||
.wrapper {
|
||||
max-width: 58em;
|
||||
}
|
||||
|
||||
.menu {
|
||||
max-width: 10em;
|
||||
}
|
||||
|
||||
.content {
|
||||
margin-left: 2em;
|
||||
max-width: 42em;
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and (max-width: 980px) {
|
||||
body {
|
||||
padding: 1.5em 0 0 0;
|
||||
}
|
||||
|
||||
.menu {
|
||||
width: 100%;
|
||||
max-width: unset;
|
||||
display: block;
|
||||
float: none;
|
||||
position: unset;
|
||||
font-size: 16px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.menu a, .commands a {
|
||||
display: inline-block;
|
||||
padding: 4px;
|
||||
}
|
||||
|
||||
.content {
|
||||
float: none;
|
||||
margin-left: unset;
|
||||
margin-top: 16px;
|
||||
max-width: 100%;
|
||||
width: 100%;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
a, .slide label {
|
||||
/* margin-right: 10px; */
|
||||
display: block;
|
||||
/* font-size: 18px; */
|
||||
}
|
||||
|
||||
.header {
|
||||
margin: unset;
|
||||
font-size: 1.5em;
|
||||
}
|
||||
|
||||
small {
|
||||
display: block
|
||||
}
|
||||
|
||||
a.button {
|
||||
-webkit-appearance: button;
|
||||
-moz-appearance: button;
|
||||
appearance: button;
|
||||
text-decoration: none;
|
||||
color: initial;
|
||||
margin-top: 10px;
|
||||
padding: 6px;
|
||||
border: 1px solid #894c84;
|
||||
width: -webkit-fill-available;
|
||||
}
|
||||
|
||||
input, select {
|
||||
width: 35%;
|
||||
text-align: center;
|
||||
padding: 5px;
|
||||
border: 2px solid #ccc;
|
||||
-webkit-border-radius: 5px;
|
||||
border-radius: 5px;
|
||||
font-size: 18px;
|
||||
}
|
||||
|
||||
table.extaddr {
|
||||
margin: auto;
|
||||
text-align: unset;
|
||||
}
|
||||
|
||||
textarea {
|
||||
width: -webkit-fill-available;
|
||||
height: auto;
|
||||
padding:5px;
|
||||
border:2px solid #ccc;
|
||||
-webkit-border-radius: 5px;
|
||||
border-radius: 5px;
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
button[type=submit] {
|
||||
padding: 5px 15px;
|
||||
background: #ccc;
|
||||
border: 0 none;
|
||||
cursor: pointer;
|
||||
-webkit-border-radius: 5px;
|
||||
border-radius: 5px;
|
||||
position: relative;
|
||||
height: 36px;
|
||||
display: -webkit-inline-box;
|
||||
margin-top: 10px;
|
||||
}
|
||||
}
|
@ -59,55 +59,75 @@ namespace http {
|
||||
"JHYnlIsfzJjIp9xZKswL5YKBHL+coKJoRDaUSzoozxHVrygQU4JykQADAwAT5b1NHtwZugAAAABJ"
|
||||
"RU5ErkJggg==";
|
||||
|
||||
// Bundled style
|
||||
const std::string internalCSS =
|
||||
"<style>\r\n"
|
||||
" body { font: 100%/1.5em sans-serif; margin: 0; padding: 1.5em; background: #FAFAFA; color: #103456; }\r\n"
|
||||
" a, .slide label { text-decoration: none; color: #894C84; }\r\n"
|
||||
" a:hover, .slide label:hover { color: #FAFAFA; background: #894C84; }\r\n"
|
||||
" a.button { -webkit-appearance: button; -moz-appearance: button; appearance: button; text-decoration: none;\r\n"
|
||||
" color: initial; padding: 0 5px; border: 1px solid #894C84; }\r\n"
|
||||
" .header { font-size: 2.5em; text-align: center; margin: 1em 0; color: #894C84; }\r\n"
|
||||
" .wrapper { margin: 0 auto; padding: 1em; max-width: 64em; }\r\n"
|
||||
" .menu { display: block; float: left; overflow: hidden; max-width: 12em; white-space: nowrap; text-overflow: ellipsis; }\r\n"
|
||||
" .listitem { display: block; font-family: monospace; font-size: 1.2em; white-space: nowrap; }\r\n"
|
||||
" .tableitem { font-family: monospace; font-size: 1.2em; white-space: nowrap; }\r\n"
|
||||
" .content { float: left; font-size: 1em; margin-left: 4em; max-width: 48em; overflow: auto; }\r\n"
|
||||
" .tunnel.established { color: #56B734; } .tunnel.expiring { color: #D3AE3F; }\r\n"
|
||||
" .tunnel.failed { color: #D33F3F; } .tunnel.building { color: #434343; }\r\n"
|
||||
" caption { font-size: 1.5em; text-align: center; color: #894C84; }\r\n"
|
||||
" table { display: table; border-collapse: collapse; text-align: center; }\r\n"
|
||||
" table.extaddr { text-align: left; } table.services { width: 100%; }\r\n"
|
||||
" textarea { word-break: break-all; }\r\n"
|
||||
" .streamdest { width: 120px; max-width: 240px; overflow: hidden; text-overflow: ellipsis;}\r\n"
|
||||
" .slide div.slidecontent, .slide [type=\"checkbox\"] { display: none; }\r\n"
|
||||
" .slide [type=\"checkbox\"]:checked ~ div.slidecontent { display: block; margin-top: 0; padding: 0; }\r\n"
|
||||
" .disabled { color: #D33F3F; } .enabled { color: #56B734; }\r\n"
|
||||
" @media screen and (max-width: 1150px) {\r\n" /* adaptive style */
|
||||
" .wrapper { max-width: 58em; } .menu { max-width: 10em; }\r\n"
|
||||
" .content { margin-left: 2em; max-width: 42em; }\r\n"
|
||||
" }\r\n"
|
||||
" @media screen and (max-width: 980px) {\r\n"
|
||||
" body { padding: 1.5em 0 0 0; }\r\n"
|
||||
" .menu { width: 100%; max-width: unset; display: block; float: none; position: unset; font-size: 16px;\r\n"
|
||||
" text-align: center; }\r\n"
|
||||
" .menu a, .commands a { display: inline-block; padding: 4px; }\r\n"
|
||||
" .content { float: none; margin-left: unset; margin-top: 16px; max-width: 100%; width: 100%;\r\n"
|
||||
" text-align: center; }\r\n"
|
||||
" a, .slide label { /* margin-right: 10px; */ display: block; /* font-size: 18px; */ }\r\n"
|
||||
" .header { margin: unset; font-size: 1.5em; } small {display: block}\r\n"
|
||||
" a.button { -webkit-appearance: button; -moz-appearance: button; appearance: button; text-decoration: none;\r\n"
|
||||
" color: initial; margin-top: 10px; padding: 6px; border: 1px solid #894c84; width: -webkit-fill-available; }\r\n"
|
||||
" input, select { width: 35%; text-align: center; padding: 5px;\r\n"
|
||||
" border: 2px solid #ccc; -webkit-border-radius: 5px; border-radius: 5px; font-size: 18px; }\r\n"
|
||||
" table.extaddr { margin: auto; text-align: unset; }\r\n"
|
||||
" textarea { width: -webkit-fill-available; height: auto; padding:5px; border:2px solid #ccc;\r\n"
|
||||
" -webkit-border-radius: 5px; border-radius: 5px; font-size: 12px; }\r\n"
|
||||
" button[type=submit] { padding: 5px 15px; background: #ccc; border: 0 none; cursor: pointer;\r\n"
|
||||
" -webkit-border-radius: 5px; border-radius: 5px; position: relative; height: 36px; display: -webkit-inline-box; margin-top: 10px; }\r\n"
|
||||
" }\r\n"
|
||||
"</style>\r\n";
|
||||
|
||||
// for external style sheet
|
||||
std::string externalCSS;
|
||||
|
||||
static void LoadExtCSS ()
|
||||
{
|
||||
std::stringstream s;
|
||||
std::string styleFile = i2p::fs::DataDirPath ("webconsole/style.css");
|
||||
if (i2p::fs::Exists(styleFile)) {
|
||||
std::ifstream f(styleFile, std::ifstream::binary);
|
||||
s << f.rdbuf();
|
||||
externalCSS = s.str();
|
||||
}
|
||||
}
|
||||
|
||||
static void GetStyles (std::stringstream& s)
|
||||
{
|
||||
s << "<style>\r\n"
|
||||
<< " body { font: 100%/1.5em sans-serif; margin: 0; padding: 1.5em; background: #FAFAFA; color: #103456; }\r\n"
|
||||
<< " a, .slide label { text-decoration: none; color: #894C84; }\r\n"
|
||||
<< " a:hover, .slide label:hover { color: #FAFAFA; background: #894C84; }\r\n"
|
||||
<< " a.button { -webkit-appearance: button; -moz-appearance: button; appearance: button; text-decoration: none;\r\n"
|
||||
<< " color: initial; padding: 0 5px; border: 1px solid #894C84; }\r\n"
|
||||
<< " .header { font-size: 2.5em; text-align: center; margin: 1em 0; color: #894C84; }\r\n"
|
||||
<< " .wrapper { margin: 0 auto; padding: 1em; max-width: 64em; }\r\n"
|
||||
<< " .menu { display: block; float: left; overflow: hidden; max-width: 12em; white-space: nowrap; text-overflow: ellipsis; }\r\n"
|
||||
<< " .listitem { display: block; font-family: monospace; font-size: 1.2em; white-space: nowrap; }\r\n"
|
||||
<< " .tableitem { font-family: monospace; font-size: 1.2em; white-space: nowrap; }\r\n"
|
||||
<< " .content { float: left; font-size: 1em; margin-left: 4em; max-width: 48em; overflow: auto; }\r\n"
|
||||
<< " .tunnel.established { color: #56B734; } .tunnel.expiring { color: #D3AE3F; }\r\n"
|
||||
<< " .tunnel.failed { color: #D33F3F; } .tunnel.building { color: #434343; }\r\n"
|
||||
<< " caption { font-size: 1.5em; text-align: center; color: #894C84; }\r\n"
|
||||
<< " table { display: table; border-collapse: collapse; text-align: center; }\r\n"
|
||||
<< " table.extaddr { text-align: left; } table.services { width: 100%; }\r\n"
|
||||
<< " textarea { word-break: break-all; }\r\n"
|
||||
<< " .streamdest { width: 120px; max-width: 240px; overflow: hidden; text-overflow: ellipsis;}\r\n"
|
||||
<< " .slide div.slidecontent, .slide [type=\"checkbox\"] { display: none; }\r\n"
|
||||
<< " .slide [type=\"checkbox\"]:checked ~ div.slidecontent { display: block; margin-top: 0; padding: 0; }\r\n"
|
||||
<< " .disabled:after { color: #D33F3F; content: \"" << tr("Disabled") << "\" }\r\n"
|
||||
<< " .enabled:after { color: #56B734; content: \"" << tr("Enabled") << "\" }\r\n"
|
||||
<< " @media screen and (max-width: 1150px) {\r\n" /* adaptive style */
|
||||
<< " .wrapper { max-width: 58em; } .menu { max-width: 10em; }\r\n"
|
||||
<< " .content { margin-left: 2em; max-width: 42em; }\r\n"
|
||||
<< " }\r\n"
|
||||
<< " @media screen and (max-width: 980px) {\r\n"
|
||||
<< " body { padding: 1.5em 0 0 0; }\r\n"
|
||||
<< " .menu { width: 100%; max-width: unset; display: block; float: none; position: unset; font-size: 16px;\r\n"
|
||||
<< " text-align: center; }\r\n"
|
||||
<< " .menu a, .commands a { display: inline-block; padding: 4px; }\r\n"
|
||||
<< " .content { float: none; margin-left: unset; margin-top: 16px; max-width: 100%; width: 100%;\r\n"
|
||||
<< " text-align: center; }\r\n"
|
||||
<< " a, .slide label { /* margin-right: 10px; */ display: block; /* font-size: 18px; */ }\r\n"
|
||||
<< " .header { margin: unset; font-size: 1.5em; } small {display: block}\r\n"
|
||||
<< " a.button { -webkit-appearance: button; -moz-appearance: button; appearance: button; text-decoration: none;\r\n"
|
||||
<< " color: initial; margin-top: 10px; padding: 6px; border: 1px solid #894c84; width: -webkit-fill-available; }\r\n"
|
||||
<< " input, select { width: 35%; text-align: center; padding: 5px;\r\n"
|
||||
<< " border: 2px solid #ccc; -webkit-border-radius: 5px; border-radius: 5px; font-size: 18px; }\r\n"
|
||||
<< " table.extaddr { margin: auto; text-align: unset; }\r\n"
|
||||
<< " textarea { width: -webkit-fill-available; height: auto; padding:5px; border:2px solid #ccc;\r\n"
|
||||
<< " -webkit-border-radius: 5px; border-radius: 5px; font-size: 12px; }\r\n"
|
||||
<< " button[type=submit] { padding: 5px 15px; background: #ccc; border: 0 none; cursor: pointer;\r\n"
|
||||
<< " -webkit-border-radius: 5px; border-radius: 5px; position: relative; height: 36px; display: -webkit-inline-box; margin-top: 10px; }\r\n"
|
||||
<< " }\r\n" /* adaptive style */
|
||||
<< "</style>\r\n";
|
||||
if (externalCSS.length() != 0)
|
||||
s << "<style>\r\n" << externalCSS << "</style>\r\n";
|
||||
else
|
||||
s << internalCSS;
|
||||
}
|
||||
|
||||
const char HTTP_PAGE_TUNNELS[] = "tunnels";
|
||||
@ -133,11 +153,19 @@ namespace http {
|
||||
const char HTTP_COMMAND_LIMITTRANSIT[] = "limittransit";
|
||||
const char HTTP_COMMAND_GET_REG_STRING[] = "get_reg_string";
|
||||
const char HTTP_COMMAND_SETLANGUAGE[] = "setlanguage";
|
||||
const char HTTP_COMMAND_RELOAD_CSS[] = "reload_css";
|
||||
const char HTTP_PARAM_SAM_SESSION_ID[] = "id";
|
||||
const char HTTP_PARAM_ADDRESS[] = "address";
|
||||
|
||||
static std::string ConvertTime (uint64_t time);
|
||||
std::map<uint32_t, uint32_t> HTTPConnection::m_Tokens;
|
||||
static std::string ConvertTime (uint64_t time)
|
||||
{
|
||||
lldiv_t divTime = lldiv(time, 1000);
|
||||
time_t t = divTime.quot;
|
||||
struct tm *tm = localtime(&t);
|
||||
char date[128];
|
||||
snprintf(date, sizeof(date), "%02d/%02d/%d %02d:%02d:%02d.%03lld", tm->tm_mday, tm->tm_mon + 1, tm->tm_year + 1900, tm->tm_hour, tm->tm_min, tm->tm_sec, divTime.rem);
|
||||
return date;
|
||||
}
|
||||
|
||||
static void ShowUptime (std::stringstream& s, int seconds)
|
||||
{
|
||||
@ -210,9 +238,9 @@ namespace http {
|
||||
std::string webroot; i2p::config::GetOption("http.webroot", webroot);
|
||||
|
||||
// Page language
|
||||
std::string lang, langCode; i2p::config::GetOption("http.lang", lang);
|
||||
if (lang == "russian") langCode = "ru";
|
||||
else langCode = "en";
|
||||
std::string currLang = i2p::context.GetLanguage ()->GetLanguage(); // get current used language
|
||||
auto it = i2p::i18n::languages.find(currLang);
|
||||
std::string langCode = it->second.ShortCode;
|
||||
|
||||
s <<
|
||||
"<!DOCTYPE html>\r\n"
|
||||
@ -395,14 +423,19 @@ namespace http {
|
||||
s << "<b>" << tr("Transit Tunnels") << ":</b> " << std::to_string(transitTunnelCount) << "<br>\r\n<br>\r\n";
|
||||
|
||||
if(outputFormat==OutputFormatEnum::forWebConsole) {
|
||||
bool httpproxy = i2p::client::context.GetHttpProxy () ? true : false;
|
||||
bool socksproxy = i2p::client::context.GetSocksProxy () ? true : false;
|
||||
bool bob = i2p::client::context.GetBOBCommandChannel () ? true : false;
|
||||
bool sam = i2p::client::context.GetSAMBridge () ? true : false;
|
||||
bool i2cp = i2p::client::context.GetI2CPServer () ? true : false;
|
||||
bool i2pcontrol; i2p::config::GetOption("i2pcontrol.enabled", i2pcontrol);
|
||||
s << "<table class=\"services\"><caption>" << tr("Services") << "</caption><tbody>\r\n";
|
||||
s << "<tr><td>" << "HTTP " << tr("Proxy") << "</td><td><div class='" << ((i2p::client::context.GetHttpProxy ()) ? "enabled" : "disabled") << "'></div></td></tr>\r\n";
|
||||
s << "<tr><td>" << "SOCKS " << tr("Proxy") << "</td><td><div class='" << ((i2p::client::context.GetSocksProxy ()) ? "enabled" : "disabled") << "'></div></td></tr>\r\n";
|
||||
s << "<tr><td>" << "BOB" << "</td><td><div class='" << ((i2p::client::context.GetBOBCommandChannel ()) ? "enabled" : "disabled") << "'></div></td></tr>\r\n";
|
||||
s << "<tr><td>" << "SAM" << "</td><td><div class='" << ((i2p::client::context.GetSAMBridge ()) ? "enabled" : "disabled") << "'></div></td></tr>\r\n";
|
||||
s << "<tr><td>" << "I2CP" << "</td><td><div class='" << ((i2p::client::context.GetI2CPServer ()) ? "enabled" : "disabled") << "'></div></td></tr>\r\n";
|
||||
s << "<tr><td>" << "I2PControl" << "</td><td><div class='" << ((i2pcontrol) ? "enabled" : "disabled") << "'></div></td></tr>\r\n";
|
||||
s << "<tr><td>" << "HTTP " << tr("Proxy") << "</td><td class='" << (httpproxy ? "enabled" : "disabled") << "'>" << (httpproxy ? tr("Enabled") : tr("Disabled")) << "</td></tr>\r\n";
|
||||
s << "<tr><td>" << "SOCKS " << tr("Proxy") << "</td><td class='" << (socksproxy ? "enabled" : "disabled") << "'>" << (socksproxy ? tr("Enabled") : tr("Disabled")) << "</td></tr>\r\n";
|
||||
s << "<tr><td>" << "BOB" << "</td><td class='" << (bob ? "enabled" : "disabled") << "'>" << (bob ? tr("Enabled") : tr("Disabled")) << "</td></tr>\r\n";
|
||||
s << "<tr><td>" << "SAM" << "</td><td class='" << (sam ? "enabled" : "disabled") << "'>" << (sam ? tr("Enabled") : tr("Disabled")) << "</td></tr>\r\n";
|
||||
s << "<tr><td>" << "I2CP" << "</td><td class='" << (i2cp ? "enabled" : "disabled") << "'>" << (i2cp ? tr("Enabled") : tr("Disabled")) << "</td></tr>\r\n";
|
||||
s << "<tr><td>" << "I2PControl" << "</td><td class='" << (i2pcontrol ? "enabled" : "disabled") << "'>" << (i2pcontrol ? tr("Enabled") : tr("Disabled")) << "</td></tr>\r\n";
|
||||
s << "</tbody></table>\r\n";
|
||||
}
|
||||
}
|
||||
@ -709,7 +742,8 @@ namespace http {
|
||||
s << " <a href=\"" << webroot << "?cmd=" << HTTP_COMMAND_SHUTDOWN_START << "&token=" << token << "\">" << tr("Start graceful shutdown") << "</a><br>\r\n";
|
||||
#endif
|
||||
|
||||
s << " <a href=\"" << webroot << "?cmd=" << HTTP_COMMAND_SHUTDOWN_NOW << "&token=" << token << "\">" << tr("Force shutdown") << "</a>\r\n";
|
||||
s << " <a href=\"" << webroot << "?cmd=" << HTTP_COMMAND_SHUTDOWN_NOW << "&token=" << token << "\">" << tr("Force shutdown") << "</a><br><br>\r\n";
|
||||
s << " <a href=\"" << webroot << "?cmd=" << HTTP_COMMAND_RELOAD_CSS << "&token=" << token << "\">" << tr("Reload external CSS styles") << "</a>\r\n";
|
||||
s << "</div>";
|
||||
|
||||
s << "<br>\r\n<small>" << tr("<b>Note:</b> any action done here are not persistent and not changes your config files.") << "</small>\r\n<br>\r\n";
|
||||
@ -1003,16 +1037,6 @@ namespace http {
|
||||
}
|
||||
}
|
||||
|
||||
std::string ConvertTime (uint64_t time)
|
||||
{
|
||||
lldiv_t divTime = lldiv(time, 1000);
|
||||
time_t t = divTime.quot;
|
||||
struct tm *tm = localtime(&t);
|
||||
char date[128];
|
||||
snprintf(date, sizeof(date), "%02d/%02d/%d %02d:%02d:%02d.%03lld", tm->tm_mday, tm->tm_mon + 1, tm->tm_year + 1900, tm->tm_hour, tm->tm_min, tm->tm_sec, divTime.rem);
|
||||
return date;
|
||||
}
|
||||
|
||||
HTTPConnection::HTTPConnection (std::string hostname, std::shared_ptr<boost::asio::ip::tcp::socket> socket):
|
||||
m_Socket (socket), m_BufferLen (0), expected_host(hostname)
|
||||
{
|
||||
@ -1139,6 +1163,8 @@ namespace http {
|
||||
SendReply (res, content);
|
||||
}
|
||||
|
||||
std::map<uint32_t, uint32_t> HTTPConnection::m_Tokens;
|
||||
|
||||
uint32_t HTTPConnection::CreateToken ()
|
||||
{
|
||||
uint32_t token;
|
||||
@ -1359,6 +1385,10 @@ namespace http {
|
||||
if (currLang.compare(lang) != 0)
|
||||
i2p::i18n::SetLanguage(lang);
|
||||
}
|
||||
else if (cmd == HTTP_COMMAND_RELOAD_CSS)
|
||||
{
|
||||
LoadExtCSS();
|
||||
}
|
||||
else
|
||||
{
|
||||
res.code = 400;
|
||||
@ -1421,6 +1451,8 @@ namespace http {
|
||||
m_Thread.reset (new std::thread (std::bind (&HTTPServer::Run, this)));
|
||||
m_Acceptor.listen ();
|
||||
Accept ();
|
||||
|
||||
LoadExtCSS();
|
||||
}
|
||||
|
||||
void HTTPServer::Stop ()
|
||||
|
@ -66,6 +66,7 @@ namespace i18n
|
||||
struct langData
|
||||
{
|
||||
std::string LocaleName; // localized name
|
||||
std::string ShortCode; // short language code, like "en"
|
||||
std::function<std::shared_ptr<const i2p::i18n::Locale> (void)> LocaleFunc;
|
||||
};
|
||||
|
||||
@ -81,11 +82,11 @@ namespace i18n
|
||||
*/
|
||||
static std::map<std::string, langData> languages
|
||||
{
|
||||
{ "afrikaans", {"Afrikaans", i2p::i18n::afrikaans::GetLocale} },
|
||||
{ "english", {"English", i2p::i18n::english::GetLocale} },
|
||||
{ "russian", {"русский язык", i2p::i18n::russian::GetLocale} },
|
||||
{ "turkmen", {"türkmen dili", i2p::i18n::turkmen::GetLocale} },
|
||||
{ "ukrainian", {"украї́нська мо́ва", i2p::i18n::ukrainian::GetLocale} },
|
||||
{ "afrikaans", {"Afrikaans", "af", i2p::i18n::afrikaans::GetLocale} },
|
||||
{ "english", {"English", "en", i2p::i18n::english::GetLocale} },
|
||||
{ "russian", {"русский язык", "ru", i2p::i18n::russian::GetLocale} },
|
||||
{ "turkmen", {"türkmen dili", "tk", i2p::i18n::turkmen::GetLocale} },
|
||||
{ "ukrainian", {"украї́нська мо́ва", "uk", i2p::i18n::ukrainian::GetLocale} },
|
||||
};
|
||||
|
||||
} // i18n
|
||||
|
@ -31,8 +31,6 @@ namespace russian // language namespace
|
||||
|
||||
static std::map<std::string, std::string> strings
|
||||
{
|
||||
{"Disabled", "Выключено"},
|
||||
{"Enabled", "Включено"},
|
||||
{"KiB", "КиБ"},
|
||||
{"MiB", "МиБ"},
|
||||
{"GiB", "ГиБ"},
|
||||
@ -45,10 +43,10 @@ namespace russian // language namespace
|
||||
{"<b>i2pd</b> webconsole", "Веб-консоль <b>i2pd</b>"},
|
||||
{"Main page", "Главная"},
|
||||
{"Router commands", "Команды роутера"},
|
||||
{"Local destinations", "Локальные назначения"},
|
||||
{"Local Destinations", "Локальные назначения"},
|
||||
{"LeaseSets", "Лизсеты"},
|
||||
{"Tunnels", "Туннели"},
|
||||
{"Transit tunnels", "Транзитные туннели"},
|
||||
{"Transit Tunnels", "Транзитные туннели"},
|
||||
{"Transports", "Транспорты"},
|
||||
{"I2P tunnels", "I2P туннели"},
|
||||
{"SAM sessions", "SAM сессии"},
|
||||
@ -84,9 +82,9 @@ namespace russian // language namespace
|
||||
{"Routers", "Роутеры"},
|
||||
{"Floodfills", "Флудфилы"},
|
||||
{"Client Tunnels", "Клиентские туннели"},
|
||||
{"Transit Tunnels", "Транзитные туннели"},
|
||||
{"Services", "Сервисы"},
|
||||
{"Local Destinations", "Локальные назначения"},
|
||||
{"Enabled", "Включено"},
|
||||
{"Disabled", "Выключено"},
|
||||
{"Encrypted B33 address", "Шифрованные B33 адреса"},
|
||||
{"Address registration line", "Строка регистрации адреса"},
|
||||
{"Domain", "Домен"},
|
||||
@ -103,8 +101,8 @@ namespace russian // language namespace
|
||||
{"Outgoing", "Исходящие"},
|
||||
{"Destination", "Назначение"},
|
||||
{"Amount", "Количество"},
|
||||
{"Incoming Tags", "Входящие Теги"},
|
||||
{"Tags sessions", "Сессии Тегов"},
|
||||
{"Incoming Tags", "Входящие теги"},
|
||||
{"Tags sessions", "Сессии тегов"},
|
||||
{"Status", "Статус"},
|
||||
{"Local Destination", "Локальное назначение"},
|
||||
{"Streams", "Стримы"},
|
||||
@ -126,6 +124,7 @@ namespace russian // language namespace
|
||||
{"Cancel graceful shutdown", "Отменить плавную остановку"},
|
||||
{"Start graceful shutdown", "Запустить плавную остановку"},
|
||||
{"Force shutdown", "Принудительная остановка"},
|
||||
{"Reload external CSS styles", "Перезагрузить внешние CSS стили"},
|
||||
{"<b>Note:</b> any action done here are not persistent and not changes your config files.", "<b>Примечание:</b> любое действие произведенное здесь не является постоянным и не изменяет ваши конфигурационные файлы."},
|
||||
{"Logging level", "Уровень логирования"},
|
||||
{"Transit tunnels limit", "Лимит транзитных туннелей"},
|
||||
@ -147,7 +146,7 @@ namespace russian // language namespace
|
||||
{"Destination not found", "Точка назначения не найдена"},
|
||||
{"StreamID can't be null", "StreamID не может быть пустым"},
|
||||
{"Return to destination page", "Вернуться на страницу точки назначения"},
|
||||
{"You will be redirected back in 5 seconds", "Вы будете переадресованы назад через 5 секунд"},
|
||||
{"You will be redirected in 5 seconds", "Вы будете переадресованы через 5 секунд"},
|
||||
{"Transit tunnels count must not exceed 65535", "Число транзитных туннелей не должно превышать 65535"},
|
||||
{"Back to commands list", "Вернуться к списку команд"},
|
||||
{"Register at reg.i2p", "Зарегистрировать на reg.i2p"},
|
||||
@ -159,7 +158,6 @@ namespace russian // language namespace
|
||||
{"Such destination is not found", "Такая точка назначения не найдена"},
|
||||
{"Unknown command", "Неизвестная команда"},
|
||||
{"Command accepted", "Команда принята"},
|
||||
{"You will be redirected in 5 seconds", "Вы будете переадресованы через 5 секунд"},
|
||||
{"Proxy error", "Ошибка прокси"},
|
||||
{"Proxy info", "Информация прокси"},
|
||||
{"Proxy error: Host not found", "Ошибка прокси: Узел не найден"},
|
||||
@ -176,7 +174,6 @@ namespace russian // language namespace
|
||||
{"Addresshelper found", "Найден addresshelper"},
|
||||
{"already in router's addressbook", "уже в адресной книге роутера"},
|
||||
{"to update record", "чтобы обновить запись"},
|
||||
{"Invalid Request", "неверный запрос"},
|
||||
{"invalid request uri", "некорректный URI запроса"},
|
||||
{"Can't detect destination host from request", "Не удалось определить адрес назначения из запроса"},
|
||||
{"Outproxy failure", "Ошибка внешнего прокси"},
|
||||
|
288
i18n/Turkmen.cpp
288
i18n/Turkmen.cpp
@ -31,7 +31,133 @@ namespace turkmen // language namespace
|
||||
|
||||
static std::map<std::string, std::string> strings
|
||||
{
|
||||
// HTTP Proxy
|
||||
{"KiB", "KiB"},
|
||||
{"MiB", "MiB"},
|
||||
{"GiB", "GiB"},
|
||||
{"building", "bina"},
|
||||
{"failed", "şowsuz"},
|
||||
{"expiring", "möhleti gutarýar"},
|
||||
{"established", "işleýär"},
|
||||
{"unknown", "näbelli"},
|
||||
{"exploratory", "gözleg"},
|
||||
{"<b>i2pd</b> webconsole", "Web konsoly <b>i2pd</b>"},
|
||||
{"Main page", "Esasy sahypa"},
|
||||
{"Router commands", "Marşrutizator buýruklary"},
|
||||
{"Local Destinations", "Ýerli ýerler"},
|
||||
{"LeaseSets", "Lizset"},
|
||||
{"Tunnels", "Tuneller"},
|
||||
{"Transit Tunnels", "Tranzit Tunelleri"},
|
||||
{"Transports", "Daşamak"},
|
||||
{"I2P tunnels", "I2P tuneller"},
|
||||
{"SAM sessions", "SAM Sessiýasy"},
|
||||
{"ERROR", "Ýalňyşlyk"},
|
||||
{"OK", "OK"},
|
||||
{"Testing", "Synag etmek"},
|
||||
{"Firewalled", "Daşynda petiklendi"},
|
||||
{"Unknown", "Näbelli"},
|
||||
{"Proxy", "Proksi"},
|
||||
{"Mesh", "MESH-tor"},
|
||||
{"Error", "Ýalňyşlyk"},
|
||||
{"Clock skew", "Takyk wagt däl"},
|
||||
{"Offline", "Awtonom"},
|
||||
{"Symmetric NAT", "Simmetriklik NAT"},
|
||||
{"Uptime", "Onlaýn onlaýn sözlügi"},
|
||||
{"Network status", "Tor ýagdaýy"},
|
||||
{"Network status v6", "Tor ýagdaýy v6"},
|
||||
{"Stopping in", "Soň duruň"},
|
||||
{"Family", "Maşgala"},
|
||||
{"Tunnel creation success rate", "Gurlan teneller üstünlikli gurlan teneller"},
|
||||
{"Received", "Alnan"},
|
||||
{"KiB/s", "KiB/s"},
|
||||
{"Sent", "Ýerleşdirildi"},
|
||||
{"Transit", "Tranzit"},
|
||||
{"Data path", "Maglumat ýoly"},
|
||||
{"Hidden content. Press on text to see.", "Gizlin mazmun. Görkezmek üçin tekste basyň."},
|
||||
{"Router Ident", "Marşrutly kesgitleýji"},
|
||||
{"Router Family", "Marşrutler maşgalasy"},
|
||||
{"Router Caps", "Baýdaklar marşruteri"},
|
||||
{"Version", "Wersiýasy"},
|
||||
{"Our external address", "Daşarky salgymyz"},
|
||||
{"supported", "goldanýar"},
|
||||
{"Routers", "Marşrutizatorlar"},
|
||||
{"Floodfills", "Fludfillar"},
|
||||
{"Client Tunnels", "Müşderi tunelleri"},
|
||||
{"Services", "Hyzmatlar"},
|
||||
{"Enabled", "Goşuldy"},
|
||||
{"Disabled", "Öçürildi"},
|
||||
{"Encrypted B33 address", "Şifrlenen B33 salgylar"},
|
||||
{"Address registration line", "Hasaba alyş salgysy"},
|
||||
{"Domain", "Domen"},
|
||||
{"Generate", "Öndürmek"},
|
||||
{"<b>Note:</b> result string can be used only for registering 2LD domains (example.i2p). For registering subdomains please use i2pd-tools.", "<b>Bellik:</b> Alnan setir diňe ikinji derejeli domenleri bellige almak üçin ulanylyp bilner (example.i2p). Subýutmalary hasaba almak üçin i2pd ulanyň-tools."},
|
||||
{"Address", "Salgysy"},
|
||||
{"Type", "Görnüş"},
|
||||
{"EncType", "Şifrlemek görnüşi"},
|
||||
{"Inbound tunnels", "Gelýän tuneller"},
|
||||
{"ms", "ms"},
|
||||
{"Outbound tunnels", "Çykýan tuneller"},
|
||||
{"Tags", "Bellikler"},
|
||||
{"Incoming", "Gelýän"},
|
||||
{"Outgoing", "Çykýan"},
|
||||
{"Destination", "Maksat"},
|
||||
{"Amount", "Sany"},
|
||||
{"Incoming Tags", "Gelýän bellikler"},
|
||||
{"Tags sessions", "Sapaklar bellikler"},
|
||||
{"Status", "Ýagdaýy"},
|
||||
{"Local Destination", "Ýerli maksat"},
|
||||
{"Streams", "Strimlary"},
|
||||
{"Close stream", "Yap strim"},
|
||||
{"I2CP session not found", "I2CP Sessiýa tapylmady"},
|
||||
{"I2CP is not enabled", "I2CP goşulmaýar"},
|
||||
{"Invalid", "Nädogry"},
|
||||
{"Store type", "Ammar görnüşi"},
|
||||
{"Expires", "Möhleti gutarýar"},
|
||||
{"Non Expired Leases", "Möhleti gutarmady Lizsetlary"},
|
||||
{"Gateway", "Derweze"},
|
||||
{"TunnelID", "Tuneliň ID"},
|
||||
{"EndDate", "Gutarýar"},
|
||||
{"not floodfill", "fludfil däl"},
|
||||
{"Queue size", "Nobatyň ululygy"},
|
||||
{"Run peer test", "Synag başlaň"},
|
||||
{"Decline transit tunnels", "Tranzit tunellerini ret ediň"},
|
||||
{"Accept transit tunnels", "Tranzit tunellerini alyň"},
|
||||
{"Cancel graceful shutdown", "Tekiz durmagy ýatyryň"},
|
||||
{"Start graceful shutdown", "Tekiz durmak"},
|
||||
{"Force shutdown", "Mejbury duralga"},
|
||||
{"Reload external CSS styles", "Daşarky CSS stillerini täzeden ýükläň"},
|
||||
{"<b>Note:</b> any action done here are not persistent and not changes your config files.", "<b>Bellik:</b> Bu ýerde öndürilen islendik çäre hemişelik däl we konfigurasiýa faýllaryňyzy üýtgetmeýär."},
|
||||
{"Logging level", "Giriş derejesi"},
|
||||
{"Transit tunnels limit", "Tranzit tunelleriniň çägi"},
|
||||
{"Change", "Üýtgetmek"},
|
||||
{"Change language", "Dil üýtgetmek"},
|
||||
{"no transit tunnels currently built", "gurlan tranzit tunelleri ýok"},
|
||||
{"SAM disabled", "SAM öçürilen"},
|
||||
{"no sessions currently running", "başlamagyň sessiýalary ýok"},
|
||||
{"SAM session not found", "SAM Sessiýa tapylmady"},
|
||||
{"SAM Session", "SAM Sessiýa"},
|
||||
{"Server Tunnels", "Serwer tunelleri"},
|
||||
{"Client Forwards", "Müşderi gönükdirýär"},
|
||||
{"Server Forwards", "Serweriň täzeden düzlüleri"},
|
||||
{"Unknown page", "Näbelli sahypa"},
|
||||
{"Invalid token", "Nädogry token"},
|
||||
{"SUCCESS", "Üstünlikli"},
|
||||
{"Stream closed", "Strim ýapyk"},
|
||||
{"Stream not found or already was closed", "Strim tapylmady ýa-da eýýäm ýapyldy"},
|
||||
{"Destination not found", "Niýetlenen ýeri tapylmady"},
|
||||
{"StreamID can't be null", "StreamID boş bolup bilmez"},
|
||||
{"Return to destination page", "Barmaly nokadynyň nokadyna gaýdyp geliň"},
|
||||
{"You will be redirected in 5 seconds", "5 sekuntdan soň täzeden ugrukdyrylarsyňyz"},
|
||||
{"Transit tunnels count must not exceed 65535", "Tranzit tagtalaryň sany 65535-den geçmeli däldir"},
|
||||
{"Back to commands list", "Topar sanawyna dolan"},
|
||||
{"Register at reg.i2p", "Reg.i2P-de hasaba duruň"},
|
||||
{"Description", "Beýany"},
|
||||
{"A bit information about service on domain", "Domendäki hyzmat barada käbir maglumatlar"},
|
||||
{"Submit", "Iber"},
|
||||
{"Domain can't end with .b32.i2p", "Domain .b32.i2p bilen gutaryp bilmez"},
|
||||
{"Domain must end with .i2p", "Domeni .i2p bilen gutarmaly"},
|
||||
{"Such destination is not found", "Bu barmaly ýer tapylmady"},
|
||||
{"Unknown command", "Näbelli topar"},
|
||||
{"Command accepted", "Topar kabul edilýär"},
|
||||
{"Proxy error", "Proksi ýalňyşlygy"},
|
||||
{"Proxy info", "Proksi maglumat"},
|
||||
{"Proxy error: Host not found", "Proksi ýalňyşlygy: Host tapylmady"},
|
||||
@ -42,12 +168,12 @@ namespace turkmen // language namespace
|
||||
{"addresshelper is not supported", "Salgylandyryjy goldanok"},
|
||||
{"Host", "Adres"},
|
||||
{"added to router's addressbook from helper", "marşruteriň adresini kömekçiden goşdy"},
|
||||
{"already in router's addressbook", "marşruteriň adres kitaby"},
|
||||
{"Click", "Basyň"},
|
||||
{"here", "bu ýerde"},
|
||||
{"to proceed", "dowam etmek"},
|
||||
{"to update record", "recordazgyny täzelemek üçin"},
|
||||
{"Addresshelper found", "Forgelper tapyldy"},
|
||||
{"already in router's addressbook", "marşruteriň adres kitaby"},
|
||||
{"to update record", "recordazgyny täzelemek üçin"},
|
||||
{"invalid request uri", "nädogry haýyş URI"},
|
||||
{"Can't detect destination host from request", "Haýyşdan barmaly ýerini tapyp bilemok"},
|
||||
{"Outproxy failure", "Daşarky proksi ýalňyşlyk"},
|
||||
@ -67,161 +193,7 @@ namespace turkmen // language namespace
|
||||
{"http out proxy not implemented", "daşarky HTTP proksi serwerini goldamak amala aşyrylmaýar"},
|
||||
{"cannot connect to upstream http proxy", "ýokary akym HTTP proksi serwerine birigip bilmedi"},
|
||||
{"Host is down", "Salgy elýeterli däl"},
|
||||
{"Can't create connection to requested host, it may be down. Please try again later.",
|
||||
"Talap edilýän salgyda birikmäni gurup bilmedim, onlaýn bolup bilmez. Soňra haýyşy soň gaýtalamaga synanyşyň."},
|
||||
|
||||
// Webconsole //
|
||||
// cssStyles
|
||||
{"Disabled", "Öçürildi"},
|
||||
{"Enabled", "Goşuldy"},
|
||||
// ShowTraffic
|
||||
{"KiB", "KiB"},
|
||||
{"MiB", "MiB"},
|
||||
{"GiB", "GiB"},
|
||||
// ShowTunnelDetails
|
||||
{"building", "bina"},
|
||||
{"failed", "şowsuz"},
|
||||
{"expiring", "möhleti gutarýar"},
|
||||
{"established", "işleýär"},
|
||||
{"exploratory", "gözleg"},
|
||||
{"unknown", "näbelli"},
|
||||
{"<b>i2pd</b> webconsole", "Web konsoly <b>i2pd</b>"},
|
||||
// ShowPageHead
|
||||
{"Main page", "Esasy sahypa"},
|
||||
{"Router commands", "Marşrutizator buýruklary"},
|
||||
{"Local destinations", "Ýerli ýerler"},
|
||||
{"LeaseSets", "Lizset"},
|
||||
{"Tunnels", "Tuneller"},
|
||||
{"Transit tunnels", "Tranzit tunels"},
|
||||
{"Transports", "Daşamak"},
|
||||
{"I2P tunnels", "I2P tuneller"},
|
||||
{"SAM sessions", "SAM Sessiýasy"},
|
||||
// Network Status
|
||||
{"OK", "OK"},
|
||||
{"Testing", "Synag etmek"},
|
||||
{"Firewalled", "Daşynda petiklendi"},
|
||||
{"Unknown", "Näbelli"},
|
||||
{"Proxy", "Proksi"},
|
||||
{"Mesh", "MESH-tor"},
|
||||
{"Error", "Ýalňyşlyk"},
|
||||
{"Clock skew", "Takyk wagt däl"},
|
||||
{"Offline", "Awtonom"},
|
||||
{"Symmetric NAT", "Simmetriklik NAT"},
|
||||
// Status
|
||||
{"Uptime", "Onlaýn onlaýn sözlügi"},
|
||||
{"Network status", "Tor ýagdaýy"},
|
||||
{"Network status v6", "Tor ýagdaýy v6"},
|
||||
{"Stopping in", "Soň duruň"},
|
||||
{"Family", "Maşgala"},
|
||||
{"Tunnel creation success rate", "Gurlan teneller üstünlikli gurlan teneller"},
|
||||
{"Received", "Alnan"},
|
||||
{"Sent", "Ýerleşdirildi"},
|
||||
{"Transit", "Tranzit"},
|
||||
{"KiB/s", "KiB/s"},
|
||||
{"Data path", "Maglumat ýoly"},
|
||||
{"Hidden content. Press on text to see.", "Gizlin mazmun. Görkezmek üçin tekste basyň."},
|
||||
{"Router Ident", "Marşrutly kesgitleýji"},
|
||||
{"Router Family", "Marşrutler maşgalasy"},
|
||||
{"Router Caps", "Baýdaklar marşruteri"},
|
||||
{"Version", "Wersiýasy"},
|
||||
{"Our external address", "Daşarky salgymyz"},
|
||||
{"supported", "goldanýar"},
|
||||
{"Routers", "Marşrutizatorlar"},
|
||||
{"Floodfills", "Fludfillar"},
|
||||
{"Client Tunnels", "Müşderi tunelleri"},
|
||||
{"Transit Tunnels", "Tranzit Tunelleri"},
|
||||
{"Services", "Hyzmatlar"},
|
||||
// ShowLocalDestinations
|
||||
{"Local Destinations", "Ýerli ýerler"},
|
||||
// ShowLeaseSetDestination
|
||||
{"Encrypted B33 address", "Şifrlenen B33 salgylar"},
|
||||
{"Address registration line", "Hasaba alyş salgysy"},
|
||||
{"Domain", "Domen"},
|
||||
{"Generate", "Öndürmek"},
|
||||
{"<b>Note:</b> result string can be used only for registering 2LD domains (example.i2p). For registering subdomains please use i2pd-tools.",
|
||||
"<b>Bellik:</b> Alnan setir diňe ikinji derejeli domenleri bellige almak üçin ulanylyp bilner. Subýutmalary hasaba almak üçin i2pd ulanyň-tools."},
|
||||
{"Address", "Salgysy"},
|
||||
{"Type", "Görnüş"},
|
||||
{"EncType", "Şifrlemek görnüşi"},
|
||||
{"Inbound tunnels", "Gelýän tuneller"},
|
||||
{"Outbound tunnels", "Çykýan tuneller"},
|
||||
{"ms", "ms"}, // milliseconds
|
||||
{"Tags", "Bellikler"},
|
||||
{"Incoming", "Gelýän"},
|
||||
{"Outgoing", "Çykýan"},
|
||||
{"Destination", "Maksat"},
|
||||
{"Amount", "Sany"},
|
||||
{"Incoming Tags", "Gelýän bellikler"},
|
||||
{"Tags sessions", "Sapaklar bellikler"},
|
||||
{"Status", "Ýagdaýy"},
|
||||
// ShowLocalDestination
|
||||
{"Local Destination", "Ýerli maksat"},
|
||||
{"Streams", "Strimlary"},
|
||||
{"Close stream", "Yap strim"},
|
||||
// ShowI2CPLocalDestination
|
||||
{"I2CP session not found", "I2CP Sessiýa tapylmady"},
|
||||
{"I2CP is not enabled", "I2CP goşulmaýar"},
|
||||
// ShowLeasesSets
|
||||
{"Invalid", "Nädogry"},
|
||||
{"Store type", "Ammar görnüşi"},
|
||||
{"Expires", "Möhleti gutarýar"},
|
||||
{"Non Expired Leases", "Möhleti gutarmady Lizsetlary"},
|
||||
{"Gateway", "Derweze"},
|
||||
{"TunnelID", "Tuneliň ID"},
|
||||
{"EndDate", "Gutarýar"},
|
||||
{"not floodfill", "fludfil däl"},
|
||||
// ShowTunnels
|
||||
{"Queue size", "Nobatyň ululygy"},
|
||||
// ShowCommands
|
||||
{"Run peer test", "Synag başlaň"},
|
||||
{"Decline transit tunnels", "Tranzit tunellerini ret ediň"},
|
||||
{"Accept transit tunnels", "Tranzit tunellerini alyň"},
|
||||
{"Cancel graceful shutdown", "Tekiz durmagy ýatyryň"},
|
||||
{"Start graceful shutdown", "Tekiz durmak"},
|
||||
{"Force shutdown", "Mejbury duralga"},
|
||||
{"<b>Note:</b> any action done here are not persistent and not changes your config files.",
|
||||
"<b>Bellik:</b> Bu ýerde öndürilen islendik çäre hemişelik däl we konfigurasiýa faýllaryňyzy üýtgetmeýär."},
|
||||
{"Logging level", "Giriş derejesi"},
|
||||
{"Transit tunnels limit", "Tranzit tunelleriniň çägi"},
|
||||
{"Change", "Üýtgetmek"},
|
||||
// ShowTransitTunnels
|
||||
{"no transit tunnels currently built", "gurlan tranzit tunelleri ýok"},
|
||||
// ShowSAMSessions/ShowSAMSession
|
||||
{"SAM disabled", "SAM öçürilen"},
|
||||
{"SAM session not found", "SAM Sessiýa tapylmady"},
|
||||
{"no sessions currently running", "başlamagyň sessiýalary ýok"},
|
||||
{"SAM Session", "SAM Sessiýa"},
|
||||
// ShowI2PTunnels
|
||||
{"Server Tunnels", "Serwer tunelleri"},
|
||||
{"Client Forwards", "Müşderi gönükdirýär"},
|
||||
{"Server Forwards", "Serweriň täzeden düzlüleri"},
|
||||
// HandlePage
|
||||
{"Unknown page", "Näbelli sahypa"},
|
||||
// HandleCommand, ShowError
|
||||
{"Invalid token", "Nädogry token"},
|
||||
{"SUCCESS", "Üstünlikli"},
|
||||
{"ERROR", "Ýalňyşlyk"},
|
||||
{"Unknown command", "Näbelli topar"},
|
||||
{"Command accepted", "Topar kabul edilýär"},
|
||||
{"Back to commands list", "Topar sanawyna dolan"},
|
||||
{"You will be redirected in 5 seconds", "5 sekuntdan soň täzeden ugrukdyrylarsyňyz"},
|
||||
// HTTP_COMMAND_KILLSTREAM
|
||||
{"Stream closed", "Strim ýapyk"},
|
||||
{"Stream not found or already was closed", "Strim tapylmady ýa-da eýýäm ýapyldy"},
|
||||
{"Destination not found", "Niýetlenen ýeri tapylmady"},
|
||||
{"StreamID can't be null", "StreamID boş bolup bilmez"},
|
||||
{"Return to destination page", "Barmaly nokadynyň nokadyna gaýdyp geliň"},
|
||||
{"You will be redirected back in 5 seconds", "5 sekuntda yzyna iberiler"},
|
||||
// HTTP_COMMAND_LIMITTRANSIT
|
||||
{"Transit tunnels count must not exceed 65535", "Tranzit tagtalaryň sany 65535-den geçmeli däldir"},
|
||||
// HTTP_COMMAND_GET_REG_STRING
|
||||
{"Register at reg.i2p", "Reg.i2P-de hasaba duruň"},
|
||||
{"Description", "Beýany"},
|
||||
{"A bit information about service on domain", "Domendäki hyzmat barada käbir maglumatlar"},
|
||||
{"Submit", "Iber"},
|
||||
{"Domain can't end with .b32.i2p", "Domain .b32.i2p bilen gutaryp bilmez"},
|
||||
{"Domain must end with .i2p", "Domeni .i2p bilen gutarmaly"},
|
||||
{"Such destination is not found", "Bu barmaly ýer tapylmady"},
|
||||
{"Can't create connection to requested host, it may be down. Please try again later.", "Talap edilýän salgyda birikmäni gurup bilmedim, onlaýn bolup bilmez. Soňra haýyşy soň gaýtalamaga synanyşyň."},
|
||||
{"", ""},
|
||||
};
|
||||
|
||||
|
@ -31,8 +31,6 @@ namespace ukrainian // language namespace
|
||||
|
||||
static std::map<std::string, std::string> strings
|
||||
{
|
||||
{"Disabled", "Вимкнуто"},
|
||||
{"Enabled", "Увімкнуто"},
|
||||
{"KiB", "КіБ"},
|
||||
{"MiB", "МіБ"},
|
||||
{"GiB", "ГіБ"},
|
||||
@ -45,10 +43,10 @@ namespace ukrainian // language namespace
|
||||
{"<b>i2pd</b> webconsole", "Веб-консоль <b>i2pd</b>"},
|
||||
{"Main page", "Головна"},
|
||||
{"Router commands", "Команди маршрутизатора"},
|
||||
{"Local destinations", "Локальні призначення"},
|
||||
{"Local Destinations", "Локальні Призначення"},
|
||||
{"LeaseSets", "Лізсети"},
|
||||
{"Tunnels", "Тунелі"},
|
||||
{"Transit tunnels", "Транзитні тунелі"},
|
||||
{"Transit Tunnels", "Транзитні Тунелі"},
|
||||
{"Transports", "Транспорти"},
|
||||
{"I2P tunnels", "I2P тунелі"},
|
||||
{"SAM sessions", "SAM сесії"},
|
||||
@ -84,9 +82,9 @@ namespace ukrainian // language namespace
|
||||
{"Routers", "Маршрутизатори"},
|
||||
{"Floodfills", "Флудфіли"},
|
||||
{"Client Tunnels", "Клієнтські Тунелі"},
|
||||
{"Transit Tunnels", "Транзитні Тунелі"},
|
||||
{"Services", "Сервіси"},
|
||||
{"Local Destinations", "Локальні Призначення"},
|
||||
{"Enabled", "Увімкнуто"},
|
||||
{"Disabled", "Вимкнуто"},
|
||||
{"Encrypted B33 address", "Шифровані B33 адреси"},
|
||||
{"Address registration line", "Рядок реєстрації адреси"},
|
||||
{"Domain", "Домен"},
|
||||
@ -126,10 +124,12 @@ namespace ukrainian // language namespace
|
||||
{"Cancel graceful shutdown", "Скасувати плавну зупинку"},
|
||||
{"Start graceful shutdown", "Запустити плавну зупинку"},
|
||||
{"Force shutdown", "Примусова зупинка"},
|
||||
{"Reload external CSS styles", "Перезавантажити зовнішні стилі CSS"},
|
||||
{"<b>Note:</b> any action done here are not persistent and not changes your config files.", "<b>Примітка:</b> будь-яка зроблена тут дія не є постійною та не змінює ваші конфігураційні файли."},
|
||||
{"Logging level", "Рівень логування"},
|
||||
{"Transit tunnels limit", "Обмеження транзитних тунелів"},
|
||||
{"Change", "Змінити"},
|
||||
{"Change language", "Змінити мову"},
|
||||
{"no transit tunnels currently built", "немає побудованих транзитних тунелів"},
|
||||
{"SAM disabled", "SAM вимкнуто"},
|
||||
{"no sessions currently running", "немає запущених сесій"},
|
||||
@ -146,7 +146,7 @@ namespace ukrainian // language namespace
|
||||
{"Destination not found", "Точка призначення не знайдена"},
|
||||
{"StreamID can't be null", "Ідентифікатор потоку не може бути порожнім"},
|
||||
{"Return to destination page", "Повернутися на сторінку точки призначення"},
|
||||
{"You will be redirected back in 5 seconds", "Ви будете переадресовані назад через 5 секунд"},
|
||||
{"You will be redirected in 5 seconds", "Ви будете переадресовані через 5 секунд"},
|
||||
{"Transit tunnels count must not exceed 65535", "Кількість транзитних тунелів не повинна перевищувати 65535"},
|
||||
{"Back to commands list", "Повернутися до списку команд"},
|
||||
{"Register at reg.i2p", "Зареєструвати на reg.i2p"},
|
||||
@ -158,7 +158,6 @@ namespace ukrainian // language namespace
|
||||
{"Such destination is not found", "Така точка призначення не знайдена"},
|
||||
{"Unknown command", "Невідома команда"},
|
||||
{"Command accepted", "Команда прийнята"},
|
||||
{"You will be redirected in 5 seconds", "Ви будете переадресовані через 5 секунд"},
|
||||
{"Proxy error", "Помилка проксі"},
|
||||
{"Proxy info", "Інформація проксі"},
|
||||
{"Proxy error: Host not found", "Помилка проксі: Адреса не знайдена"},
|
||||
@ -175,7 +174,6 @@ namespace ukrainian // language namespace
|
||||
{"Addresshelper found", "Знайдено addresshelper"},
|
||||
{"already in router's addressbook", "вже в адресній книзі маршрутизатора"},
|
||||
{"to update record", "щоб оновити запис"},
|
||||
{"Invalid Request", "Некоректний Запит"},
|
||||
{"invalid request uri", "некоректний URI запиту"},
|
||||
{"Can't detect destination host from request", "Не вдалось визначити адресу призначення з запиту"},
|
||||
{"Outproxy failure", "Помилка зовнішнього проксі"},
|
||||
|
Loading…
Reference in New Issue
Block a user