feat: add Telegram API connection test button to settings
Runs 7-step diagnostic: token check, sing-box running, port 4534 listening, DNS resolution, direct IPv4 API, proxy API, send test message. Shows green/red indicators with actionable advice for each.
This commit is contained in:
@@ -7,8 +7,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: TACHYON\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-08-20 16:44+0300\n"
|
||||
"PO-Revision-Date: 2026-08-20 16:44+0300\n"
|
||||
"POT-Creation-Date: 2026-08-20 18:52+0300\n"
|
||||
"PO-Revision-Date: 2026-08-20 18:52+0300\n"
|
||||
"Last-Translator: Dushnilin <dushnilin@gmail.com>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
"Language: \n"
|
||||
@@ -418,8 +418,8 @@ msgstr ""
|
||||
msgid "Anonymized support report copied to clipboard"
|
||||
msgstr ""
|
||||
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16898
|
||||
#: src/tachyon/tabs/updates/initController.ts:864
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16916
|
||||
#: src/tachyon/tabs/updates/initController.ts:873
|
||||
msgid "Another component action is already running"
|
||||
msgstr ""
|
||||
|
||||
@@ -427,6 +427,10 @@ msgstr ""
|
||||
msgid "API Key for OpenAI (sk-...) or DeepSeek (optional for Ollama / LM Studio)"
|
||||
msgstr ""
|
||||
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2427
|
||||
msgid "API returned error — token may be invalid"
|
||||
msgstr ""
|
||||
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:9552
|
||||
msgid "Apply rules of this section only to selected protocols."
|
||||
msgstr ""
|
||||
@@ -598,6 +602,14 @@ msgstr ""
|
||||
msgid "Bot Status"
|
||||
msgstr ""
|
||||
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2359
|
||||
msgid "bot_token is empty — set token first"
|
||||
msgstr ""
|
||||
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2364
|
||||
msgid "bot_token is set"
|
||||
msgstr ""
|
||||
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9285
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9304
|
||||
#: src/tachyon/tabs/diagnostic/checks/runFakeIPCheck.ts:51
|
||||
@@ -715,6 +727,22 @@ msgstr ""
|
||||
msgid "Cancel"
|
||||
msgstr ""
|
||||
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2412
|
||||
msgid "Cannot check DNS"
|
||||
msgstr ""
|
||||
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2395
|
||||
msgid "Cannot check port 4534"
|
||||
msgstr ""
|
||||
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2379
|
||||
msgid "Cannot check sing-box status"
|
||||
msgstr ""
|
||||
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2429
|
||||
msgid "Cannot reach Telegram API directly (IPv4 blocked by ISP?)"
|
||||
msgstr ""
|
||||
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8885
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8949
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9130
|
||||
@@ -755,8 +783,8 @@ msgid "Certificate pin is unavailable. Apply or restart the server to generate t
|
||||
msgstr ""
|
||||
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16152
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16625
|
||||
#: src/tachyon/tabs/updates/initController.ts:501
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16643
|
||||
#: src/tachyon/tabs/updates/initController.ts:510
|
||||
#: src/tachyon/tabs/updates/partials/renderUpdateProgressModal.ts:321
|
||||
msgid "Check completed!"
|
||||
msgstr ""
|
||||
@@ -784,8 +812,8 @@ msgstr ""
|
||||
msgid "Check timeout after which the server is considered dead"
|
||||
msgstr ""
|
||||
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16956
|
||||
#: src/tachyon/tabs/updates/initController.ts:933
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16974
|
||||
#: src/tachyon/tabs/updates/initController.ts:942
|
||||
msgid "Check update"
|
||||
msgstr ""
|
||||
|
||||
@@ -968,19 +996,19 @@ msgstr ""
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:13038
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14584
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14624
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16238
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16273
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16247
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16282
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:3660
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:10239
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:1803
|
||||
#: src/partials/modal/renderModal.ts:263
|
||||
#: src/tachyon/tabs/dashboard/initController.ts:1262
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:1542
|
||||
#: src/tachyon/tabs/monitoring/initController.ts:884
|
||||
#: src/tachyon/tabs/monitoring/initController.ts:934
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:1542
|
||||
#: src/tachyon/tabs/diagnostic/partials/renderAiChatModal.ts:213
|
||||
#: src/tachyon/tabs/updates/partials/renderUpdateProgressModal.ts:431
|
||||
#: src/tachyon/tabs/updates/partials/renderUpdateProgressModal.ts:477
|
||||
#: src/tachyon/tabs/updates/partials/renderUpdateProgressModal.ts:439
|
||||
#: src/tachyon/tabs/updates/partials/renderUpdateProgressModal.ts:485
|
||||
msgid "Close"
|
||||
msgstr ""
|
||||
|
||||
@@ -1335,6 +1363,10 @@ msgstr ""
|
||||
msgid "Direct (Default)"
|
||||
msgstr ""
|
||||
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2434
|
||||
msgid "Direct API connection failed"
|
||||
msgstr ""
|
||||
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12857
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:1335
|
||||
msgid "Direct Bypass"
|
||||
@@ -1344,6 +1376,10 @@ msgstr ""
|
||||
msgid "Direct connection"
|
||||
msgstr ""
|
||||
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2425
|
||||
msgid "Direct IPv4 to Telegram API works"
|
||||
msgstr ""
|
||||
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12851
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:1326
|
||||
msgid "Direct WAN"
|
||||
@@ -1381,6 +1417,10 @@ msgstr ""
|
||||
msgid "DNS"
|
||||
msgstr ""
|
||||
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2407
|
||||
msgid "DNS cannot resolve api.telegram.org — check DNS settings"
|
||||
msgstr ""
|
||||
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:915
|
||||
msgid "DNS Check Interval"
|
||||
msgstr ""
|
||||
@@ -1432,6 +1472,10 @@ msgstr ""
|
||||
msgid "DNS requests through section"
|
||||
msgstr ""
|
||||
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2405
|
||||
msgid "DNS resolves api.telegram.org"
|
||||
msgstr ""
|
||||
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:972
|
||||
msgid "DNS Rewrite TTL"
|
||||
msgstr ""
|
||||
@@ -2004,16 +2048,16 @@ msgstr ""
|
||||
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3226
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3229
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16710
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16710
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16768
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16939
|
||||
#: src/tachyon/tabs/updates/initController.ts:622
|
||||
#: src/tachyon/tabs/updates/initController.ts:623
|
||||
#: src/tachyon/tabs/updates/initController.ts:698
|
||||
#: src/tachyon/tabs/updates/initController.ts:911
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16728
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16728
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16786
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16957
|
||||
#: src/tachyon/methods/shell/index.ts:172
|
||||
#: src/tachyon/methods/shell/index.ts:179
|
||||
#: src/tachyon/tabs/updates/initController.ts:631
|
||||
#: src/tachyon/tabs/updates/initController.ts:632
|
||||
#: src/tachyon/tabs/updates/initController.ts:707
|
||||
#: src/tachyon/tabs/updates/initController.ts:920
|
||||
msgid "Failed to execute"
|
||||
msgstr ""
|
||||
|
||||
@@ -2084,6 +2128,14 @@ msgstr ""
|
||||
msgid "Failed to save snapshot"
|
||||
msgstr ""
|
||||
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2486
|
||||
msgid "Failed to send test message"
|
||||
msgstr ""
|
||||
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2481
|
||||
msgid "Failed to send test message — check admin_ids and bot permissions"
|
||||
msgstr ""
|
||||
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2063
|
||||
msgid "Failed to start bot"
|
||||
msgstr ""
|
||||
@@ -2635,27 +2687,27 @@ msgstr ""
|
||||
msgid "Init timeout (Itime)"
|
||||
msgstr ""
|
||||
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16228
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16965
|
||||
#: src/tachyon/tabs/updates/initController.ts:947
|
||||
#: src/tachyon/tabs/updates/partials/renderUpdateProgressModal.ts:420
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16237
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16983
|
||||
#: src/tachyon/tabs/updates/initController.ts:956
|
||||
#: src/tachyon/tabs/updates/partials/renderUpdateProgressModal.ts:428
|
||||
msgid "Install"
|
||||
msgstr ""
|
||||
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17367
|
||||
#: src/tachyon/tabs/updates/initController.ts:1435
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17385
|
||||
#: src/tachyon/tabs/updates/initController.ts:1444
|
||||
msgid "Install another build:"
|
||||
msgstr ""
|
||||
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17247
|
||||
#: src/tachyon/tabs/updates/initController.ts:1296
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17265
|
||||
#: src/tachyon/tabs/updates/initController.ts:1305
|
||||
msgid "Installed build → Available build"
|
||||
msgstr ""
|
||||
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16507
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17255
|
||||
#: src/tachyon/tabs/updates/initController.ts:341
|
||||
#: src/tachyon/tabs/updates/initController.ts:1304
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16525
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17273
|
||||
#: src/tachyon/tabs/updates/initController.ts:350
|
||||
#: src/tachyon/tabs/updates/initController.ts:1313
|
||||
msgid "Installed version is newer than release"
|
||||
msgstr ""
|
||||
|
||||
@@ -3223,15 +3275,15 @@ msgstr ""
|
||||
msgid "Latency test URL"
|
||||
msgstr ""
|
||||
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16509
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17253
|
||||
#: src/tachyon/tabs/updates/initController.ts:344
|
||||
#: src/tachyon/tabs/updates/initController.ts:1302
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16527
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17271
|
||||
#: src/tachyon/tabs/updates/initController.ts:353
|
||||
#: src/tachyon/tabs/updates/initController.ts:1311
|
||||
msgid "Latest version is installed"
|
||||
msgstr ""
|
||||
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17255
|
||||
#: src/tachyon/tabs/updates/initController.ts:1304
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17273
|
||||
#: src/tachyon/tabs/updates/initController.ts:1313
|
||||
msgid "Latest version:"
|
||||
msgstr ""
|
||||
|
||||
@@ -3314,16 +3366,16 @@ msgstr ""
|
||||
msgid "Loading connections"
|
||||
msgstr ""
|
||||
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17129
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17142
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17152
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17162
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17172
|
||||
#: src/tachyon/tabs/updates/initController.ts:1148
|
||||
#: src/tachyon/tabs/updates/initController.ts:1163
|
||||
#: src/tachyon/tabs/updates/initController.ts:1181
|
||||
#: src/tachyon/tabs/updates/initController.ts:1195
|
||||
#: src/tachyon/tabs/updates/initController.ts:1209
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17147
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17160
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17170
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17180
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17190
|
||||
#: src/tachyon/tabs/updates/initController.ts:1157
|
||||
#: src/tachyon/tabs/updates/initController.ts:1172
|
||||
#: src/tachyon/tabs/updates/initController.ts:1190
|
||||
#: src/tachyon/tabs/updates/initController.ts:1204
|
||||
#: src/tachyon/tabs/updates/initController.ts:1218
|
||||
msgid "Loading..."
|
||||
msgstr ""
|
||||
|
||||
@@ -3435,6 +3487,10 @@ msgstr ""
|
||||
msgid "Mixed Proxy Port"
|
||||
msgstr ""
|
||||
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2388
|
||||
msgid "Mixed proxy port 4534 is listening"
|
||||
msgstr ""
|
||||
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:9125
|
||||
msgid "Mixed Proxy Username"
|
||||
msgstr ""
|
||||
@@ -3596,6 +3652,10 @@ msgstr ""
|
||||
msgid "No active routing sections found."
|
||||
msgstr ""
|
||||
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2463
|
||||
msgid "No admin_ids set — cannot send test message"
|
||||
msgstr ""
|
||||
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:14686
|
||||
#: src/tachyon/tabs/monitoring/initController.ts:1013
|
||||
msgid "No closed connections"
|
||||
@@ -3728,14 +3788,14 @@ msgstr ""
|
||||
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5653
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:5658
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17152
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17162
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17172
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17170
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17180
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17190
|
||||
#: src/tachyon/helpers/singBoxVariant.ts:38
|
||||
#: src/tachyon/helpers/singBoxVariant.ts:46
|
||||
#: src/tachyon/tabs/updates/initController.ts:1184
|
||||
#: src/tachyon/tabs/updates/initController.ts:1198
|
||||
#: src/tachyon/tabs/updates/initController.ts:1212
|
||||
#: src/tachyon/tabs/updates/initController.ts:1193
|
||||
#: src/tachyon/tabs/updates/initController.ts:1207
|
||||
#: src/tachyon/tabs/updates/initController.ts:1221
|
||||
msgid "Not installed"
|
||||
msgstr ""
|
||||
|
||||
@@ -3868,10 +3928,10 @@ msgstr ""
|
||||
msgid "Only the specified servers."
|
||||
msgstr ""
|
||||
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17230
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17267
|
||||
#: src/tachyon/tabs/updates/initController.ts:1278
|
||||
#: src/tachyon/tabs/updates/initController.ts:1317
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17248
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17285
|
||||
#: src/tachyon/tabs/updates/initController.ts:1287
|
||||
#: src/tachyon/tabs/updates/initController.ts:1326
|
||||
msgid "Open"
|
||||
msgstr ""
|
||||
|
||||
@@ -3889,8 +3949,8 @@ msgstr ""
|
||||
msgid "Operation completed successfully!"
|
||||
msgstr ""
|
||||
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16269
|
||||
#: src/tachyon/tabs/updates/partials/renderUpdateProgressModal.ts:472
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16278
|
||||
#: src/tachyon/tabs/updates/partials/renderUpdateProgressModal.ts:480
|
||||
msgid "Operation failed"
|
||||
msgstr ""
|
||||
|
||||
@@ -4120,6 +4180,10 @@ msgstr ""
|
||||
msgid "Polling interval must be at least 1 second"
|
||||
msgstr ""
|
||||
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2390
|
||||
msgid "Port 4534 not listening — proxy may not be available"
|
||||
msgstr ""
|
||||
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:9095
|
||||
msgid "Port cannot be empty"
|
||||
msgstr ""
|
||||
@@ -4249,6 +4313,10 @@ msgstr ""
|
||||
msgid "Proxy / DPI"
|
||||
msgstr ""
|
||||
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2455
|
||||
msgid "Proxy API connection failed"
|
||||
msgstr ""
|
||||
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1808
|
||||
msgid "Proxy Fail Threshold"
|
||||
msgstr ""
|
||||
@@ -4266,6 +4334,14 @@ msgstr ""
|
||||
msgid "Proxy link is unavailable"
|
||||
msgstr ""
|
||||
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2450
|
||||
msgid "Proxy route to Telegram API failed — check proxy outbound config"
|
||||
msgstr ""
|
||||
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2448
|
||||
msgid "Proxy route to Telegram API works"
|
||||
msgstr ""
|
||||
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2265
|
||||
msgid "Proxy Section for Bot"
|
||||
msgstr ""
|
||||
@@ -4335,8 +4411,8 @@ msgstr ""
|
||||
msgid "Rebuild firewall rules"
|
||||
msgstr ""
|
||||
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17249
|
||||
#: src/tachyon/tabs/updates/initController.ts:1298
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17267
|
||||
#: src/tachyon/tabs/updates/initController.ts:1307
|
||||
msgid "Rebuilt release"
|
||||
msgstr ""
|
||||
|
||||
@@ -4385,8 +4461,8 @@ msgstr ""
|
||||
msgid "Regular expression must not contain spaces or commas"
|
||||
msgstr ""
|
||||
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17046
|
||||
#: src/tachyon/tabs/updates/initController.ts:1061
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17064
|
||||
#: src/tachyon/tabs/updates/initController.ts:1070
|
||||
msgid "Reinstall"
|
||||
msgstr ""
|
||||
|
||||
@@ -4409,9 +4485,9 @@ msgstr ""
|
||||
msgid "Removal completed successfully!"
|
||||
msgstr ""
|
||||
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17014
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17032
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:7927
|
||||
#: src/tachyon/tabs/updates/initController.ts:1017
|
||||
#: src/tachyon/tabs/updates/initController.ts:1026
|
||||
msgid "Remove"
|
||||
msgstr ""
|
||||
|
||||
@@ -4718,6 +4794,10 @@ msgstr ""
|
||||
msgid "Running"
|
||||
msgstr ""
|
||||
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2331
|
||||
msgid "Running diagnostics…"
|
||||
msgstr ""
|
||||
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:9246
|
||||
msgid "Russia (ru)"
|
||||
msgstr ""
|
||||
@@ -5087,9 +5167,9 @@ msgstr ""
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3410
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:3429
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:12323
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:604
|
||||
#: src/tachyon/methods/shell/index.ts:422
|
||||
#: src/tachyon/methods/shell/index.ts:443
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:604
|
||||
msgid "Service action failed"
|
||||
msgstr ""
|
||||
|
||||
@@ -5116,8 +5196,8 @@ msgstr ""
|
||||
msgid "Services info"
|
||||
msgstr ""
|
||||
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16217
|
||||
#: src/tachyon/tabs/updates/partials/renderUpdateProgressModal.ts:407
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16226
|
||||
#: src/tachyon/tabs/updates/partials/renderUpdateProgressModal.ts:415
|
||||
msgid "Services restarted. Click to reload page."
|
||||
msgstr ""
|
||||
|
||||
@@ -5194,6 +5274,14 @@ msgstr ""
|
||||
msgid "Sing-box installed"
|
||||
msgstr ""
|
||||
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2374
|
||||
msgid "sing-box is NOT running — bot cannot route through proxy"
|
||||
msgstr ""
|
||||
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2372
|
||||
msgid "sing-box is running"
|
||||
msgstr ""
|
||||
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:8993
|
||||
#: src/tachyon/tabs/diagnostic/checks/runSingBoxCheck.ts:87
|
||||
msgid "Sing-box listening ports"
|
||||
@@ -5662,6 +5750,13 @@ msgstr ""
|
||||
msgid "Telegram Bot Token"
|
||||
msgstr ""
|
||||
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2317
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2361
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2465
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2492
|
||||
msgid "Test Connection"
|
||||
msgstr ""
|
||||
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:2104
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:2108
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:2606
|
||||
@@ -5671,6 +5766,10 @@ msgstr ""
|
||||
msgid "Test latency"
|
||||
msgstr ""
|
||||
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2479
|
||||
msgid "Test message sent to chat"
|
||||
msgstr ""
|
||||
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:2784
|
||||
msgid "Test only selected servers."
|
||||
msgstr ""
|
||||
@@ -5695,11 +5794,19 @@ msgstr ""
|
||||
msgid "Test servers whose names match the expression."
|
||||
msgstr ""
|
||||
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2304
|
||||
msgid "Test Telegram Connection"
|
||||
msgstr ""
|
||||
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:7445
|
||||
#: src/tachyon/tabs/dashboard/initController.ts:1287
|
||||
msgid "Testing URL"
|
||||
msgstr ""
|
||||
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:2328
|
||||
msgid "Testing…"
|
||||
msgstr ""
|
||||
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:5654
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:6099
|
||||
msgid "The desync fwmark is managed by Tachyon for loop prevention and must not be overridden here."
|
||||
@@ -5890,8 +5997,8 @@ msgstr ""
|
||||
msgid "Traffic will go through the default route (Direct/Default)."
|
||||
msgstr ""
|
||||
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16913
|
||||
#: src/tachyon/tabs/updates/initController.ts:880
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16931
|
||||
#: src/tachyon/tabs/updates/initController.ts:889
|
||||
msgid "Transient connection error"
|
||||
msgstr ""
|
||||
|
||||
@@ -6058,7 +6165,7 @@ msgstr ""
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9612
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9615
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:9616
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16536
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16554
|
||||
#: src/tachyon/helpers/singBoxVariant.ts:37
|
||||
#: src/tachyon/services/systemInfo.service.ts:10
|
||||
#: src/tachyon/services/systemInfo.service.ts:12
|
||||
@@ -6069,7 +6176,7 @@ msgstr ""
|
||||
#: src/tachyon/services/systemInfo.service.ts:25
|
||||
#: src/tachyon/services/systemInfo.service.ts:28
|
||||
#: src/tachyon/services/systemInfo.service.ts:29
|
||||
#: src/tachyon/tabs/updates/initController.ts:382
|
||||
#: src/tachyon/tabs/updates/initController.ts:391
|
||||
#: src/tachyon/tabs/diagnostic/checks/runInboundsCheck.ts:25
|
||||
msgid "unknown"
|
||||
msgstr ""
|
||||
@@ -6130,23 +6237,23 @@ msgstr ""
|
||||
msgid "Up to 10 snapshots are kept; the oldest ones are removed automatically."
|
||||
msgstr ""
|
||||
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16965
|
||||
#: src/tachyon/tabs/updates/initController.ts:947
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16983
|
||||
#: src/tachyon/tabs/updates/initController.ts:956
|
||||
msgid "Update"
|
||||
msgstr ""
|
||||
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16504
|
||||
#: src/tachyon/tabs/updates/initController.ts:337
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:16522
|
||||
#: src/tachyon/tabs/updates/initController.ts:346
|
||||
msgid "Update is available"
|
||||
msgstr ""
|
||||
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17237
|
||||
#: src/tachyon/tabs/updates/initController.ts:1285
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17255
|
||||
#: src/tachyon/tabs/updates/initController.ts:1294
|
||||
msgid "Update is available for current release"
|
||||
msgstr ""
|
||||
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17218
|
||||
#: src/tachyon/tabs/updates/initController.ts:1264
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/main.js:17236
|
||||
#: src/tachyon/tabs/updates/initController.ts:1273
|
||||
msgid "Update is available:"
|
||||
msgstr ""
|
||||
|
||||
|
||||
@@ -2295,6 +2295,206 @@ function createTelegramContent(section) {
|
||||
o.remove = function () {
|
||||
uci.unset(UCI_PACKAGE, "telegram", "bot_proxy_section");
|
||||
};
|
||||
|
||||
// ── Telegram API Connection Test ──────────────────────────────────────────
|
||||
|
||||
const testOpt = section.option(
|
||||
form.DummyValue,
|
||||
"_test_telegram_connection",
|
||||
_("Test Telegram Connection"),
|
||||
);
|
||||
testOpt.rawhtml = true;
|
||||
testOpt.depends("enabled", "1");
|
||||
testOpt.cfgvalue = function () {
|
||||
const wrapper = E("div", { style: "margin-top: 8px;" });
|
||||
const btn = E(
|
||||
"button",
|
||||
{
|
||||
class: "btn cbi-button cbi-button-action",
|
||||
type: "button",
|
||||
id: "tachyon-telegram-test-btn",
|
||||
},
|
||||
"\uD83D\uDD0C " + _("Test Connection"),
|
||||
);
|
||||
const result = E("div", {
|
||||
id: "tachyon-telegram-test-result",
|
||||
style: "margin-top: 8px; white-space: pre-wrap; font-family: monospace; font-size: 12px; display: none;",
|
||||
});
|
||||
wrapper.appendChild(btn);
|
||||
wrapper.appendChild(result);
|
||||
|
||||
btn.addEventListener("click", function () {
|
||||
btn.disabled = true;
|
||||
btn.textContent = "\u23F3 " + _("Testing…");
|
||||
result.style.display = "block";
|
||||
result.style.color = "";
|
||||
result.textContent = _("Running diagnostics…");
|
||||
|
||||
var token = uci.get(UCI_PACKAGE, "telegram", "bot_token") || "";
|
||||
var checks = [];
|
||||
|
||||
function addCheck(icon, text, ok) {
|
||||
checks.push(icon + " " + text);
|
||||
result.textContent = checks.join("\n");
|
||||
}
|
||||
|
||||
function runSequential(tasks, done) {
|
||||
var i = 0;
|
||||
function next() {
|
||||
if (i >= tasks.length) {
|
||||
done();
|
||||
return;
|
||||
}
|
||||
var fn = tasks[i];
|
||||
i++;
|
||||
fn(next);
|
||||
}
|
||||
next();
|
||||
}
|
||||
|
||||
runSequential([
|
||||
// 1. Token check
|
||||
function (next) {
|
||||
if (!token) {
|
||||
addCheck("\u274C", _("bot_token is empty — set token first"), false);
|
||||
btn.disabled = false;
|
||||
btn.textContent = "\uD83D\uDD0C " + _("Test Connection");
|
||||
return;
|
||||
}
|
||||
addCheck("\u2705", _("bot_token is set"), true);
|
||||
next();
|
||||
},
|
||||
// 2. sing-box running
|
||||
function (next) {
|
||||
fs.exec("/bin/pidof", ["sing-box"])
|
||||
.then(function (res) {
|
||||
if (res.code === 0) {
|
||||
addCheck("\u2705", _("sing-box is running"), true);
|
||||
} else {
|
||||
addCheck("\u274C", _("sing-box is NOT running — bot cannot route through proxy"), false);
|
||||
}
|
||||
next();
|
||||
})
|
||||
.catch(function () {
|
||||
addCheck("\u274C", _("Cannot check sing-box status"), false);
|
||||
next();
|
||||
});
|
||||
},
|
||||
// 3. Mixed proxy port
|
||||
function (next) {
|
||||
fs.exec("/bin/sh", ["-c", "netstat -tlnp 2>/dev/null | grep ':4534 '"])
|
||||
.then(function (res) {
|
||||
if (res.code === 0 && res.stdout && res.stdout.trim()) {
|
||||
addCheck("\u2705", _("Mixed proxy port 4534 is listening"), true);
|
||||
} else {
|
||||
addCheck("\u26A0\uFE0F", _("Port 4534 not listening — proxy may not be available"), false);
|
||||
}
|
||||
next();
|
||||
})
|
||||
.catch(function () {
|
||||
addCheck("\u26A0\uFE0F", _("Cannot check port 4534"), false);
|
||||
next();
|
||||
});
|
||||
},
|
||||
// 4. DNS resolution
|
||||
function (next) {
|
||||
fs.exec("/bin/sh", ["-c", "nslookup api.telegram.org 2>/dev/null | head -5"])
|
||||
.then(function (res) {
|
||||
var out = (res.stdout || "").trim();
|
||||
if (out && out.indexOf("Address") !== -1 && out.indexOf("149.154") !== -1) {
|
||||
addCheck("\u2705", _("DNS resolves api.telegram.org"), true);
|
||||
} else {
|
||||
addCheck("\u274C", _("DNS cannot resolve api.telegram.org — check DNS settings"), false);
|
||||
}
|
||||
next();
|
||||
})
|
||||
.catch(function () {
|
||||
addCheck("\u26A0\uFE0F", _("Cannot check DNS"), false);
|
||||
next();
|
||||
});
|
||||
},
|
||||
// 5. Direct API test (IPv4)
|
||||
function (next) {
|
||||
fs.exec("/usr/bin/curl", [
|
||||
"-s", "-4", "--connect-timeout", "5", "--max-time", "8",
|
||||
"https://api.telegram.org/bot" + token + "/getMe",
|
||||
])
|
||||
.then(function (res) {
|
||||
var out = (res.stdout || "").trim();
|
||||
if (res.code === 0 && out.indexOf('"ok":true') !== -1) {
|
||||
addCheck("\u2705", _("Direct IPv4 to Telegram API works"), true);
|
||||
} else if (out.indexOf('"ok":false') !== -1) {
|
||||
addCheck("\u274C", _("API returned error — token may be invalid"), false);
|
||||
} else {
|
||||
addCheck("\u274C", _("Cannot reach Telegram API directly (IPv4 blocked by ISP?)"), false);
|
||||
}
|
||||
next();
|
||||
})
|
||||
.catch(function () {
|
||||
addCheck("\u274C", _("Direct API connection failed"), false);
|
||||
next();
|
||||
});
|
||||
},
|
||||
// 6. Proxy API test
|
||||
function (next) {
|
||||
fs.exec("/usr/bin/curl", [
|
||||
"-s", "-4", "--connect-timeout", "5", "--max-time", "8",
|
||||
"--proxy", "http://127.0.0.1:4534",
|
||||
"https://api.telegram.org/bot" + token + "/getMe",
|
||||
])
|
||||
.then(function (res) {
|
||||
var out = (res.stdout || "").trim();
|
||||
if (res.code === 0 && out.indexOf('"ok":true') !== -1) {
|
||||
addCheck("\u2705", _("Proxy route to Telegram API works"), true);
|
||||
} else {
|
||||
addCheck("\u274C", _("Proxy route to Telegram API failed — check proxy outbound config"), false);
|
||||
}
|
||||
next();
|
||||
})
|
||||
.catch(function () {
|
||||
addCheck("\u274C", _("Proxy API connection failed"), false);
|
||||
next();
|
||||
});
|
||||
},
|
||||
// 7. Send test message
|
||||
function (next) {
|
||||
var adminId = (uci.get(UCI_PACKAGE, "telegram", "admin_ids") || "").split(",")[0] || "";
|
||||
if (!adminId) {
|
||||
addCheck("\u26A0\uFE0F", _("No admin_ids set — cannot send test message"), false);
|
||||
btn.disabled = false;
|
||||
btn.textContent = "\uD83D\uDD0C " + _("Test Connection");
|
||||
return;
|
||||
}
|
||||
fs.exec("/usr/bin/curl", [
|
||||
"-s", "-m", "10", "--connect-timeout", "5",
|
||||
"--proxy", "http://127.0.0.1:4534",
|
||||
"-X", "POST",
|
||||
"-H", "Content-Type: application/json",
|
||||
"-d", '{"chat_id":' + adminId + ',"text":"\u2705 Tachyon connection test passed"}',
|
||||
"https://api.telegram.org/bot" + token + "/sendMessage",
|
||||
])
|
||||
.then(function (res) {
|
||||
var out = (res.stdout || "").trim();
|
||||
if (res.code === 0 && out.indexOf('"ok":true') !== -1) {
|
||||
addCheck("\u2705", _("Test message sent to chat ") + adminId, true);
|
||||
} else {
|
||||
addCheck("\u274C", _("Failed to send test message — check admin_ids and bot permissions"), false);
|
||||
}
|
||||
next();
|
||||
})
|
||||
.catch(function () {
|
||||
addCheck("\u274C", _("Failed to send test message"), false);
|
||||
next();
|
||||
});
|
||||
},
|
||||
], function () {
|
||||
btn.disabled = false;
|
||||
btn.textContent = "\uD83D\uDD0C " + _("Test Connection");
|
||||
});
|
||||
});
|
||||
|
||||
return wrapper;
|
||||
};
|
||||
}
|
||||
|
||||
const EntryPoint = {
|
||||
|
||||
@@ -7,8 +7,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: TACHYON\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-08-20 19:44+0300\n"
|
||||
"PO-Revision-Date: 2026-08-20 19:44+0300\n"
|
||||
"POT-Creation-Date: 2026-08-20 21:52+0300\n"
|
||||
"PO-Revision-Date: 2026-08-20 21:52+0300\n"
|
||||
"Last-Translator: Dushnilin\n"
|
||||
"Language-Team: none\n"
|
||||
"Language: ru\n"
|
||||
@@ -281,6 +281,9 @@ msgstr "Другое действие уже выполняется"
|
||||
msgid "API Key for OpenAI (sk-...) or DeepSeek (optional for Ollama / LM Studio)"
|
||||
msgstr "API-ключ для OpenAI (sk-...) или DeepSeek (опционально для Ollama / LM Studio)"
|
||||
|
||||
msgid "API returned error — token may be invalid"
|
||||
msgstr ""
|
||||
|
||||
msgid "Apply rules of this section only to selected protocols."
|
||||
msgstr "Применять правила этой секции только к выбранным протоколам."
|
||||
|
||||
@@ -395,6 +398,12 @@ msgstr "Bootstrap DNS-серверы"
|
||||
msgid "Bot Status"
|
||||
msgstr "Статус бота"
|
||||
|
||||
msgid "bot_token is empty — set token first"
|
||||
msgstr ""
|
||||
|
||||
msgid "bot_token is set"
|
||||
msgstr ""
|
||||
|
||||
msgid "Browser FakeIP check could not be completed"
|
||||
msgstr "Не удалось выполнить проверку FakeIP в браузере"
|
||||
|
||||
@@ -467,6 +476,18 @@ msgstr "Путь к файлу кэша не может быть пустым"
|
||||
msgid "Cancel"
|
||||
msgstr "Отмена"
|
||||
|
||||
msgid "Cannot check DNS"
|
||||
msgstr ""
|
||||
|
||||
msgid "Cannot check port 4534"
|
||||
msgstr ""
|
||||
|
||||
msgid "Cannot check sing-box status"
|
||||
msgstr ""
|
||||
|
||||
msgid "Cannot reach Telegram API directly (IPv4 blocked by ISP?)"
|
||||
msgstr ""
|
||||
|
||||
msgid "Cannot receive checks result"
|
||||
msgstr "Не удалось получить результаты проверки"
|
||||
|
||||
@@ -830,12 +851,18 @@ msgstr "Напрямую"
|
||||
msgid "Direct (Default)"
|
||||
msgstr "Прямое (по умолчанию)"
|
||||
|
||||
msgid "Direct API connection failed"
|
||||
msgstr ""
|
||||
|
||||
msgid "Direct Bypass"
|
||||
msgstr "Прямой WAN"
|
||||
|
||||
msgid "Direct connection"
|
||||
msgstr "Прямое подключение"
|
||||
|
||||
msgid "Direct IPv4 to Telegram API works"
|
||||
msgstr ""
|
||||
|
||||
msgid "Direct WAN"
|
||||
msgstr "Прямой WAN"
|
||||
|
||||
@@ -860,6 +887,9 @@ msgstr "Отображаемое имя"
|
||||
msgid "DNS"
|
||||
msgstr "DNS"
|
||||
|
||||
msgid "DNS cannot resolve api.telegram.org — check DNS settings"
|
||||
msgstr ""
|
||||
|
||||
msgid "DNS Check Interval"
|
||||
msgstr "Интервал проверки DNS"
|
||||
|
||||
@@ -893,6 +923,9 @@ msgstr "Протокол DNS, используемый резолвером"
|
||||
msgid "DNS requests through section"
|
||||
msgstr "DNS-запросы через секцию"
|
||||
|
||||
msgid "DNS resolves api.telegram.org"
|
||||
msgstr ""
|
||||
|
||||
msgid "DNS Rewrite TTL"
|
||||
msgstr "TTL DNS-записей"
|
||||
|
||||
@@ -1319,6 +1352,12 @@ msgstr "Ошибка сохранения настроек Smart Detect"
|
||||
msgid "Failed to save snapshot"
|
||||
msgstr "Не удалось сохранить снапшот"
|
||||
|
||||
msgid "Failed to send test message"
|
||||
msgstr ""
|
||||
|
||||
msgid "Failed to send test message — check admin_ids and bot permissions"
|
||||
msgstr ""
|
||||
|
||||
msgid "Failed to start bot"
|
||||
msgstr "Не удалось запустить бота"
|
||||
|
||||
@@ -2180,6 +2219,9 @@ msgstr "Пароль смешанного прокси"
|
||||
msgid "Mixed Proxy Port"
|
||||
msgstr "Порт смешанного прокси"
|
||||
|
||||
msgid "Mixed proxy port 4534 is listening"
|
||||
msgstr ""
|
||||
|
||||
msgid "Mixed Proxy Username"
|
||||
msgstr "Имя пользователя смешанного прокси"
|
||||
|
||||
@@ -2282,6 +2324,9 @@ msgstr "Активные устройства в локальной сети н
|
||||
msgid "No active routing sections found."
|
||||
msgstr "Активные секции маршрутизации не найдены."
|
||||
|
||||
msgid "No admin_ids set — cannot send test message"
|
||||
msgstr ""
|
||||
|
||||
msgid "No closed connections"
|
||||
msgstr "Нет закрытых подключений"
|
||||
|
||||
@@ -2600,6 +2645,9 @@ msgstr "Интервал опроса (секунды)"
|
||||
msgid "Polling interval must be at least 1 second"
|
||||
msgstr "Интервал опроса должен быть не менее 1 секунды"
|
||||
|
||||
msgid "Port 4534 not listening — proxy may not be available"
|
||||
msgstr ""
|
||||
|
||||
msgid "Port cannot be empty"
|
||||
msgstr "Порт не может быть пустым"
|
||||
|
||||
@@ -2684,6 +2732,9 @@ msgstr "Протокол"
|
||||
msgid "Proxy / DPI"
|
||||
msgstr "Прокси / DPI"
|
||||
|
||||
msgid "Proxy API connection failed"
|
||||
msgstr ""
|
||||
|
||||
msgid "Proxy Fail Threshold"
|
||||
msgstr "Порог ошибок прокси"
|
||||
|
||||
@@ -2696,6 +2747,12 @@ msgstr "URL проверки здоровья прокси"
|
||||
msgid "Proxy link is unavailable"
|
||||
msgstr "Ссылка прокси недоступна"
|
||||
|
||||
msgid "Proxy route to Telegram API failed — check proxy outbound config"
|
||||
msgstr ""
|
||||
|
||||
msgid "Proxy route to Telegram API works"
|
||||
msgstr ""
|
||||
|
||||
msgid "Proxy Section for Bot"
|
||||
msgstr "Секция прокси для бота"
|
||||
|
||||
@@ -2981,6 +3038,9 @@ msgstr "Запустить восстановление"
|
||||
msgid "Running"
|
||||
msgstr "Запущен"
|
||||
|
||||
msgid "Running diagnostics…"
|
||||
msgstr ""
|
||||
|
||||
msgid "Russia (ru)"
|
||||
msgstr "Россия (ru)"
|
||||
|
||||
@@ -3299,6 +3359,12 @@ msgstr "FakeIP DNS sing-box работает"
|
||||
msgid "Sing-box installed"
|
||||
msgstr "Sing-box установлен"
|
||||
|
||||
msgid "sing-box is NOT running — bot cannot route through proxy"
|
||||
msgstr ""
|
||||
|
||||
msgid "sing-box is running"
|
||||
msgstr ""
|
||||
|
||||
msgid "Sing-box listening ports"
|
||||
msgstr "Sing-box слушает порты"
|
||||
|
||||
@@ -3602,9 +3668,15 @@ msgstr "Telegram Бот"
|
||||
msgid "Telegram Bot Token"
|
||||
msgstr "Токен Telegram-бота"
|
||||
|
||||
msgid "Test Connection"
|
||||
msgstr ""
|
||||
|
||||
msgid "Test latency"
|
||||
msgstr "Тестирование задержки"
|
||||
|
||||
msgid "Test message sent to chat"
|
||||
msgstr ""
|
||||
|
||||
msgid "Test only selected servers."
|
||||
msgstr "Тестировать только выбранные серверы."
|
||||
|
||||
@@ -3623,9 +3695,15 @@ msgstr "Тестировать серверы только из указанны
|
||||
msgid "Test servers whose names match the expression."
|
||||
msgstr "Тестировать серверы, чьи имена соответствуют выражению."
|
||||
|
||||
msgid "Test Telegram Connection"
|
||||
msgstr ""
|
||||
|
||||
msgid "Testing URL"
|
||||
msgstr "URL проверки"
|
||||
|
||||
msgid "Testing…"
|
||||
msgstr ""
|
||||
|
||||
msgid "The desync fwmark is managed by Tachyon for loop prevention and must not be overridden here."
|
||||
msgstr "fwmark desync управляется Tachyon для предотвращения циклов и не может быть переопределён здесь."
|
||||
|
||||
|
||||
Reference in New Issue
Block a user