#!/bin/bash # GoTelegram v2.4 — English translations # shellcheck disable=SC2034,SC2148 # ── Common words ──────────────────────────────────────────────────────── I18N[yes]="Yes" I18N[no]="No" I18N[ok]="OK" I18N[cancel]="Cancel" I18N[back]="« Back" I18N[exit]="Exit" I18N[skip]="Skip" I18N[choose]="Choose" I18N[press_enter]="Press Enter..." I18N[press_enter_to_return]="Press Enter to return to menu..." I18N[invalid_choice]="Invalid choice" I18N[running]="running" I18N[stopped]="stopped" I18N[not_installed]="not installed" I18N[unknown]="unknown" I18N[error]="Error" I18N[warning]="Warning" I18N[info]="Info" I18N[success]="Done" I18N[wait]="Please wait..." # ── Banner ────────────────────────────────────────────────────────────── I18N[banner_title]="GoTelegram v%s" I18N[banner_subtitle]="MTProxy powered by telemt (Rust + Tokio)" I18N[banner_features]="Anti-DPI • Fake TLS • TCP Splice • JA3/JA4" I18N[credits_title]="Credits / Thanks" # ── Main menu (dashboard) ─────────────────────────────────────────────── I18N[dashboard_title]="Control panel" I18N[svc_proxy]="Proxy" I18N[svc_nginx]="nginx" I18N[svc_site]="Site" I18N[svc_ssl]="SSL" I18N[svc_bot]="Bot" I18N[ssl_until]="until %s" I18N[net_ip]="IP:" I18N[net_port]="Port:" I18N[net_mode]="Mode:" I18N[net_domain]="Domain:" I18N[connection_link]="Telegram connection link:" I18N[proxy_not_configured]="Proxy is not configured. Select option 1." I18N[menu_proxy]="Proxy ▸" I18N[menu_stats]="Statistics ▸" I18N[menu_manage]="Management ▸" I18N[menu_telegram_bot]="Telegram bot ▸" I18N[menu_about]="About ▸" I18N[auto_refresh_30s]="Refresh in 30 sec" # ── Submenu: Proxy ────────────────────────────────────────────────────── I18N[submenu_proxy_title]="🚀 PROXY" I18N[proxy_install_update]="Install / Update" I18N[proxy_status_detail]="Detailed status" I18N[proxy_copy_link]="Copy link" I18N[proxy_share]="Share key" I18N[proxy_restart]="Restart" I18N[proxy_logs]="Logs" I18N[proxy_change_mode]="Change mode / template" # ── Submenu: Manage ───────────────────────────────────────────────────── I18N[submenu_manage_title]="⚙️ MANAGEMENT" I18N[manage_backup]="Backup" I18N[manage_restore]="Restore" I18N[manage_update_telemt]="Update telemt" I18N[manage_site_ssl]="Site / SSL" I18N[manage_remove]="Remove" I18N[manage_language]="Language / Язык" # ── Submenu: About ────────────────────────────────────────────────────── I18N[submenu_about_title]="ℹ️ ABOUT" I18N[about_version_info]="Version info" I18N[about_promo]="Promo / Donate" I18N[version_title]="🔍 Information" I18N[version_label]="GoTelegram:" I18N[version_engine]="Engine:" I18N[version_tech]="Technology:" I18N[version_license]="License:" # ── Install flow ──────────────────────────────────────────────────────── I18N[install_select_mode]="🎭 Select masquerade mode:" I18N[install_lite_title]="⚡ Lite — masquerade as popular website" I18N[install_lite_desc1]="Fast, no domain needed. telemt disguises traffic" I18N[install_lite_desc2]="as the chosen site (google.com etc.)" I18N[install_pro_title]="🛡 Pro — your own site + full masquerade" I18N[install_pro_desc1]="nginx + SSL + HTML template + telemt." I18N[install_pro_desc2]="DPI sees a real website with a real certificate." I18N[install_pro_desc3]="Requires: a domain pointing to this server." I18N[install_mode_choice]="Choice (1/2):" I18N[install_bad_choice]="Invalid choice: %s" I18N[install_lite_step]="Installing Lite mode" I18N[install_pro_step]="Installing Pro mode" I18N[install_enter_domain]="Enter your domain (e.g. example.com):" I18N[install_bad_domain]="Invalid domain: %s" I18N[install_dns_mismatch]="Domain %s points to %s, not to %s" I18N[install_continue_anyway]="Continue anyway?" I18N[install_enter_email]="Email for SSL (Enter = no email):" I18N[install_config_title]="📋 Configuration:" I18N[install_cfg_ip]="IP:" I18N[install_cfg_port]="Port:" I18N[install_cfg_mask]="Masquerade:" I18N[install_cfg_mode]="Mode:" I18N[install_cfg_domain]="Domain:" I18N[install_confirm_proxy]="Install proxy?" I18N[install_confirm_proxy_site]="Install proxy + website?" I18N[install_done]="GoTelegram v%s installed! (%s mode)" I18N[install_arch_desc1]="telemt accepts all traffic on 443 (HTTPS masquerade)" I18N[install_arch_desc2]="nginx serves the site on internal port %s" I18N[install_arch_desc3]="ISP only sees HTTPS traffic to %s:443" # ── Change mode/template ──────────────────────────────────────────────── I18N[change_current_mode]="Current mode:" I18N[change_template]="Change site template (pro only)" I18N[change_mode_switch]="Switch mode (lite ↔ pro)" I18N[change_only_pro]="Template change is available in pro mode only" I18N[change_requires_reinstall]="Mode switch requires reinstall." I18N[change_reinstall_confirm]="Reinstall proxy?" # ── Logs ──────────────────────────────────────────────────────────────── I18N[logs_telemt_title]="📋 telemt logs (last %s lines):" # ── Link / Share ──────────────────────────────────────────────────────── I18N[link_title]="🔗 Connection link:" I18N[share_title]="📤 Forward this message:" I18N[share_line1]="🔐 MTProxy for Telegram (GoTelegram v%s)" I18N[share_server]="🌍 Server: %s" I18N[share_port]="🔌 Port: %s" I18N[share_connect_cta]="👉 Connect with one tap:" I18N[share_footer]="Just tap the link or configure manually." # ── Website ───────────────────────────────────────────────────────────── I18N[website_title]="🌐 Website management" I18N[website_domain]="Domain:" I18N[website_ssl_until]="SSL until:" I18N[website_only_pro]="Website management is available in pro mode only" I18N[website_renew_ssl]="Renew SSL certificate" I18N[website_restart_nginx]="Restart nginx" I18N[website_change_template]="Change template" # ── Remove ────────────────────────────────────────────────────────────── I18N[remove_title]="🗑 Remove GoTelegram" I18N[remove_proxy_only]="Remove proxy only (telemt)" I18N[remove_bot_only]="Remove Telegram bot only" I18N[remove_all]="Remove everything (proxy + bot + settings)" I18N[remove_warn_proxy]="This will remove the proxy and all its settings." I18N[remove_confirm_proxy]="Remove proxy?" I18N[remove_backup_before]="Create a backup before removal?" I18N[remove_warn_all]="This will remove EVERYTHING: proxy, bot, site, settings." I18N[remove_confirm_all]="Are you absolutely sure?" I18N[remove_proxy_done]="Proxy removed" I18N[remove_all_done]="GoTelegram fully removed (proxy + bot)" # ── Telegram bot submenu ──────────────────────────────────────────────── I18N[bot_title]="🤖 Telegram bot" I18N[bot_status_running]="● Running" I18N[bot_status_stopped]="○ Stopped" I18N[bot_status_not_installed]="✗ Not installed" I18N[bot_menu_status]="📊 Bot status" I18N[bot_menu_logs]="📋 Bot logs" I18N[bot_menu_restart]="🔄 Restart bot" I18N[bot_menu_stop]="⏹ Stop bot" I18N[bot_menu_start]="▶️ Start bot" I18N[bot_menu_settings]="⚙️ Settings (.env)" I18N[bot_menu_remove]="🗑 Remove bot" I18N[bot_menu_install]="🔧 Install bot" I18N[bot_intro1]="The bot lets you manage the proxy from Telegram:" I18N[bot_intro2]="status, restart, change mode, backup, QR code." I18N[bot_install_step]="Installing Telegram bot" I18N[bot_install_python]="Installing Python3..." I18N[bot_files_not_found]="Bot files not found in %s" I18N[bot_create_venv]="Creating virtual environment..." I18N[bot_install_deps]="Installing dependencies..." I18N[bot_enter_token]="Enter BOT_TOKEN from @BotFather:" I18N[bot_token_empty]="Token cannot be empty" I18N[bot_token]="Token:" I18N[bot_add_admin_how]="How to add the administrator?" I18N[bot_admin_auto]="Auto — bot will capture the ID on first /start" I18N[bot_admin_manual]="Manual — enter the ID now" I18N[bot_admin_ids_prompt]="Admin IDs (space or comma separated):" I18N[bot_env_created]=".env created" I18N[bot_env_exists]=".env already exists, settings preserved" I18N[bot_wait_admin_title]="Waiting for administrator" I18N[bot_wait_admin_msg1]="Open the bot in Telegram and send" I18N[bot_wait_admin_msg2]="The bot will automatically make you an admin" I18N[bot_wait_admin_skip]="Press Ctrl+C to skip" I18N[bot_wait_spinner]="Waiting... send /start to the bot (%d sec)" I18N[bot_admin_assigned]="Administrator assigned!" I18N[bot_wait_skipped]="Skipped. Add admin later via: menu → Telegram bot → Settings" I18N[bot_wait_timeout]="Timeout (5 min). Add admin via: menu → Telegram bot → Settings" I18N[bot_installed]="Bot installed and running!" I18N[bot_status_title]="📊 Telegram bot status" I18N[bot_token_configured]="configured" I18N[bot_access_open]="all users" I18N[bot_logs_title]="📋 Bot logs (last 30 lines):" I18N[bot_settings_title]="⚙️ Bot settings" I18N[bot_current_env]="Current .env:" I18N[bot_change_token]="Change BOT_TOKEN" I18N[bot_change_allowed]="Change ALLOWED_IDS" I18N[bot_new_token]="New BOT_TOKEN:" I18N[bot_token_empty_err]="Empty token" I18N[bot_token_updated]="Token updated, bot restarted" I18N[bot_allowed_prompt]="ALLOWED_IDS (space or comma separated, empty = auto):" I18N[bot_access_updated]="Access updated, bot restarted" I18N[bot_remove_warn]="This will remove the Telegram bot and all its settings." I18N[bot_remove_confirm]="Remove bot?" I18N[bot_removed]="Bot fully removed" I18N[bot_restarted]="Bot restarted" I18N[bot_stopped]="Bot stopped" I18N[bot_started]="Bot started" I18N[bot_status_colon]="Status:" I18N[bot_access_colon]="Access:" I18N[bot_access_ids_fmt]="ID: %s" # ── Promo / Donate ────────────────────────────────────────────────────── I18N[promo_host1_title]="💰 HOSTING #1 — UP TO 60% OFF" I18N[promo_host2_title]="💰 HOSTING #2 — UP TO 60% OFF" I18N[promo_tips_title]="☕ Donate / Tips" I18N[promo_link_label]="Link:" I18N[promo_off60]="60%% discount on the first month" I18N[promo_ant20]="20%% + 3%% when paid for 3 months" I18N[promo_ant6]="15%% + 5%% when paid for 6 months" I18N[promo_qr_host1]="── QR: Hosting #1 ──" I18N[promo_qr_host2]="── QR: Hosting #2 ──" I18N[promo_qr_tips]="── QR: Donate / Tips ──" I18N[promo_menu_in]="Menu in %d sec..." # ── Stats ─────────────────────────────────────────────────────────────── I18N[stats_title]="📊 Traffic statistics" I18N[stats_module_missing]="Statistics module not loaded." I18N[stats_file_missing]="File lib/stats.sh not found." I18N[stats_toggle]="Toggle counter (now: %s)" I18N[stats_install_collector]="Install/update stats collector" I18N[stats_auto_refresh]="Refresh every 3 sec" I18N[stats_on]="on" I18N[stats_off]="off" # ── Templates catalog ─────────────────────────────────────────────────── I18N[templates_categories]="📂 Site template categories:" I18N[templates_custom_git]="📎 Custom template from git URL" I18N[templates_random]="🎲 Random template" I18N[templates_count_fmt]="(%d templates)" I18N[templates_list]="📋 %s — available templates:" I18N[templates_preview_title]="🔍 Template preview:" I18N[templates_name]="Name:" I18N[templates_source]="Source:" I18N[templates_description]="Description:" I18N[templates_preview]="👁 Preview:" I18N[templates_preview_hint]="Open the link in a browser to preview the template" I18N[templates_repo]="📦 Repo:" I18N[templates_thanks]="💜 Thanks to the authors of %s for the open source code!" I18N[templates_install_this]="Install this template?" I18N[templates_cat_empty]="No templates in this category" I18N[templates_downloading]="Downloading template \"%s\"..." I18N[templates_downloaded]="Template \"%s\" downloaded" I18N[templates_downloaded_subfolder]="Template \"%s\" downloaded (from subfolder)" I18N[templates_no_index]="Template does not contain index.html" I18N[templates_path]="Path: %s" I18N[templates_catalog_not_found]="Templates catalog not found: %s" # ── Custom git template ───────────────────────────────────────────────── I18N[custom_git_title]="📎 CUSTOM TEMPLATE FROM GIT URL" I18N[custom_git_help_1]="You can use ANY public static HTML repository as a template." I18N[custom_git_help_2]="The repository must be public and contain a ready-made" I18N[custom_git_help_3]="index.html (build via npm is NOT performed)." I18N[custom_git_formats]="Supported URL formats:" I18N[custom_git_fmt_github]=" • https://github.com/user/repo" I18N[custom_git_fmt_gitlab]=" • https://gitlab.com/user/repo" I18N[custom_git_fmt_gitext]=" • https://example.com/user/repo.git" I18N[custom_git_fmt_branch]=" • https://github.com/user/repo@branch (branch after @)" I18N[custom_git_auto_detect]="Repository structure (auto-detection):" I18N[custom_git_auto_1]=" 1. index.html in repo root" I18N[custom_git_auto_2]=" 2. dist/index.html (StartBootstrap, Vite, webpack)" I18N[custom_git_auto_3]=" 3. public/ or build/ or _site/ or site/ or docs/" I18N[custom_git_auto_4]=" 4. Fallback: search index.html across whole repo" I18N[custom_git_requirements]="Requirements:" I18N[custom_git_req_1]=" • HTTPS only (ssh:// and git:// are blocked)" I18N[custom_git_req_2]=" • Public repositories only" I18N[custom_git_req_3]=" • Repo size up to 100 MB" I18N[custom_git_req_4]=" • Static HTML (no PHP/Python/Node server code)" I18N[custom_git_examples]="Tested example repos:" I18N[custom_git_ex_1]=" • https://github.com/html5up-collective/strata" I18N[custom_git_ex_2]=" • https://github.com/StartBootstrap/startbootstrap-landing-page" I18N[custom_git_enter_url]="Paste git URL (or Enter to cancel):" I18N[custom_git_empty]="No URL provided, cancelled" I18N[custom_git_bad_url]="Invalid URL. Only https:// addresses are accepted" I18N[custom_git_cloning]="Cloning repository..." I18N[custom_git_clone_failed]="Failed to clone repository: %s" I18N[custom_git_too_big]="Repository is too large: %s (limit 100MB)" I18N[custom_git_scanning]="Scanning for index.html..." I18N[custom_git_found_at]="✓ Found index.html in: %s" I18N[custom_git_no_index]="index.html not found in the repository" I18N[custom_git_installed]="Custom template installed from %s" I18N[custom_git_saved]="Template URL saved in config (menu → Site → Update from git)" # ── First-run language picker ─────────────────────────────────────────── I18N[lang_picker_title]="Select language / Выберите язык" I18N[lang_english]="English" I18N[lang_russian]="Русский" I18N[lang_saved]="Language saved: %s" I18N[lang_change_prompt]="Select a new language:" # ── Backup ────────────────────────────────────────────────────────────── I18N[backup_title]="💾 Backup" I18N[backup_creating]="Creating backup..." I18N[backup_created]="Backup created: %s" I18N[backup_failed]="Backup creation failed" I18N[backup_restore_title]="↩️ Restore from backup" I18N[backup_no_files]="No backup files" I18N[backup_select]="Select a backup to restore:" I18N[backup_restoring]="Restoring..." I18N[backup_restored]="Backup restored" I18N[backup_collecting]="Collecting configuration..." I18N[backup_site_included]="Website template included" I18N[backup_archive_err]="Archive creation failed" I18N[backup_archive_missing]="Archive not created" I18N[backup_encrypt_err]="Encryption failed" I18N[backup_encrypted]="Backup encrypted (AES-256-CBC)" I18N[backup_created_fmt]="Backup created: %s (%s)" I18N[backup_file_not_found_fmt]="File not found: %s" I18N[backup_enter_pass]="Enter backup password" I18N[backup_bad_pass]="Wrong password or corrupted file" I18N[backup_extract_err]="Archive extraction failed" I18N[backup_label]="Backup" I18N[backup_version_label]="Version" I18N[backup_mode_label]="Mode" I18N[backup_lang_label]="Language" I18N[backup_date_label]="Date" I18N[backup_confirm_restore]="Restore configuration? Current settings will be overwritten." I18N[backup_restored_telemt]="telemt config restored" I18N[backup_restored_gotelegram]="GoTelegram config restored" I18N[backup_restored_lang]="Interface language restored" I18N[backup_restored_nginx]="nginx config restored" I18N[backup_restored_ssl]="SSL certificates restored" I18N[backup_restored_site]="Website template restored" I18N[backup_restore_done]="Restore completed!" I18N[backup_none]="No backups" I18N[backup_list_title]="Available backups" I18N[backup_cleanup_fmt]="Removed %s old backups (kept %s)" I18N[backup_create_title]="Create backup" I18N[backup_encrypt_prompt]="Encrypt backup with a password?" I18N[backup_repeat_pass]="Repeat password" I18N[backup_pass_mismatch]="Passwords do not match" I18N[backup_pass_short]="Password too short (minimum 6 characters)" I18N[backup_pick_prompt]="Backup number (or path to file)" I18N[backup_not_found]="Backup not found" # ── Preflight (v2.4.8) ────────────────────────────────────────────────── I18N[preflight_title]="Preflight: port conflicts detected" I18N[preflight_known]="Known proxy/VPN/web software is using required ports:" I18N[preflight_unknown]="Required ports are held by unknown processes:" I18N[preflight_needed]="GoTelegram requires ports:" I18N[preflight_hint_header]="Recommended actions:" I18N[preflight_hint1]="Stop and remove the conflicting services (systemctl stop ...)" I18N[preflight_hint2]="Or use a clean VPS without other proxies" I18N[preflight_hint3]="Installing on top will most likely fail" I18N[preflight_skip_hint]="Bypass: GOTELEGRAM_SKIP_PREFLIGHT=1 gotelegram" I18N[preflight_proceed]="Continue installation anyway (likely to fail)?" I18N[preflight_forced]="Installation continued despite conflicts — errors likely" I18N[preflight_aborted]="Installation aborted due to port conflicts" # ── Errors / misc ─────────────────────────────────────────────────────── I18N[err_need_root]="Run the script with sudo / as root" I18N[err_os_unknown]="Failed to detect OS. Linux is required." I18N[err_low_disk]="Low disk space: %sMB (need %sMB+)" I18N[err_bad_pkg_mgr]="Unknown package manager" I18N[err_unexpected]="Unexpected error" I18N[bye]="See you later! 👋" I18N[auto_refresh]="Refresh in 30 sec" # ── Deps ──────────────────────────────────────────────────────────────── I18N[deps_installing]="Installing dependencies: %s" # ── Migration ─────────────────────────────────────────────────────────── I18N[v1_detected]="⚠️ GoTelegram v1 (mtg) installation detected" I18N[v1_container]="Container: %s" I18N[v1_migration_step]="Migrating from v1 (mtg) to v2 (telemt)" I18N[v1_found_title]="Found v1 (mtg) installation:" I18N[v1_port]="Port: %s" I18N[v1_secret]="Secret: %s..." I18N[v1_incompatible]="mtg secret is NOT directly compatible with telemt." I18N[v1_new_link]="Clients will need a new link." I18N[v1_stop_migrate]="Stop v1 container and migrate to v2? [Y/n]:" I18N[v1_migration_cancelled]="Migration cancelled. v1 left intact." I18N[v1_stopping]="Stopping v1 container..." I18N[v1_config_saved]="v1 config saved to %s" I18N[v1_port_freed]="v1 stopped. Port %s freed." # ── v2.4.9: UBF v2.0 backup + manual secret recovery ───────────────────── I18N[install_source_title]="Installation source" I18N[install_source_choice]="Choose source [1-3]:" I18N[install_menu_new]="Fresh installation" I18N[install_menu_new_desc]="Generate a new key and set up from scratch" I18N[install_menu_restore]="Restore from backup" I18N[install_menu_restore_desc]="Full restore from a .tar.gz[.enc] file" I18N[install_menu_existing_key]="Use existing key" I18N[install_menu_existing_key_desc]="Paste a tg://proxy link or a key manually" I18N[install_hint_pro_mode]="The key contains a domain — this is usually Pro mode" I18N[install_reuse_secret]="Using the provided key" I18N[install_reuse_domain]="Using domain from the key" I18N[install_reuse_port]="Using port from the key" I18N[manual_secret_title]="Enter existing key" I18N[manual_secret_help1]="Supported formats:" I18N[manual_secret_prompt]="Paste the key" I18N[manual_secret_empty]="Key is empty" I18N[manual_secret_bad]="Could not parse the key format" I18N[manual_secret_parsed]="Key parsed" I18N[backup_id_label]="Backup ID" I18N[backup_file_label]="File" I18N[backup_size_label]="Size" I18N[backup_key_label]="Key in backup (fingerprint)" I18N[backup_format_label]="Format" I18N[backup_mode_label]="Mode" I18N[backup_lang_label]="Language" I18N[backup_date_label]="Date" I18N[backup_label]="Backup" I18N[backup_ssl_included]="SSL certificates included (+ chain + renewal)" I18N[backup_site_included]="Website template included" I18N[backup_bot_included]="Telegram bot config included" I18N[backup_restored_bot]="Telegram bot config restored" I18N[backup_automigrate]="Converting legacy backup to UBF v2.0..." I18N[backup_migrated]="Fresh UBF v2.0 backup saved" I18N[backup_collecting]="Collecting configuration..." I18N[backup_archive_err]="Archive creation failed" I18N[backup_archive_missing]="Archive was not created" I18N[backup_encrypt_err]="Encryption failed" I18N[backup_encrypted]="Backup encrypted (AES-256-CBC)" I18N[backup_created]="Backup created" I18N[backup_enter_pass]="Enter password" I18N[backup_repeat_pass]="Repeat password" I18N[backup_pass_mismatch]="Passwords do not match" I18N[backup_pass_short]="Password too short (min 6 chars)" I18N[backup_bad_pass]="Wrong password or corrupted file" I18N[backup_extract_err]="Archive extraction failed" I18N[backup_confirm_restore]="Restore configuration? Current settings will be overwritten." I18N[backup_restored_telemt]="telemt config restored" I18N[backup_restored_gotelegram]="GoTelegram config restored" I18N[backup_restored_lang]="Interface language restored" I18N[backup_restored_nginx]="nginx config restored" I18N[backup_restored_ssl]="SSL certificates restored" I18N[backup_restored_site]="Website template restored" I18N[backup_restore_done]="Restore completed!" I18N[backup_create_title]="Create backup" I18N[backup_encrypt_prompt]="Encrypt the backup with a password?" I18N[backup_none]="No backups found" I18N[backup_list_title]="Available backups" I18N[backup_pick_prompt]="Backup number (or file path)" I18N[backup_not_found]="Backup not found" I18N[backup_file_not_found_fmt]="File not found: %s" I18N[backup_cleanup_fmt]="Deleted %s old backups (kept %s)"