<?php
namespace Bot;

/**
 * Localization helper to provide multilingual strings based on a key.
 *
 * The translations defined here support English (en), Bengali (bn),
 * Hindi (hi) and Urdu (ur). Additional languages can be added by
 * extending the translation array. When a translation is missing
 * for a requested language, the English fallback is used.
 */
class Localization
{
    /**
     * Translation dictionary. Keys correspond to translation codes used
     * throughout the bot. Each language is represented by a top-level
     * array containing key/value pairs.
     *
     * @var array<string, array<string,string>>
     */
    private static array $translations = [
        'en' => [
            'welcome' => "🔰 Welcome to New Era of Trading!\n\nPlease choose an option:",
            'choose_buy_option' => "Select what you would like to buy:",
            'choose_sell_option' => "Select what you would like to sell:",
            'choose_rate_option' => "Rates & Fees options:",
            'wallet_menu' => "Wallet Menu:",
            'profile_menu' => "Profile & Limits Menu:",
            'help_menu' => "Help & Support Menu:",
            'unknown_command' => "Sorry, I didn't understand that. Please choose an option from the menu.",
            'choose_language' => "Choose your preferred language:",
            'language_updated' => "Language updated successfully!",
            'wallet_generated' => "%s wallet created! Your address: %s",
            'your_deposit_address' => "%s deposit address: %s",
            'no_wallet_generate' => "No wallet found. Please generate a wallet first.",
            'no_orders' => "You have no orders yet.",
            'main_menu_prompt' => "Welcome to the new Era of P2P trading! Explore, Earn, Rewards, Trade, Stake, Loans and many more..",
            'prompt_currency' => "Which currency would you like to trade? Supported: %s",
            'prompt_currency_retry' => "Please type a supported currency symbol (for example: USDT).",
            'unsupported_currency' => "%s is not supported yet.",
            'prompt_amount' => "Enter the amount of %s you want to %s (e.g., 100):",
            'amount_invalid' => "Please send a positive number such as 100.",
            'limit_error' => "Limit check failed: %s",
            'kyc_required_message' => "Complete KYC verification before trading this amount. Use the KYC Verification button to continue.",
            'order_created' => "Order #%s (%s %s)\nAmount: %s @ %s\nService fee: %s | Network fee: %s\nTotal: %s",
            'manual_settlement_notice' => "Our operations team will reach out to settle fiat payments. Keep payment proof handy.",
            'flow_cancelled' => "Flow cancelled. Start again from the main menu whenever you're ready.",
            'network_prompt' => "Select your default network:",
            'profile_summary' => "Profile: %s\nKYC: %s\nDefault network: %s\nReferral code: %s\nReferral bonus: %s\nLimits (daily/weekly/monthly): %s / %s / %s",
            'profile_referral_link' => "Referral link: %s",
            'referral_link_text' => "Referral code: %s\nShare this link with friends:\n%s",
            'referral_link_unavailable' => "Referral links are unavailable right now. Please contact support.",
            'help_text' => "Need assistance? Use the menu options or contact support at @YourSupportHandle.",
            'p2p_menu_prompt' => "Choose how you want to trade:",
            'kyc_already_verified' => "You're already verified. Thank you!",
            'kyc_intro' => "Complete KYC verification and unlock your account's maximum power. Get your own virtual card, more crypto tokens, higher APR, crypto loans, any-network withdrawals, verification badge, priority support, and more. Verify your identity in just three steps in under five minutes.",
            'kyc_verify_button' => "Verify Your Identity",
            'kyc_start_webview' => "Tap the button below to launch the secure KYC mini app right inside Telegram. We'll refresh your status automatically when you finish.",
            'kyc_start' => "Please complete verification here: %s",
            'rate_missing' => "Pricing for %s is unavailable right now. Please try again later.",
            'network_changed' => "Default network updated to %s.",
            'choose_payment_method' => "Select a payment method:",
            'no_payment_methods' => "No payment methods are available right now. Please contact support.",
            'payment_instructions_message' => "Order #%s\nPay with %s\nSend %s following these instructions:\n%s",
            'payment_contact_line' => "Contact: %s",
            'send_payment_proof_prompt' => "After sending the payment, upload your screenshot here before %s (≈%s remaining).",
            'payment_proof_text_warning' => "Please send your payment screenshot before %s (≈%s remaining) so we can keep the order active.",
            'payment_proof_received' => "Thanks! Your payment proof is under review.",
            'payment_proof_invalid' => "Please send a payment screenshot or document for your order.",
            'payment_rejected_reason' => "Payment proof rejected: %s.",
            'payment_approved_message' => "Payment approved for order #%s. Funds will be credited shortly.",
            'order_cancelled_due_timeout' => "Order #%s was cancelled because payment was not received before %s.",
            'admin_question_from_ops' => "Operations team asks: %s",
            'admin_response_received' => "Thanks for your response. Our team will follow up shortly.",
            'virtual_card_soon' => "Virtual cards are coming soon. Stay tuned!",
            'free_menu_intro' => "Hand-picked freebies for our community:",
            'free_menu_empty' => "No freebies are available right now. Please check back later.",
            'free_menu_footer' => "Tap the buttons below to claim an offer.",
            'free_item_format' => "🎁 %s\n%s",
            'free_button_label_default' => "Claim",
            'sell_choose_payout_method' => "Select how you want to receive funds:",
            'sell_no_payment_methods' => "No payout methods are available right now. Please contact support.",
            'sell_enter_payout_details' => "Send your %s payout details (e.g., account number).",
            'sell_payout_details_saved' => "Got it. Now choose the crypto network you'll use to send funds.",
            'sell_network_prompt' => "Select the network for sending %s:",
            'sell_network_missing' => "No admin wallet is configured for %s yet. Please contact support.",
            'sell_crypto_instructions' => "Order #%s\nSend %s %s on %s to:\n%s",
            'sell_txid_prompt' => "After sending the crypto, reply with the blockchain TXID before %s (≈%s remaining).",
            'sell_txid_received' => "Thanks! We recorded your TXID and will notify you after confirmations.",
            'withdraw_enter_amount' => "Enter the %s amount to withdraw (available: %s):",
            'withdraw_amount_invalid' => "The amount is invalid or exceeds your available balance.",
            'withdraw_enter_address' => "Enter the destination address for %s on %s:",
            'withdraw_request_submitted' => "Withdrawal request #%s submitted. We'll notify you after it is broadcast.",
            'withdraw_request_failed' => "Unable to submit withdrawal: %s",
            'sell_balance_submitted' => "Sell order #%s placed using wallet balance. You'll be notified once payout is sent.",
            'sell_balance_failed' => "Unable to create sell order: %s",
            'account_banned_message' => "Your account is currently suspended. Please contact support.",
            'wallet_summary_title' => "💼 Wallet Overview:",
            'wallet_summary_line' => "%s — Available: %s | Locked: %s",
            'wallet_rates_title' => "Current OTC rates:",
            'wallet_rates_line' => "%s — Buy: %s | Sell: %s",
            'wallet_rates_empty' => "No rates are configured right now. Please check back soon.",
            'wallet_summary_empty' => "💼 Wallet Overview:\nNo funds yet. Use Deposit to add balance.",
            'wallet_history_title' => "🧾 Recent Wallet Activity:",
            'wallet_history_line' => "%s %s %s (%s) • %s",
            'wallet_history_empty' => "No wallet activity yet.",
            'withdraw_under_review' => "Withdrawal request #%s is awaiting admin review.",
            'withdraw_hold_notice' => "Withdrawal #%s has been placed on hold: %s",
            'withdraw_hold_released' => "Hold removed for withdrawal #%s. Review will continue.",
            'withdraw_rejected_notice' => "Withdrawal #%s was rejected: %s. Locked funds have been returned to your wallet.",
            'withdraw_approved_notice' => "Withdrawal #%s approved. We'll process it shortly.",
            'convert_points_prompt' => "Enter how many points you want to convert to USDT (available shown in /points):",
            'convert_points_success' => "Converted %.4f points into %.2f USDT. Check your wallet balance.",
            'convert_points_invalid' => "Please enter a positive numeric amount of points to convert.",
            'withdraw_kyc_required' => "Please complete KYC verification before requesting a withdrawal."
        ],
        'bn' => [
            'welcome' => "🔰 ক্রিপ্টো এর নতুন এক অধ্যায় আপনার স্বাগতম!\n\nএকটি অপশন নির্বাচন করুন:",
            'choose_buy_option' => "আপনি কী কিনতে চান নির্বাচন করুন:",
            'choose_sell_option' => "আপনি কী বিক্রি করতে চান নির্বাচন করুন:",
            'choose_rate_option' => "রেটস ও ফিস অপশনসমূহ:",
            'wallet_menu' => "ওয়ালেট মেনু:",
            'profile_menu' => "প্রোফাইল ও সীমা মেনু:",
            'help_menu' => "হেল্প ও সাপোর্ট মেনু:",
            'unknown_command' => "দুঃখিত, আমি এটি বুঝিনি। মেনু থেকে একটি অপশন নির্বাচন করুন।",
            'choose_language' => "ভাষা নির্বাচন করুন:",
            'language_updated' => "ভাষা সফলভাবে আপডেট হয়েছে!",
            'wallet_generated' => "%s ওয়ালেট তৈরি হয়েছে! আপনার ঠিকানা: %s",
            'your_deposit_address' => "%s জমা ঠিকানা: %s",
            'no_wallet_generate' => "কোন ওয়ালেট নেই। প্রথমে একটি ওয়ালেট তৈরি করুন।",
            'no_orders' => "আপনার কোনো অর্ডার নেই।",
            'main_menu_prompt' => "নীচের মেনু থেকে একটি অ্যাকশন নির্বাচন করুন। চলমান ফ্লো বন্ধ করতে 'cancel' লিখুন।",
            'prompt_currency' => "কোন মুদ্রা ট্রেড করতে চান? সমর্থিত: %s",
            'prompt_currency_retry' => "দয়া করে সমর্থিত মুদ্রার সংকেত লিখুন (যেমন: USDT)।",
            'unsupported_currency' => "%s এখনো সমর্থিত নয়।",
            'prompt_amount' => "%s কত %s করতে চান তা লিখুন (উদাহরণ: 100):",
            'amount_invalid' => "একটি ধনাত্মক সংখ্যা পাঠান, যেমন 100।",
            'limit_error' => "লিমিট যাচাই ব্যর্থ: %s",
            'kyc_required_message' => "এই পরিমাণ ট্রেড করতে KYC সম্পন্ন করুন। KYC বাটন ব্যবহার করুন।",
            'order_created' => "অর্ডার #%s (%s %s)\nপরিমাণ: %s @ %s\nসার্ভিস ফি: %s | নেটওয়ার্ক ফি: %s\nমোট: %s",
            'manual_settlement_notice' => "ফিয়াট সেটেলমেন্ট অপস দল ম্যানুয়ালি সম্পন্ন করবে। পেমেন্ট প্রমাণ রাখুন।",
            'flow_cancelled' => "ফ্লো বাতিল হয়েছে। প্রস্তুত হলে আবার শুরু করুন।",
            'network_prompt' => "ডিফল্ট নেটওয়ার্ক নির্বাচন করুন:",
            'profile_summary' => "প্রোফাইল: %s\nKYC: %s\nডিফল্ট নেটওয়ার্ক: %s\nরেফারেল কোড: %s\nরেফারেল বোনাস: %s\nলিমিট (দৈনিক/সাপ্তাহিক/মাসিক): %s / %s / %s",
            'profile_referral_link' => "রেফারেল লিংক: %s",
            'referral_link_text' => "রেফারেল কোড: %s\nবন্ধুদের সাথে এই লিংক শেয়ার করুন:\n%s",
            'referral_link_unavailable' => "রেফারেল লিংক এখন উপলভ্য নয়। সাহায্যের জন্য সাপোর্টে যোগাযোগ করুন।",
            'help_text' => "সাহায্য দরকার? মেনু ব্যবহার করুন বা @YourSupportHandle এ যোগাযোগ করুন।",
            'p2p_menu_prompt' => "Choose how you want to trade:",
            'kyc_already_verified' => "আপনি ইতিমধ্যেই যাচাইকৃত। ধন্যবাদ!",
            'kyc_intro' => "Complete KYC verification and unlock your account's maximum power. Get your own virtual card, more crypto tokens, higher APR, crypto loans, any-network withdrawals, verification badge, priority support, and more. Verify your identity in just three steps in under five minutes.",
            'kyc_verify_button' => "Verify Your Identity",
            'kyc_start_webview' => "Tap the button below to launch the secure KYC mini app right inside Telegram. We'll refresh your status automatically when you finish.",
            'kyc_start' => "এই লিঙ্কে যাচাইকরণ সম্পূর্ণ করুন: %s",
            'rate_missing' => "%s এর রেট এখন পাওয়া যাচ্ছে না। পরে চেষ্টা করুন।",
            'network_changed' => "ডিফল্ট নেটওয়ার্ক %s এ আপডেট হয়েছে।",
            'choose_payment_method' => "পেমেন্ট মেথড নির্বাচন করুন:",
            'no_payment_methods' => "এই মুহূর্তে কোনো পেমেন্ট মেথড নেই। সাপোর্টের সাথে যোগাযোগ করুন।",
            'payment_instructions_message' => "অর্ডার #%s\nপেমেন্ট মেথড: %s\nমোট পাঠান %s\nনির্দেশনা:\n%s",
            'payment_contact_line' => "যোগাযোগ: %s",
            'send_payment_proof_prompt' => "%s এর আগে (≈%s বাকি) পেমেন্টের স্ক্রিনশট এখানে আপলোড করুন।",
            'payment_proof_text_warning' => "দয়া করে %s এর আগে (≈%s বাকি) পেমেন্টের প্রমাণ পাঠান যাতে অর্ডার সক্রিয় থাকে।",
            'payment_proof_received' => "ধন্যবাদ! আপনার পেমেন্ট প্রুফ রিভিউতে আছে।",
            'payment_proof_invalid' => "দয়া করে অর্ডারের জন্য পেমেন্টের স্ক্রিনশট পাঠান।",
            'payment_rejected_reason' => "পেমেন্ট প্রুফ বাতিল: %s।",
            'payment_approved_message' => "অর্ডার #%s সফলভাবে যাচাই হয়েছে। অল্প সময়ে ফান্ড ক্রেডিট হবে।",
            'order_cancelled_due_timeout' => "অর্ডার #%s বাতিল হয়েছে কারণ %s এর আগে পেমেন্ট পাওয়া যায়নি।",
            'admin_question_from_ops' => "অপারেশন টিম জানতে চায়: %s",
            'admin_response_received' => "আপনার উত্তর পেয়েছি। আমরা দ্রুত যোগাযোগ করব।",
            'virtual_card_soon' => "ভার্চুয়াল কার্ড ফিচার খুব শিগগির আসছে!",
            'free_menu_intro' => "Hand-picked freebies for our community:",
            'free_menu_empty' => "No freebies are available right now. Please check back later.",
            'free_menu_footer' => "Tap the buttons below to claim an offer.",
            'free_item_format' => "🎁 %s\n%s",
            'free_button_label_default' => "Claim",
            'sell_choose_payout_method' => "কোন পদ্ধতিতে অর্থ নিতে চান তা নির্বাচন করুন:",
            'sell_no_payment_methods' => "এই মুহূর্তে কোনো পেআউট মেথড নেই। সাপোর্টে যোগাযোগ করুন।",
            'sell_enter_payout_details' => "%s পেআউটের জন্য আপনার তথ্য পাঠান (যেমন অ্যাকাউন্ট নাম্বার)।",
            'sell_payout_details_saved' => "ধন্যবাদ। এখন ক্রিপ্টো পাঠানোর নেটওয়ার্ক নির্বাচন করুন।",
            'sell_network_prompt' => "%s পাঠানোর জন্য নেটওয়ার্ক বাছাই করুন:",
            'sell_network_missing' => "%s এর জন্য কোনো অ্যাডমিন ওয়ালেট কনফিগার করা নেই। সাপোর্টে যোগাযোগ করুন।",
            'sell_crypto_instructions' => "অর্ডার #%s\n%s %s %s নেটওয়ার্কে পাঠান:\n%s",
            'sell_txid_prompt' => "ক্রিপ্টো পাঠানোর পর %s এর আগে (≈%s বাকি) TXID পাঠান।",
            'sell_txid_received' => "ধন্যবাদ! আমরা আপনার TXID পেয়েছি এবং কনফার্মেশনের পর জানাব।",
            'withdraw_enter_amount' => "কত %s তুলতে চান (উপলব্ধ: %s) লিখুন:",
            'withdraw_amount_invalid' => "পরিমাণ সঠিক নয় বা উপলব্ধ ব্যালেন্সের চেয়ে বেশি।",
            'withdraw_enter_address' => "%s (%s) এর গন্তব্য ঠিকানা লিখুন:",
            'withdraw_request_submitted' => "উইথড্র অনুরোধ #%s গ্রহণ করা হলো। সম্প্রচারের পর জানানো হবে।",
            'withdraw_request_failed' => "উইথড্র সম্পন্ন করা যায়নি: %s",
            'sell_balance_submitted' => "সেল অর্ডার #%s ব্যালেন্স থেকে নেওয়া হয়েছে। পেআউট পাঠালে জানানো হবে।",
            'sell_balance_failed' => "সেল অর্ডার সম্পন্ন করা যায়নি: %s",
            'account_banned_message' => "আপনার অ্যাকাউন্ট স্থগিত রয়েছে। সহায়তার জন্য সাপোর্টে যোগাযোগ করুন।",
            'wallet_summary_title' => "💼 ওয়ালেট সংক্ষিপ্তসার:",
            'wallet_summary_line' => "%s — উপলব্ধ: %s | লকড: %s",
            'wallet_rates_title' => "বর্তমান OTC রেট:",
            'wallet_rates_line' => "%s — বাই: %s | সেল: %s",
            'wallet_rates_empty' => "কোনো রেট কনফিগার করা নেই। পরে আবার চেষ্টা করুন।",
            'wallet_summary_empty' => "💼 ওয়ালেট সংক্ষিপ্তসার:\nএখনও কোনো ব্যালেন্স নেই। জমা দিয়ে শুরু করুন।",
            'wallet_history_title' => "🧾 সাম্প্রতিক ওয়ালেট কার্যকলাপ:",
            'wallet_history_line' => "%s %s %s (%s) • %s",
            'wallet_history_empty' => "এখনও কোনো ওয়ালেট হিস্টরি নেই।",
            'withdraw_under_review' => "উইথড্র অনুরোধ #%s পর্যালোচনায় রয়েছে।",
            'withdraw_hold_notice' => "উইথড্র #%s হোল্ডে রাখা হয়েছে: %s",
            'withdraw_hold_released' => "উইথড্র #%s এর হোল্ড মুক্ত হয়েছে। পর্যালোচনা চলবে।",
            'withdraw_rejected_notice' => "উইথড্র #%s বাতিল: %s। লকড ফান্ড ফেরত দেওয়া হয়েছে।",
            'withdraw_approved_notice' => "উইথড্র #%s অনুমোদিত। খুব শিগগিরই প্রক্রিয়া করা হবে।",
            'convert_points_prompt' => "কত পয়েন্ট USDT তে রূপান্তর করতে চান লিখুন (উপলব্ধ দেখতে /points ব্যবহার করুন):",
            'convert_points_success' => "%.4f পয়েন্ট %.2f USDT তে রূপান্তর হয়েছে। আপনার ওয়ালেট ব্যালেন্স দেখুন।",
            'convert_points_invalid' => "দয়া করে রূপান্তরের জন্য একটি ধনাত্মক সংখ্যক পয়েন্ট লিখুন।",
            'withdraw_kyc_required' => "উইথড্র করার আগে KYC সম্পন্ন করুন।"
        ],
        'hi' => [
            'welcome' => "🔰 पी2पी एक्सचेंज बॉट में आपका स्वागत है\n\nकृपया एक विकल्प चुनें:",
            'choose_buy_option' => "आप क्या खरीदना चाहेंगे चुनें:",
            'choose_sell_option' => "आप क्या बेचना चाहेंगे चुनें:",
            'choose_rate_option' => "रेट्स और फीस विकल्प:",
            'wallet_menu' => "वॉलेट मेनू:",
            'profile_menu' => "प्रोफ़ाइल और लिमिट मेनू:",
            'help_menu' => "सहायता और समर्थन मेनू:",
            'unknown_command' => "माफ करें, मैं समझ नहीं पाया। कृपया मेनू से विकल्प चुनें।",
            'choose_language' => "अपनी पसंदीदा भाषा चुनें:",
            'language_updated' => "भाषा सफलतापूर्वक अपडेट हो गई है!",
            'wallet_generated' => "%s वॉलेट बनाया गया! आपका पता: %s",
            'your_deposit_address' => "%s जमा पता: %s",
            'no_wallet_generate' => "कोई वॉलेट नहीं मिला। कृपया पहले वॉलेट बनाएं।",
            'no_orders' => "आपके पास अभी कोई ऑर्डर नहीं है।",
            'main_menu_prompt' => "नीचे से कोई कार्रवाई चुनें। किसी फ्लो को रोकने के लिए 'cancel' लिखें।",
            'prompt_currency' => "आप किस मुद्रा में ट्रेड करना चाहते हैं? समर्थित: %s",
            'prompt_currency_retry' => "कृपया समर्थित मुद्रा का सिंबल लिखें (जैसे USDT)।",
            'unsupported_currency' => "%s अभी समर्थित नहीं है।",
            'prompt_amount' => "%s की कितनी मात्रा आप %s करना चाहते हैं (उदा. 100):",
            'amount_invalid' => "कृपया 100 जैसी धनात्मक संख्या भेजें।",
            'limit_error' => "सीमा जांच विफल: %s",
            'kyc_required_message' => "इस राशि के लिए KYC अनिवार्य है। KYC बटन से पूरा करें।",
            'order_created' => "ऑर्डर #%s (%s %s)\nमात्रा: %s @ %s\nसर्विस शुल्क: %s | नेटवर्क शुल्क: %s\nकुल: %s",
            'manual_settlement_notice' => "फिएट सेटलमेंट मैन्युअली होगा। भुगतान का प्रमाण सुरक्षित रखें।",
            'flow_cancelled' => "फ्लो रद्द कर दिया गया है। मुख्य मेनू से फिर शुरू करें।",
            'network_prompt' => "अपना डिफ़ॉल्ट नेटवर्क चुनें:",
            'profile_summary' => "प्रोफ़ाइल: %s\nKYC: %s\nडिफ़ॉल्ट नेटवर्क: %s\nरेफ़रल कोड: %s\nरेफ़रल बोनस: %s\nसीमाएँ (दैनिक/साप्ताहिक/मासिक): %s / %s / %s",
            'profile_referral_link' => "रेफ़रल लिंक: %s",
            'referral_link_text' => "रेफ़रल कोड: %s\nदोस्तों के साथ यह लिंक साझा करें:\n%s",
            'referral_link_unavailable' => "अभी रेफ़रल लिंक उपलब्ध नहीं है। सहायता के लिए सपोर्ट से संपर्क करें।",
            'help_text' => "मदद चाहिए? मेनू उपयोग करें या @YourSupportHandle से संपर्क करें।",
            'p2p_menu_prompt' => "Choose how you want to trade:",
            'kyc_already_verified' => "आप पहले से सत्यापित हैं। धन्यवाद!",
            'kyc_intro' => "Complete KYC verification and unlock your account's maximum power. Get your own virtual card, more crypto tokens, higher APR, crypto loans, any-network withdrawals, verification badge, priority support, and more. Verify your identity in just three steps in under five minutes.",
            'kyc_verify_button' => "Verify Your Identity",
            'kyc_start_webview' => "Tap the button below to launch the secure KYC mini app right inside Telegram. We'll refresh your status automatically when you finish.",
            'kyc_start' => "इस लिंक से सत्यापन पूरा करें: %s",
            'rate_missing' => "%s के लिए मूल्य उपलब्ध नहीं है। बाद में कोशिश करें।",
            'network_changed' => "डिफ़ॉल्ट नेटवर्क %s पर अपडेट किया गया।",
            'choose_payment_method' => "कोई भुगतान विधि चुनें:",
            'no_payment_methods' => "अभी कोई भुगतान विधि उपलब्ध नहीं है। सपोर्ट से संपर्क करें।",
            'payment_instructions_message' => "ऑर्डर #%s\nभुगतान विधि: %s\nकुल भेजें %s\nनिर्देश:\n%s",
            'payment_contact_line' => "संपर्क: %s",
            'send_payment_proof_prompt' => "%s से पहले (≈%s शेष) भुगतान का स्क्रीनशॉट यहाँ अपलोड करें।",
            'payment_proof_text_warning' => "%s से पहले (≈%s शेष) अपना भुगतान प्रमाण भेजें ताकि ऑर्डर सक्रिय रहे।",
            'payment_proof_received' => "धन्यवाद! आपका भुगतान प्रमाण समीक्षा में है।",
            'payment_proof_invalid' => "कृपया अपने ऑर्डर के लिए भुगतान का स्क्रीनशॉट भेजें।",
            'payment_rejected_reason' => "भुगतान प्रमाण अस्वीकार: %s.",
            'payment_approved_message' => "ऑर्डर #%s स्वीकृत है। जल्द ही बैलेंस अपडेट होगा।",
            'order_cancelled_due_timeout' => "ऑर्डर #%s रद्द कर दिया गया क्योंकि %s तक भुगतान नहीं मिला।",
            'admin_question_from_ops' => "ऑपरेशन टीम पूछती है: %s",
            'admin_response_received' => "आपका जवाब मिल गया। हम जल्द संपर्क करेंगे।",
            'virtual_card_soon' => "वर्चुअल कार्ड फीचर जल्द ही आ रहा है!",
            'free_menu_intro' => "Hand-picked freebies for our community:",
            'free_menu_empty' => "No freebies are available right now. Please check back later.",
            'free_menu_footer' => "Tap the buttons below to claim an offer.",
            'free_item_format' => "🎁 %s\n%s",
            'free_button_label_default' => "Claim",
            'sell_choose_payout_method' => "कृपया बताएं कि आप भुगतान कैसे प्राप्त करना चाहेंगे:",
            'sell_no_payment_methods' => "अभी कोई पayout विकल्प उपलब्ध नहीं है। सपोर्ट से संपर्क करें।",
            'sell_enter_payout_details' => "%s भुगतान प्राप्त करने के लिए अपनी जानकारी भेजें (उदा. अकाउंट नंबर)।",
            'sell_payout_details_saved' => "धन्यवाद। अब वह नेटवर्क चुनें जिस पर आप क्रिप्टो भेजेंगे।",
            'sell_network_prompt' => "%s भेजने के लिए नेटवर्क चुनें:",
            'sell_network_missing' => "%s के लिए कोई एडमिन वॉलेट कॉन्फ़िगर नहीं है। सपोर्ट से संपर्क करें।",
            'sell_crypto_instructions' => "ऑर्डर #%s\n%s %s को %s नेटवर्क पर भेजें:\n%s",
            'sell_txid_prompt' => "क्रिप्टो भेजने के बाद %s तक (≈%s शेष) TXID साझा करें।",
            'sell_txid_received' => "धन्यवाद! आपका TXID रिकॉर्ड हो गया है, पुष्टि के बाद सूचना दी जाएगी।",
            'withdraw_enter_amount' => "%s निकासी राशि दर्ज करें (उपलब्ध: %s):",
            'withdraw_amount_invalid' => "राशि अमान्य है या उपलब्ध बैलेंस से अधिक है।",
            'withdraw_enter_address' => "%s (%s) के लिए गंतव्य पता भेजें:",
            'withdraw_request_submitted' => "निकासी अनुरोध #%s जमा हुआ। प्रसारण के बाद सूचना दी जाएगी।",
            'withdraw_request_failed' => "निकासी सबमिट नहीं हो सकी: %s",
            'sell_balance_submitted' => "सेल ऑर्डर #%s वॉलेट बैलेंस से दर्ज हुआ। पेआउट के बाद सूचना दी जाएगी।",
            'sell_balance_failed' => "सेल ऑर्डर असफल: %s",
            'account_banned_message' => "आपका खाता निलंबित है। सहायता के लिए सपोर्ट से संपर्क करें।",
            'wallet_summary_title' => "💼 वॉलेट सारांश:",
            'wallet_summary_line' => "%s — उपलब्ध: %s | लॉक: %s",
            'wallet_rates_title' => "वर्तमान OTC रेट्स:",
            'wallet_rates_line' => "%s — खरीद: %s | बिक्री: %s",
            'wallet_rates_empty' => "इस समय कोई रेट कॉन्फ़िगर नहीं है। बाद में फिर से देखें।",
            'wallet_summary_empty' => "💼 वॉलेट सारांश:\nअभी कोई बैलेंस नहीं। डिपॉज़िट से शुरू करें।",
            'wallet_history_title' => "🧾 हाल का वॉलेट इतिहास:",
            'wallet_history_line' => "%s %s %s (%s) • %s",
            'wallet_history_empty' => "अभी कोई वॉलेट गतिविधि नहीं।",
            'withdraw_under_review' => "निकासी अनुरोध #%s समीक्षा में है।",
            'withdraw_hold_notice' => "निकासी #%s होल्ड पर है: %s",
            'withdraw_hold_released' => "निकासी #%s का होल्ड हटाया गया। समीक्षा जारी रहेगी।",
            'withdraw_rejected_notice' => "निकासी #%s अस्वीकृत: %s (राशि वापस कर दी गई)।",
            'withdraw_approved_notice' => "निकासी #%s स्वीकृत। हम जल्द ही भेजेंगे।",
            'convert_points_prompt' => "कितने पॉइंट्स को USDT में बदलना चाहते हैं लिखें (उपलब्ध देखने /points):",
            'convert_points_success' => "%.4f पॉइंट्स को %.2f USDT में बदल दिया गया है। अपना वॉलेट देखें।",
            'convert_points_invalid' => "कृपया रूपांतरण हेतु सकारात्मक संख्या में पॉइंट्स दर्ज करें।",
            'withdraw_kyc_required' => "विथड्रॉ करने से पहले KYC पूरा करें।"
        ],
        'ur' => [
            'welcome' => "🔰 پی2پی ایکسچینج بوٹ میں خوش آمدید\n\nبرائے مہربانی ایک آپشن منتخب کریں:",
            'choose_buy_option' => "آپ کیا خریدنا چاہتے ہیں منتخب کریں:",
            'choose_sell_option' => "آپ کیا بیچنا چاہتے ہیں منتخب کریں:",
            'choose_rate_option' => "ریٹس اور فیس کے اختیارات:",
            'wallet_menu' => "والٹ مینو:",
            'profile_menu' => "پروفائل اور حدود مینو:",
            'help_menu' => "مدد اور سپورٹ مینو:",
            'unknown_command' => "معاف کریں، میں سمجھ نہ سکا۔ براہ کرم مینو سے کوئی آپشن منتخب کریں۔",
            'choose_language' => "اپنی پسندیدہ زبان منتخب کریں:",
            'language_updated' => "زبان کامیابی سے تبدیل ہوگئی!",
            'wallet_generated' => "%s والٹ بنایا گیا! آپ کا پتہ: %s",
            'your_deposit_address' => "%s ڈپازٹ پتہ: %s",
            'no_wallet_generate' => "کوئی والٹ نہیں ملا۔ براہ کرم پہلے ایک والٹ بنائیں۔",
            'no_orders' => "آپ کے پاس ابھی تک کوئی آرڈر نہیں ہے۔",
            'main_menu_prompt' => "نیچے سے کاروائی منتخب کریں۔ کسی فلو کو روکنے کیلئے 'cancel' لکھیں۔",
            'prompt_currency' => "کون سی کرنسی ٹریڈ کرنا چاہتے ہیں؟ معاون: %s",
            'prompt_currency_retry' => "براہ کرم معاون کرنسی کا سمبل درج کریں (مثلاً USDT)۔",
            'unsupported_currency' => "%s فی الحال معاون نہیں ہے۔",
            'prompt_amount' => "%s کی کتنی مقدار آپ %s کرنا چاہتے ہیں (مثال: 100):",
            'amount_invalid' => "براہ کرم 100 جیسی مثبت تعداد بھیجیں۔",
            'limit_error' => "حد کی جانچ ناکام: %s",
            'kyc_required_message' => "اس رقم کیلئے KYC درکار ہے۔ KYC بٹن استعمال کریں۔",
            'order_created' => "آرڈر #%s (%s %s)\nمقدار: %s @ %s\nسروس فیس: %s | نیٹ ورک فیس: %s\nکل: %s",
            'manual_settlement_notice' => "فیئٹ سیٹلمنٹ دستی طور پر ہوگی۔ ادائیگی کا ثبوت محفوظ رکھیں۔",
            'flow_cancelled' => "فلو منسوخ کر دیا گیا۔ جب چاہیں دوبارہ شروع کریں۔",
            'network_prompt' => "اپنا ڈیفالٹ نیٹ ورک منتخب کریں:",
            'profile_summary' => "پروفائل: %s\nKYC: %s\nڈیفالٹ نیٹ ورک: %s\nریفریل کوڈ: %s\nریفریل بونس: %s\nحدود (روزانہ/ہفتہ وار/ماہانہ): %s / %s / %s",
            'profile_referral_link' => "ریفرل لنک: %s",
            'referral_link_text' => "ریفرل کوڈ: %s\nیہ لنک دوستوں کے ساتھ شیئر کریں:\n%s",
            'referral_link_unavailable' => "ریفرل لنک فی الحال دستیاب نہیں۔ مدد کے لیے سپورٹ سے رابطہ کریں۔",
            'help_text' => "مدد درکار ہے؟ مینو استعمال کریں یا @YourSupportHandle سے رابطہ کریں۔",
            'p2p_menu_prompt' => "Choose how you want to trade:",
            'kyc_already_verified' => "آپ پہلے ہی تصدیق شدہ ہیں۔ شکریہ!",
            'kyc_intro' => "Complete KYC verification and unlock your account's maximum power. Get your own virtual card, more crypto tokens, higher APR, crypto loans, any-network withdrawals, verification badge, priority support, and more. Verify your identity in just three steps in under five minutes.",
            'kyc_verify_button' => "Verify Your Identity",
            'kyc_start_webview' => "Tap the button below to launch the secure KYC mini app right inside Telegram. We'll refresh your status automatically when you finish.",
            'kyc_start' => "اس لنک سے تصدیق مکمل کریں: %s",
            'rate_missing' => "%s کی قیمت دستیاب نہیں۔ بعد میں کوشش کریں۔",
            'network_changed' => "ڈیفالٹ نیٹ ورک %s میں اپ ڈیٹ ہوگیا۔",
            'choose_payment_method' => "ادائیگی کا طریقہ منتخب کریں:",
            'no_payment_methods' => "فی الحال کوئی ادائیگی کا طریقہ دستیاب نہیں۔ سپورٹ سے رابطہ کریں۔",
            'payment_instructions_message' => "آرڈر #%s\nادائیگی کا طریقہ: %s\nکل رقم: %s\nہدایات:\n%s",
            'payment_contact_line' => "رابطہ: %s",
            'send_payment_proof_prompt' => "%s سے پہلے (≈%s باقی) اس چیٹ میں ادائیگی کا اسکرین شاٹ بھیجیں۔",
            'payment_proof_text_warning' => "براہ کرم %s سے پہلے (≈%s باقی) ادائیگی کا ثبوت بھیجیں تاکہ آرڈر فعال رہے۔",
            'payment_proof_received' => "شکریہ! آپ کا ثبوت جائزے میں ہے۔",
            'payment_proof_invalid' => "براہ کرم آرڈر کیلئے ادائیگی کا اسکرین شاٹ بھیجیں۔",
            'payment_rejected_reason' => "ادائیگی کا ثبوت مسترد: %s۔",
            'payment_approved_message' => "آرڈر #%s کی ادائیگی منظور ہو گئی۔ جلد بیلنس اپ ڈیٹ ہوگا۔",
            'order_cancelled_due_timeout' => "آرڈر #%s منسوخ ہو گیا کیونکہ %s تک ادائیگی موصول نہ ہوئی۔",
            'admin_question_from_ops' => "آپریشن ٹیم پوچھتی ہے: %s",
            'admin_response_received' => "آپ کا جواب موصول ہوا۔ ہم جلد رابطہ کریں گے۔",
            'virtual_card_soon' => "ورچوئل کارڈ کی سہولت جلد آرہی ہے!",
            'free_menu_intro' => "Hand-picked freebies for our community:",
            'free_menu_empty' => "No freebies are available right now. Please check back later.",
            'free_menu_footer' => "Tap the buttons below to claim an offer.",
            'free_item_format' => "🎁 %s\n%s",
            'free_button_label_default' => "Claim",
            'sell_choose_payout_method' => "براہ کرم بتائیں کہ ادائیگی کس ذریعے سے لینی ہے:",
            'sell_no_payment_methods' => "اس وقت کوئی پے آؤٹ طریقہ دستیاب نہیں۔ سپورٹ سے رابطہ کریں۔",
            'sell_enter_payout_details' => "%s پے آؤٹ کیلئے اپنی تفصیل بھیجیں (مثلاً اکاؤنٹ نمبر)۔",
            'sell_payout_details_saved' => "شکریہ۔ اب وہ نیٹ ورک منتخب کریں جس پر آپ کرپٹو بھیجیں گے۔",
            'sell_network_prompt' => "%s بھیجنے کیلئے نیٹ ورک منتخب کریں:",
            'sell_network_missing' => "%s کیلئے ایڈمن والٹ متعین نہیں۔ براہ کرم سپورٹ سے رابطہ کریں۔",
            'sell_crypto_instructions' => "آرڈر #%s\n%s %s کو %s نیٹ ورک پر اس پتے پر بھیجیں:\n%s",
            'sell_txid_prompt' => "کرپٹو بھیجنے کے بعد %s سے پہلے (≈%s باقی) TXID بھیجیں۔",
            'sell_txid_received' => "شکریہ! آپ کا TXID ریکارڈ ہو گیا، تصدیق کے بعد اطلاع دی جائے گی۔",
            'withdraw_enter_amount' => "%s نکالنے کی رقم لکھیں (دستیاب: %s):",
            'withdraw_amount_invalid' => "رقم غلط ہے یا دستیاب بیلنس سے زیادہ ہے۔",
            'withdraw_enter_address' => "%s (%s) کیلئے وصول کنندہ کا پتہ بھیجیں:",
            'withdraw_request_submitted' => "وڈرا درخواست #%s موصول ہوئی۔ براڈکاسٹ کے بعد اطلاع دی جائے گی۔",
            'withdraw_request_failed' => "وڈرا مکمل نہیں ہوسکا: %s",
            'sell_balance_submitted' => "سیل آرڈر #%s بیلنس سے کم کر دیا گیا۔ ادائیگی کے بعد اطلاع دی جائے گی۔",
            'sell_balance_failed' => "سیل آرڈر مکمل نہیں ہو سکا: %s",
            'account_banned_message' => "آپ کا اکاؤنٹ معطل ہے۔ براہ کرم سپورٹ سے رابطہ کریں۔",
            'wallet_summary_title' => "💼 والٹ خلاصہ:",
            'wallet_summary_line' => "%s — دستیاب: %s | لاک: %s",
            'wallet_rates_title' => "موجودہ OTC ریٹس:",
            'wallet_rates_line' => "%s — خرید: %s | فروخت: %s",
            'wallet_rates_empty' => "فی الحال کوئی ریٹس تشکیل نہیں دیے گئے۔ بعد میں دوبارہ چیک کریں۔",
            'wallet_summary_empty' => "💼 والٹ خلاصہ:\nابھی کوئی بیلنس نہیں۔ ڈپازٹ کریں۔",
            'wallet_history_title' => "🧾 حالیہ والٹ سرگرمی:",
            'wallet_history_line' => "%s %s %s (%s) • %s",
            'wallet_history_empty' => "ابھی کوئی والٹ ہسٹری نہیں۔",
            'withdraw_under_review' => "وڈرا درخواست #%s جائزے میں ہے۔",
            'withdraw_hold_notice' => "وڈرا #%s ہولڈ پر ہے: %s",
            'withdraw_hold_released' => "وڈرا #%s کا ہولڈ ختم کر دیا گیا۔ جائزہ جاری رہے گا۔",
            'withdraw_rejected_notice' => "وڈرا #%s مسترد: %s (رقم واپس کر دی گئی)।",
            'withdraw_approved_notice' => "وڈرا #%s منظور۔ جلد ارسال کیا جائے گا۔",
            'convert_points_prompt' => "کتنے پوائنٹس کو USDT میں تبدیل کرنا ہے لکھیں (دستیاب پوائنٹس دیکھنے کیلئے /points):",
            'convert_points_success' => "%.4f پوائنٹس %.2f USDT میں تبدیل ہوگئے۔ اپنا والٹ بیلنس چیک کریں۔",
            'convert_points_invalid' => "براہ کرم مثبت تعداد میں پوائنٹس درج کریں۔",
            'withdraw_kyc_required' => "وڈرا سے پہلے KYC مکمل کریں۔"
        ],
    ];

    /**
     * Translate a key into the requested language.
     *
     * @param string      $lang The ISO code of the desired language.
     * @param string      $key  The translation key.
     * @param array<int,mixed> $args Optional arguments to replace into the translation via sprintf().
     *
     * @return string
     */
    public static function t(string $lang, string $key, array $args = []): string
    {
        $lang = strtolower($lang);
        $text = self::$translations[$lang][$key] ?? self::$translations['en'][$key] ?? $key;
        if (!empty($args)) {
            $text = sprintf($text, ...$args);
        }
        return $text;
    }
}
