export type Language = 'en' | 'zh'; export const translations = { en: { // Header appTitle: 'NOFX', subtitle: 'Multi-AI Model Trading Platform', aiTraders: 'AI Traders', details: 'Details', tradingPanel: 'Trading Panel', competition: 'Competition', running: 'RUNNING', stopped: 'STOPPED', adminMode: 'Admin Mode', logout: 'Logout', switchTrader: 'Switch Trader:', view: 'View', // Navigation realtimeNav: 'Live', configNav: 'Config', dashboardNav: 'Dashboard', // Footer footerTitle: 'NOFX - AI Trading System', footerWarning: '⚠️ Trading involves risk. Use at your own discretion.', // Stats Cards totalEquity: 'Total Equity', availableBalance: 'Available Balance', totalPnL: 'Total P&L', positions: 'Positions', margin: 'Margin', free: 'Free', // Positions Table currentPositions: 'Current Positions', active: 'Active', symbol: 'Symbol', side: 'Side', entryPrice: 'Entry Price', markPrice: 'Mark Price', quantity: 'Quantity', positionValue: 'Position Value', leverage: 'Leverage', unrealizedPnL: 'Unrealized P&L', liqPrice: 'Liq. Price', long: 'LONG', short: 'SHORT', noPositions: 'No Positions', noActivePositions: 'No active trading positions', // Recent Decisions recentDecisions: 'Recent Decisions', lastCycles: 'Last {count} trading cycles', noDecisionsYet: 'No Decisions Yet', aiDecisionsWillAppear: 'AI trading decisions will appear here', cycle: 'Cycle', success: 'Success', failed: 'Failed', inputPrompt: 'Input Prompt', aiThinking: 'AI Chain of Thought', collapse: 'Collapse', expand: 'Expand', // Equity Chart accountEquityCurve: 'Account Equity Curve', noHistoricalData: 'No Historical Data', dataWillAppear: 'Equity curve will appear after running a few cycles', initialBalance: 'Initial Balance', currentEquity: 'Current Equity', historicalCycles: 'Historical Cycles', displayRange: 'Display Range', recent: 'Recent', allData: 'All Data', cycles: 'Cycles', // Comparison Chart comparisonMode: 'Comparison Mode', dataPoints: 'Data Points', currentGap: 'Current Gap', count: '{count} pts', // Competition Page aiCompetition: 'AI Competition', traders: 'traders', liveBattle: 'Live Battle', realTimeBattle: 'Real-time Battle', leader: 'Leader', leaderboard: 'Leaderboard', live: 'LIVE', realTime: 'LIVE', performanceComparison: 'Performance Comparison', realTimePnL: 'Real-time PnL %', realTimePnLPercent: 'Real-time PnL %', headToHead: 'Head-to-Head Battle', leadingBy: 'Leading by {gap}%', behindBy: 'Behind by {gap}%', equity: 'Equity', pnl: 'P&L', pos: 'Pos', // AI Learning aiLearning: 'AI Learning & Reflection', tradesAnalyzed: '{count} trades analyzed · Real-time evolution', latestReflection: 'Latest Reflection', fullCoT: 'Full Chain of Thought', totalTrades: 'Total Trades', winRate: 'Win Rate', avgWin: 'Avg Win', avgLoss: 'Avg Loss', profitFactor: 'Profit Factor', avgWinDivLoss: 'Avg Win ÷ Avg Loss', excellent: '🔥 Excellent - Strong profitability', good: '✓ Good - Stable profits', fair: '⚠️ Fair - Needs optimization', poor: '❌ Poor - Losses exceed gains', bestPerformer: 'Best Performer', worstPerformer: 'Worst Performer', symbolPerformance: 'Symbol Performance', tradeHistory: 'Trade History', completedTrades: 'Recent {count} completed trades', noCompletedTrades: 'No completed trades yet', completedTradesWillAppear: 'Completed trades will appear here', entry: 'Entry', exit: 'Exit', stopLoss: 'Stop Loss', latest: 'Latest', // AI Learning Description howAILearns: 'How AI Learns & Evolves', aiLearningPoint1: 'Analyzes last 20 trading cycles before each decision', aiLearningPoint2: 'Identifies best & worst performing symbols', aiLearningPoint3: 'Optimizes position sizing based on win rate', aiLearningPoint4: 'Avoids repeating past mistakes', // AI Traders Management manageAITraders: 'Manage your AI trading bots', aiModels: 'AI Models', exchanges: 'Exchanges', createTrader: 'Create Trader', modelConfiguration: 'Model Configuration', configured: 'Configured', notConfigured: 'Not Configured', currentTraders: 'Current Traders', noTraders: 'No AI Traders', createFirstTrader: 'Create your first AI trader to get started', configureModelsFirst: 'Please configure AI models first', configureExchangesFirst: 'Please configure exchanges first', configureModelsAndExchangesFirst: 'Please configure AI models and exchanges first', modelNotConfigured: 'Selected model is not configured', exchangeNotConfigured: 'Selected exchange is not configured', confirmDeleteTrader: 'Are you sure you want to delete this trader?', status: 'Status', start: 'Start', stop: 'Stop', createNewTrader: 'Create New AI Trader', selectAIModel: 'Select AI Model', selectExchange: 'Select Exchange', traderName: 'Trader Name', enterTraderName: 'Enter trader name', cancel: 'Cancel', create: 'Create', configureAIModels: 'Configure AI Models', configureExchanges: 'Configure Exchanges', aiScanInterval: 'AI Scan Decision Interval (minutes)', scanIntervalRecommend: 'Recommended: 3-10 minutes', useTestnet: 'Use Testnet', enabled: 'Enabled', save: 'Save', // AI Model Configuration officialAPI: 'Official API', customAPI: 'Custom API', apiKey: 'API Key', customAPIURL: 'Custom API URL', enterAPIKey: 'Enter API Key', enterCustomAPIURL: 'Enter custom API endpoint URL', useOfficialAPI: 'Use official API service', useCustomAPI: 'Use custom API endpoint', // Exchange Configuration secretKey: 'Secret Key', privateKey: 'Private Key', walletAddress: 'Wallet Address', user: 'User', signer: 'Signer', passphrase: 'Passphrase', enterPrivateKey: 'Enter Private Key', enterWalletAddress: 'Enter Wallet Address', enterUser: 'Enter User', enterSigner: 'Enter Signer Address', enterSecretKey: 'Enter Secret Key', enterPassphrase: 'Enter Passphrase (Required for OKX)', hyperliquidPrivateKeyDesc: 'Hyperliquid uses private key for trading authentication', hyperliquidWalletAddressDesc: 'Wallet address corresponding to the private key', testnetDescription: 'Enable to connect to exchange test environment for simulated trading', securityWarning: 'Security Warning', saveConfiguration: 'Save Configuration', // Trader Configuration positionMode: 'Position Mode', crossMarginMode: 'Cross Margin', isolatedMarginMode: 'Isolated Margin', crossMarginDescription: 'Cross margin: All positions share account balance as collateral', isolatedMarginDescription: 'Isolated margin: Each position manages collateral independently, risk isolation', leverageConfiguration: 'Leverage Configuration', btcEthLeverage: 'BTC/ETH Leverage', altcoinLeverage: 'Altcoin Leverage', leverageRecommendation: 'Recommended: BTC/ETH 5-10x, Altcoins 3-5x for risk control', tradingSymbols: 'Trading Symbols', tradingSymbolsPlaceholder: 'Enter symbols, comma separated (e.g., BTCUSDT,ETHUSDT,SOLUSDT)', selectSymbols: 'Select Symbols', selectTradingSymbols: 'Select Trading Symbols', selectedSymbolsCount: 'Selected {count} symbols', clearSelection: 'Clear All', confirmSelection: 'Confirm', tradingSymbolsDescription: 'Empty = use default symbols. Must end with USDT (e.g., BTCUSDT, ETHUSDT)', btcEthLeverageValidation: 'BTC/ETH leverage must be between 1-50x', altcoinLeverageValidation: 'Altcoin leverage must be between 1-20x', invalidSymbolFormat: 'Invalid symbol format: {symbol}, must end with USDT', // Loading & Error loading: 'Loading...', loadingError: '⚠️ Failed to load AI learning data', noCompleteData: 'No complete trading data (needs to complete open → close cycle)', // AI Traders Page - Additional inUse: 'In Use', noModelsConfigured: 'No configured AI models', noExchangesConfigured: 'No configured exchanges', signalSource: 'Signal Source', signalSourceConfig: 'Signal Source Configuration', coinPoolDescription: 'API endpoint for coin pool data, leave blank to disable this signal source', oiTopDescription: 'API endpoint for open interest rankings, leave blank to disable this signal source', information: 'Information', signalSourceInfo1: '• Signal source configuration is per-user, each user can set their own URLs', signalSourceInfo2: '• When creating traders, you can choose whether to use these signal sources', signalSourceInfo3: '• Configured URLs will be used to fetch market data and trading signals', editAIModel: 'Edit AI Model', addAIModel: 'Add AI Model', confirmDeleteModel: 'Are you sure you want to delete this AI model configuration?', selectModel: 'Select AI Model', pleaseSelectModel: 'Please select a model', customBaseURL: 'Base URL (Optional)', customBaseURLPlaceholder: 'Custom API base URL, e.g.: https://api.openai.com/v1', leaveBlankForDefault: 'Leave blank to use default API address', modelConfigInfo1: '• API Key will be encrypted and stored, please ensure it is valid', modelConfigInfo2: '• Base URL is used for custom API server address', modelConfigInfo3: '• After deleting configuration, traders using this model will not work properly', saveConfig: 'Save Configuration', editExchange: 'Edit Exchange', addExchange: 'Add Exchange', confirmDeleteExchange: 'Are you sure you want to delete this exchange configuration?', pleaseSelectExchange: 'Please select an exchange', exchangeConfigWarning1: '• API keys will be encrypted, recommend using read-only or futures trading permissions', exchangeConfigWarning2: '• Do not grant withdrawal permissions to ensure fund security', exchangeConfigWarning3: '• After deleting configuration, related traders will not be able to trade', edit: 'Edit', // Error Messages createTraderFailed: 'Failed to create trader', getTraderConfigFailed: 'Failed to get trader configuration', modelConfigNotExist: 'Model configuration does not exist or is not enabled', exchangeConfigNotExist: 'Exchange configuration does not exist or is not enabled', updateTraderFailed: 'Failed to update trader', deleteTraderFailed: 'Failed to delete trader', operationFailed: 'Operation failed', deleteConfigFailed: 'Failed to delete configuration', modelNotExist: 'Model does not exist', saveConfigFailed: 'Failed to save configuration', exchangeNotExist: 'Exchange does not exist', deleteExchangeConfigFailed: 'Failed to delete exchange configuration', saveSignalSourceFailed: 'Failed to save signal source configuration', // Login & Register login: 'Sign In', register: 'Sign Up', email: 'Email', password: 'Password', confirmPassword: 'Confirm Password', emailPlaceholder: 'your@email.com', passwordPlaceholder: 'Enter your password', confirmPasswordPlaceholder: 'Re-enter your password', otpPlaceholder: '000000', loginTitle: 'Sign in to your account', registerTitle: 'Create a new account', loginButton: 'Sign In', registerButton: 'Sign Up', back: 'Back', noAccount: "Don't have an account?", hasAccount: 'Already have an account?', registerNow: 'Sign up now', loginNow: 'Sign in now', forgotPassword: 'Forgot password?', rememberMe: 'Remember me', otpCode: 'OTP Code', scanQRCode: 'Scan QR Code', enterOTPCode: 'Enter 6-digit OTP code', verifyOTP: 'Verify OTP', setupTwoFactor: 'Set up two-factor authentication', setupTwoFactorDesc: 'Follow the steps below to secure your account with Google Authenticator', scanQRCodeInstructions: 'Scan this QR code with Google Authenticator or Authy', otpSecret: 'Or enter this secret manually:', qrCodeHint: 'QR code (if scanning fails, use the secret below):', authStep1Title: 'Step 1: Install Google Authenticator', authStep1Desc: 'Download and install Google Authenticator from your app store', authStep2Title: 'Step 2: Add account', authStep2Desc: 'Tap "+", then choose "Scan QR code" or "Enter a setup key"', authStep3Title: 'Step 3: Verify setup', authStep3Desc: 'After setup, continue to enter the 6-digit code', setupCompleteContinue: 'I have completed setup, continue', copy: 'Copy', completeRegistration: 'Complete Registration', completeRegistrationSubtitle: 'to complete registration', loginSuccess: 'Login successful', registrationSuccess: 'Registration successful', loginFailed: 'Login failed', registrationFailed: 'Registration failed', verificationFailed: 'OTP verification failed', invalidCredentials: 'Invalid email or password', passwordMismatch: 'Passwords do not match', emailRequired: 'Email is required', passwordRequired: 'Password is required', invalidEmail: 'Invalid email format', passwordTooShort: 'Password must be at least 6 characters', // Landing Page features: 'Features', howItWorks: 'How it Works', community: 'Community', language: 'Language', loggedInAs: 'Logged in as', exitLogin: 'Sign Out', signIn: 'Sign In', signUp: 'Sign Up', // Hero Section githubStarsInDays: '2.5K+ GitHub Stars in 3 days', heroTitle1: 'Read the Market.', heroTitle2: 'Write the Trade.', heroDescription: 'NOFX is the future standard for AI trading — an open, community-driven agentic trading OS. Supporting Binance, Aster DEX and other exchanges, self-hosted, multi-agent competition, let AI automatically make decisions, execute and optimize trades for you.', poweredBy: 'Powered by Aster DEX and Binance, strategically invested by Amber.ac.', // Landing Page CTA readyToDefine: 'Ready to define the future of AI trading?', startWithCrypto: 'Starting with crypto markets, expanding to TradFi. NOFX is the infrastructure of AgentFi.', getStartedNow: 'Get Started Now', viewSourceCode: 'View Source Code', // Features Section coreFeatures: 'Core Features', whyChooseNofx: 'Why Choose NOFX?', openCommunityDriven: 'Open source, transparent, community-driven AI trading OS', openSourceSelfHosted: '100% Open Source & Self-Hosted', openSourceDesc: 'Your framework, your rules. Non-black box, supports custom prompts and multi-models.', openSourceFeatures1: 'Fully open source code', openSourceFeatures2: 'Self-hosting deployment support', openSourceFeatures3: 'Custom AI prompts', openSourceFeatures4: 'Multi-model support (DeepSeek, Qwen)', multiAgentCompetition: 'Multi-Agent Intelligent Competition', multiAgentDesc: 'AI strategies battle at high speed in sandbox, survival of the fittest, achieving strategy evolution.', multiAgentFeatures1: 'Multiple AI agents running in parallel', multiAgentFeatures2: 'Automatic strategy optimization', multiAgentFeatures3: 'Sandbox security testing', multiAgentFeatures4: 'Cross-market strategy porting', secureReliableTrading: 'Secure and Reliable Trading', secureDesc: 'Enterprise-grade security, complete control over your funds and trading strategies.', secureFeatures1: 'Local private key management', secureFeatures2: 'Fine-grained API permission control', secureFeatures3: 'Real-time risk monitoring', secureFeatures4: 'Trading log auditing', // About Section aboutNofx: 'About NOFX', whatIsNofx: 'What is NOFX?', nofxNotAnotherBot: "NOFX is not another trading bot, but the 'Linux' of AI trading —", nofxDescription1: 'a transparent, trustworthy open source OS that provides a unified', nofxDescription2: "'decision-risk-execution' layer, supporting all asset classes.", nofxDescription3: 'Starting with crypto markets (24/7, high volatility perfect testing ground), future expansion to stocks, futures, forex. Core: open architecture, AI', nofxDescription4: 'Darwinism (multi-agent self-competition, strategy evolution), CodeFi', nofxDescription5: 'flywheel (developers get point rewards for PR contributions).', youFullControl: 'You 100% Control', fullControlDesc: 'Complete control over AI prompts and funds', startupMessages1: 'Starting automated trading system...', startupMessages2: 'API server started on port 8080', startupMessages3: 'Web console http://localhost:3000', // How It Works Section howToStart: 'How to Get Started with NOFX', fourSimpleSteps: 'Four simple steps to start your AI automated trading journey', step1Title: 'Clone GitHub Repository', step1Desc: 'git clone https://github.com/tinkle-community/nofx and switch to dev branch to test new features.', step2Title: 'Configure Environment', step2Desc: 'Frontend setup for exchange APIs (like Binance, Hyperliquid), AI models and custom prompts.', step3Title: 'Deploy & Run', step3Desc: 'One-click Docker deployment, start AI agents. Note: High-risk market, only test with money you can afford to lose.', step4Title: 'Optimize & Contribute', step4Desc: 'Monitor trading, submit PRs to improve framework. Join Telegram to share strategies.', importantRiskWarning: 'Important Risk Warning', riskWarningText: 'Dev branch is unstable, do not use funds you cannot afford to lose. NOFX is non-custodial, no official strategies. Trading involves risks, invest carefully.', // Community Section (testimonials are kept as-is since they are quotes) // Footer Section futureStandardAI: 'The future standard of AI trading', links: 'Links', resources: 'Resources', documentation: 'Documentation', supporters: 'Supporters', strategicInvestment: '(Strategic Investment)', // Login Modal accessNofxPlatform: 'Access NOFX Platform', loginRegisterPrompt: 'Please login or register to access the full AI trading platform', registerNewAccount: 'Register New Account', }, zh: { // Header appTitle: 'NOFX', subtitle: '多AI模型交易平台', aiTraders: 'AI交易员', details: '详情', tradingPanel: '交易面板', competition: '竞赛', running: '运行中', stopped: '已停止', adminMode: '管理员模式', logout: '退出', switchTrader: '切换交易员:', view: '查看', // Navigation realtimeNav: '实时', configNav: '配置', dashboardNav: '看板', // Footer footerTitle: 'NOFX - AI交易系统', footerWarning: '⚠️ 交易有风险,请谨慎使用。', // Stats Cards totalEquity: '总净值', availableBalance: '可用余额', totalPnL: '总盈亏', positions: '持仓', margin: '保证金', free: '空闲', // Positions Table currentPositions: '当前持仓', active: '活跃', symbol: '币种', side: '方向', entryPrice: '入场价', markPrice: '标记价', quantity: '数量', positionValue: '仓位价值', leverage: '杠杆', unrealizedPnL: '未实现盈亏', liqPrice: '强平价', long: '多头', short: '空头', noPositions: '无持仓', noActivePositions: '当前没有活跃的交易持仓', // Recent Decisions recentDecisions: '最近决策', lastCycles: '最近 {count} 个交易周期', noDecisionsYet: '暂无决策', aiDecisionsWillAppear: 'AI交易决策将显示在这里', cycle: '周期', success: '成功', failed: '失败', inputPrompt: '输入提示', aiThinking: '💭 AI思维链分析', collapse: '▼ 收起', expand: '▶ 展开', // Equity Chart accountEquityCurve: '账户净值曲线', noHistoricalData: '暂无历史数据', dataWillAppear: '运行几个周期后将显示收益率曲线', initialBalance: '初始余额', currentEquity: '当前净值', historicalCycles: '历史周期', displayRange: '显示范围', recent: '最近', allData: '全部数据', cycles: '个', // Comparison Chart comparisonMode: '对比模式', dataPoints: '数据点数', currentGap: '当前差距', count: '{count} 个', // Competition Page aiCompetition: 'AI竞赛', traders: '交易员', liveBattle: '实时对战', realTimeBattle: '实时对战', leader: '领先者', leaderboard: '排行榜', live: '实时', realTime: '实时', performanceComparison: '表现对比', realTimePnL: '实时收益率', realTimePnLPercent: '实时收益率', headToHead: '正面对决', leadingBy: '领先 {gap}%', behindBy: '落后 {gap}%', equity: '权益', pnl: '收益', pos: '持仓', // AI Learning aiLearning: 'AI学习与反思', tradesAnalyzed: '已分析 {count} 笔交易 · 实时演化', latestReflection: '最新反思', fullCoT: '📋 完整思维链', totalTrades: '总交易数', winRate: '胜率', avgWin: '平均盈利', avgLoss: '平均亏损', profitFactor: '盈亏比', avgWinDivLoss: '平均盈利 ÷ 平均亏损', excellent: '🔥 优秀 - 盈利能力强', good: '✓ 良好 - 稳定盈利', fair: '⚠️ 一般 - 需要优化', poor: '❌ 较差 - 亏损超过盈利', bestPerformer: '最佳表现', worstPerformer: '最差表现', symbolPerformance: '📊 币种表现', tradeHistory: '历史成交', completedTrades: '最近 {count} 笔已完成交易', noCompletedTrades: '暂无完成的交易', completedTradesWillAppear: '已完成的交易将显示在这里', entry: '入场', exit: '出场', stopLoss: '止损', latest: '最新', // AI Learning Description howAILearns: '💡 AI如何学习和进化', aiLearningPoint1: '每次决策前分析最近20个交易周期', aiLearningPoint2: '识别表现最好和最差的币种', aiLearningPoint3: '根据胜率优化仓位大小', aiLearningPoint4: '避免重复过去的错误', // AI Traders Management manageAITraders: '管理您的AI交易机器人', aiModels: 'AI模型', exchanges: '交易所', createTrader: '创建交易员', modelConfiguration: '模型配置', configured: '已配置', notConfigured: '未配置', currentTraders: '当前交易员', noTraders: '暂无AI交易员', createFirstTrader: '创建您的第一个AI交易员开始使用', configureModelsFirst: '请先配置AI模型', configureExchangesFirst: '请先配置交易所', configureModelsAndExchangesFirst: '请先配置AI模型和交易所', modelNotConfigured: '所选模型未配置', exchangeNotConfigured: '所选交易所未配置', confirmDeleteTrader: '确定要删除这个交易员吗?', status: '状态', start: '启动', stop: '停止', createNewTrader: '创建新的AI交易员', selectAIModel: '选择AI模型', selectExchange: '选择交易所', traderName: '交易员名称', enterTraderName: '输入交易员名称', cancel: '取消', create: '创建', configureAIModels: '配置AI模型', configureExchanges: '配置交易所', aiScanInterval: 'AI 扫描决策间隔 (分钟)', scanIntervalRecommend: '建议: 3-10分钟', useTestnet: '使用测试网', enabled: '启用', save: '保存', // AI Model Configuration officialAPI: '官方API', customAPI: '自定义API', apiKey: 'API密钥', customAPIURL: '自定义API地址', enterAPIKey: '请输入API密钥', enterCustomAPIURL: '请输入自定义API端点地址', useOfficialAPI: '使用官方API服务', useCustomAPI: '使用自定义API端点', // Exchange Configuration secretKey: '密钥', privateKey: '私钥', walletAddress: '钱包地址', user: '用户名', signer: '签名者', passphrase: '口令', enterSecretKey: '输入密钥', enterPrivateKey: '输入私钥', enterWalletAddress: '输入钱包地址', enterUser: '输入用户名', enterSigner: '输入签名者地址', enterPassphrase: '输入Passphrase (OKX必填)', hyperliquidPrivateKeyDesc: 'Hyperliquid 使用私钥进行交易认证', hyperliquidWalletAddressDesc: '与私钥对应的钱包地址', testnetDescription: '启用后将连接到交易所测试环境,用于模拟交易', securityWarning: '安全提示', saveConfiguration: '保存配置', // Trader Configuration positionMode: '仓位模式', crossMarginMode: '全仓模式', isolatedMarginMode: '逐仓模式', crossMarginDescription: '全仓模式:所有仓位共享账户余额作为保证金', isolatedMarginDescription: '逐仓模式:每个仓位独立管理保证金,风险隔离', leverageConfiguration: '杠杆配置', btcEthLeverage: 'BTC/ETH杠杆', altcoinLeverage: '山寨币杠杆', leverageRecommendation: '推荐:BTC/ETH 5-10倍,山寨币 3-5倍,控制风险', tradingSymbols: '交易币种', tradingSymbolsPlaceholder: '输入币种,逗号分隔(如:BTCUSDT,ETHUSDT,SOLUSDT)', selectSymbols: '选择币种', selectTradingSymbols: '选择交易币种', selectedSymbolsCount: '已选择 {count} 个币种', clearSelection: '清空选择', confirmSelection: '确认选择', tradingSymbolsDescription: '留空 = 使用默认币种。必须以USDT结尾(如:BTCUSDT, ETHUSDT)', btcEthLeverageValidation: 'BTC/ETH杠杆必须在1-50倍之间', altcoinLeverageValidation: '山寨币杠杆必须在1-20倍之间', invalidSymbolFormat: '无效的币种格式:{symbol},必须以USDT结尾', // Loading & Error loading: '加载中...', loadingError: '⚠️ 加载AI学习数据失败', noCompleteData: '暂无完整交易数据(需要完成开仓→平仓的完整周期)', // AI Traders Page - Additional inUse: '正在使用', noModelsConfigured: '暂无已配置的AI模型', noExchangesConfigured: '暂无已配置的交易所', signalSource: '信号源', signalSourceConfig: '信号源配置', coinPoolDescription: '用于获取币种池数据的API地址,留空则不使用此信号源', oiTopDescription: '用于获取持仓量排行数据的API地址,留空则不使用此信号源', information: '说明', signalSourceInfo1: '• 信号源配置为用户级别,每个用户可以设置自己的信号源URL', signalSourceInfo2: '• 在创建交易员时可以选择是否使用这些信号源', signalSourceInfo3: '• 配置的URL将用于获取市场数据和交易信号', editAIModel: '编辑AI模型', addAIModel: '添加AI模型', confirmDeleteModel: '确定要删除此AI模型配置吗?', selectModel: '选择AI模型', pleaseSelectModel: '请选择模型', customBaseURL: 'Base URL (可选)', customBaseURLPlaceholder: '自定义API基础URL,如: https://api.openai.com/v1', leaveBlankForDefault: '留空则使用默认API地址', modelConfigInfo1: '• API Key将被加密存储,请确保密钥有效', modelConfigInfo2: '• Base URL用于自定义API服务器地址', modelConfigInfo3: '• 删除配置后,使用此模型的交易员将无法正常工作', saveConfig: '保存配置', editExchange: '编辑交易所', addExchange: '添加交易所', confirmDeleteExchange: '确定要删除此交易所配置吗?', pleaseSelectExchange: '请选择交易所', exchangeConfigWarning1: '• API密钥将被加密存储,建议使用只读或期货交易权限', exchangeConfigWarning2: '• 不要授予提现权限,确保资金安全', exchangeConfigWarning3: '• 删除配置后,相关交易员将无法正常交易', edit: '编辑', // Error Messages createTraderFailed: '创建交易员失败', getTraderConfigFailed: '获取交易员配置失败', modelConfigNotExist: 'AI模型配置不存在或未启用', exchangeConfigNotExist: '交易所配置不存在或未启用', updateTraderFailed: '更新交易员失败', deleteTraderFailed: '删除交易员失败', operationFailed: '操作失败', deleteConfigFailed: '删除配置失败', modelNotExist: '模型不存在', saveConfigFailed: '保存配置失败', exchangeNotExist: '交易所不存在', deleteExchangeConfigFailed: '删除交易所配置失败', saveSignalSourceFailed: '保存信号源配置失败', // Login & Register login: '登录', register: '注册', email: '邮箱', password: '密码', confirmPassword: '确认密码', emailPlaceholder: '请输入邮箱地址', passwordPlaceholder: '请输入密码(至少6位)', confirmPasswordPlaceholder: '请再次输入密码', otpPlaceholder: '000000', loginTitle: '登录到您的账户', registerTitle: '创建新账户', loginButton: '登录', registerButton: '注册', back: '返回', noAccount: '还没有账户?', hasAccount: '已有账户?', registerNow: '立即注册', loginNow: '立即登录', forgotPassword: '忘记密码?', rememberMe: '记住我', otpCode: 'OTP验证码', scanQRCode: '扫描二维码', enterOTPCode: '输入6位OTP验证码', verifyOTP: '验证OTP', setupTwoFactor: '设置双因素认证', setupTwoFactorDesc: '请按以下步骤设置Google验证器以保护您的账户安全', scanQRCodeInstructions: '使用Google Authenticator或Authy扫描此二维码', otpSecret: '或手动输入此密钥:', qrCodeHint: '二维码(如果无法扫描,请使用下方密钥):', authStep1Title: '步骤1:下载Google Authenticator', authStep1Desc: '在手机应用商店下载并安装Google Authenticator应用', authStep2Title: '步骤2:添加账户', authStep2Desc: '在应用中点击“+”,选择“扫描二维码”或“手动输入密钥”', authStep3Title: '步骤3:验证设置', authStep3Desc: '设置完成后,点击下方按钮输入6位验证码', setupCompleteContinue: '我已完成设置,继续', copy: '复制', completeRegistration: '完成注册', completeRegistrationSubtitle: '以完成注册', loginSuccess: '登录成功', registrationSuccess: '注册成功', loginFailed: '登录失败', registrationFailed: '注册失败', verificationFailed: 'OTP验证失败', invalidCredentials: '邮箱或密码错误', passwordMismatch: '两次输入的密码不一致', emailRequired: '请输入邮箱', passwordRequired: '请输入密码', invalidEmail: '邮箱格式不正确', passwordTooShort: '密码至少需要6个字符', // Landing Page features: '功能', howItWorks: '如何运作', community: '社区', language: '语言', loggedInAs: '已登录为', exitLogin: '退出登录', signIn: '登录', signUp: '注册', // Hero Section githubStarsInDays: '3 天内 2.5K+ GitHub Stars', heroTitle1: 'Read the Market.', heroTitle2: 'Write the Trade.', heroDescription: 'NOFX 是 AI 交易的未来标准——一个开放、社区驱动的代理式交易操作系统。支持 Binance、Aster DEX 等交易所,自托管、多代理竞争,让 AI 为你自动决策、执行和优化交易。', poweredBy: '由 Aster DEX 和 Binance 提供支持,Amber.ac 战略投资。', // Landing Page CTA readyToDefine: '准备好定义 AI 交易的未来吗?', startWithCrypto: '从加密市场起步,扩展到 TradFi。NOFX 是 AgentFi 的基础架构。', getStartedNow: '立即开始', viewSourceCode: '查看源码', // Features Section coreFeatures: '核心功能', whyChooseNofx: '为什么选择 NOFX?', openCommunityDriven: '开源、透明、社区驱动的 AI 交易操作系统', openSourceSelfHosted: '100% 开源与自托管', openSourceDesc: '你的框架,你的规则。非黑箱,支持自定义提示词和多模型。', openSourceFeatures1: '完全开源代码', openSourceFeatures2: '支持自托管部署', openSourceFeatures3: '自定义 AI 提示词', openSourceFeatures4: '多模型支持(DeepSeek、Qwen)', multiAgentCompetition: '多代理智能竞争', multiAgentDesc: 'AI 策略在沙盒中高速战斗,最优者生存,实现策略进化。', multiAgentFeatures1: '多 AI 代理并行运行', multiAgentFeatures2: '策略自动优化', multiAgentFeatures3: '沙盒安全测试', multiAgentFeatures4: '跨市场策略移植', secureReliableTrading: '安全可靠交易', secureDesc: '企业级安全保障,完全掌控你的资金和交易策略。', secureFeatures1: '本地私钥管理', secureFeatures2: 'API 权限精细控制', secureFeatures3: '实时风险监控', secureFeatures4: '交易日志审计', // About Section aboutNofx: '关于 NOFX', whatIsNofx: '什么是 NOFX?', nofxNotAnotherBot: 'NOFX 不是另一个交易机器人,而是 AI 交易的 \'Linux\' ——', nofxDescription1: '一个透明、可信任的开源 OS,提供统一的 \'决策-风险-执行\'', nofxDescription2: '层,支持所有资产类别。', nofxDescription3: '从加密市场起步(24/7、高波动性完美测试场),未来扩展到股票、期货、外汇。核心:开放架构、AI', nofxDescription4: '达尔文主义(多代理自竞争、策略进化)、CodeFi 飞轮(开发者 PR', nofxDescription5: '贡献获积分奖励)。', youFullControl: '你 100% 掌控', fullControlDesc: '完全掌控 AI 提示词和资金', startupMessages1: ' 启动自动交易系统...', startupMessages2: ' API服务器启动在端口 8080', startupMessages3: ' Web 控制台 http://localhost:3000', // How It Works Section howToStart: '如何开始使用 NOFX', fourSimpleSteps: '四个简单步骤,开启 AI 自动交易之旅', step1Title: '拉取 GitHub 仓库', step1Desc: 'git clone https://github.com/tinkle-community/nofx 并切换到 dev 分支测试新功能。', step2Title: '配置环境', step2Desc: '前端设置交易所 API(如 Binance、Hyperliquid)、AI 模型和自定义提示词。', step3Title: '部署与运行', step3Desc: '一键 Docker 部署,启动 AI 代理。注意:高风险市场,仅用闲钱测试。', step4Title: '优化与贡献', step4Desc: '监控交易,提交 PR 改进框架。加入 Telegram 分享策略。', importantRiskWarning: '重要风险提示', riskWarningText: 'dev 分支不稳定,勿用无法承受损失的资金。NOFX 非托管,无官方策略。交易有风险,投资需谨慎。', // Community Section (testimonials are kept as-is since they are quotes) // Footer Section futureStandardAI: 'AI 交易的未来标准', links: '链接', resources: '资源', documentation: '文档', supporters: '支持方', strategicInvestment: '(战略投资)', // Login Modal accessNofxPlatform: '访问 NOFX 平台', loginRegisterPrompt: '请选择登录或注册以访问完整的 AI 交易平台', registerNewAccount: '注册新账号', } }; export function t(key: string, lang: Language, params?: Record): string { let text = translations[lang][key as keyof typeof translations['en']] || key; // Replace parameters like {count}, {gap}, etc. if (params) { Object.entries(params).forEach(([param, value]) => { text = text.replace(`{${param}}`, String(value)); }); } return text; }