// 繁體中文（台灣）語言檔案
// Traditional Chinese (Taiwan) - 使用台灣用語習慣
export default {
    // 應用程式名稱
    app: {
        name: 'Incus NAT VPS',
        tagline: '簡潔而強大的雲端實例託管平台',
        description: '一個現代化的雲端實例託管平台',
    },

    // 通用
    common: {
        confirm: '確認',
        cancel: '取消',
        save: '儲存',
        saving: '儲存中...',
        send: '發送',
        sending: '發送中...',
        syncing: '同步中...',
        processing: '處理中...',
        submitting: '提交中...',
        delete: '刪除',
        noIncudalHint: '請勿在名稱或描述中使用字樣',
        edit: '編輯',
        create: '建立',
        creating: '建立中...',
        deleting: '刪除中...',
        deleteSuccess: '刪除成功',
        search: '搜尋',
        loading: '載入中...',
        noData: '暫無資料',
        noSearchResults: '搜尋無結果',
        success: '操作成功',
        error: '操作失敗',
        warning: '警告',
        info: '提示',
        yes: '是',
        no: '否',
        back: '返回',
        next: '下一步',
        previous: '上一步',
        close: '關閉',
        reset: '重設',
        refresh: '重新整理',
        copy: '複製',
        copied: '已複製',
        copyFailed: '複製失敗',
        show: '顯示',
        hide: '隱藏',
        done: '完成',
        actions: '操作',
        details: '詳情',
        status: '狀態',
        name: '名稱',
        description: '描述',
        createdAt: '建立時間',
        updatedAt: '更新時間',
        none: '無',
        notSet: '未設定',
        turnstileFailed: '人機驗證失敗，請重試',
        filter: '篩選',
        total: '共',
        items: '條',
        searchPlaceholder: '搜尋...',
        developing: '開發中',
        developingHint: '此功能正在開發中，敬請期待...',
        gotIt: '我知道了',
        expand: '展開',
        collapse: '收合',
        page: '頁',
        pageInfo: '第 {current}/{total} 頁，共 {count} 條',
        prevPage: '上一頁',
        nextPage: '下一頁',
        loadFailed: '載入失敗',
        all: '全部',
        perPage: '每頁',
        totalCount: '共 {count} 條',
        day: '天',
        days: '天',
        seconds: '秒',
        month: '月',
        totalRecords: '共 {count} 筆記錄',
        deleted: '已刪除',
        // 國家名稱
        countries: {
            // 亞洲
            cn: '中國',
            hk: '中國香港',
            mo: '中國澳門',
            tw: '中國台灣',
            jp: '日本',
            kr: '韓國',
            sg: '新加坡',
            my: '馬來西亞',
            th: '泰國',
            vn: '越南',
            ph: '菲律賓',
            id: '印尼',
            in: '印度',
            pk: '巴基斯坦',
            bd: '孟加拉',
            kz: '哈薩克',
            uz: '烏茲別克',
            ae: '阿聯酋',
            sa: '沙烏地阿拉伯',
            il: '以色列',
            tr: '土耳其',
            // 歐洲
            gb: '英國',
            de: '德國',
            fr: '法國',
            nl: '荷蘭',
            be: '比利時',
            lu: '盧森堡',
            ch: '瑞士',
            at: '奧地利',
            it: '義大利',
            es: '西班牙',
            pt: '葡萄牙',
            ie: '愛爾蘭',
            se: '瑞典',
            no: '挪威',
            dk: '丹麥',
            fi: '芬蘭',
            pl: '波蘭',
            cz: '捷克',
            hu: '匈牙利',
            ro: '羅馬尼亞',
            bg: '保加利亞',
            gr: '希臘',
            ua: '烏克蘭',
            ru: '俄羅斯',
            // 北美洲
            us: '美國',
            ca: '加拿大',
            mx: '墨西哥',
            // 南美洲
            br: '巴西',
            ar: '阿根廷',
            cl: '智利',
            co: '哥倫比亞',
            pe: '秘魯',
            // 大洋洲
            au: '澳洲',
            nz: '紐西蘭',
            // 非洲
            za: '南非',
            eg: '埃及',
            ng: '奈及利亞',
            ke: '肯亞',
        },
        // 網路模式（統一定義）
        networkMode: {
            nat: 'IPv4 NAT',
            nat_ipv6: 'IPv4 NAT & IPv6',
            nat_ipv6_nat: 'IPv4 NAT & IPv6 NAT',
            ipv6_only: 'IPv6 Only',
            ipv6_nat: 'IPv6 NAT',
        },
        // 實例類型
        instanceType: {
            container: 'LXC',
            vm: 'KVM',
        },
        // 啟用/停用狀態
        enabled: '啟用',
        disabled: '停用',
        active: '已啟用',
        inactive: '已停用',
    },

    validation: {
        fields: {
            name: '名稱',
            identifier: '識別符',
            content: '內容',
            serverAddress: '伺服器地址',
            ipAddress: 'IP地址',
            ipOrDomain: 'IP地址或網域',
        },
        required: '{field}不能為空',
        minLength: '{field}長度至少 {min} 個字元',
        maxLength: '{field}長度不能超過 {max} 個字元',
        illegalChars: '{field}包含非法字元',
        safeNameChars: '{field}只能包含中文、字母、數字、連字符、底線、空格、逗號和圓括號',
        identifierChars: '{field}只能包含字母、數字、連字符和底線，且必須以字母開頭',
        invalidFormat: '{field}格式不正確',
        urlProtocol: '{field}必須以 http:// 或 https:// 開頭',
        hostAddressInvalid: '{field}格式不正確，請輸入有效的 IPv4、IPv6 地址或網域',
        ipAddressInvalid: '{field}格式不正確，請輸入有效的 IPv4 或 IPv6 地址',
        ipv4Invalid: '{field}格式不正確，請輸入有效的 IPv4 地址',
    },

    // 導航
    nav: {
        main: '常用',
        dashboard: '總覽',
        instances: '實例',
        transfers: '移轉',
        friends: '好友',
        tickets: '工單',
        resources: '資源',
        myHosts: '我的節點',
        myPackages: '我的方案',
        myImages: '我的映像檔',
        logs: '日誌',
        inbox: '通知',
        settings: '設定',
        wallet: '錢包',
        invites: '邀請',
        help: '說明',
        admin: '管理',
        expand: '擴展',
        system: '系統',
        users: '使用者',
        statistics: '統計',
        hosts: '節點',
        images: '映像檔',
        packages: '方案',
        helpManage: '說明',
        oauth: 'OAuth',
        broadcast: '公告',
        paymentProviders: '支付渠道',
        billing: '計費管理',
        withdrawals: '提現',
        aff: '推薦',
        openMenu: '開啟選單',
        collapseSidebar: '收合側邊欄',
        toggleTheme: '切換佈景主題',
        toggleLanguage: '切換語言',
        terminal: '終端機',
        extensions: '擴充',
        scripts: '腳本',
        operations: '運維',
        createInstance: '建立實例',
        create: '建立',
        entertainment: '福利',
        hosting: '託管',
        hostingWallet: '託管收益',
        earnings: '收益',
        mail: '郵箱',
        instanceDetail: '實例詳情',
        mailDomain: '郵箱網域',
        myHostCreate: '建立節點',
        myHostDetail: '節點詳情',
        myPackageCreate: '建立方案',
        myPackageEdit: '編輯方案',
        telegramSettings: 'Telegram 設定',
        adminCreateInstance: '管理員建立實例',
    },

    // 佈景主題
    theme: {
        dark: '深色模式',
        light: '淺色模式',
        system: '跟隨系統',
    },

    freeSite: {
        billingCycleLabel: {
            monthly: '月付？月亮替你付了',
            quarterly: '季付？四季都免單',
            semiAnnual: '半年快樂通行證',
            annual: '年付？錢包裝睡中',
            custom: '{months} 個月，快樂代扣空氣',
            free: '免費亂逛許可證',
        },
        billingCycleShort: {
            monthly: '/月，免驚',
            quarterly: '/季，免單',
            semiAnnual: '/半年快樂',
            annual: '/年也白送',
            custom: '/{months} 個月快樂',
        },
        copy: {
            finalPrice: '裝模作樣價',
            renewPrice: '續費？儀式感拉滿',
            billingCycle: '快樂檔位',
            needPay: '象徵性付款',
            originalPrice: '原價標本',
            oldDailyPrice: '舊日租，考古用',
            newDailyPrice: '新日租，擺設用',
            remainingValue: '剩餘價值：快樂無價',
            newPlanCost: '新方案成本：空氣幣',
            currentBalance: '餘額吉祥物',
            balanceAfterRenew: '續後餘額：紋絲不動',
            walletBalanceTab: '快樂餘額',
            walletLogsTab: '免單流水',
            walletCurrentBalance: '目前快樂刻度',
            walletDescription: '白嫖站模式已開啟，儲值入口去喝茶了，餘額負責站崗。',
            walletLogsDescription: '這裡記錄餘額的小動作。別緊張，主線任務依舊是免費玩。',
            walletTotalRecharge: '累計免單',
            walletTotalConsume: '快樂蒸發',
            walletDestroyedValue: '銷毀紀念值',
            dashboardNewInstance: '快樂實例',
            dashboardCreateInstance: '召喚快樂機',
            dashboardCreateFirst: '先召喚一台',
            dashboardUserBalance: '快樂餘額',
            dashboardBalanceValue: '免費無價',
            dashboardNewContainer: '錢包坐好，我們直接開整',
            instanceCreate: '快樂實例',
            instanceCreateFirst: '先召喚一台',
            instanceBatchRenewTitle: '批量續快樂',
            instanceBatchRenewDescription: '白嫖站模式下，續費只是蓋個章，機器繼續開心營業。',
            instanceBatchTotalAmount: '空氣合計',
            instanceBatchBalanceAfter: '續後心情',
            instanceBatchCurrentBalance: '目前吉祥物餘額',
            instanceBatchRenewAction: '確認快樂續杯',
            moneyJustForShow: '數字巡演',
            marketPriceFree: '免單起飛',
            marketPlanCount: '{count} 個快樂檔位',
            marketCreateNow: '立即開薅',
            marketLoginToOrder: '登入後開薅',
            marketSelectedPlanTitle: '快樂檔位',
            marketCycleMonthly: '月付？月亮替你付了',
            marketMonthlyPrice: '月均？快樂不均攤',
            createOrderSummary: '免單概覽',
            createPromoCode: '神秘暗號',
            createPromoPlaceholder: '可填可不填，免費列車已發車',
            createPromoHostedDisabled: '託管節點不吃暗號，直接上車',
            createPromoValid: '暗號有效，快樂加成 {rate}',
            createPromoUsing: '暗號燈已亮',
            createPromoBenefit: '折扣和返利在旁邊表演，情緒價值負責鼓掌。',
            createCommissionEstimate: '預計給分享者投餵 ¥{amount} 的想像返利',
            createPlanFee: '標價展覽品',
            createMonthlyEquivalent: '折算？快樂拒絕被折算',
            mailPrice: '郵箱也免單',
            mailCheckoutTitle: '郵箱免單確認',
            mailBillingCycle: '快樂週期',
            mailCheckoutAmount: '象徵性結算',
            mailCheckoutConfirm: '確認領取郵箱',
            mailBalanceRequired: '餘額不餘額的，白嫖站講究先用再說。',
        },
    },

    publicSite: {
        brandTagline: 'Incus 驅動的 NAT VPS 平台',
        nav: {
            home: '首頁',
            overview: '概覽',
            products: '商品瀏覽',
            help: '幫助中心',
        },
        actions: {
            signIn: '登入',
            console: '進入控制台',
            consoleCompact: '控制台',
            browseProducts: '瀏覽全部商品',
            browseOfficial: '瀏覽直營商品',
            browseMarket: '瀏覽託管商品',
            viewCatalog: '查看全部',
        },
        footer: {
            description: '精選全球多節點 LXC / KVM 商品，配置豐富、方案齊全，持續提供高性價比 NAT VPS 選擇。',
            explore: '瀏覽',
            account: '帳戶',
            purchaseHint: '未登入時打開購買連結，會先進入公開商品瀏覽頁；登入後仍維持原本的建立流程。',
        },
        seo: {
            keywords: 'Incus,NAT VPS,LXC,KVM,VPS 面板,雲伺服器',
            homeTitle: '基於 Incus 的 NAT VPS 入口與控制台',
            homeDescription: '精選全球多節點 LXC / KVM 商品，配置豐富、方案齊全，持續提供高性價比 NAT VPS 選擇。',
            marketTitle: '商品瀏覽',
            marketDescription: '瀏覽全部公開商品，並依來源、地區、資源配置與計費方案篩選 NAT VPS。',
            marketPackageTitle: '{name} - 商品瀏覽',
            marketPackageDescription: '查看 {name} 的 {type} 配置、月流量與商品資訊，並在商品瀏覽頁延續開通流程。',
        },
        portal: {
            badge: 'Incus Driven NAT Platform',
            title: '基於 Incus 的 NAT VPS 入口與控制台',
            description: '精選全球多節點 LXC / KVM 商品，覆蓋直營與託管供給，配置檔位豐富，持續提供高性價比 NAT VPS 選擇。',
            authPanelDescription: '把穩定供給、更多地區與更豐富價格帶放在同一入口，讓挑選套餐這一步更直接。',
            authPanelFlowLabel: 'ORDER FLOW',
            authPanelFlowTitle: '先看商品，登入後繼續下單',
            authPanelFlowDescription: '未登入時可以先瀏覽公開商品；從分享連結進入也會保留商品上下文，登入後可直接續上原本的購買流程。',
            authPanelTagValue: '高性價比',
            previewLabel: 'CONTROL PLANE',
            previewTitle: '控制台概覽',
            previewDescription: '從公開入口到登入後控制台，整體體驗都圍繞實例選型、部署、維運與商品轉化。',
            controlPoint1: '$ incus launch ubuntu:24.04 edge-vm',
            controlPoint2: '# LXC / KVM NAT 實例統一入口',
            controlPoint3: '# 官方直營與託管市場共用同一套瀏覽到開通鏈路',
            packageFallback: '公開商品，支援從瀏覽頁直接跳轉購買。',
            stats: {
                packages: '商品數量',
                regions: '地區數量',
                official: '直營商品',
                market: '託管商品',
            },
            officialTitle: '官方直營',
            officialDescription: '標準化供給、較穩定的預期，適合重視節點品質、基礎體驗與持續可用性的業務。',
            officialPoint1: '官方節點更適合需要穩定供給、清晰預期與一致維運體驗的場景。',
            officialPoint2: '公開瀏覽與開通鏈路一致，適合站外推廣、落地頁轉化與持續上架。',
            officialPoint3: '登入後仍沿用既有建立實例流程，不打斷後台使用習慣。',
            marketTitle: '託管市場',
            marketDescription: '價格帶與地區分佈更靈活，適合追求更多節點選擇與成本效率的使用者。',
            marketPoint1: '託管市場適合尋找冷門地區、特殊價格帶與更靈活的資源來源。',
            marketPoint2: '公開瀏覽、地區篩選與方案查看都對齊到同一套體驗。',
            marketPoint3: '分享購買連結時，未登入訪客先看商品，已登入使用者仍直接進入開通流程。',
            experienceNoLoginTitle: '全球多節點供給',
            experienceNoLoginDescription: '直營與託管商品並行上架，熱門地區與更多節點選擇可在同一入口集中瀏覽。',
            experienceRoutingTitle: 'LXC / KVM 商品更全',
            experienceRoutingDescription: '從輕量容器到完整虛擬機，資源配置與方案檔位覆蓋更廣，方便依需求挑選。',
            experienceThemeTitle: '多價位高性價比',
            experienceThemeDescription: '持續補充不同預算與定位的 NAT VPS 商品，方便橫向比較後再決定。',
            catalogLabel: 'ECOSYSTEM',
            catalogTitle: '官方直營與託管生態並行',
            catalogDescription: '直營與託管商品並行提供，無論你想優先看穩定供給，或是挑選更多地區與價格帶，都能在這裡找到。',
            emptyPackages: '目前暫無可展示商品',
            browseLabel: 'CATALOG',
            browseTitle: '依配置與地區篩選合適商品',
            browseDescription: '支援依地區、配置與價格篩選商品，方便新用戶選購，也方便老用戶補購。',
        },
        market: {
            badge: '公開商品瀏覽',
            title: '瀏覽全部公開商品',
            description: '依來源、地區、配置與方案篩選的公開商品目錄。',
            publicNotice: '這裡彙總全部公開商品，可直接依地區、來源與資源配置進行篩選。',
            buyLinkNotice: '你目前打開的是一條購買連結。因為尚未登入，所以先顯示對應商品；登入後仍會進入原本的建立實例流程。',
            searchPlaceholder: '搜尋商品名稱、描述或虛擬化類型',
            allRegions: '全部地區',
            official: '官方直營',
            market: '託管市場',
            noPackages: '目前暫無公開商品',
            noResults: '沒有符合目前篩選條件的商品',
            soldOut: '暫時售罄',
            inStock: '可開通',
            free: '免費',
            fromMonthly: '¥{price}/月起',
            planCount: '{count} 個方案',
            featuresTitle: '套餐詳情',
            plansTitle: '可選方案',
            planCycle: '{months} 個月',
            selectedPlanTitle: '目前方案',
            customConfigTitle: '自訂配置',
            customConfigDescription: '此商品目前沒有固定方案。登入後會進入建立頁，並依套餐允許範圍自訂資源配置。',
            createNow: '立即開通',
            loginToOrder: '登入後開通',
            loginHint: '登入後會依目前商品直接延續至建立實例流程。',
            choosePackage: '從左側選擇一個商品查看詳細資訊。',
            summary: {
                total: '公開商品',
                available: '可開通',
                regions: '覆蓋地區',
                source: '目前來源',
            },
            labels: {
                startingPrice: '起售價',
                traffic: '月流量',
                plans: '方案數',
                cpu: 'CPU',
                memory: '記憶體',
                disk: '硬碟',
                network: '網路模式',
                hosts: '宿主機數',
                nesting: '巢狀支援',
            },
        },
    },

    // 錢包
    wallet: {
        title: '錢包',
        description: '管理您的帳戶餘額和充值',
        tabs: {
            balance: '帳戶餘額',
            logs: '餘額明細',
            records: '充值記錄',
        },
        currentBalance: '目前餘額',
        recharge: '充值',
        totalRecharge: '累計充值',
        totalConsume: '累計消費',
        totalDestroyedValue: '已銷毀總價值',
        noLogs: '暫無餘額記錄',
        noRecords: '暫無充值記錄',
        type: '類型',
        amount: '金額',
        actualAmount: '實際到帳',
        estimatedAmount: '預計到帳',
        balanceAfter: '餘額',
        instanceOrRemark: '實例/備註',
        time: '時間',
        orderNo: '訂單號',
        completedAt: '完成時間',
        statusLabel: '狀態',
        paymentMethod: '支付方式',
        paymentMethodType: '選擇支付方式',
        heleketSelectionHint: '將在 Heleket 支付頁選擇具體的加密貨幣和網路，本頁不會限制最終付款幣種。',
        paymentChannel: '支付渠道',
        paymentUuid: 'UUID:',
        paymentTxid: 'TxID:',
        paymentMethods: {
          alipay: '支付寶',
          wxpay: '微信支付',
          qqpay: 'QQ錢包',
          bank: '網銀支付',
          jdpay: '京東支付',
        },
        noProviders: '暫無可用支付渠道',
        amountLabel: '充值金額',
        amountRange: '金額範圍',
        feeNote: '手續費',
        payableAmount: '應付金額',
        pay: '立即支付',
        void: '作廢',
        logTypes: {
            recharge: '充值',
            consume: '消費',
            refund: '退款',
            adminAdjust: '管理員調整',
            gift: '贈送',
            transferFee: '移轉手續費',
            transferRefund: '手續費退還',
            hostingWithdraw: '託管餘額提現',
            hostingDeduction: '託管實例扣款',
        },
        status: {
            pending: '待支付',
            paid: '已支付',
            completed: '已完成',
            failed: '失敗',
            cancelled: '已取消',
            refunded: '已退款',
        },
        loadLogsFailed: '載入餘額明細失敗',
        showLotteryGift: '抽獎贈送',
        showingLotteryGift: '抽獎贈送',
        loadProvidersFailed: '載入支付渠道失敗',
        loadRecordsFailed: '載入充值記錄失敗',
        selectProvider: '請選擇支付方式',
        invalidAmount: '金額無效',
        orderCreated: '訂單已建立',
        redirecting: '正在跳轉支付頁面...',
        createOrderFailed: '建立訂單失敗',
        noPayUrl: '獲取支付連結失敗',
        repayFailed: '重新支付失敗',
        orderCancelled: '訂單已取消',
        noRefundNotice: '所有充值都無法原路退款。',
        rechargeNotice: '我知道不好用的實例可以銷毀退至面板餘額，可轉移實例 PUSH 是免費的，郵箱可自行修改。',
        cancelFailed: '取消訂單失敗',
        orderExpired: '訂單已過期',
        rechargeSuccess: '充值成功！餘額已到帳',
        verifyingPayment: '正在驗證支付狀態...',
        paymentProcessing: '支付處理中，請稍後刷新',
        verifyFailed: '驗證支付狀態失敗',
        amountMismatch: '支付金額與訂單金額不匹配，請聯繫客服',
        natDisclaimer: '我知道所售實例都是 NAT 屬性，不保證 IP 在大陸的連通性，所有充值都無法退款。',
    },

    // 推薦計劃
    aff: {
        title: '推薦計劃',
        description: '邀請好友使用您的優惠碼，獲取返利收益',
        notActivated: '推薦計劃已可用',
        activateHint: '您可以建立優惠碼並分享給朋友，當他們使用您的優惠碼購買您購買過的方案時，您將獲得返利收益。',
        goRecharge: '前往充值',
        affBalance: 'AFF 餘額',
        totalEarnings: '累計收益',
        balanceHint: 'AFF 餘額僅可轉化為帳戶餘額用於面板消費，無法直接提現。',
        convert: '申請轉化',
        myCodes: '我的優惠碼',
        createCode: '建立優惠碼',
        noCodes: '暫無優惠碼，建立一個開始推廣吧',
        code: '優惠碼',
        plan: '方案',
        discount: '折扣',
        commission: '返利',
        usedCount: '使用次數',
        earnings: '收益',
        status: '狀態',
        enabled: '已啟用',
        disabled: '已停用',
        toggle: '切換',
        selectPlan: '選擇方案',
        selectPlanHint: '選擇全域優惠碼或方案專有碼',
        alreadyCreated: '已建立',
        globalCode: '全域優惠碼',
        globalCodeBadge: '全站通用',
        globalCodeHint: '可用於全站所有付費套餐和方案',
        orSelectPlan: '或選擇方案專有碼',
        discountCommission: '折扣/返利比例',
        discountCommissionHint: '購買者享 {discount} 折扣，您獲 {commission} 返利',
        fixedRate: '折扣與返利比例',
        fixedRateHint: '系統固定折扣率和返利率均為 5%',
        createSuccess: '優惠碼建立成功',
        createFailed: '建立失敗',
        deleteCodeConfirm: '確定刪除優惠碼 {code} 嗎？',
        deleteCodeSuccess: '優惠碼已刪除',
        deleteCodeFailed: '刪除失敗',
        toggleSuccess: '狀態已切換',
        toggleFailed: '切換失敗',
        earningsLog: '收益明細',
        noLogs: '暫無收益記錄',
        logType: {
            new_purchase: '新購返利',
            renew: '續費返利',
            convert: '餘額轉化',
        },
        convertModal: {
            title: '申請轉化',
            currentBalance: '目前 AFF 餘額',
            amount: '轉化金額',
            minAmount: '最低轉化金額：0.10 元',
            hint: '提交後將自動轉入帳戶餘額。',
            submit: '確認轉化',
            success: '轉化成功，已轉入帳戶餘額',
            failed: '提交失敗',
            invalidAmount: '請輸入有效的轉化金額',
        },
        withdrawals: '轉化記錄',
        noWithdrawals: '暫無轉化記錄',
        withdrawalStatus: {
            pending: '待審核',
            approved: '已通過',
            rejected: '已拒絕',
        },
        leaderboard: {
            title: 'AFF 榜單',
            loadFailed: '載入榜單失敗',
            empty: '暫無榜單資料',
            you: '就是你',
        },
        // 實例建立頁優惠碼輸入
        promoCode: '優惠碼',
        promoCodeOptional: '優惠碼（可選）',
        promoCodePlaceholder: '輸入優惠碼（可選）',
        promoCodeInputPlaceholder: '輸入折扣代碼',
        promoCodeHostedDisabled: '託管節點不支援使用優惠碼',
        promoCodeValid: '優惠碼有效，享受 {rate} 折扣',
        promoCodeInvalid: '優惠碼無效',
        verifying: '驗證中...',
        originalPrice: '原價',
        discountAmount: '折扣',
        promoDiscount: '推廣折扣',
        finalPrice: '實付',
        usingPromoCode: '您正在使用優惠碼',
        promoCodeBenefit: '您享受 {discount} 折扣，同時為分享者帶來約 {commission}% 的返利',
        commissionEstimate: '預計為分享者帶來 ¥{amount} 返利',
        // 管理員審核
        adminTitle: 'AFF 轉化審核',
        adminDescription: '審核使用者的 AFF 餘額轉化申請',
        user: '使用者',
        userBalance: '使用者 AFF 餘額',
        requestAmount: '申請金額',
        requestTime: '申請時間',
        approve: '通過',
        reject: '拒絕',
        rejectReason: '拒絕原因',
        rejectReasonPlaceholder: '請輸入拒絕原因',
        approveSuccess: '已通過，已轉入使用者餘額',
        approveFailed: '審核失敗',
        rejectSuccess: '已拒絕',
        rejectFailed: '拒絕失敗',
        noRequests: '暫無待審核的轉化申請',
        filterStatus: '狀態篩選',
        all: '全部',
    },

    popupAnnouncement: {
        title: '站點公告',
        subtitle: '請留意這條最新通知',
        promoLabel: '新機器推廣',
        buyNow: '立即購買 {name}',
        viewImage: '查看完整圖片',
        promoPlans: '可選方案',
        soldOut: '售罄',
        dismissToday: '今日不見',
        dismissForever: '再也不見',
    },

    // 語言
    language: {
        zh: '中文',
        en: 'English',
    },

    // 認證
    auth: {
        login: '登入',
        loginTo: '登入',
        logout: '登出',
        register: '註冊',
        registerTo: '註冊',
        username: '使用者名稱',
        usernamePlaceholder: '輸入使用者名稱',
        usernameOrEmail: '使用者名稱或電子郵件',
        usernameOrEmailPlaceholder: '輸入使用者名稱或電子郵件',
        password: '密碼',
        passwordPlaceholder: '輸入密碼',
        confirmPassword: '確認密碼',
        confirmPasswordPlaceholder: '再次輸入密碼',
        email: '電子郵件',
        emailPlaceholder: '輸入電子郵件',
        rememberMe: '記住我',
        forgotPasswordLink: '忘記密碼',
        contactEmail: '聯絡信箱',
        noAccount: '還沒有帳號？',
        hasAccount: '已有帳號？',
        loginSuccess: '登入成功',
        logoutSuccess: '已登出',
        registerSuccess: '註冊成功',
        invalidCredentials: '使用者名稱或密碼錯誤',
        sessionExpired: '會話已過期，請重新登入',
        continue: '繼續',
        loggingIn: '登入中...',
        registering: '註冊中...',
        orUse: '或使用',
        oauthBindHint: '需先在設定中綁定帳號才能使用快速登入',
        enterUsernamePassword: '請輸入使用者名稱和密碼',
        enterUsernameOrEmailPassword: '請輸入帳號和密碼',
        twoFactorCode: '雙重驗證碼',
        twoFactorCodePlaceholder: '輸入 6 位驗證碼',
        twoFactorHint: '請輸入驗證器應用程式中顯示的驗證碼',
        twoFactorOptional: '選填',
        twoFactorOptionalHint: '如果您啟用了雙重驗證，請輸入驗證碼',
        recoveryCode: '恢復碼',
        recoveryCodePlaceholder: '輸入恢復碼',
        recoveryCodeHint: '輸入設定 2FA 時儲存的恢復碼（一次性使用）',
        useRecoveryCode: '無法存取驗證器？使用恢復碼',
        useTotpCode: '使用驗證器驗證碼',
        enterRecoveryCode: '請輸入恢復碼',
        enterTotpCode: '請輸入驗證碼',
        rememberPassword: '想起密碼了？',
        verificationCode: '驗證碼',
        verificationCodePlaceholder: '輸入 6 位驗證碼',
        invalidCode: '請輸入 6 位驗證碼',
        forgotPassword: {
            title: '找回密碼',
            subtitle: '透過電子郵件驗證碼重設您的密碼',
            sendCode: '發送驗證碼',
            codeSent: '驗證碼已發送，請查收郵件',
            codeHint: '請輸入發送到您電子郵件的 6 位驗證碼',
            resetPassword: '重設密碼',
            resetSuccess: '密碼重設成功！新密碼已發送到您的電子郵件，請查收。',
            twoFactorDisabled: '您的雙重驗證（2FA）已被自動停用，建議重新啟用以確保帳號安全。'
        },
        oauthNotBound: '請先在個人設定中綁定 {provider} 帳號後再使用快速登入',
        oauthUserNotFound: '使用者不存在',
        oauthAccountBanned: '帳號已被停用',
        oauthProviderDisabled: '該登入方式已被停用',
        oauthTokenError: '取得授權失敗，請重試',
        oauthError: 'OAuth 登入失敗，請重試',
        loginFailed: '登入失敗',
        createAccount: '註冊',
        creatingAccount: '建立中...',
        backToLogin: '返回登入',
        registerSuccessRedirect: '註冊成功，正在跳轉...',
        inviteCode: '邀請碼',
        inviteCodePlaceholder: '輸入邀請碼',
        usernameHint: '字母開頭，3-32 個字元',
        passwordHint: '至少 8 位，包含大小寫字母和數字',
        fillAllRequired: '請填寫所有必填項',
        invalidEmail: '請輸入有效的電子郵件地址',
        emailContainsIllegal: '電子郵件包含非法字元',
        passwordMismatch: '兩次密碼不一致',
        passwordTooShort: '密碼至少 8 位',
        passwordNeedsUppercase: '密碼需要包含至少一個大寫字母',
        passwordNeedsLowercase: '密碼需要包含至少一個小寫字母',
        passwordNeedsNumber: '密碼需要包含至少一個數字',
        turnstileRequired: '請完成人機驗證',
        turnstileFailed: '人機驗證失敗，請重試',
        // 電子郵件驗證
        emailCode: '電子郵件驗證碼',
        emailCodePlaceholder: '請輸入 6 位驗證碼',
        emailCodeRequired: '請輸入電子郵件驗證碼',
        registrationClosedTitle: '目前已關閉註冊',
        registrationClosedMessage: '抱歉，目前站點暫時關閉註冊，如需開通帳號請聯絡管理員。',
        registrationClosedShort: '目前已關閉註冊',
        sendCode: '發送驗證碼',
        sendingCode: '發送中...',
        codeSentHint: '驗證碼已發送至您的電子郵件，10 分鐘內有效',
        invalidEmailCode: '驗證碼無效或已過期',
        allowedEmailDomains: '僅支援以下電子郵件',
        emailUsernamePlaceholder: '使用者名稱',
        confirmEmail: '確認電子郵件地址',
        confirmEmailMessage: '驗證碼將發送至以下電子郵件，請確認地址是否正確：',
        confirmAndSend: '確認發送',
        // 服務條款
        tos: {
            title: '服務條款',
            agreePrefix: '我已閱讀並同意',
            termsLink: '《服務條款》',
            mustAgree: '請閱讀並同意服務條款',
            understood: '我已瞭解',
            loadFailed: '載入服務條款失敗',
        },
    },

    // 使用者選單
    userMenu: {
        profile: '個人設定',
        myInstances: '我的實例',
        logout: '登出',
    },

    // 配額
    quota: {
        hosts: '主機',
        instances: '實例',
        friends: '好友',
        packages: '方案',
    },

    // 儀表板
    dashboard: {
        title: '總覽',
        welcome: '歡迎回來',
        welcomeMessage: '歡迎回來，{name}！',
        overview: '總覽',
        recentActivity: '最近活動',
        quickActions: '快速操作',
        // 統計卡片（頂層定義）
        totalInstances: '實例總數',
        runningInstances: '運行中',
        stoppedInstances: '已停止',
        creatingInstances: '建立中',
        userBalance: '使用者餘額',
        balance: '餘額',
        memberLevel: '會員等級',
        memberLevelBasic: '普通會員',
        uptimeProbe: '自營節點監控',
        statusPage: '狀態頁',
        rechargeNow: '立即充值',
        walletDetails: '查看錢包',
        walletHint: '前往錢包頁面完成充值',
        instanceStatusOverview: '實例狀態概覽',
        accountOverview: '帳戶概覽',
        runningHealth: '運行健康度',
        instanceOverviewSummary: '{running}/{total} 台實例運行中，在線率 {percent}%',
        containerInstances: '容器實例',
        vmInstances: '虛擬機實例',
        totalRecharge: '累計充值',
        totalConsume: '累計消費',
        userPoints: '使用者積分',
        frozenBalance: '凍結餘額',
        frozenBalanceHint: '帳戶中有凍結餘額，請在錢包查看明細',
        accountReadyHint: '帳戶狀態正常，可直接建立或續費實例',
        instanceListSummary: '最近 {count} / 共 {total} 個實例',
        vipProgressTitle: '會員成長進度',
        vipProgressToNext: '{current} → {next}',
        vipProgressMaxed: '已達到目前最高會員等級',
        vipProgressNoRule: '暫無下一等級規則',
        vipProgressUnavailable: '會員進度暫不可用',
        vipProgressAllHint: '升級到 {level} 需要同時滿足以下條件',
        vipProgressAnyHint: '升級到 {level} 滿足任一條件即可',
        vipProgressSingleMetricHint: '升級到 {level} 需要達到{metric}門檻',
        vipProgressStableHint: '保持目前權益，後續福利大廳開放後可領取對應福利',
        vipMetricTotalRecharge: '累計充值',
        vipMetricTotalConsume: '累計消費',
        vipMetricTotalHostingIncome: '累計託管收入',
        vipMetricInstanceCount: '託管實例數',
        vipProgressConditionMet: '已滿足',
        vipProgressCurrent: '目前',
        vipProgressTarget: '目標',
        vipProgressRemaining: '還差',
        vipProgressRemainingMoney: '還差 {amount}',
        vipProgressRemainingCount: '還差 {count} 個',
        resourceUsage: '資源使用',
        resourceOverview: '這是您的資源使用概覽',
        newInstance: '新增實例',
        quotaUsage: '配額使用',
        increaseQuota: '增加配額',
        pinnedArticles: '置頂說明文章',
        viewAllHelp: '查看全部說明',
        myInstances: '我的實例',
        viewAll: '查看全部',
        viewAllInstancesWithCount: '查看全部 {count} 個實例',
        memoryMetric: '記憶體',
        diskMetric: '磁碟',
        noPublicIp: '無公網 IP',
        unknownHost: '未分配節點',
        createFirst: '建立第一個實例',
        // 快速操作卡片
        createInstance: '建立實例',
        newContainer: '新增容器',
        instanceList: '實例列表',
        manageInstances: '管理實例',
        profileSettings: '個人設定',
        accountSecurity: '帳戶安全',
        helpDocs: '說明文件',
        userGuide: '使用指南',
        // 問候語
        greeting: {
            morning: '早安',
            afternoon: '午安',
            evening: '晚安',
            basicUser: '{username}',
            memberUser: '尊貴的 {level} {username}',
            full: '{greeting}，{member}',
        },
        // 統計（嵌套定義）
        stats: {
            totalInstances: '實例總數',
            runningInstances: '運行中的實例',
            totalHosts: '主機總數',
            totalUsers: '使用者總數',
            activeUsers: '活躍使用者',
            resourceUsage: '資源使用',
            systemStatus: '系統狀態',
        },
        actions: {
            createInstance: '建立實例',
            viewInstances: '查看實例',
            viewHosts: '查看主機',
            viewUsers: '查看使用者',
        },
        allRunning: '全部運行中',
        xRunning: '{count} 個運行中',
        allStopped: '全部已停止',
        instancePlural: '個實例',
        noInstances: '暫無實例',
        noInstancesHint: '您還沒有任何實例，快去建立一個吧！',
        hostNotice: '您的實例運行在以下主機上',
        instances: '我的實例',
        hosts: '實例所在主機',
        viewAllInstances: '查看全部實例',
        viewAllHosts: '查看全部主機',
        hostName: '主機名稱',
        ownerName: '所有者',
        instanceCount: '實例數',
        publicIpDisplay: '公網 IP',
        cards: {
            runningInstances: '運行中實例',
            totalStorage: '總儲存空間',
            totalCpu: '總 CPU',
            totalMemory: '總記憶體',
        },
        funnyQuote: '一句話',
        hostStatus: '主機狀態',
        noHostsFound: '找不到任何主機',
        viewAllPackages: '查看全部方案',
        selectedPackages: '已選方案',
        noPackagesSelected: '未選擇方案',
        selectPackages: '選擇方案',
    },

    // 服務條款模態框
    tosModal: {
        title: '服務條款',
        content: '服務條款內容',
        agree: '我同意服務條款',
        agreeButton: '同意並繼續',
        mustAgree: '您必須同意服務條款才能繼續使用',
        lastUpdated: '最後更新：{date}',
        scrollToRead: '請滾動閱讀完整服務條款',
        contactUs: '如有疑問，請聯繫我們',
        contactEmail: '聯繫電子郵件',
        iAgree: '我已閱讀並同意',
        readCarefully: '請仔細閱讀以下服務條款',
        loading: '載入服務條款中...',
        loadFailed: '載入服務條款失敗，請重新整理頁面重試',
    },

    // 實例相關
    instance: {
        title: '實例管理',
        titlePlural: '實例',
        name: '實例名稱',
        image: '映像檔',
        package: '方案',
        host: '節點',
        ip: 'IP 位址',
        port: '連接埠',
        cpu: 'CPU',
        memory: '記憶體',
        disk: '磁碟',
        bandwidth: '頻寬',
        expireAt: '到期時間',
        expiredLabel: '已到期',
        freeInstanceLabel: '免費實例',
        config: '設定',
        user: '使用者',
        details: '詳情',
        // 資源配額（訂單概覽用）
        ports: '連接埠',
        snapshots: '快照',
        backups: '備份',
        hostAnnouncement: '節點公告',
        badgeModal: {
            open: '查看或修改實例徽章',
            kicker: '實例徽章',
            title: '實例徽章',
            subtitle: '查看目前實例徽章，並快速切換到其他已擁有徽章：{name}',
            detailsTab: '徽章說明',
            ownedTab: '我的徽章',
            noBadgeSeries: '未設定徽章',
            noBadgeTitle: '目前尚未為這個實例設定徽章',
            noBadgeSummary: '這個實例目前仍在使用預設圖示。',
            noBadgeDescription: '你可以切換到「我的徽章」，把已擁有的徽章快速套用到目前實例。',
            statusLabel: '目前狀態',
            statusApplied: '已套用到目前實例',
            statusNotApplied: '未設定實例徽章',
            ownedCountLabel: '已擁有副本',
            openOwnedTab: '從我的徽章中選擇',
            manageUnavailable: '目前實例不在你的可管理實例清單中，這裡只能查看徽章資訊，不能直接修改。',
            emptyOwnedTitle: '你還沒有可用的實例徽章',
            emptyOwnedHint: '先前往娛樂中心取得徽章，之後就可以在這裡快速切換目前實例的徽章。',
            applyCurrent: '套用到目前實例',
            replaceCurrent: '替換目前實例徽章',
            moveCurrent: '轉移到目前實例',
            moveFromAvatar: '從頭像改為目前實例',
            appliedHere: '目前實例中',
            currentHint: '這個徽章已經套用在目前實例上。',
            replaceHint: '套用後會替換目前實例正在使用的徽章。',
            moveFromAvatarHint: '套用後會先從目前頭像上移除。',
            moveFromInstanceHint: '套用後會先從實例「{name}」上移除。',
            removeCurrent: '移除目前實例徽章',
            updateSuccess: '實例徽章已更新',
            removeSuccess: '已移除目前實例徽章',
        },
        errorBanner: {
            title: '實例異常',
            description: '實例異常，您可直接銷毀（付費實例剩餘價值退款不扣除手續費）',
            destroyNow: '立即銷毀',
            confirmDestroy: '確定要銷毀此異常實例嗎？付費實例的剩餘價值將退款至您的錢包（不扣除手續費）。',
        },
        actions: {
            start: '啟動',
            stop: '停止',
            restart: '重新啟動',
            delete: '刪除',
            console: '控制台',
            snapshot: '快照',
            backup: '備份',
            rename: '重新命名',
            clone: '複製',
            suspend: '封停',
            unsuspend: '解封',
        },
        renameModal: {
            title: '重新命名實例',
            name: '實例名稱',
            namePlaceholder: '輸入新的實例名稱',
            cancel: '取消',
            confirm: '確認',
            renaming: '重新命名中...',
            success: '實例已重新命名',
            failed: '重新命名失敗',
        },
        statusLabel: '狀態',
        modeLabel: '模式',
        quotaLabel: '配額',
        trafficLabel: '流量',
        manageDesc: '管理您的容器實例',
        userInstances: '使用者「{name}」的實例',
        clearFilter: '清除篩選',
        searchPlaceholder: '搜尋實例名稱、IP...',
        totalCount: '共 {count} 個實例',
        noInstances: '暫無實例',
        noMatchingInstances: '未找到符合的實例',
        tryOtherKeywords: '嘗試使用其他關鍵字',
        createFirstInstance: '建立第一個容器實例開始使用',
        listLayout: '列表',
        cardLayout: '卡片',
        order: {
            label: '調整排序',
            top: '置頂',
            up: '上移',
            down: '下移',
            bottom: '置底',
            updateSuccess: '實例順序已更新',
            updateFailed: '儲存實例順序失敗',
        },
        confirmDelete: '確定刪除實例「{name}」？此操作不可回復。',
        createPage: {
            title: '建立實例',
            description: '選擇方案並設定您的容器實例',
            instanceName: '實例名稱',
            instanceNamePlaceholder: 'my-instance',
            selectPackage: '請選擇方案',
            selectSshKey: '請選擇 SSH 金鑰',
            creating: '建立中...',
            createSuccess: '實例建立中，請稍後在實例列表中查看狀態',
            loadFailed: '載入資料失敗',
            loadHostsFailed: '載入可用主機失敗',
            loadImagesFailed: '載入可用映像檔失敗',
            missingSshKey: '缺少 SSH 金鑰',
            missingSshKeyDesc: '建立實例需要 SSH 金鑰。請先前往',
            profileSettings: '個人設定',
            addSshKey: '新增 SSH 公鑰。',
            quotaInsufficient: '配額不足',
            quotaCpu: 'CPU: 已用 {used}%/{limit}% 額配，本次需要 {need}%',
            quotaMemory: '記憶體: 已用 {used}/{limit} MB，本次需要 {need} MB',
            quotaDisk: '磁碟: 已用 {used}/{limit} MB，本次需要 {need} MB',
            quotaInstance: '實例: 已達上限 {used}/{limit} 個',
            packageNoHosts: '方案未綁定主機，請聯繫管理員',
            sharedPackageNotFound: '分享的方案不存在或已失效，已為您選擇其他可用方案',
            quotaInfo: {
                prefix: '該方案',
                you: '您',
                maxInstances: '',
                count: '數量',
                instances: '個實例',
                unlimited: '無限制',
                cpu: 'CPU',
                memory: '記憶體',
                remaining: '該方案剩餘配額',
            },
            resourceLimit: {
                title: '資源配額不足，無法建立實例',
                noInstances: '剩餘實例數量為 0，無法建立新實例',
                insufficientMemory: '剩餘記憶體不足（<128MB），無法建立實例',
                insufficientCpu: '剩餘 CPU 不足（<15%），無法建立實例',
            },
            ownPaidPackageWarning: '這是您自己建立的付費方案，不能為自己開通實例',
            destroyTrafficNotice: '銷毀限制：實例本月已用流量低於 5 GB 時才可銷毀。',
            firstPaidInstanceNotice: '銷毀限制：實例本月已用流量低於 5 GB 時才可銷毀。',
            // 訂單概覽
            orderSummary: '訂單概覽',
            packageName: '方案',
            planName: '方案',
            billingCycle: '計費週期',
            months: '個月',
            month: '月',
            resourceConfig: '資源設定',
            planFee: '方案費用',
            // 套餐來源
            source: {
                official: '直營',
                market: '託管',
                friends: '好友共享',
            },
            fun: {
                selectRegion: '選擇國家/地區',
                packageCount: '{count} 個方案',
                selectPackage: '選擇方案',
                selectPlan: '選擇方案',
                planDesc: '選擇適合您需求的付費方案',
                customPlanHint: '找不到合適的方案？您可以提交工單申請定製配置',
                noPlans: '該方案暫無可用方案',
                planSoldOut: '已售罄',
                noPackages: '暫無可用方案',
                selectHost: '選擇主機',
                hostAutoSelected: '預設選中第一台可用節點',
                selectSystem: '選擇系統',
                noImages: '暫無可用映像檔',
                selectSshKey: '選擇 SSH 金鑰',
            },
            // 託管免責提示
            hostedDisclaimer: {
                title: '託管節點提示',
                content: '此為用戶託管節點，售後由託管者（UID:{uid}）負責。僅提供平台服務，不擔保節點品質。若託管者失聯，將處理其託管餘額退還至受影響用戶的面板餘額。',
            },
            zoneNotice: {
                badge: '專區',
                content: '此為 UID:{uid} 的專區，售後由 {username} 處理。',
            },
        },
        startingInstance: '{name} 啟動中',
        stoppedInstance: '{name} 已停止',
        restartingInstance: '{name} 重新啟動中',
        deletedInstance: '{name} 已刪除',
        actionFailed: '操作失敗',
        verificationRequiredHint: '此操作需要二次驗證，請前往實例詳情頁面執行',
        totalRecords: '共 {count} 筆記錄',
        prevPage: '上一頁',
        nextPage: '下一頁',
        batch: {
            selectedCount: '已選 {count} 個實例',
            currentPageOnly: '批量操作僅作用於目前頁面選中的實例',
            clear: '取消選擇',
            start: '批量開機',
            stop: '批量關機',
            restart: '批量重啟',
            sync: '批量同步',
            renew: '批量續費',
            autoRenewOn: '開啟自動續費',
            autoRenewOff: '關閉自動續費',
            destroy: '批量銷毀',
            noEligibleAction: '所選實例中沒有可執行此操作的項目',
            partialResult: '已完成 {success} 個，失敗 {failed} 個，跳過 {skipped} 個',
            successResult: '已成功處理 {count} 個實例',
            actionFailed: '批量操作失敗',
            previewFailed: '載入批量預覽失敗',
            renewTitle: '批量續費',
            renewDescription: '為目前選中的付費實例統一續費，只有支援所選時長的實例會被執行。',
            selectedMonths: '續費時長',
            eligibleCount: '可執行數量',
            totalAmount: '合計金額',
            renewEmpty: '所選實例中沒有可續費項目',
            eligibleList: '可執行實例（{count}）',
            skippedList: '跳過實例（{count}）',
            hosted: '託管實例',
            unsupportedPeriod: '目前所選時長不可續費',
            unknownReason: '目前無法處理',
            destroyTitle: '批量銷毀',
            destroyDescription: '銷毀目前選中的實例，只有符合條件的實例會被執行。',
            destroyEmpty: '所選實例中沒有可銷毀項目',
            refundTotal: '預估總退款',
            feeTotal: '預估總手續費',
            feeWaived: '免手續費',
            confirmHint: '請輸入 DESTROY 以確認批量銷毀',
            confirmPlaceholder: '輸入 DESTROY 確認',
        },
        batchReason: {
            notFoundOrForbidden: '實例不存在或無權操作',
            freeNoRenew: '免費實例無需續費',
            billingUnavailable: '無法取得實例計費資訊',
            noRenewOptions: '暫無可用續費選項',
            renewWindow: '僅可在到期前 {days} 天內續費',
            renewFailed: '續費失敗',
            freeNoAutoRenew: '免費實例不支援自動續費',
            autoRenewAlreadyOn: '已經開啟自動續費',
            autoRenewAlreadyOff: '已經關閉自動續費',
            autoRenewFailed: '自動續費設定失敗',
            deleted: '實例已刪除',
            creating: '實例正在建立中，無法銷毀',
            suspended: '實例已被封停，無法銷毀，請先聯繫管理員解封',
            destroyTrafficLimit: '目前月流量週期無法銷毀，已用流量達到或超過 5G',
            destroyFailed: '銷毀實例失敗',
        },
        // 行動裝置卡片
        mobileCard: {
            ipAddress: 'IP 位址',
            config: '設定',
            disk: '硬碟',
            traffic: '流量',
            host: '節點',
            user: '使用者',
            unlimited: '無限制',
            cpuCore: '%核',
            quota: '配額',
            ports: '連接埠',
            snapshots: '快照',
            backups: '備份',
            sites: '反代',
        },
        // 實例建立組件
        selector: {
            // 地區選擇
            selectRegion: '選擇國家/地區',
            allRegions: '全部',
            noRegions: '暫無可用地區',
            packageCount: '{count} 個方案',
            // 方案選擇
            selectPackage: '選擇方案',
            selectPlan: '選擇方案',
            planDesc: '選擇適合您需求的付費方案',
            customPlanHint: '找不到合適的方案？您可以提交工單申請定製配置',
            noPlans: '該方案暫無可用方案',
            planSoldOut: '已售罄',
            noPackages: '暫無可用方案',
            cpu: 'CPU',
            memory: '記憶體',
            disk: '硬碟',
            cores: '核',
            networkMode: {
                nat: 'NAT',
                natDesc: '透過連接埠映射存取',
                nat_ipv6: 'NAT + IPv6',
                nat_ipv6Desc: 'NAT + 公網 IPv6',
            },
            docker: '可嵌套',
            privileged: '特權',
            configureResources: '設定資源',
            adjustBasedOnPackage: '基於方案上限自由調節',
            cpuAllowance: '額配',
            accountQuota: '帳戶配額',
            packageLimit: '方案限制',
            selectHost: '選擇主機',
            hostOptional: '可選，不選則系統自動分配',
            hostAutoSelected: '預設選中第一台可用節點',
            hostTraffic: '該節點下實例月流量',
            autoAssign: '自動分配',
            autoAssignDesc: '系統根據負載自動選擇最佳節點',
            available: '可用',
            selectSystem: '選擇系統',
            showSyncedImages: '顯示目前節點允許的映像檔',
            noImages: '暫無可用映像檔',
            noImagesOnHost: '所選節點暫無可用映像檔',
            contactAdmin: '請聯繫節點所有者或管理員調整映像檔策略',
            selectSshKey: '選擇 SSH 金鑰',
            noSshKeys: '暫無 SSH 金鑰',
            addSshKeyHint: '請先在設定頁面新增 SSH 公鑰',
            hostInsufficient: '主機資源不足',
            hostInsufficientDesc: '目前設定需要 {cpu}% CPU 和 {memory}GB 記憶體，但方案內所有主機均無法滿足。',
            hostInsufficientSuggest: '建議降低實例設定或等待資源釋放。',
            viewProbe: '查看探針監控',
            prevPage: '上一頁',
            nextPage: '下一頁',
            pageInfo: '第 {current}/{total} 頁，共 {count} 筆',
            // 方案資源配額
            ports: '連接埠',
            snapshots: '快照',
            backups: '備份',
            sites: '站點',
            bandwidth: '頻寬',
        },
        // 付費訂閱卡片
        subscription: {
            premium: '付費訂閱',
            expiresAt: '到期日期',
            expiresIn: '剩餘時間',
            expired: '已過期',
            days: '天',
            billingCycle: '計費週期',
            renewPrice: '續費價格',
            month: '月',
            monthly: '月付',
            quarterly: '季付',
            semiAnnual: '半年付',
            annual: '年付',
            months: '個月',
            perMonth: '/月',
            perQuarter: '/季',
            perHalfYear: '/半年',
            perYear: '/年',
            renew: '續費',
            renewSuccess: '續費成功',
            applyAffShort: '優惠碼',
            applyAffTitle: '綁定 AFF 優惠碼',
            applyAffInstance: '實例',
            applyAffCurrentRenewPrice: '當前續費價格',
            applyAffCodeLabel: 'AFF 優惠碼',
            applyAffCodePlaceholder: '輸入 AFF 優惠碼',
            applyAffEffectHint: '綁定成功後僅影響後續續費價格。',
            applyAffNoRefundHint: '不會退還當前週期差價，也不會改變當前週期費用。',
            applyAffOwnCodeHint: '只能綁定他人的優惠碼，不能綁定自己的優惠碼。',
            applyAffSubmit: '確認綁定',
            applyAffSubmitting: '綁定中...',
            applyAffSuccess: '優惠碼綁定成功，後續續費將享受折扣',
            // 自動續費
            autoRenew: '自動續費',
            autoRenewOn: '已開啟自動續費',
            autoRenewOff: '未開啟自動續費',
            autoRenewEnabled: '已開啟自動續費',
            autoRenewDisabled: '已關閉自動續費',
            enableAutoRenew: '開啟自動續費',
            disableAutoRenew: '關閉自動續費',
            autoRenewHint: '到期前 24 小時將自動從餘額扣款續費',
            autoRenewDesc: '開啟自動續費後，實例將在到期前自動按 {cycle} 週期續費，每次續費 ￥{price}',
            currentStatus: '當前狀態',
        },
        // 實例銷毀
        destroy: {
            button: '銷毀',
            title: '銷毀實例',
            warning: '此操作將永久刪除實例及其所有資料，包括快照、備份、端口映射等，且不可恢復。',
            warningFree: '此操作將永久刪除實例及其所有資料，且不可恢復。',
            rulesTitle: '銷毀規則',
            rulesDesc: '了解銷毀功能的使用規則和限制',
            ruleFirstFree: '首次銷毀免手續費',
            ruleFirstFreeDesc: '您的第一次銷毀操作將免除手續費，全額退款',
            ruleFeeRate: '後續銷毀收取 {rate}% 手續費',
            ruleFeeRateDesc: '第二次及以後銷毀收取 {rate}% 手續費',
            ruleTrafficThreshold: '付費實例當前月流量週期已用流量需低於 5G',
            ruleTrafficThresholdDesc: '若當前月流量週期已用流量達到或超過 5G，則本次無法銷毀付費實例',
            ruleFreeInstance: '免費實例可直接銷毀',
            ruleFreeInstanceDesc: '免費實例銷毀無退款，不計入銷毀次數',
            // 預覽資訊
            instanceInfo: '實例資訊',
            instanceName: '實例名稱',
            hostName: '所在節點',
            planName: '當前方案',
            refundInfo: '退款資訊',
            remainingDays: '剩餘天數',
            remainingValue: '剩餘價值',
            maxRefundable: '退款上限',
            feeRate: '手續費率',
            feeAmount: '手續費',
            refundAmount: '實際退款',
            firstTimeFree: '首次免手續費',
            freeInstanceNoRefund: '免費實例無退款',
            days: '天',
            // 確認
            confirmTitle: '確認銷毀',
            confirmHint: '請輸入實例名稱 {name} 以確認銷毀',
            confirmPlaceholder: '輸入實例名稱確認',
            confirmButton: '確認銷毀',
            destroying: '銷毀中...',
            cancel: '取消',
            // 狀態
            success: '實例已銷毀',
            successWithRefund: '實例已銷毀，已退款 ¥{amount}',
            failed: '銷毀失敗',
            loadFailed: '載入銷毀資訊失敗',
            // 不可銷毀原因
            cannotDestroy: '無法銷毀',
        },
        create: '建立實例',
        createNew: '建立新實例',
        edit: '編輯實例',
        delete: '刪除實例',
        start: '啟動',
        stop: '停止',
        restart: '重新啟動',
        console: '控制台',
        terminal: '終端機',
        backup: '備份',
        backupAction: '建立備份',
        snapshot: '快照',
        snapshotAction: '建立快照',
        resize: '調整規格',
        reinstall: '重裝系統',
        migrate: '遷移',
        transfer: '移轉',
        rename: '重新命名',
        forceStop: '強制停止',
        status: {
            running: '運行中',
            stopped: '已停止',
            starting: '啟動中',
            stopping: '停止中',
            restarting: '重新啟動中',
            error: '錯誤',
            unknown: '未知',
            suspended: '已暫停',
            creating: '建立中',
            migrating: '遷移中',
            restoring: '還原中',
            deleting: '刪除中',
            installing: '安裝中',
            copying: '複製中',
            backingUp: '備份中',
        },
        statusFilter: {
            all: '全部狀態',
        },
        createdAt: '建立時間',
        detail: {
            invalidId: '無效的實例 ID',
            notExist: '實例不存在',
            loadFailed: '載入實例失敗',
            title: '實例詳情',
            overview: '總覽',
            specs: '規格',
            storage: '儲存',
            activity: '活動',
            tabs: {
                info: '資訊',
                overview: '總覽',
                network: '網路',
                siteProxy: '建站',
                traffic: '流量',
                quota: '配額',
                storage: '儲存',
                snapshots: '快照',
                backups: '備份',
                logs: '日誌',
                settings: '設定',
                config: '設定',
            },
            task: {
                start: '正在啟動...',
                stop: '正在停止...',
                restart: '正在重新啟動...',
                rebuild: '正在重裝...',
                recreate: '正在重建...',
                clone: '正在複製...',
                change_host: '正在改節點...',
            },
            actions: {
                starting: '實例啟動中',
                stopped: '實例已停止',
                restarting: '實例重新啟動中',
                deleted: '實例已刪除',
                confirmDelete: '確定刪除實例「{name}」？\n\n此操作將永久刪除實例和所有資料，不可回復。',
                actionFailed: '操作失敗',
                taskQueued: '操作已提交，請稍候...',
                taskInProgress: '實例正在執行其他操作，請稍候',
                rebuildSuccess: '系統重裝成功，新密碼已產生',
                recreateSuccess: '實例重建成功，新密碼已產生',
                selectImageAndKey: '請選擇映像檔和 SSH 金鑰',
                clone: '複製實例',
                cloning: '複製中...',
                cloneSuccess: '實例複製成功',
                cloneFailed: '實例複製失敗',
                confirmClone: '確定要複製實例「{name}」嗎？',
                cloneNotice: '複製操作將建立一個新的實例副本，新實例將繼承源實例的所有設定，但會分配新的連接埠映射。複製可能需要幾分鐘時間，請耐心等待。',
                stopRequired: '請先停止實例',
                stopRequiredHint: '此操作需要實例處於停止狀態',
                suspend: '封停實例',
                unsuspend: '解除封停',
                suspending: '封停中...',
                unsuspending: '解封中...',
                suspendSuccess: '實例已封停',
                unsuspendSuccess: '實例已解封',
                syncStatus: '同步',
                help: '幫助',
                syncStatusChanged: '狀態已同步：{from} → {to}',
                syncStatusNoChange: '狀態已更新，已同步網路位址',
                syncIpv4Changed: '內網 IP 已更新: {from} → {to}',
                syncProxySitesUpdated: '已同步更新 {count} 個反代站點配置',
                confirmSuspend: '確定要封停實例「{name}」嗎？',
                confirmSuspendNotice: '封停後，實例所有者將無法對該實例進行任何操作，直到所有者手動解除封禁。',
                suspendReason: '封停原因',
                suspendReasonPlaceholder: '請輸入封停原因，將透過站內信通知實例所有者...',
                confirmUnsuspend: '確定要解除實例「{name}」的封停狀態嗎？',
            },
            rebuild: {
                title: '重裝',
                noHostInfo: '無法取得節點資訊',
                noImages: '該節點目前沒有可用映像檔，請聯繫節點所有者或管理員調整映像檔策略。',
                loadImagesFailed: '載入映像檔列表失敗',
                loadKeysFailed: '載入 SSH 金鑰失敗',
            },
            recreate: {
                title: '重建實例',
            },
            port: {
                fillPrivatePort: '請填寫內部連接埠',
                added: '連接埠映射已新增',
                addedBoth: 'TCP 和 UDP 連接埠映射已新增',
                batchAdded: '已新增 {count} 個連接埠映射',
                stillConflict: '部分連接埠仍有衝突，請重新選擇',
                deleted: '連接埠映射已刪除',
                deleteFailed: '刪除失敗',
                confirmDelete: '確定刪除此連接埠映射？',
                confirmBatchDelete: '確定刪除選中的 {count} 個連接埠映射？',
                batchDeleted: '已刪除 {count} 個連接埠映射',
                batchDeletePartial: '成功刪除 {success} 個，{fail} 個刪除失敗',
            },
            password: {
                loadFailed: '載入密碼失敗',
            },
            quota: {
                saved: '配額已更新',
                saveFailed: '儲存失敗',
                portExceedUsed: '連接埠配額不能小於目前已使用量：目前已使用 {used} 個連接埠，輸入 {input}',
                snapshotExceedUsed: '快照配額不能小於目前已使用量：目前已使用 {used} 個快照，輸入 {input}',
                backupExceedUsed: '備份配額不能小於目前已使用量：目前已使用 {used} 個備份，輸入 {input}',
                portOutOfRange: '連接埠配額必須在 1-1000 範圍內',
                snapshotOutOfRange: '快照配額必須在 1-1000 範圍內',
                backupOutOfRange: '備份配額必須在 1-1000 範圍內',
            },
            copy: {
                success: '已複製到剪貼簿',
                failed: '複製失敗',
            },
            // 資訊標籤頁
            info: {
                title: '基本資訊',
                instanceId: '實例 ID',
                image: '映像檔',
                host: '節點',
                networkMode: '網路模式',
                instanceMode: '實例模式',
                nat: 'NAT',
                ipv6: 'IPv6',
                sshPort: 'SSH 連接埠',
                sshHelpTitle: 'SSH 連線說明',
                sshHelpIpv4: '使用 IPv4 連線時，需要先前往「網路」標籤頁新增 22 連接埠的映射，然後使用公網 IP 和映射後的連接埠進行連線。',
                sshHelpIpv6: '使用 IPv6 連線時，可以直接使用公網 IPv6 位址和 22 連接埠進行連線，無需設定連接埠映射。',
                rootPassword: 'Root 密碼',
                createdAt: '建立時間',
                expiresAt: '到期時間',
                suspended: '實例已封停',
                suspendedAt: '封停時間',
                suspendReasonLabel: '封停原因',
                suspendReasonExpired: '實例已到期，請續費後解封',
                suspendReasonDefault: '未填寫封停原因',
                suspendTip: '封停期間，實例無法啟動、重新啟動、重裝等操作。如需解封或有疑問，請提交工單。',
                copy: '複製',
                show: '顯示',
                hide: '隱藏',
                resourceUsage: '資源佔用',
                cpu: 'CPU',
                memory: '記憶體',
                disk: '硬碟',
                inbound: '入站',
                outbound: '出站',
                ingressLimit: '入棧',
                egressLimit: '出棧',
                hostUid: '託管UID',
                hostOwnerTitle: '託管者資訊',
                hostOwnerEmail: '郵箱',
                hostOwnerHostCount: '託管節點數',
                hostOwnerInstanceCount: '節點實例數',
                hostOwnerRegisteredDays: '註冊天數',
                includesCache: '含頁面快取',
                cannotEditConfig: '實例狀態不允許修改設定',
                redeem: '兑換',
                redeemTitle: '兑換資源',
            },
            // Cloud-init 初始化狀態
            cloudInit: {
                initializing: '初始化中',
                retry: '重新檢查',
                retryUnknown: '重試檢測',
                retryStalled: '繼續檢測',
                short: '初始化',
                shortUnknown: '待確認',
                shortStalled: '較慢',
                clickToRetry: '系統正在初始化，點擊重新檢測',
                clickToRetryUnknown: '目前無法確認 Cloud-init 狀態，點擊重新檢測',
                clickToRetryStalled: '初始化耗時較長，點擊繼續檢測或手動標記完成',
                statusUnknown: '狀態待確認',
                stalled: '初始化較慢',
                manualComplete: '手動標記完成',
                manualShort: '完成',
                manualCompleteSuccess: '已手動標記實例初始化為完成',
            },
            // 網路標籤頁
            network: {
                title: '網路位址',
                privateIpv4: '內網 IPv4',
                publicIpv4: '公網 IPv4',
                publicIpv6: '公網 IPv6',
                portMappings: '連接埠映射',
                publicIp: '公網 IP',
                add: '新增',
                noQuota: '請先分配連接埠配額',
                quotaFull: '連接埠配額已滿',
                addPortMapping: '新增連接埠映射',
                prevPage: '上一頁',
                nextPage: '下一頁',
                perPage: '每頁',
                filterBoth: '全部',
                selectAll: '全選當前頁',
                selectedCount: '已選擇 {count} 項',
                batchDelete: '批量刪除',
                noFilterResults: '當前篩選條件無匹配結果',
                noPortQuota: '未分配連接埠配額',
                allocateQuotaHint: '請先在「配額」標籤頁中分配連接埠配額',
                noPortMappings: '暫無連接埠映射，點擊「新增」建立',
                ipv6OnlyPortMappingHint: 'IPv6 Only類型的實例無法進行連接埠映射，請直接使用實例的IPv6',
                additionalIpv6: '額外 IPv6 位址',
                addIpv6: '新增 IPv6',
                noAdditionalIpv6: '暫無額外 IPv6 位址',
                ipAdded: 'IPv6 位址新增成功',
                ipAddFailed: 'IPv6 位址新增失敗',
                ipDeleted: 'IPv6 位址已刪除',
                ipDeleteFailed: 'IPv6 位址刪除失敗',
                confirmDeleteIp: '確定要刪除這個 IPv6 位址嗎？',
                // IPv6 管理新增
                primaryIpv6: '主 IPv6',
                extraIpv6: '額外 IPv6',
                ipv6Subnets: 'IPv6 網段',
                addSubnet: '分配網段',
                customIpv6: '自訂 IPv6',
                randomIpv6: '隨機分配',
                setCustom: '設定自訂',
                custom: '自訂',
                primary: '主',
                addIpv6Modal: {
                    title: '新增 IPv6 位址',
                    randomHint: '系統將從節點 IPv6 子網中隨機分配一個位址',
                    customHint: '輸入您自己的 IPv6 位址（必須在節點子網範圍內）',
                    addressLabel: 'IPv6 位址',
                    addressPlaceholder: '如 2001:db8::1',
                    invalidAddress: '無效的 IPv6 位址格式',
                    adding: '新增中...',
                },
                subnetModal: {
                    title: '分配 IPv6 網段',
                    hint: '選擇要分配的網段大小，節點將自動從可用池中分配',
                    prefix112: '/112 (65,536 個 IP)',
                    prefix120: '/120 (256 個 IP)',
                    prefix124: '/124 (16 個 IP)',
                    allocating: '分配中...',
                    allocate: '分配',
                },
                noSubnets: '暫無分配的 IPv6 網段',
                subnetAllocated: 'IPv6 網段分配成功',
                subnetAllocateFailed: 'IPv6 網段分配失敗',
                subnetDeleted: 'IPv6 網段已刪除',
                subnetDeleteFailed: 'IPv6 網段刪除失敗',
                confirmDeleteSubnet: '確定要刪除這個 IPv6 網段嗎？',
                customIpv6Set: '自訂 IPv6 位址設定成功',
                customIpv6Failed: '自訂 IPv6 位址設定失敗',
                ipv6NotInSubnet: 'IPv6 位址必須在節點子網範圍內',
                ipv6AlreadyExists: 'IPv6 位址已被佔用',
                instanceMustRunning: '實例必須處於運行狀態才能管理 IPv6',
                loading: '載入中...',
                // 重新分配 IPv6
                reassignIpv6: '重新取得',
                reassignIpv6Confirm: '確定要重新分配 IPv6 位址嗎？',
                reassignIpv6ConfirmHint: '重新分配後需要重裝系統才能生效',
                reassignIpv6Success: 'IPv6 已重新分配，請重裝系統使其生效',
                reassignIpv6Failed: 'IPv6 重新分配失敗',
                reassignIpv6Loading: '重新分配中...',
                reassignIpv6StopRequired: '實例必須先關機才能重新分配 IPv6',
                reassignIpv6Cooldown: '每天只能重新取得一次，請等待 {hours} 小時後重試',
                reassignIpv6CooldownShort: '{hours}小時後',
                reassignIpv6NotSupported: '此實例不支援重新分配 IPv6',
            },
            // 配額標籤頁
            quotaTab: {
                title: '實例配額設定',
                portLimit: 'NAT 連接埠數上限',
                snapshotLimit: '快照數量上限',
                backupLimit: '備份數量上限',
                placeholder: '留空或輸入0自動填入剩餘額度',
                currentUsage: '目前使用',
                quotaLimit: '配額限制',
                full: '已滿',
                remaining: '剩餘',
                defaultRemaining: '預設帳戶剩餘額度',
                unit: '個',
                portMappings: '連接埠映射',
                snapshots: '快照',
                backups: '備份',
                save: '儲存配額設定',
                saving: '儲存中...',
            },

            storageTitle: '儲存',
            rootDisk: '根磁碟',
            totalDisk: '總磁碟',
            diskUsage: '磁碟使用量',
            usedDisk: '已使用',
            snapshotsTitle: '快照',
            noSnapshots: '無快照',
            createSnapshot: '建立快照',
            restoreSnapshot: '還原快照',
            deleteSnapshot: '刪除快照',
            snapshotName: '快照名稱',
            snapshotNamePlaceholder: '輸入快照名稱',
            snapshotCreated: '快照建立成功',
            snapshotRestored: '快照還原成功',
            snapshotDeleted: '快照刪除成功',
            snapshotFailed: '快照操作失敗',
            backupsTitle: '備份',
            noBackups: '無備份',
            createBackup: '建立備份',
            restoreBackup: '還原備份',
            deleteBackup: '刪除備份',
            backupName: '備份名稱',
            backupCreated: '備份建立成功',
            backupRestored: '備份還原成功',
            backupDeleted: '備份刪除成功',
            backupFailed: '備份操作失敗',
            logsTitle: '日誌',
            noLogs: '無日誌',
            settingsTitle: '設定',
            confirmDelete: '確認刪除',
            confirmDeleteText: '您確定要刪除此實例嗎？此操作無法復原。',
            confirmStop: '確認停止',
            confirmStopText: '您確定要停止此實例嗎？',
            confirmRestart: '確認重新啟動',
            confirmRestartText: '您確定要重新啟動此實例嗎？',
            confirmForceStop: '確認強制停止',
            confirmForceStopText: '強制停止可能會導致資料遺失。您確定要繼續嗎？',
            confirmReinstall: '確認重裝系統',
            confirmReinstallText: '重裝系統將清除所有資料。您確定要繼續嗎？',
            typeInstanceNameToConfirm: '輸入實例名稱「{name}」以確認刪除',
            deleteWarning: '此操作不可復原！所有資料將被永久刪除。',
            startSuccess: '實例啟動成功',
            stopSuccess: '實例停止成功',
            restartSuccess: '實例重新啟動成功',
            deleteSuccess: '實例刪除成功',
            startFailed: '實例啟動失敗',
            stopFailed: '實例停止失敗',
            restartFailed: '實例重新啟動失敗',
            deleteFailed: '實例刪除失敗',
            renameSuccess: '實例重新命名成功',
            renameFailed: '實例重新命名失敗',
            reinstallSuccess: '實例重裝成功',
            reinstallFailed: '實例重裝失敗',
            instanceNamePlaceholder: '輸入實例名稱',
            cpuCores: '{cores} 核心',
            memorySize: '{size} 記憶體',
            diskSize: '{size} 磁碟',
            viewConsole: '開啟控制台',
            viewTerminal: '開啟終端機',
            uptime: '運行時間',
            uptimeValue: '{days} 天 {hours} 小時 {minutes} 分鐘',
            uptimeDays: '{days} 天',
            uptimeHours: '{hours} 小時',
            uptimeMinutes: '{minutes} 分鐘',
            uptimeSeconds: '{seconds} 秒',
            uptimeShort: '{value}{unit}',
            host: '主機',
            hostInfo: '主機資訊',
            noHostInfo: '無主機資訊',
            package: '方案',
            packageInfo: '方案資訊',
            noPackageInfo: '無方案資訊',
            created: '建立於',
            basicInfo: '基本資訊',
            instanceName: '實例名稱',
            instanceId: '實例 ID',
            image: '映像檔',
            os: '作業系統',
            kernel: '核心',
            instanceType: '實例類型',
            cpu: 'CPU',
            memory: '記憶體',
            disk: '磁碟',
            traffic: '流量',
            trafficUsed: '已使用流量',
            trafficTotal: '總流量',
            trafficReset: '流量重設時間',
            bandwidth: '頻寬',
            incusId: 'Incus ID',
            incusIdHint: '實例在 Incus 中的唯一標識符',
            currentUsage: '目前使用量',
            noCurrentUsage: '無法取得目前使用量',
            noTrafficInfo: '無流量資訊',
            usageNote: '注意：記憶體和磁碟使用量需要安裝 guest agent',
            specDefault: '預設規格',
            specCustom: '自訂規格',
            hostName: '主機名稱',
            hostNameHint: '主機在系統中的名稱',
            hostOwner: '主機擁有者',
            publicIpHint: '連接到實例的公網位址',
            noPublicIp: '無公網 IP',
            location: '位置',
            packageName: '方案名稱',
            specConfig: '規格設定',
            specConfigHint: 'CPU / 記憶體 / 磁碟空間',
            noPackage: '無方案資訊',
            snapshotQuota: '快照配額',
            backupQuota: '備份配額',
            portQuota: '連接埠配額',
            quotaUsage: '{used} / {total}',
            quotaUnlimited: '無限制',
            sshAccess: 'SSH 連接',
            sshAccessHint: '透過 SSH 連接到實例',
            sshCommand: 'SSH 指令',
            sshCopied: 'SSH 指令已複製',
            ssh: {
                title: 'SSH 連接',
                hint: '使用 SSH 連接到實例',
                command: 'SSH 指令',
                port: 'SSH 連接埠',
                noPublicIp: '無公網 IP，無法使用 SSH 連接',
                noSshPort: '未設定 SSH 連接埠映射',
                copyCommand: '複製指令',
                copied: 'SSH 指令已複製',
                user: 'SSH 使用者',
                defaultUser: '預設使用者',
                userHint: '根據映像檔，預設使用者可能是 root、ubuntu 或 debian 等',
                connectWith: '連接方式',
            },
            deletePending: '實例已標記為刪除，正在處理中...',
            cancelDelete: '取消刪除',
            cancelDeleteSuccess: '已取消刪除實例',
            cancelDeleteFailed: '取消刪除失敗',
            cancelDeleteConfirm: '確認取消刪除',
            cancelDeleteConfirmText: '確定要取消刪除此實例嗎？',
            reinstallConfirmTitle: '確認重裝系統',
            reinstallConfirmText: '重裝系統將清除實例所有資料，此操作不可復原！',
            reinstallSelectImage: '選擇新系統',
            reinstallCurrentImage: '目前系統：{image}',
            reinstallKeepImage: '保持目前系統',
            reinstallNewPassword: '新 root 密碼',
            reinstallPasswordPlaceholder: '留空則由系統自動產生',
            reinstallButton: '開始重裝',
            reinstalling: '重裝中...',
            deletionScheduled: '刪除已排程，{relativeTime}後執行',
            siteQuota: '站點配額',
        },
        // 站點管理
        sites: {
            title: '建站',
            addSite: '新增站點',
            editSite: '編輯站點',
            addFirstSite: '新增第一個站點',
            empty: '暫無反代站點，點擊上方按鈕新增。',
            description: '設定網域反向代理到實例連接埠',
            add: '新增站點',
            domain: '網域',
            domainPlaceholder: '例如：example.com 或 sub.example.com',
            domainRequired: '請輸入網域',
            domainHint: '輸入要綁定的網域，不支援泛網域',
            wildcardNotAllowed: '不支援泛網域（如 *.example.com）',
            targetPort: '目標連接埠',
            targetPortPlaceholder: '實例內部連接埠，例如：80',
            portHint: '實例內部運行的 Web 服務連接埠（如 80, 3000, 8080）',
            targetPortRequired: '請輸入目標連接埠',
            invalidTargetPort: '請輸入有效的連接埠（1-65535）',
            noSites: '暫無站點',
            deleteSite: '刪除站點',
            confirmDelete: '確定要刪除站點「{domain}」嗎？',
            createSuccess: '站點建立成功',
            updateSuccess: '站點更新成功',
            deleteSuccess: '站點刪除成功',
            createFailed: '建立站點失敗',
            updateFailed: '更新站點失敗',
            deleteFailed: '刪除站點失敗',
            caddyNotEnabled: '主機未啟用 Caddy',
            caddyNotEnabledHint: '目前實例所在主機未啟用 Caddy 反代服務，無法使用建站功能。',
            status: '狀態',
            statusActive: '已生效',
            statusPending: '等待解析',
            statusError: '設定失敗',
            statusDisabled: '已停用',
            statusRetrying: '重試中',
            sslStatus: 'SSL 狀態',
            sslActive: '已啟用',
            sslPending: '申請中',
            sslError: '錯誤',
            refresh: '重新整理設定',
            loadFailed: '載入站點列表失敗',
            addSuccess: '站點新增成功',
            addFailed: '新增站點失敗',
            deleteConfirm: '確定要刪除站點 {domain} 嗎？',
            refreshSuccess: '設定已重新整理',
            refreshFailed: '重新整理設定失敗',
            addedSuccess: '網域新增成功',
            dnsHintDesc: '請前往您的 DNS 服務商新增以下解析記錄：',
            dnsType: '類型',
            dnsHost: '主機',
            dnsValue: '值',
            sslAutoHint: 'DNS 解析生效後，Caddy 將自動申請 SSL 憑證。',
            quotaInfo: '已使用 {used} / {limit} 個站點',
            quotaFull: '已達上限',
            quotaExceeded: '站點配額已達上限',
            disabled: '已停用',
            enable: '啟用',
            disable: '停用',
            enableSite: '啟用站點',
            disableSite: '停用站點',
            enabled: '站點已啟用',
            toggleFailed: '切換狀態失敗',
            enableFailed: '啟用站點失敗',
            disableFailed: '停用站點失敗',
            enableHttps: '啟用 HTTPS',
            httpsHint: '自動申請 Let\'s Encrypt 憑證，存取 HTTP 會跳轉到 HTTPS',
            httpsEnabled: '已啟用 HTTPS',
            httpOnly: '僅 HTTP',
            checkCert: '檢查憑證狀態',
            certCheckFailed: '檢查憑證狀態失敗',
            checkDns: '檢測 DNS',
            dnsActivated: 'DNS 驗證通過，站點已激活',
            dnsResolved: 'DNS 已正確解析',
            dnsCheckFailed: 'DNS 檢測失敗',
            dnsHintWithCheck: 'DNS 設定完成後，點擊「檢測 DNS」激活站點',
            remark: '備註',
            remarkPlaceholder: '選填，如：部落格網站、API 服務等',
            errorMessage: '錯誤訊息',
            noError: '無錯誤',
            visitSite: '存取站點',
            helpTitle: '使用說明',
            helpDomain: '網域需要先將 DNS 解析到主機的公網 IP',
            helpPort: '目標連接埠是您的應用程式在實例內監聽的連接埠',
            helpSSL: 'SSL 憑證會自動申請和續期',
            hostIp: '主機 IP',
            copyIp: '複製 IP',
            ipCopied: 'IP 已複製',
            dnsHelp: '請將以上網域的 DNS A 記錄指向：{ip}',
            caddyNotReady: 'Caddy 反向代理尚未準備就緒',
            caddyNotReadyHint: '請聯繫主機管理員設定 Caddy',
            quotaUsed: '已使用 {used} / {total}',
            unlimited: '無限制',
            cert: {
                title: '憑證狀態',
                valid: '憑證有效',
                disabled: 'HTTPS 未啟用',
                pending: '待激活',
                certPending: '憑證申請中',
            },
        },
        list: {
            title: '我的實例',
            empty: '無實例',
            emptyHint: '您還沒有任何實例，快去建立一個吧！',
            createFirst: '建立第一個實例',
            searchPlaceholder: '搜尋實例名稱、映像檔或主機...',
            filterAll: '全部',
            filterRunning: '運行中',
            filterStopped: '已停止',
            filterError: '錯誤',
            sortName: '名稱',
            sortCreated: '建立時間',
            sortStatus: '狀態',
            viewGrid: '方格檢視',
            viewList: '清單檢視',
        },
        createForm: {
            title: '建立實例',
            selectHost: '選擇主機',
            selectHostHint: '選擇您要在哪個主機上建立實例',
            selectPackage: '選擇方案',
            selectPackageHint: '選擇實例的規格方案',
            selectImage: '選擇映像檔',
            selectImageHint: '選擇實例的作業系統映像檔',
            instanceName: '實例名稱',
            instanceNameHint: '輸入實例的名稱',
            instanceNamePlaceholder: '輸入實例名稱',
            rootPassword: 'Root 密碼',
            rootPasswordHint: '設定實例的 root 密碼',
            rootPasswordPlaceholder: '輸入密碼（留空則自動產生）',
            sshKey: 'SSH 公鑰',
            sshKeyHint: '可選：添加 SSH 公鑰以便 SSH 登入',
            sshKeyPlaceholder: '輸入 SSH 公鑰（可選）',
            createButton: '建立實例',
            creating: '建立中...',
            createSuccess: '實例建立成功',
            createFailed: '實例建立失敗',
            validation: {
                hostRequired: '請選擇主機',
                packageRequired: '請選擇方案',
                imageRequired: '請選擇映像檔',
                nameRequired: '請輸入實例名稱',
                nameInvalid: '實例名稱只能包含小寫字母、數字和連字號，且長度在 2-30 之間',
            },
            nameTip: '名稱在此方案下必須唯一，且使用小寫字母、數字和連字號',
            passwordSecurityHint: '建議使用強密碼，密碼在提交後將被加密儲存',
            passwordGenerateHint: '留空則系統會自動產生隨機強密碼',
            step1: '選擇主機',
            step2: '選擇方案',
            step3: '選擇映像檔',
            step4: '設定實例',
            stepHint: '第 {current} 步 / 共 {total} 步',
            noHosts: '無可用主機',
            noHostsHint: '目前沒有可以建立實例的主機',
            noPackages: '無可用方案',
            noPackagesHint: '此主機沒有可用的方案',
            noImages: '無可用映像檔',
            noImagesHint: '此主機沒有可用的映像檔',
            loadingHosts: '載入主機中...',
            loadingPackages: '載入方案中...',
            loadingImages: '載入映像檔中...',
            selectedHost: '已選主機',
            selectedPackage: '已選方案',
            selectedImage: '已選映像檔',
            showAllImages: '顯示所有映像檔',
            showPopularImages: '只顯示常用映像檔',
            advancedOptions: '進階選項',
            startAfterCreate: '建立後自動啟動',
            autoGeneratePassword: '自動產生密碼',
            showPassword: '顯示密碼',
            hidePassword: '隱藏密碼',
            passwordStrength: '密碼強度',
            passwordWeak: '弱',
            passwordMedium: '中等',
            passwordStrong: '強',
            searchImages: '搜尋映像檔...',
            allDistros: '全部發行版',
            popularDistros: '常用發行版',
            otherDistros: '其他發行版',
            selectImageVersion: '選擇版本',
            imageSize: '映像檔大小',
            imageType: '映像檔類型',
            imageDescription: '映像檔說明',
            instanceTypeTip: '容器輕量快速，虛擬機器提供完整隔離',
            instanceTypeContainer: '容器',
            instanceTypeVM: '虛擬機器',
            packageSpecTip: '方案規格：{cpu} 核心 / {memory} 記憶體 / {disk} 磁碟',
            specsCpu: '{cores} 核心',
            specsMemory: '{size}',
            specsDisk: '{size} 磁碟',
            specsTraffic: '{size}/月流量',
            noTrafficLimit: '無流量限制',
            container: '容器',
            vm: '虛擬機器',
            packageLimit: '方案限制',
            packageLimitHint: '此方案剩餘 {remaining}/{total} 配額',
            hostLocation: '主機位置',
            hostPublicIp: '主機 IP',
            noLocation: '未設定位置',
            creatingInstance: '正在建立實例...',
            creationTip: '建立過程可能需要幾分鐘，請耐心等待',
            summaryTitle: '確認資訊',
            estimatedTime: '預計建立時間',
            estimatedTimeValue: '1-5 分鐘',
            createdPasswordHint: '實例建立成功，密碼為',
            createdPasswordCopy: '點擊複製密碼',
            autoStartEnabled: '將自動啟動',
            noAvailableDistros: '無可用發行版',
            noAvailableVersions: '此發行版無可用版本',
        },
        card: {
            cpu: 'CPU',
            memory: '記憶體',
            disk: '磁碟',
            network: '網路',
            uptime: '運行時間',
            noUptime: '未啟動',
            quickActions: '快速操作',
            moreActions: '更多操作',
            viewDetails: '查看詳情',
            openTerminal: '開啟終端機',
            specs: '規格',
        },
        copy: {
            title: '複製實例',
            description: '建立此實例的副本',
            targetHost: '目標主機',
            targetHostHint: '選擇複製到哪個主機',
            sameHost: '同一主機',
            newName: '新實例名稱',
            newNamePlaceholder: '輸入新實例的名稱',
            keepName: '使用原名稱',
            copyButton: '開始複製',
            copying: '複製中...',
            copySuccess: '實例複製成功',
            copyFailed: '實例複製失敗',
            copyStarted: '實例複製已開始，請稍候...',
            validation: {
                targetHostRequired: '請選擇目標主機',
                nameRequired: '請輸入新實例名稱',
            },
        },
    },

    // 新增連接埠映射彈窗
    portModal: {
        title: '新增連接埠映射',
        protocol: '協定',
        bothHint: '將同時建立 TCP 和 UDP 映射，佔用 2 個配額',
        privatePort: '內部連接埠',
        privatePortRequired: '*',
        privatePortPlaceholder: '容器內部服務連接埠，如 80、22、3306',
        privatePortPlaceholderRange: '如 80 或 80-85',
        publicPort: '公網連接埠',
        publicPortOptional: '(選填)',
        publicPortPlaceholder: '留空自動分配',
        publicPortPlaceholderRange: '如 20000 或 20000-20005',
        publicPortHint: '留空將自動從連接埠池分配可用連接埠',
        publicPortHintWithRange: '可選範圍: {start}-{end}，留空將自動分配',
        remark: '備註',
        remarkOptional: '(選填)',
        remarkPlaceholder: '如：Web服務、資料庫、SSH等',
        cancel: '取消',
        adding: '新增中...',
        add: '新增',
        // 新增：範圍輸入支援
        rangeHint: '支援範圍輸入，如 80-85',
        invalidPortFormat: '連接埠格式無效，請輸入單一連接埠或連接埠範圍（如 80-85）',
        ipv6OnlySshPortHint: '22 連接埠不用映射，直接用公網 IPv6 登入 SSH 就好，正門口已經亮燈了',
        rangeMismatch: '內網連接埠數 ({private} 個) 與公網連接埠數 ({public} 個) 不匹配',
        publicPortOutOfRange: '公網連接埠超出允許範圍 ({start}-{end})',
        quotaPreview: '將建立 {count} 個映射，佔用 {quota} 個配額',
        quotaRemaining: '剩餘 {remain} 個',
        quotaInsufficient: '配額不足，需要 {need} 個，剩餘 {remain} 個',
    },

    // 連接埠衝突解決彈窗
    portConflict: {
        title: '部分連接埠已被佔用',
        subtitle: '共 {count} 個連接埠衝突',
        description: '以下連接埠已被其他實例佔用，您可以修改為新的連接埠或使用系統建議。',
        originalPort: '原連接埠',
        newPort: '新連接埠',
        occupied: '已佔用',
        suggested: '建議',
        rangeHint: '可用範圍: {start}-{end}',
        useSuggested: '使用全部建議',
        cancel: '取消',
        confirm: '確認修改',
    },

    // 重裝系統彈窗
    rebuildModal: {
        title: '重裝系統',
        dangerWarning: '危險操作',
        warningList: {
            dataLoss: '重裝系統將清除實例內的所有資料',
            snapshotLoss: '所有快照將被永久刪除',
            irreversible: '此操作不可回復！',
        },
        preserveInfo: '重裝系統會保留連接埠映射。',
        manualStartHint: '重裝完成後需手動啟動實例。',
        selectImage: '選擇新映像檔',
        imageHint: '只能選擇該節點目前允許的映像檔',
        selectSshKey: '選擇 SSH 金鑰',
        noSshKey: '暫無可用金鑰',
        addSshKeyHint: '請先在設定中新增 SSH 金鑰',
        passwordHint: '重裝後將自動產生新的 root 密碼，可在實例詳情頁查看。',
        cancel: '取消',
        rebuilding: '重裝中...',
        confirmRebuild: '確認重裝',
    },

    // 重建實例彈窗
    recreateModal: {
        title: '重建實例',
        dangerWarning: '危險操作',
        warningList: {
            dataLoss: '重建將清除實例內的所有資料',
            snapshotLoss: '所有快照將被永久刪除',
            portMappingLoss: '所有連接埠映射將被刪除',
            backupLoss: '所有備份記錄和備份策略將被刪除',
            proxySiteLoss: '所有反代站點和快照策略將被刪除',
            irreversible: '此操作不可回復！',
        },
        differenceHint: '重建與重裝不同：不需要先關機，會建立全新的實例替換舊實例。',
        preserveInfo: '重建只保留計費狀態和配額。',
        selectImage: '選擇新映像檔',
        selectSshKey: '選擇 SSH 金鑰',
        noSshKey: '暫無可用金鑰',
        addSshKeyHint: '請先在設定中新增 SSH 金鑰',
        cancel: '取消',
        recreating: '重建中...',
        confirmRecreate: '確認重建',
    },

    // 快照管理
    snapshot: {
        title: '快照',
        autoPolicy: '自動快照已啟用',
        autoPolicyEnabled: '已啟用自動快照',
        currentPolicy: '目前策略',
        disableAutoPolicy: '取消自動',
        minutes: '分鐘',
        manual: '手動管理',
        autoSettings: '自動快照設定',
        create: '建立',
        noQuota: '請先分配快照配額',
        quotaFull: '快照配額已滿',
        createSnapshot: '建立快照',
        noSnapshots: '暫無快照',
        noQuotaAllocated: '未分配快照配額',
        allocateQuotaHint: '請先在「配額」標籤頁中分配快照配額',
        statefulSnapshot: '狀態快照',
        restore: '還原',
        stopInstanceFirst: '請先停止實例',
        delete: '刪除',
        createModal: {
            title: '建立快照',
            name: '名稱',
            nameRequired: '*',
            namePlaceholder: 'snapshot-01',
            description: '描述',
            descriptionPlaceholder: '選填描述',
            stateful: '儲存記憶體狀態（狀態快照）',
            cancel: '取消',
            creating: '建立中...',
            create: '建立',
        },
        policyModal: {
            title: '自動快照設定',
            enable: '啟用自動快照',
            interval: '快照間隔',
            intervalOptions: {
                min10: '每 10 分鐘',
                hour1: '每 1 小時',
                hour6: '每 6 小時',
                hour24: '每 24 小時',
                day3: '每 3 天',
            },
            quotaFromPackage: '配額繼承自方案，目前限制為 {limit} 個。滿額後將自動刪除最早的自動快照。',
            cancel: '取消',
            saving: '儲存中...',
            save: '儲存',
        },
        messages: {
            createSuccess: '快照建立成功',
            createFailed: '建立失敗',
            deleteConfirm: '確定刪除快照「{name}」？此操作不可回復。',
            deleteSuccess: '快照已刪除',
            deleteFailed: '刪除失敗',
            restoreConfirm: '確定將實例還原到快照「{name}」？目前資料將被覆蓋。',
            restoreSuccess: '快照還原成功',
            restoreFailed: '還原失敗',
            stopInstanceFirst: '請先停止實例再還原快照',
            policySaved: '自動快照策略已更新',
            policyDisabled: '自動快照已關閉',
            policySaveFailed: '儲存失敗',
        },
    },

    // 備份管理
    backup: {
        title: '備份',
        autoPolicy: '自動備份已啟用',
        autoPolicyEnabled: '已啟用自動備份',
        currentPolicy: '目前策略',
        disableAutoPolicy: '取消自動',
        minutes: '分鐘',
        manual: '手動管理',
        autoSettings: '自動備份設定',
        create: '建立',
        noQuota: '請先分配備份配額',
        quotaFull: '備份配額已滿',
        createBackup: '建立備份',
        noBackups: '暫無備份',
        noQuotaAllocated: '未分配備份配額',
        allocateQuotaHint: '請先在「配額」標籤頁中分配備份配額',
        status: {
            creating: '建立中',
            ready: '就緒',
            error: '失敗',
        },
        export: '匯出',
        preparing: '準備中...',
        clickToDownload: '點擊下載',
        downloading: '下載中...',
        retry: '重試',
        delete: '刪除',
        createModal: {
            title: '建立備份',
            name: '名稱',
            nameRequired: '*',
            namePlaceholder: 'backup-01',
            description: '描述',
            descriptionPlaceholder: '選填描述',
            expiresIn: '過期天數（選填）',
            neverExpire: '永不過期',
            days7: '7 天',
            days14: '14 天',
            days30: '30 天',
            days90: '90 天',
            year1: '1 年',
            createHint: '備份建立可能需要幾分鐘，請耐心等待。',
            cancel: '取消',
            creating: '建立中...',
            create: '建立',
        },
        policyModal: {
            title: '自動備份設定',
            enable: '啟用自動備份',
            interval: '備份間隔',
            intervalOptions: {
                hour1: '每 1 小時',
                hour6: '每 6 小時',
                hour24: '每 24 小時',
                day3: '每 3 天',
            },
            quotaFromPackage: '配額繼承自方案，目前限制為 {limit} 個。滿額後將自動刪除最早的自動備份。',
            cancel: '取消',
            saving: '儲存中...',
            save: '儲存',
        },
        restore: '還原',
        restoring: '還原中...',
        rollback: '回滾',
        restoreModal: {
            title: '⚠️ 危險操作 - 還原備份',
            warning: '此操作將覆蓋目前實例！',
            warningDetail: '還原操作會停止目前實例，並用備份內容替換。如果還原失敗，您可以選擇回滾到原實例。',
            dataLossWarning: '以下資料將被永久刪除：',
            dataLossItems: {
                backups: '該實例的所有其他備份',
                snapshots: '該實例的所有快照',
            },
            nameChangeNotice: '還原成功後，實例名稱將變更為：{name} | restored:{backup}',
            backupName: '備份名稱',
            instanceName: '目標實例',
            cancel: '取消',
            confirm: '確認還原',
        },
        messages: {
            createSuccess: '備份建立中...',
            createFailed: '建立失敗',
            deleteConfirm: '確定刪除備份「{name}」？此操作不可回復。',
            deleteSuccess: '備份已刪除',
            deleteFailed: '刪除失敗',
            exportFailed: '準備匯出失敗',
            downloadStarted: '下載已開始',
            downloadFailed: '下載失敗',
            policySaved: '自動備份策略已更新',
            policyDisabled: '自動備份已關閉',
            policySaveFailed: '儲存失敗',
            restoreStarted: '正在還原備份「{name}」，請稍候...',
            restoreInProgress: '已有還原任務正在進行中',
            restoreCompleted: '備份還原成功！',
            restoreFailed: '還原失敗',
            rollbackCompleted: '回滾成功，原實例已恢復',
            rollbackFailed: '回滾失敗',
            uploadStarted: '上傳任務已建立',
        },
    },

    // 主機相關
    host: {
        title: '主機',
        titlePlural: '主機',
        create: '新增主機',
        edit: '編輯主機',
        delete: '刪除主機',
        status: {
            online: '線上',
            offline: '離線',
            maintenance: '維護中',
            error: '錯誤',
        },
        detail: {
            title: '主機詳情',
            overview: '總覽',
            instances: '實例',
            packages: '方案',
            stats: '統計',
            settings: '設定',
            hostId: '主機 ID',
            hostName: '主機名稱',
            publicIp: '公網 IP',
            location: '位置',
            description: '描述',
            owner: '擁有者',
            createdAt: '建立時間',
            updatedAt: '更新時間',
            instanceCount: '實例數量',
            packageCount: '方案數量',
            totalResources: '總資源',
            usedResources: '已使用資源',
            availableResources: '可用資源',
            cpuCores: 'CPU 核心',
            memory: '記憶體',
            disk: '磁碟',
            network: '網路',
            noLocation: '未設定位置',
            noDescription: '無描述',
            resourceUsage: '資源使用量',
            resourceUsageTitle: '資源使用概況',
            imageTitle: '映像檔',
            imageCount: '映像檔數量',
            tabs: {
                overview: '總覽',
                instances: '實例',
                packages: '方案',
                images: '映像檔',
                settings: '設定',
            },
        },
        list: {
            title: '主機列表',
            empty: '無主機',
            emptyHint: '目前沒有任何主機',
            searchPlaceholder: '搜尋主機...',
        },
        form: {
            name: '主機名稱',
            namePlaceholder: '輸入主機名稱',
            publicIp: '公網 IP',
            publicIpPlaceholder: '輸入公網 IP',
            location: '位置',
            locationPlaceholder: '例如：中國台灣台北',
            description: '描述',
            descriptionPlaceholder: '輸入主機描述',
            apiUrl: 'API URL',
            apiUrlPlaceholder: '例如：https://host.example.com:8443',
            authSecret: '認證金鑰',
            authSecretPlaceholder: '輸入認證金鑰',
        },
        caddy: {
            title: 'Caddy 反向代理',
            description: '透過 Caddy 為您的實例提供網域反向代理服務，自動申請 SSL 憑證。',
            enabled: '已啟用',
            disabled: '未啟用',
            notInstalled: 'Caddy 尚未安裝，請點擊下方按鈕產生安裝指令。',
            generateCommand: '產生安裝指令',
            installCommand: '安裝指令',
            commandLabel: '在主機上執行以下指令',
            confirmInstalled: '確認已安裝',
            viewCommand: '查看安裝指令',
            resetCredentials: '重設憑據',
            resetConfirm: '重設憑據後，您需要在主機上重新執行安裝指令。確定要繼續嗎？',
            resetSuccess: '憑據已重設，請在主機上重新執行安裝指令',
            resetFailed: '重設憑據失敗',
            testConnection: '測試連線',
            apiPort: 'API 連接埠',
            username: '使用者名稱',
            password: '密碼',
            publicIp: '公網 IP',
            sitesCount: '站點數量',
            loadFailed: '載入 Caddy 狀態失敗',
            generateFailed: '產生安裝指令失敗',
            confirmSuccess: 'Caddy 已確認安裝',
            confirmFailed: '確認失敗',
            testSuccess: '連線成功',
            testFailed: '連線失敗',
            installHint: '安裝步驟',
            step1: '複製上方指令，在主機上以 root 權限執行',
            step2: '等待安裝完成，應看到「Caddy Reverse Proxy Ready」提示',
            step3: '返回此頁面，點擊「確認已安裝」按鈕',
            // 站點列表
            sitesList: '反向代理站點列表',
            sitesTotalCount: '共 {count} 個站點',
            loadSitesFailed: '載入站點列表失敗',
            noSites: '暫無反向代理站點',
            instance: '實例',
            targetPort: '目標連接埠',
            siteActive: '已啟用',
            sitePending: '待啟用',
            siteError: '錯誤',
            siteDisabled: '已停用',
            prevPage: '上一頁',
            nextPage: '下一頁',
            pageInfo: '第 {current}/{total} 頁，共 {count} 筆',
        },
        // 節點創建實例
        createInstance: {
            title: '創建實例',
            selfMode: '給自己創建',
            giftMode: '贈送給使用者',
            selfModeHint: '使用自己的 SSH 金鑰和初始化指令，在當前節點上創建免費實例。',
            giftModeHint: '在當前節點上為其他使用者創建實例。付費實例僅支援贈送免費時長，不會扣費。',
            adminModeHint: '管理員可在目前節點上為指定使用者建立免費實例，或贈送付費實例首期時長。',
            selectPackage: '選擇套餐',
            noPackages: '該節點暫無可用套餐',
            noPackagesHint: '請先在套餐管理中創建並綁定套餐到此節點',
            instanceName: '實例名稱',
            giftDaysLabel: '免費贈送天數',
            giftDaysHint: '僅贈送免費時長，不會從被贈送使用者餘額扣費。',
            giftDaysRange: '範圍：1-365 天',
            giftDuration: '贈送時長',
            giftDurationValue: '免費 {days} 天',
            giftOnlyFreeHint: '免費期結束後，將按所選方案價格正常續費。',
            creating: '正在創建...',
            success: '實例創建成功',
            giftSuccess: '實例已為使用者 {username} 創建',
            userInactive: '該使用者未處於可用狀態',
            cannotGiftToSelf: '如果要給自己創建實例，請切換到「給自己創建」模式',
        },
        // 節點擁有者通知實例使用者
        notify: {
            title: '通知使用者',
            sendToUsers: '通知使用者',
            hint: '站內信會立即發送給本節點上所有實例對應的使用者，系統會自動去重複',
            hintSelected: '站內信會立即發送給選中的 {count} 個實例對應的使用者，系統會自動去重複',
            deliveryHint: '勾選郵件通知後，單一收件人會立即寄信；多位收件人則會進入佇列，並以每分鐘 1 封的節奏發送。',
            messageTitle: '訊息標題',
            titlePlaceholder: '輸入訊息標題',
            titleRequired: '請輸入訊息標題',
            messageContent: '訊息內容',
            contentPlaceholder: '輸入訊息內容',
            contentRequired: '請輸入訊息內容',
            sendEmail: '同時發送郵件通知',
            sendEmailHint: '僅會寄送給已設定電子郵件地址的使用者。批量郵件會自動排隊，避免短時間內集中發信。',
            send: '發送通知',
            sendSuccess: '已成功發送給 {count} 個使用者',
            sendSuccessBase: '站內信已發送給 {count} 個使用者',
            emailDirectSuccess: '郵件已立即發送 {count} 封',
            emailQueuedSuccess: '郵件佇列已新增 {count} 封',
            emailSkipped: '{count} 位使用者未設定電子郵件，已略過郵件發送',
            emailFailed: '{count} 封郵件發送或入佇列失敗',
            sendFailed: '發送失敗',
            // 發送給單個實例使用者
            sendToUser: '發送站內信',
            sendToUserTitle: '發送站內信給 {username}',
            sendToUserHint: '訊息將發送給實例「{instance}」的擁有者',
            sendToUserSuccess: '訊息已發送',
        },
        // 修改續費價格
        price: {
            editPrice: '修改續費價格',
            modalTitle: '修改續費價格',
            hint: '修改實例「{instance}」的續費價格，新價格將於下次續費時生效，本月不受影響。',
            currentPrice: '當前價格',
            newPrice: '新價格',
            placeholder: '輸入新的續費價格',
            effectHint: '新價格將於下次續費時生效，不影響本月剩餘時間',
            minPriceError: '價格不能為負數',
            samePriceError: '新價格與原價格相同',
            updateSuccess: '續費價格已更新，已通知用戶',
            updateFailed: '更新失敗',
        },
        // 批量修改配置
        batchConfig: {
            title: '批量修改配置',
            button: '批量配置',
            targetAll: '應用範圍：主機全部 {count} 個實例',
            targetSelected: '應用範圍：已選中的 {count} 個實例',
            enableFieldHint: '勾選核取方塊以啟用對應欄位的修改',
            // 分類
            section: {
                resources: '資源配置',
                quota: '配額限制',
                permissions: '容器權限',
                advanced: '高級配置',
                io: '儲存 I/O 限制',
                network: '網路限制',
                process: '程序與調度',
                boot: '啟動設定',
            },
            // 欄位
            cpu: 'CPU 核心數',
            memory: '記憶體',
            disk: '磁碟',
            traffic: '流量',
            swapEnabled: 'SWAP 開關',
            swapSize: 'SWAP 大小',
            portLimit: '連接埠數量',
            snapshotLimit: '快照數量',
            backupLimit: '備份數量',
            siteLimit: '站點數量',
            nested: '巢狀虛擬化',
            privileged: '特權容器',
            limitsRead: '讀取限制',
            limitsWrite: '寫入限制',
            limitsIngress: '入站限制',
            limitsEgress: '出站限制',
            limitsProcesses: '最大程序數',
            limitsCpuPriority: 'CPU 優先級',
            bootPriority: '啟動優先級',
            bootAutostart: '開機自啟',
            bootDelay: '啟動延遲',
            shutdownTimeout: '關機逾時',
            // 佔位符
            placeholder: {
                cpu: '如 1, 2, 4',
                memory: '如 512, 1024, 2048',
                disk: '如 10, 20, 50',
                traffic: '如 100, 500, 1000',
                swapSize: '如 512, 1024, 2048',
                limit: '如 5, 10, 20',
                ioLimit: '如 100MB',
                priority: '如 5',
                processLimit: '如 500, 1000',
                bootPriority: '如 0, 1, 2',
            },
            // 狀態
            processing: '正在批量修改配置...',
            processed: '已處理 {current} / {total}',
            // 結果
            success: '成功',
            failed: '失敗',
            successAll: '批量修改成功，共 {count} 個實例',
            partial: '部分成功：{success} 成功，{failed} 失敗',
            allFailed: '全部失敗',
            submitFailed: '提交失敗',
            retrySuccess: '重試成功，共 {count} 個實例',
            retryPartial: '重試部分成功：{success} 成功，{failed} 失敗',
            retryFailed: '重試失敗項',
            failedDetails: '失敗詳情',
            instanceName: '實例名稱',
            incusId: 'Incus ID',
            errorReason: '錯誤原因',
            copyIncusIds: '複製失敗的 Incus ID',
            copiedIncusIds: '已複製 {count} 個 Incus ID',
            // 操作
            submit: '應用配置 ({count})',
            close: '關閉',
            noFieldsEnabled: '請至少啟用一個配置欄位',
            noChanges: '沒有需要修改的配置',
        },
        // 批量遷移實例
        migrate: {
            title: '遷移實例到其他節點',
            button: '改節點',
            selectedCount: '已選擇 {count} 個實例',
            targetNode: '目標節點',
            selectTarget: '請選擇目標節點',
            targetImage: '目標系統',
            selectImage: '請選擇目標系統',
            selectImageRequired: '請選擇目標系統',
            loadImagesFailed: '載入系統列表失敗',
            noImageAvailable: '目標節點無可用系統',
            imageHint: '遷移會使用該系統重建實例，不再沿用實例舊映像',
            instances: '個實例',
            warning: '遷移注意事項',
            warningCloudInit: '將重新執行 cloud-init 初始化',
            warningImage: '實例將使用所選系統重建',
            warningIp: '實例將獲得新的 IP 位址',
            warningNotify: '遷移完成後將通知用戶',
            confirm: '確認遷移',
            migrating: '正在遷移...',
            resultSummary: '成功 {success} 個，失敗 {failed} 個',
            failedInstances: '失敗的實例',
            loadHostsFailed: '載入節點列表失敗',
            selectTargetRequired: '請選擇目標節點',
            noInstancesSelected: '請先選擇要遷移的實例',
            failed: '遷移失敗',
            // 付費實例方案選擇
            targetPlan: '目標方案',
            selectPlan: '請選擇目標方案',
            selectPlanRequired: '請選擇目標方案',
            loadPlansFailed: '載入方案列表失敗',
            noPlanAvailable: '目標節點無可用方案',
            planHint: '付費實例將使用新方案的續費價格，保留原到期時間和優惠碼',
        },
        // 批量贈送時長
        giftDays: {
            title: '贈送時長',
            button: '贈送時長',
            hint: '為選中的付費實例免費延長到期時間，不扣除任何費用。',
            confirm: '將為 {count} 個付費實例贈送時長',
            daysLabel: '贈送天數',
            daysRange: '範圍：1-365 天',
            confirmButton: '確認贈送',
            success: '成功為 {count} 個實例贈送 {days} 天',
            partial: '成功 {success} 個，失敗 {failed} 個',
            failed: '贈送失敗',
            skipped: '跳過了 {count} 個免費實例',
            noPaidInstances: '請選擇付費實例',
        },
    },
    
    // 方案相關
    package: {
        title: '方案',
        titlePlural: '方案',
        create: '建立方案',
        edit: '編輯方案',
        delete: '刪除方案',
        detail: {
            title: '方案詳情',
            specs: '規格',
            cpu: 'CPU',
            memory: '記憶體',
            disk: '磁碟',
            traffic: '流量',
            bandwidth: '頻寬',
            price: '價格',
            instances: '使用此方案的實例',
        },
        list: {
            title: '方案列表',
            empty: '無方案',
            emptyHint: '目前沒有任何方案',
            searchPlaceholder: '搜尋方案...',
        },
        form: {
            name: '方案名稱',
            namePlaceholder: '輸入方案名稱',
            cpu: 'CPU 核心數',
            cpuPlaceholder: '例如：2',
            memory: '記憶體',
            memoryPlaceholder: '例如：2048',
            disk: '磁碟空間',
            diskPlaceholder: '例如：20',
            traffic: '月流量',
            trafficPlaceholder: '例如：1000',
            bandwidth: '頻寬',
            bandwidthPlaceholder: '例如：100',
            price: '價格',
            pricePlaceholder: '例如：10',
        },
        specs: {
            cpu: '{cores} 核心',
            memory: '{size}',
            disk: '{size} 磁碟',
            traffic: '{size}/月流量',
            bandwidth: '{size} 頻寬',
            noLimit: '無限制',
        },
        // 套餐標籤（創建實例頁）
        shared: '好友',
        globalShared: '可用',
        friendPrefix: '好友:',
        myPackage: '我的方案',
        soldOut: '售罄',
    },

    // 個人資料
    profile: {
        title: '個人設定',
        basicInfo: '基本資料',
        security: '安全設定',
        changePassword: '變更密碼',
        currentPassword: '目前密碼',
        newPassword: '新密碼',
        confirmNewPassword: '確認新密碼',
        twoFactor: '兩步驗證',
        enableTwoFactor: '啟用兩步驗證',
        disableTwoFactor: '停用兩步驗證',
        // 帳號部分
        account: {
            title: '帳號',
            username: '使用者名稱',
            uid: 'UID',
            role: '角色',
            email: '電子郵件',
            notSet: '未設定',
            admin: '管理員',
            user: '使用者',
            changeEmail: '修改',
            bindEmail: '綁定',
            emailDialog: {
                titleChange: '修改電子郵件',
                titleBind: '綁定電子郵件',
                stepCurrent: '驗證目前電子郵件',
                stepCurrentSkipped: '目前電子郵件未綁定',
                stepCurrentHint: '請先驗證目前電子郵件，確認這次操作由您本人發起。',
                stepNew: '驗證新電子郵件',
                stepNewHint: '輸入新的電子郵件地址，並完成驗證碼驗證。',
                noCurrentEmailHint: '目前帳戶尚未綁定電子郵件，可直接進入新電子郵件驗證並完成綁定。',
                verifyCurrentTitle: '目前電子郵件驗證',
                verifyCurrentDesc: '驗證碼將發送到目前電子郵件 {email}，通過驗證後才能繼續修改。',
                currentCode: '目前電子郵件驗證碼',
                currentCodePlaceholder: '輸入收到的 6 位驗證碼',
                sendCurrentCode: '發送驗證碼',
                resendCurrentCode: '重新發送',
                currentCodeSent: '目前電子郵件驗證碼已發送',
                currentCodeRequired: '請輸入目前電子郵件驗證碼',
                verifyCurrentAction: '驗證目前電子郵件',
                currentVerifiedSuccess: '目前電子郵件驗證成功',
                currentVerificationExpired: '目前電子郵件驗證已失效，請重新驗證。',
                verifyNewTitle: '新電子郵件驗證',
                verifyNewDesc: '請驗證新的電子郵件地址，完成後將立即更新為新的登入電子郵件。',
                bindEmailDesc: '請驗證新的電子郵件地址，完成後將綁定到目前帳戶。',
                newEmail: '新電子郵件',
                newEmailPlaceholder: '輸入新的電子郵件地址',
                newEmailRequired: '請輸入新的電子郵件地址',
                newEmailInvalid: '請輸入有效的電子郵件地址',
                newEmailSame: '新電子郵件不能與目前電子郵件相同',
                newCode: '新電子郵件驗證碼',
                newCodePlaceholder: '輸入新電子郵件收到的 6 位驗證碼',
                newCodeRequired: '請輸入新電子郵件驗證碼',
                sendNewCode: '發送驗證碼',
                resendNewCode: '重新發送',
                newCodeSent: '新電子郵件驗證碼已發送',
                resendIn: '{seconds}s 後可重新發送',
                confirmAction: '確認提交',
                updateSuccess: '電子郵件已更新',
                verifying: '驗證中...',
                submitting: '提交中...'
            }
        },
        // 頭像
        avatar: {
            title: '頭像風格',
            saveSuccess: '頭像風格已更新',
            saveFailed: '更新頭像風格失敗',
            styles: {
                adventurer: '冒險者',
                adventurerNeutral: '冒險者素雅',
                avataaars: '扁平插畫',
                avataaarsNeutral: '扁平插畫純淨',
                bigEars: '大耳萌',
                bigEarsNeutral: '大耳萌純淨',
                bigSmile: '開懷大笑',
                bottts: '機器人',
                botttsNeutral: '機器人純淨',
                croodles: '抽象塗鴉',
                croodlesNeutral: '抽象塗鴉純淨',
                dylan: '迪倫風',
                funEmoji: '趣味表情',
                glass: '毛玻璃',
                icons: '常用圖示',
                identicon: '幾何雜湊',
                initials: '首字母',
                lorelei: '洛蕾萊',
                loreleiNeutral: '洛蕾萊純淨',
                micah: '邁卡極簡',
                miniavs: '迷你小人',
                notionists: 'Notion風格',
                notionistsNeutral: 'Notion風格純淨',
                openPeeps: '手繪眾生相',
                personas: '人物誌',
                pixelArt: '像素藝術',
                pixelArtNeutral: '像素藝術純淨',
                rings: '同心圓',
                shapes: '幾何圖形',
                thumbs: '拇指人',
            },
        },
        // 資源配額
        resourceQuota: {
            title: '資源配額',
            hosts: '主機',
            instances: '實例',
            friends: '好友',
            unit: '個',
        },
        // 餘額充值
        userBilling: {
            title: '餘額充值',
            balance: '目前餘額',
            frozen: '凍結金額',
            recharge: '充值',
            rechargeTitle: '帳戶充值',
            selectAmount: '選擇金額',
            customAmount: '自訂金額',
            selectProvider: '選擇支付方式',
            noProviders: '暫無可用支付渠道',
            confirmRecharge: '確認充值',
            fee: '手續費',
            actual: '實際到帳',
            balanceLogs: '餘額明細',
            viewLogs: '查看明細',
            rechargeRecords: '充值紀錄',
            viewRecords: '查看紀錄',
            noLogs: '暫無餘額紀錄',
            noRecords: '暫無充值紀錄',
            amountRequired: '請輸入充值金額',
            providerRequired: '請選擇支付方式',
            recharging: '充值中...',
            rechargeSuccess: '充值成功',
            rechargeFailed: '充值失敗',
            loadFailed: '載入失敗',
        },
        // 增加配額
        increaseQuota: {
            title: '增加配額',
            description: '當配額使用率達到50%時，您可以自行增加配額',
            type: '配額類型',
            selectType: '選擇要增加的配額類型',
            hosts: '主機',
            instances: '實例',
            friends: '好友',
            amount: '增加數量',
            hostsAmount: '每次可增加 5 個',
            instancesAmount: '每次可增加 50 個',
            friendsAmount: '每次可增加 10 名',
            submit: '提交',
            submitting: '提交中...',
            success: '配額增加成功',
            failed: '配額增加失敗',
            notEligible: '目前使用率未達到50%，無法增加配額',
            usageTooLow: '目前使用率：{percent}%，需要達到50%才能增加配額',
            selectTypeFirst: '請先選擇配額類型',
            invalidAmount: '增加數量不正確',
            hostsInvalid: '主機每次只能增加 5 個',
            instancesInvalid: '實例每次只能增加 50 個',
            friendsInvalid: '好友每次只能增加 10 名',
        },
        // 密碼部分
        password: {
            title: '變更密碼',
            current: '目前密碼',
            currentPlaceholder: '輸入目前密碼',
            new: '新密碼',
            newPlaceholder: '至少6位',
            confirm: '確認新密碼',
            confirmPlaceholder: '再次輸入新密碼',
            mismatch: '兩次輸入的密碼不一致',
            tooShort: '密碼長度至少6位',
            updated: '密碼已更新',
            updateFailed: '更新失敗',
            updating: '更新中...',
            update: '更新密碼',
        },
        // 雙重驗證
        twoFactorAuth: {
            title: '雙重驗證 (2FA)',
            status: '狀態',
            enabled: '已啟用',
            notEnabled: '未啟用',
            enable: '啟用 2FA',
            disable: '停用 2FA',
            loading: '載入中...',
            description: '啟用雙重驗證後，登入時需要輸入驗證器應用程式產生的動態驗證碼，提高帳號安全性。',
            setup: '設定雙重驗證',
            scanQrCode: '使用 Google Authenticator、Microsoft Authenticator 或其他 TOTP 應用程式掃描 QR 碼',
            manualEntry: '或手動輸入金鑰',
            saveRecoveryCodes: '請儲存以下恢復碼，用於在無法使用驗證器時恢復帳號',
            enterCode: '輸入驗證器顯示的6位驗證碼',
            codePlaceholder: '000000',
            verifying: '驗證中...',
            confirmEnable: '確認啟用',
            cancel: '取消',
            disableTitle: '停用雙重驗證',
            disableDesc: '停用後登入將不再需要驗證碼，請確認操作。',
            password: '目前密碼',
            passwordPlaceholder: '輸入密碼',
            verificationCode: '驗證碼',
            processing: '處理中...',
            confirmDisable: '確認停用',
            recoveryCodesStatus: '恢復碼狀態',
            regenerate: '重新產生',
            remaining: '剩餘',
            used: '已使用',
            lowCodesWarning: '恢復碼即將用完，建議重新產生',
            regenerateTitle: '重新產生恢復碼',
            regenerateDesc: '重新產生後，舊的恢復碼將全部失效。',
            newCodesGenerated: '新恢復碼已產生，請妥善儲存',
            generating: '產生中...',
            confirmGenerate: '確認產生',
            done: '完成',
            enabledSuccess: '雙重驗證已啟用',
            disabledSuccess: '雙重驗證已停用',
            codesRegenerated: '恢復碼已重新產生，請妥善儲存',
            getStatusFailed: '取得狀態失敗',
            initFailed: '初始化失敗',
            verifyFailed: '驗證失敗',
            disableFailed: '停用失敗',
            regenerateFailed: '重新產生失敗',
            enterCodeError: '請輸入6位驗證碼',
            fillPasswordAndCode: '請填寫密碼和驗證碼',
        },
        // 會話管理
        sessions: {
            title: '登入會話',
            logoutAll: '登出所有裝置',
            processing: '處理中...',
            loading: '載入中...',
            noSessions: '暫無活躍會話',
            current: '目前',
            ip: 'IP',
            lastActive: '最後活躍',
            revoke: '撤銷',
            revoked: '會話已撤銷',
            confirmLogout: '確定要登出目前登入嗎？',
            confirmLogoutAll: '確定要登出所有裝置嗎？您需要重新登入。',
            loadFailed: '載入會話失敗',
            revokeFailed: '撤銷會話失敗',
            revokeAllFailed: '撤銷所有會話失敗',
            unknownDevice: '未知裝置',
            unknownBrowser: '未知瀏覽器',
            justNow: '剛剛',
            minutesAgo: '{n} 分鐘前',
            hoursAgo: '{n} 小時前',
            daysAgo: '{n} 天前',
        },
        // OAuth 關聯帳號
        oauth: {
            title: '關聯帳號',
            description: '綁定後可使用快捷登入',
            bound: '已綁定',
            notBound: '未綁定',
            bind: '綁定',
            unbind: '解除綁定',
            noProviders: '暫無可用的第三方登入方式',
            bindSuccess: '{provider} 帳號綁定成功',
            unbindSuccess: '{provider} 帳號已解除綁定',
            unbindFailed: '解除綁定失敗',
            confirmUnbind: '確定解除 {provider} 帳號綁定？解除後將無法使用該方式登入。',
            errors: {
                notLoggedIn: '請先登入後再綁定',
                alreadyBoundOther: '該帳號已被其他使用者綁定',
                invalidSession: '會話已過期，請重新登入',
                bindFailed: '綁定失敗',
                tokenError: '授權失敗，請重試',
                providerDisabled: '該登入方式已被停用',
                oauthError: '認證失敗，請重試',
                missingCode: '授權資訊缺失，請重試',
            },
        },
        // SSH 金鑰
        sshKeys: {
            title: 'SSH 公鑰',
            description: '用於 SSH 連接到實例',
            add: '新增',
            generate: '產生',
            name: '名稱',
            namePlaceholder: '我的筆記型電腦',
            publicKey: '公鑰內容',
            publicKeyPlaceholder: 'ssh-ed25519 AAAA... 或 ssh-rsa AAAA...',
            save: '儲存',
            cancel: '取消',
            noKeys: '暫無公鑰',
            addSuccess: '公鑰新增成功',
            addFailed: '新增失敗',
            deleteSuccess: '公鑰已刪除',
            deleteFailed: '刪除失敗',
            confirmDelete: '確定刪除此公鑰？',
            invalidName: '金鑰名稱格式不正確',
            generateSuccess: '金鑰產生成功',
            generateFailed: '產生失敗',
            privateKeyTitle: '請儲存私鑰',
            privateKeyWarning: '請立即儲存私鑰',
            privateKeyWarningDesc: '系統不會儲存您的私鑰，關閉此彈窗後將無法再次查看。請將私鑰儲存到安全的地方。',
            privateKeyContent: '私鑰內容',
            download: '下載私鑰',
            noPrivateKey: '沒有可下載的私鑰',
            copyFailed: '複製失敗',
            downloadFailed: '下載失敗，請手動複製私鑰',
            prevPage: '上一頁',
            nextPage: '下一頁',
            pageInfo: '第 {current}/{total} 頁，共 {count} 筆',
        },
        // 通知渠道
        notifications: {
            title: '通知渠道',
            description: '接收實例、快照等事件通知',
            add: '新增',
            type: '類型',
            name: '名稱',
            namePlaceholder: '我的通知',
            save: '新增',
            saving: '新增中...',
            cancel: '取消',
            noChannels: '暫無通知渠道',
            addSuccess: '通知渠道新增成功',
            addFailed: '新增失敗',
            deleteSuccess: '通知渠道已刪除',
            deleteFailed: '刪除失敗',
            confirmDelete: '確定刪除此通知渠道？',
            enabled: '已啟用',
            disabled: '已停用',
            enable: '啟用',
            disable: '停用',
            toggleFailed: '操作失敗',
            test: '測試',
            testSuccess: '測試通知已發送',
            testFailed: '測試失敗',
            history: '歷史',
            historyTitle: '通知歷史',
            disabledSuffix: '（已停用）',
            statsTotal: '總計: {count}',
            statsSent: '成功: {count}',
            statsFailed: '失敗: {count}',
            filterAll: '全部',
            filterSent: '成功',
            filterFailed: '失敗',
            loadingLogs: '載入中...',
            noLogs: '暫無通知記錄',
            statusSent: '成功',
            statusFailed: '失敗',
            statusPending: '等待',
            errorPrefix: '錯誤: {error}',
            eventTypes: {
                snapshot_created: '快照建立',
                snapshot_restored: '快照還原',
                snapshot_deleted: '快照刪除',
                backup_created: '備份建立',
                backup_failed: '備份失敗',
                backup_deleted: '備份刪除',
                backup_restored: '備份還原',
                backup_uploaded: '備份上傳',
                instance_created: '實例建立',
                instance_started: '實例啟動',
                instance_stopped: '實例停止',
                instance_deleted: '實例刪除',
                auto_snapshot: '自動快照',
                auto_backup: '自動備份',
                traffic_warning: '流量預警',
                traffic_throttled: '流量限速',
                test: '測試通知',
            },
            telegram: {
                botToken: 'Bot Token',
                botTokenPlaceholder: '123456:ABC-...',
                chatId: 'Chat ID',
                chatIdPlaceholder: '-100123456789',
            },
            discord: {
                webhookUrl: 'Webhook URL',
                webhookUrlPlaceholder: 'https://discord.com/api/webhooks/...',
            },
            webhook: {
                url: 'URL',
                urlPlaceholder: 'https://example.com/webhook',
                secret: 'Secret（可選）',
                secretPlaceholder: '用於驗證簽名',
            },
        },
        telegramBinding: {
            title: 'Telegram 綁定',
            description: '綁定後可用於私有使用者群准入等功能。',
            refresh: '重新整理',
            refreshing: '重新整理中',
            unavailableTitle: '暫未啟用',
            unavailableDescription: '管理員尚未啟用或尚未完整設定 Telegram 綁定。',
            boundTitle: '已綁定 {name}',
            telegramId: 'Telegram ID: {id}',
            boundAt: '綁定時間: {date}',
            joinHint: '如需申請私有群，私訊 {bot} 發送',
            unlink: '解除綁定',
            unlinking: '解除中',
            unboundTitle: '未綁定 Telegram',
            unboundDescription: '點擊產生連結後，會跳轉到 {bot}。在 Telegram 內點擊開始即可完成綁定。',
            generate: '產生綁定連結',
            generating: '產生中',
            openTelegram: '打開 Telegram',
            copyLink: '複製連結',
            linkHint: '連結 10 分鐘內有效，完成綁定後回到本頁重新整理狀態。',
            expiresAt: '過期時間: {date}',
            generated: 'Telegram 綁定連結已產生',
            generateFailed: '產生綁定連結失敗: {error}',
            copied: '綁定連結已複製',
            copyFailed: '複製失敗，請手動複製連結',
            confirmUnlink: '確定解除 Telegram 綁定？',
            unlinked: 'Telegram 綁定已解除',
            unlinkFailed: '解除綁定失敗: {error}',
        },
        // 遠端儲存
        storage: {
            title: '遠端儲存',
            description: '設定 WebDAV/FTP/SFTP 儲存，用於備份上傳',
            add: '新增',
            name: '名稱',
            namePlaceholder: '我的 NAS',
            type: '類型',
            host: '主機位址',
            port: '連接埠',
            username: '使用者名稱',
            password: '密碼',
            passwordUnchanged: '留空則不修改',
            basePath: '基礎路徑',
            setAsDefault: '設為預設',
            default: '預設',
            setDefault: '設為預設',
            test: '測試',
            noConfigs: '暫無儲存設定',
            nameHostRequired: '請填寫名稱和主機位址',
            createSuccess: '儲存設定建立成功',
            updateSuccess: '儲存設定更新成功',
            deleteSuccess: '儲存設定已刪除',
            saveFailed: '儲存失敗',
            deleteFailed: '刪除失敗',
            hasActiveTasks: '無法刪除：該儲存設定有上傳任務正在進行中',
            confirmDelete: '確定刪除此儲存設定？',
            testSuccess: '連線測試成功',
            testFailed: '連線測試失敗',
            setDefaultSuccess: '已設為預設',
            setDefaultFailed: '設定失敗',
        },
        // 登入歷史
        loginHistory: {
            title: '登入歷史',
            description: '查看您的帳號登入記錄',
            empty: '暫無登入記錄',
        },
    },

    // 好友系統
    friends: {
        title: '好友',
        description: '管理您的好友列表，好友之間可以共享資源',
        friendsList: '好友列表',
        pendingRequests: '待處理的請求',
        historyRequests: '歷史記錄',
        myFriends: '我的好友',
        friendRequests: '好友請求',
        addFriend: '加好友',
        addFriendHint: '輸入使用者名稱或電子郵件搜尋好友',
        searchPlaceholder: '搜尋好友...',
        noFriends: '暫無好友',
        noFriendsHint: '您還沒有新增任何好友',
        noSearchResult: '未找到符合的好友',
        noHistorySearchResult: '未找到符合的歷史記錄',
        noRequests: '暫無好友請求',
        noRequestsHint: '目前沒有待處理的好友請求',
        noPendingRequests: '暫無待處理的好友請求',
        noHistoryRecords: '暫無歷史記錄',
        noHistoryRecordsHint: '已處理的好友請求將顯示在這裡',
        sendRequest: '發送請求',
        cancelRequest: '取消請求',
        acceptRequest: '接受',
        accept: '接受',
        rejectRequest: '拒絕',
        reject: '拒絕',
        removeFriend: '刪除好友',
        removeFriendConfirm: '確定要刪除好友「{name}」嗎？',
        confirmRemove: '確定要刪除好友 {name} 嗎？',
        requestSent: '好友請求已發送',
        requestAccepted: '已接受好友請求',
        requestRejected: '已拒絕好友請求',
        requestCancelled: '已取消好友請求',
        friendRemoved: '好友已刪除',
        searchUser: '搜尋使用者',
        userNotFound: '找不到使用者',
        alreadyFriend: '已經是好友了',
        alreadyRequested: '已發送過好友請求',
        cannotAddSelf: '無法新增自己為好友',
        sentRequests: '已發送的請求',
        receivedRequests: '收到的請求',
        friendSince: '成為好友於',
        addedOn: '新增於',
        requestedOn: '請求於',
        sentOn: '發送於',
        sentTo: '發送給 {username}',
        processedOn: '處理於',
        statusAccepted: '已接受',
        statusRejected: '已拒絕',
        filterAll: '全部',
        filterAccepted: '已接受',
        filterRejected: '已拒絕',
        hosts: '節點',
        instances: '實例',
        username: '使用者名稱',
        usernamePlaceholder: '輸入對方使用者名稱',
        usernameHint: '輸入您想新增的好友使用者名稱',
        remark: '備註',
        remarkPlaceholder: '請輸入備註資訊（選填）',
        remarkHint: '例如：認識原因、用途說明等',
        status: {
            online: '線上',
            offline: '離線',
        },
        tabs: {
            friends: '好友列表',
            received: '待處理的請求',
            sent: '已發送',
            history: '歷史記錄',
            invites: '邀請碼',
        },
        userSearchPlaceholder: '輸入使用者名稱搜尋...',
        searching: '搜尋中...',
        searchResults: '搜尋結果',
        noSearchResults: '找不到符合的使用者',
        add: '新增',
        adding: '新增中...',
        added: '已新增',
        pending: '等待中',
        accepting: '接受中...',
        rejecting: '拒絕中...',
        removeConfirmTitle: '刪除好友',
        removing: '刪除中...',
        // 邀請碼
        invites: '邀請碼',
        generateInvite: '產生邀請碼',
        generateInviteTitle: '產生邀請碼',
        inviteCode: '邀請碼',
        inviteStatus: '狀態',
        inviteUsed: '已使用',
        inviteExpired: '已過期',
        inviteUnused: '未使用',
        usedBy: '使用者',
        createdAt: '建立時間',
        expiresAt: '過期時間',
        permanent: '永久有效',
        noInvites: '暫無邀請碼',
        noInvitesHint: '產生邀請碼後，其他使用者可以使用它們註冊帳號',
        inviteCount: '產生數量',
        inviteCountHint: '可以批量產生 1-10 個邀請碼',
        expireDays: '過期天數',
        expireDaysPlaceholder: '0 表示永不過期',
        expireDaysHint: '設定邀請碼的過期時間，0 表示永不過期',
        generate: '產生',
        confirmDeleteInvite: '確定刪除邀請碼 {code}？',
        inviteDeleted: '邀請碼已刪除',
        inviteGenerated: '邀請碼已產生',
        copyCode: '複製邀請碼',
        copyLink: '複製邀請連結',
        inviteCodeCopied: '邀請碼已複製',
        inviteLinkCopied: '邀請連結已複製',
        close: '關閉',
        deleteInvite: '刪除',
        requestAlreadyPending: '好友請求已在待處理中',
        requestNotFound: '請求不存在或已處理',
        friendshipNotFound: '好友關係不存在',
        // 套餐共享
        selectFriendHint: '請選擇一個好友',
        selectFriendDesc: '點擊左側好友卡片來管理方案共享',
        sharedPackages: '已共享的方案',
        availablePackages: '可共享的方案',
        noSharedPackages: '尚未共享任何方案',
        addShare: '新增共享',
        addFirstShare: '共享第一個方案',
        removeShare: '取消共享',
        editQuota: '編輯配額',
        quotaMultiplier: '配額倍數',
        quotaMultiplierHint: '例如 1、1.5、2 倍，設定好友可使用的資源比例',
        maxInstances: '最大實例數',
        maxInstancesHint: '限制好友可建立的實例數量',
        noLimit: '無限制',
        currentUsage: '目前使用',
        shareAdded: '方案已共享',
        shareRemoved: '已取消共享',
        quotaUpdated: '配額已更新',
        confirmRemoveShare: '確定要取消共享方案 {package} 嗎？',
        addShareTitle: '共享方案',
        shareToFriend: '共享給該好友',
        selectPackage: '選擇方案',
        selectPackagePlaceholder: '請選擇要共享的方案',
        confirmShare: '確認共享',
        editQuotaTitle: '編輯配額限制',
        sharedTo: '共享給',
        noPackagesToShare: '您還沒有可共享的方案',
        createPackageFirst: '請先在「我的方案」中建立方案',
        noPackageSearchResult: '未找到符合的方案',
    },

    // 移轉系統
    transfers: {
        title: '實例移轉',
        description: '將您的實例移轉給好友',
        myTransfers: '我的移轉',
        receivedTransfers: '收到的移轉',
        createTransfer: '發起移轉',
        noTransfers: '暫無移轉記錄',
        noTransfersHint: '您還沒有任何移轉記錄',
        noReceivedTransfers: '暫無收到的移轉',
        noReceivedTransfersHint: '目前沒有收到的移轉請求',
        selectInstance: '選擇實例',
        selectInstanceHint: '選擇要移轉的實例',
        selectFriend: '選擇好友',
        selectFriendHint: '選擇移轉接收者',
        transferNote: '備註',
        transferNotePlaceholder: '輸入備註資訊（可選）',
        confirmTransfer: '確認移轉',
        cancelTransfer: '取消移轉',
        acceptTransfer: '接受移轉',
        rejectTransfer: '拒絕移轉',
        transferSuccess: '移轉請求已發送',
        transferAccepted: '移轉已接受',
        transferRejected: '移轉已拒絕',
        transferCancelled: '移轉已取消',
        status: {
            pending: '待處理',
            accepted: '已接受',
            rejected: '已拒絕',
            cancelled: '已取消',
            expired: '已過期',
        },
        from: '來自',
        to: '移轉給',
        instance: '實例',
        createdAt: '建立時間',
        expiresAt: '過期時間',
        noInstances: '無可移轉的實例',
        noFriends: '無好友可選擇',
        addFriendFirst: '請先新增好友',
        tabs: {
            sent: '已發送',
            received: '已接收',
        },
        sentEmpty: '暫無發送的移轉請求',
        receivedEmpty: '暫無收到的移轉請求',
        viewInstance: '查看實例',
        transferPending: '移轉待處理',
        expire: '過期',
        accept: '接受',
        reject: '拒絕',
        cancel: '取消',
        note: '備註',
        acceptConfirm: '確認接受移轉',
        acceptConfirmText: '接受移轉後，此實例將歸您所有。確定要接受嗎？',
        rejectConfirm: '確認拒絕移轉',
        rejectConfirmText: '拒絕後，此移轉請求將被取消。確定要拒絕嗎？',
        cancelConfirm: '確認取消移轉',
        cancelConfirmText: '確定要取消此移轉請求嗎？',
        expiresInDays: '{days} 天後過期',
        expiresInHours: '{hours} 小時後過期',
        expired: '已過期',
    },

    // 日誌
    logs: {
        title: '系統日誌',
        module: '模組',
        allModules: '全部模組',
        search: '搜尋',
        searchPlaceholder: '搜尋使用者名稱、操作或內容...',
        reset: '重設',
        time: '時間',
        user: '使用者',
        action: '操作',
        content: '內容',
        result: '結果',
        system: '系統',
        loading: '載入中...',
        noLogs: '暫無日誌記錄',
        loadFailed: '載入日誌失敗',
        loadModulesFailed: '載入模組列表失敗',
        totalRecords: '共 {total} 筆記錄，第 {page} / {totalPages} 頁',
        success: '成功',
        failed: '失敗',
        expand: '展開',
        collapse: '收起',
    },

    // 說明頁面
    help: {
        title: '說明中心',
        search: '搜尋說明文件...',
        description: '查看使用指南和常見問題',
        backToHelp: '返回說明中心',
        updatedAt: '更新於 {date}',
        all: '全部',
        noArticles: '暫無說明文件',
        articleNotFound: '文件不存在或已被刪除',
        totalArticles: '共 {count} 篇文件',
        categories: {
            general: '常規',
            gettingStarted: '快速開始',
            instances: '實例管理',
            networking: '網路設定',
            billing: '計費相關',
            faq: '常見問題',
        },
    },

    // 日誌模組翻譯
    logModules: {
        security: '安全事件',
        instance: '實例操作',
        snapshot: '快照操作',
        backup: '備份操作',
        image: '映像檔操作',
        host: '節點操作',
        package: '方案操作',
        user: '使用者管理',
        personal: '個人設定',
        ssh_key: 'SSH 金鑰',
        notification: '通知設定',
        system: '系統設定',
        auth: '認證操作',
        storage: '遠端儲存',
        // 相容舊資料中的中文模組名
        '登入操作': '登入操作',
        '安全事件': '安全事件',
        '實例操作': '實例操作',
        '快照操作': '快照操作',
        '備份操作': '備份操作',
        '映像檔操作': '映像檔操作',
        '節點操作': '節點操作',
        '節點組操作': '節點組操作',
        '方案操作': '方案操作',
        '使用者管理': '使用者管理',
        '個人設定': '個人設定',
        '通知設定': '通知設定',
        '系統設定': '系統設定',
        '認證操作': '認證操作',
        '遠端儲存': '遠端儲存',
    },

    // 日誌操作翻譯
    logActions: {
        // 安全事件
        'login_success': '登入成功',
        'login_failed': '登入失敗',
        'logout': '登出',
        'register_success': '註冊成功',
        'rate_limit_exceeded': '登入嘗試過多',
        'invalid_invite_code': '無效邀請碼',
        'suspicious_activity': '可疑活動',
        'permission_denied': '權限不足',
        'unauthorized_access': '未授權存取',
        'admin_action': '管理員操作',
        // 實例操作
        'instance.create': '建立實例',
        'instance.delete': '刪除實例',
        'instance.start': '啟動實例',
        'instance.stop': '停止實例',
        'instance.restart': '重新啟動實例',
        'instance.rebuild': '重裝系統',
        'instance.recreate': '重建實例',
        'instance.change_host': '改節點',
        'instance.cloud_init_manual_complete': '手動完成初始化檢測',
        'instance.update_quota': '更新實例配額',
        'instance.rename': '重新命名實例',
        // 連接埠映射
        'port.add': '新增連接埠映射',
        'port.delete': '刪除連接埠映射',
        // 快照操作
        'snapshot.create': '建立快照',
        'snapshot.delete': '刪除快照',
        'snapshot.restore': '還原快照',
        // 備份操作
        'backup.create': '建立備份',
        'backup.delete': '刪除備份',
        'backup.export': '匯出備份',
        // 映像檔操作
        'image.sync': '同步映像檔',
        'image.delete': '刪除映像檔',
        'image.create': '建立映像檔',
        'image.update': '更新映像檔',
        // 節點操作
        'host.create': '新增節點',
        'host.update': '更新節點',
        'host.delete': '刪除節點',
        'host.test': '測試節點',
        // 方案操作
        'package.create': '建立方案',
        'package.update': '更新方案',
        'package.delete': '刪除方案',
        // 使用者管理
        'user.ban': '封禁使用者',
        'user.unban': '解除封禁',
        'user.delete': '刪除使用者',
        'user.update_quota': '更新使用者配額',
        'user.revoke_sessions': '撤銷使用者會話',
        // 個人設定
        'profile.update': '更新個人資料',
        'password.change': '變更密碼',
        // SSH 金鑰
        'ssh_key.add': '新增 SSH 金鑰',
        'ssh_key.delete': '刪除 SSH 金鑰',
        // 通知設定
        'notification.add': '新增通知管道',
        'notification.delete': '刪除通知管道',
        // 安全設定
        '2fa.setup': '設定雙重驗證',
        '2fa.enable': '啟用雙重驗證',
        '2fa.disable': '停用雙重驗證',
        '2fa.recovery_reset': '重設恢復碼',
        // 認證操作
        'session.revoke': '撤銷會話',
        'session.revoke_all': '撤銷所有會話',
        // 系統設定
        'system.config_update': '更新系統設定',
        // 幫助文件
        'help.create': '建立幫助文件',
        'help.update': '更新幫助文件',
        'help.delete': '刪除幫助文件',
        // 備份上傳操作
        'backup.upload': '上傳備份',
        'backup.upload.queue': '備份上傳排隊',
        'backup.upload.cancel': '取消備份上傳',
        // 備份還原操作
        'backup.restore': '還原備份',
        'backup.restore.rollback': '回滾還原',
        'backup.restore.cancel': '取消還原',
        // 儲存設定操作
        'storage.create': '建立儲存設定',
        'storage.update': '更新儲存設定',
        'storage.delete': '刪除儲存設定',
        // AFF 推薦計劃
        'aff.create_code': '建立優惠碼',
        'aff.convert_request': '申請 AFF 轉化',
        'aff.approve_convert': '審核通過 AFF 轉化',
        'aff.reject_convert': '審核拒絕 AFF 轉化',
    },

    // 日誌結果翻譯
    logResults: {
        success: '成功',
        failed: '失敗',
        warning: '警告',
    },

    // 管理後台
    admin: {
        statistics: {
            title: '統計',
            description: '使用者、實例和計費資料',
            timezone: '{timezone}',
            refresh: '重新整理',
            reload: '重新載入',
            noData: '暫無統計資料',
            loadFailed: '統計資料載入失敗：{message}',
            unknownError: '未知錯誤',
            tooltip: '{label} · {value}',
            tabs: {
                users: '使用者',
                instances: '實例',
                billing: '計費',
            },
            periods: {
                daily: '每日',
                monthly: '每月',
            },
            billingMetrics: {
                recharge: '儲值',
                consume: '消費',
                aff: '返利',
                destroyFee: '銷毀手續費',
            },
            ranges: {
                last30Days: '近 30 天',
                last12Months: '近 12 個月',
            },
            cards: {
                totalUsers: '總使用者數',
                recentDailyNewUsers: '近 30 天新增',
                recentMonthlyNewUsers: '近 12 月新增',
                averageNewUsers: '平均新增',
                totalInstances: '系統總實例數',
                availableInstances: '可用實例',
                recentDailyCreatedInstances: '近 30 天建立',
                recentMonthlyCreatedInstances: '近 12 月建立',
                totalRecharge: '累計儲值',
                totalConsume: '累計消費',
                totalAff: '累計返利',
                totalDestroyFee: '累計銷毀手續費',
            },
            captions: {
                currentTotal: '目前累計',
                dailyAggregate: '按日彙總',
                monthlyAggregate: '按月彙總',
                dailyAverage: '日均',
                monthlyAverage: '月均',
                nonDeletedInstances: '未刪除實例',
                notDeletedOrSuspended: '非刪除 / 非封停',
                completedOrders: '已完成訂單',
                totalScope: '託管和直營合計',
                affCommission: 'AFF 新購 / 續費',
                userDestroyFee: '使用者銷毀實例手續費',
            },
            sections: {
                newUsers: '新增使用者',
                createdInstances: '建立實例',
                paidFreeInstances: '付費 / 免費實例',
                paidFreeDescription: '目前未刪除實例占比',
                metricTrend: '{metric}趨勢',
                billingScope: '{range}，託管和直營合計',
            },
            labels: {
                paidInstances: '付費實例',
                freeInstances: '免費實例',
            },
        },
        hosting: {
            title: '託管',
            description: '查看符合條件的託管機主和託管經營資料',
            loadFailed: '載入託管資料失敗：{message}',
            unknownError: '未知錯誤',
            tabs: {
                owners: '託管機主',
                zones: '專區機主',
                hostingVipLevels: '託管 VIP 等級',
            },
            cards: {
                owners: '託管機主',
                ownersCaption: '符合託管條件的使用者',
                hosts: '節點數',
                hostsCaption: '機主已新增的節點',
                instances: '實例數',
                instancesCaption: '機主節點上的未刪除實例',
                totalIncome: '歷史總託管收入',
                totalIncomeCaption: '收入日誌累計',
            },
            owners: {
                title: '託管機主使用者列表',
                description: '已新增節點、已上架公開方案且歷史總託管餘額不為 0 的使用者。',
                searchPlaceholder: '搜尋使用者名稱、ID、信箱...',
                empty: '暫無託管機主',
                emptyHint: '使用者需要同時滿足節點、上架方案和歷史託管餘額條件。',
                user: '使用者',
                vipLevel: 'VIP 等級',
                hostingBalance: '託管餘額',
                frozenBalance: '凍結餘額',
                totalIncome: '歷史總收入',
                hostCount: '節點數',
                packageCount: '上架方案數',
                instanceCount: '實例數',
                createdAt: '註冊時間',
                noEmail: '未設定信箱',
            },
            zones: {
                title: '專區機主列表',
                description: '專區機主會在開通實例頁作為獨立分頁展示，其方案不再出現在託管分頁中。',
                createTitle: '新增專區機主',
                createDescription: '輸入專區名，選擇託管機主使用者，並填寫圖床 LOGO 連結。',
                name: '專區名',
                namePlaceholder: '例如：Tokyoo 專區',
                owner: '託管機主使用者',
                ownerSearchPlaceholder: '搜尋可選託管機主...',
                selectOwner: '請選擇託管機主',
                ownerHint: '已設定專區的機主不會出現在可選列表中。',
                logo: 'LOGO 連結',
                logoPlaceholder: 'https://example.com/logo.png',
                logoHint: '僅支援 http 或 https 圖片連結，系統不會保存圖片檔案。',
                logoPreview: 'LOGO 預覽',
                noLogo: 'LOGO',
                previewName: '專區預覽',
                previewHint: '開通實例頁會以圓形 LOGO 展示。',
                create: '新增專區',
                formRequired: '請填寫專區名、選擇託管機主並填寫 LOGO 連結',
                logoInvalid: '請填寫有效的 http 或 https LOGO 圖片連結',
                createSuccess: '專區機主已新增',
                createFailed: '新增專區機主失敗',
                loadFailed: '載入專區機主失敗：{message}',
                deleteConfirm: '確定刪除專區「{name}」嗎？刪除後該機主方案會重新顯示在託管分頁中。',
                deleteSuccess: '專區機主已刪除',
                deleteFailed: '刪除專區機主失敗',
                empty: '暫無專區機主',
                emptyHint: '新增後會顯示在開通實例頁的直營與託管之間。',
                zone: '專區',
            },
        },
        vipRules: {
            userTitle: '使用者 VIP 等級',
            userDescription: '全域選擇累計充值或累計消費作為使用者會員口徑，並按該口徑動態計算會員等級，最高 VIP10。',
            hostingTitle: '託管 VIP 等級',
            hostingDescription: '按累計託管收入、目前託管實例數動態計算託管等級，最高 VIP10。',
            level: '等級',
            badgeBgColor: '標籤背景色',
            badgeTextColor: '標籤字體色',
            enabled: '啟用',
            mode: '條件關係',
            modeAny: '滿足任一',
            modeAll: '同時滿足',
            userMetricTitle: '使用者 VIP 統計口徑',
            userMetricHint: '全站使用者 VIP 只能使用一種升級口徑。切換後，每個等級只儲存並計算目前口徑對應的門檻。',
            metricRecharge: '按累計充值',
            metricConsume: '按累計消費',
            minRecharge: '累計充值滿（元）',
            minConsume: '累計消費滿（元）',
            minHostingIncome: '累計託管收入滿（元）',
            minHostingInstances: '目前託管實例數滿',
            noLimit: '不限制',
            save: '儲存等級規則',
            saveSuccess: 'VIP 等級規則已儲存',
            saveFailed: '儲存 VIP 等級規則失敗',
            loadFailed: '載入 VIP 等級規則失敗：{message}',
            unknownError: '未知錯誤',
            conditionRequired: 'VIP{level} 至少需要配置一個條件',
            moneyThresholdInvalid: 'VIP{level} 的金額條件必須是大於 0 的數字',
            instanceThresholdInvalid: 'VIP{level} 的實例數條件必須是正整數',
            colorInvalid: 'VIP{level} 的標籤顏色必須是 #RRGGBB 格式',
        },
        vipBenefits: {
            title: '會員福利大廳設定',
            description: '為已啟用的使用者 VIP 等級配置可領取福利。餘額和積分會自動發放，實例獎品會建立待發放記錄。',
            save: '儲存福利設定',
            saveSuccess: '會員福利設定已儲存',
            saveFailed: '儲存會員福利設定失敗',
            loadFailed: '載入會員福利設定失敗',
            loadPlansFailed: '載入套餐方案失敗',
            noEnabledLevels: '暫無已啟用的使用者 VIP 等級，請先在使用者 VIP 等級中啟用等級。',
            levelTitle: 'VIP{level} 福利',
            levelHint: '使用者達到該等級後，可在福利大廳領取對應獎勵。',
            addReward: '新增獎品',
            noRewardsForLevel: '該等級暫無獎品。',
            rewardDefaultTitle: '福利',
            rewardTitle: '獎品標題',
            rewardType: '獎品類型',
            rewardDescription: '獎品說明',
            claimLimit: '領取次數',
            sortOrder: '排序',
            enabled: '啟用',
            disabled: '停用',
            types: {
                balance: '餘額',
                points: '積分',
                instance: '實例',
            },
            balanceTitle: '領取贈金',
            balanceDesc: '發放到使用者帳戶餘額，可用於實例續費或新購。',
            balanceAmount: '贈金金額（元）',
            pointsTitle: '領取積分',
            pointsDesc: '發放到使用者積分帳戶，可用於福利和積分消耗。',
            pointsAmount: '積分數量',
            instanceTitle: '領取套餐實例',
            instanceDesc: '指定一個套餐方案，使用者領取後進入待發放狀態，後續可擴展自動建立。',
            package: '套餐',
            plan: '方案',
            selectPackage: '選擇套餐',
            selectPlan: '選擇方案',
            instanceDays: '贈送天數',
            instanceQuantity: '數量',
            balancePreview: '贈金 {amount}',
            pointsPreview: '積分 {amount}',
            instancePreview: '套餐實例',
            instancePreviewWithPlan: '{plan} · {quantity} 台 · {days} 天',
            titleRequired: 'VIP{level} 的獎品標題不能為空',
            claimLimitInvalid: 'VIP{level} 的領取次數必須是正整數',
            amountInvalid: 'VIP{level} 的餘額或積分獎品數量必須大於 0',
            balanceInvalid: 'VIP{level} 的贈金金額必須大於 0',
            pointsInvalid: 'VIP{level} 的積分數量必須是正整數',
            instancePlanRequired: 'VIP{level} 的套餐實例福利需要選擇套餐和方案',
            instanceDaysInvalid: 'VIP{level} 的贈送天數必須是正整數',
            instanceQuantityInvalid: 'VIP{level} 的實例數量必須是正整數',
        },
        title: '管理後台',
        description: '系統管理',
        system: {
            title: '系統設定',
            description: '配置系統初始參數和預設值',
            tabs: {
                system: '系統設定',
                popupAnnouncement: '彈窗公告',
                telegram: 'Telegram 設定',
            },
            sections: {
                access: {
                    title: '訪問與註冊',
                    description: '管理註冊入口、邀請碼生成、預設配額和實例轉移規則',
                },
                hosting: {
                    title: '託管與站點',
                    description: '管理託管入口、託管公告和免費站贈送策略',
                },
                brand: {
                    title: '品牌與外觀',
                    description: '管理系統名稱、Logo、頭像服務和底部聯絡方式',
                },
                security: {
                    title: '安全驗證',
                    description: '管理 Turnstile 人機驗證和註冊信箱網域白名單',
                },
                mail: {
                    title: '郵件服務',
                    description: '管理 SMTP 郵件發送配置和測試郵件',
                },
                tickets: {
                    title: '工單與附件',
                    description: '管理工單入口和工單圖片儲存配置',
                },
            },
            popupAnnouncement: {
                title: '彈窗公告',
                description: '配置使用者訪問網站時彈出的全站公告。',
                content: '公告內容',
                placeholder: '在此輸入彈窗公告內容，留空並儲存表示刪除公告，不再廣播。',
                hint: '使用者看到後可以選擇今日不見或再也不見；公告內容更新後會按新公告重新彈出。',
                promoTitle: '圖片推廣彈窗',
                promoDescription: '配置新機器推廣彈窗，前台會展示圖片並引導使用者購買指定方案。',
                promoImageUrl: '圖片 URL',
                promoImagePlaceholder: 'https://example.com/promo.jpg',
                promoImageHint: '建議使用清晰橫幅圖片，前台會按原比例完整顯示。',
                promoPackage: '目標方案',
                promoPackagePlaceholder: '選擇要推廣的方案',
                promoPackageLoading: '正在載入方案...',
                promoPackageEmpty: '暫無可推廣方案',
                promoPackageHint: '圖片 URL 和目標方案都填寫後才會顯示推廣彈窗。',
                promoPreview: '前台預覽',
                promoPreviewEmpty: '填寫圖片 URL 後顯示預覽',
                promoNoPackage: '尚未選擇方案',
                promoPackageFallback: '目標方案',
            },
            defaultQuota: '使用者預設配額',
            defaultQuotaDesc: '新註冊使用者將自動獲得以下配額限制',
            quotaHost: '預設主機配額',
            quotaHostDesc: '新使用者預設可建立主機數量',
            quotaFriend: '預設好友配額',
            quotaFriendDesc: '新使用者預設可新增好友數量（0 = 未授權）',
            quotaPackage: '預設方案配額',
            quotaPackageDesc: '新使用者預設可建立方案數量（0 = 未授權）',
            registration: '註冊設定',
            registrationDesc: '配置使用者註冊相關選項',
            registrationEnabled: '開放註冊',
            registrationEnabledDesc: '關閉後，新使用者將無法註冊，現有使用者仍可正常登入',
            registrationOpen: '開放註冊',
            registrationClosed: '關閉註冊',
            requireInviteCode: '邀請碼註冊',
            requireInviteCodeDesc: '啟用後，使用者註冊時需要填寫邀請碼',
            openRegistration: '開放註冊',
            inviteOnly: '僅邀請',
            hostingFeature: {
                title: '託管功能',
                description: '控制託管節點與收益入口是否向新使用者顯示，已建立過節點的使用者會持續保留入口。',
                enable: '顯示託管節點入口',
                enableDesc: '關閉後，從未建立過節點的使用者將看不到託管節點與收益入口；已有節點使用者仍可繼續管理。',
                marketEntry: '顯示託管方案購買入口',
                marketEntryDesc: '控制開通實例頁面是否顯示託管專區與託管方案購買入口；關閉後使用者只能從該頁面選擇官方方案。',
                marketEntryVisible: '顯示入口',
                marketEntryHidden: '隱藏入口',
                notice: '託管公告',
                noticePlaceholder: '在此輸入託管公告內容，留空則前台不顯示',
                noticeHint: '顯示在託管收益頁面，支援換行，留空則隱藏。',
                visibleToAll: '所有使用者可見',
                hiddenForNewUsers: '新使用者隱藏',
            },
            brand: {
                title: '品牌設定',
                description: '配置系統名稱、副標題與 Logo，留空則使用預設品牌。',
                name: '系統名稱',
                nameDesc: '顯示在側邊欄、頂部列、登入註冊頁和 SEO 資訊中。',
                subtitle: '網站副標題',
                subtitlePlaceholder: 'Incus 驅動的 NAT VPS 平台',
                subtitleDesc: '顯示在公開站頭部/底部、瀏覽器預設標題和 SEO 預設描述中。',
                logo: 'Logo 位址',
                logoDesc: '支援 http(s) 圖片位址或站內絕對路徑，留空則使用預設 Logo。',
            },
            ticket: {
                title: '工單設定',
                description: '控制一般使用者是否可以發起工單。',
                enable: '開放工單',
                enableDesc: '關閉後，使用者端隱藏工單入口，一般使用者也無法透過 API 建立工單。',
                enabled: '已開放',
                disabled: '已關閉',
            },
            freeSite: {
                title: '白嫖站',
                description: '控制使用者端餘額頁是否展示充值和推薦計畫相關功能。',
                enable: '啟用白嫖站',
                enableDesc: '開啟後，使用者端餘額頁隱藏充值按鈕、充值記錄和推薦計畫，API 也會拒絕建立或重新支付充值訂單。',
                enabled: '已啟用',
                disabled: '未啟用',
                registerGift: '註冊自動贈送',
                registerGiftDesc: '開啟後，新使用者註冊成功會自動收到餘額和積分到帳通知。',
                giftEnabled: '贈送中',
                giftDisabled: '不贈送',
                giftBalance: '贈送餘額',
                giftBalanceDesc: '註冊成功後自動進入帳戶餘額，單位為元。',
                giftPoints: '贈送積分',
                giftPointsDesc: '註冊成功後自動進入娛樂中心積分帳戶。',
                giftRequiresFreeSite: '需要先啟用白嫖站，才能設定註冊自動贈送。'
            },
            unitCount: '個',
            reset: '重設',
            save: '儲存設定',
            saving: '儲存中...',
            loadFailed: '載入設定失敗',
            saveSuccess: '設定已儲存',
            saveFailed: '儲存失敗',
            notes: '說明',
            note1: '修改預設配額只會影響新註冊的使用者，不會影響既有使用者的配額。',
            note2: '如需修改既有使用者的配額，請前往「使用者管理」頁面單獨調整。',
            note3: '主機配額限制使用者可以建立的主機數量（0 = 功能未授權）。',
            note4: '好友配額限制使用者可以新增的好友數量（0 = 功能未授權）。',
            note5: '方案配額限制使用者可以建立的方案數量（0 = 功能未授權）。',
            turnstile: {
                title: 'Cloudflare Turnstile',
                description: '配置人機驗證，保護登入、註冊與敏感操作',
                enable: '啟用 Turnstile',
                enableDesc: '啟用後，使用者在登入、註冊與敏感操作時需要完成人機驗證',
                enabled: '已啟用',
                disabled: '已停用',
                siteKey: 'Site Key',
                siteKeyPlaceholder: '輸入 Cloudflare Turnstile Site Key',
                siteKeyDesc: '前端使用的站點金鑰',
                secretKey: 'Secret Key',
                secretKeyPlaceholder: '輸入 Cloudflare Turnstile Secret Key',
                secretKeyDesc: '後端驗證使用的金鑰（請妥善保管）',
                helpText: '前往 Cloudflare 控制台取得金鑰：',
            },
            avatar: {
                title: '頭像服務',
                description: '配置使用者頭像生成服務，預設使用 DiceBear 官方 API',
                apiBase: 'API 位址',
                apiBaseDesc: 'DiceBear 頭像 API 基礎位址，可自建服務以提高存取速度',
                helpText: '了解如何自建 DiceBear 服務：',
            },
            smtp: {
                title: 'SMTP 郵件服務',
                description: '配置 SMTP 伺服器以啟用電子郵件驗證功能，使用者註冊時需要驗證信箱',
                enable: '啟用電子郵件驗證',
                enableDesc: '啟用後，使用者註冊時需要透過電子郵件驗證碼驗證',
                enabled: '已啟用',
                disabled: '已停用',
                host: 'SMTP 伺服器',
                hostPlaceholder: 'smtp.example.com',
                port: 'SMTP 連接埠',
                secure: '使用 SSL/TLS',
                secureHint: '連接埠 465 通常需要啟用，連接埠 587 通常不需要',
                username: '使用者名稱',
                usernamePlaceholder: '信箱帳號或使用者名稱',
                password: '密碼',
                passwordPlaceholder: '授權碼或密碼',
                fromEmail: '寄件者信箱',
                fromEmailPlaceholder: "noreply{'@'}example.com",
                fromName: '寄件者名稱',
                testConnection: '測試連線',
                testing: '測試中...',
                testSuccess: 'SMTP 連線測試成功',
                testFailed: 'SMTP 連線測試失敗',
                sendTestEmail: '發送測試郵件',
                sendTestEmailDesc: '發送一封測試郵件到指定信箱，確認郵件發送功能是否正常',
                testEmailPlaceholder: '輸入收件者信箱地址',
                sending: '發送中...',
                send: '發送',
                invalidEmail: '請輸入有效的信箱地址',
                testEmailSent: '測試郵件已發送至 {email}',
                testEmailFailed: '測試郵件發送失敗',
                helpText: '請確認 SMTP 伺服器位址、連接埠、使用者名稱與密碼正確。常見郵件服務商需要使用授權碼而不是登入密碼。',
            },
            emailDomain: {
                title: '信箱網域白名單',
                description: '限制只允許特定信箱網域進行註冊，提高使用者品質',
                enable: '啟用信箱網域白名單',
                enableDesc: '啟用後，只有白名單中的信箱網域才能註冊',
                enabled: '已啟用',
                disabled: '已停用',
                allowedDomains: '允許的信箱網域',
                allowedDomainsPlaceholder: 'gmail.com,outlook.com,icloud.com\n每行一個網域或用逗號分隔\n留空則使用預設白名單',
                allowedDomainsDesc: '輸入允許註冊的信箱網域，可用逗號分隔或每行一個。留空則使用預設白名單（包含 Gmail、Outlook、iCloud、Yahoo、Proton 等主流信箱服務）。',
                helpText: '預設白名單包含：Gmail、Outlook/Hotmail、iCloud、Yahoo、Zoho、Proton、Fastmail、Tuta、Posteo、Disroot、Riseup 等主流信箱服務。',
            },
            transfer: {
                title: '移轉設定',
                description: '配置實例移轉功能的相關參數',
                feeLabel: '移轉手續費',
                feeUnit: '元/次',
                feeDesc: '使用者發起移轉時需要支付的手續費（0 表示免費），對方拒絕接收時將自動退還',
                feeRangeError: '移轉手續費必須在 0-{max} 元之間，最多支援兩位小數',
            },
            footerLinks: {
                title: '底部聯絡方式',
                description: '配置側邊欄底部的電子郵件按鈕',
                email: '聯絡信箱',
                emailPlaceholder: "support{'@'}example.com 或 mailto:support{'@'}example.com",
                emailDesc: '留空則隱藏信箱按鈕；支援填寫信箱地址或完整 mailto: 連結。',
                telegram: 'Telegram 群組連結',
                telegramPlaceholder: 'https://t.me/your_group',
                telegramDesc: '留空則隱藏 Telegram 按鈕。',
            },
            ticketImages: {
                title: '工單圖片儲存',
                description: '配置工單圖片上傳到蘭空圖床。面板只轉發上傳並記錄中繼資料，不在本地落盤。',
                baseUrl: 'Lsky 位址',
                baseUrlPlaceholder: 'https://img.example.com',
                baseUrlDesc: '蘭空圖床站點根位址，不要追加 /api/v1/upload',
                token: 'Lsky Token',
                tokenPlaceholder: '輸入蘭空圖床 API Token',
                tokenDesc: '僅後端使用，不會下發到前端',
                apiVersion: 'API 版本',
                apiVersionDesc: '根據你的蘭空版本選擇上傳接口版本',
                targetId: '策略/儲存 ID',
                targetIdPlaceholder: 'v1 填 strategy_id，v2 填 storage_id',
                targetIdDesc: '可留空，留空時使用蘭空預設策略或預設儲存',
            },
        },
        images: {
            noImagesForArchitecture: '目前架構下沒有映像檔',
        },
        // 網域郵箱管理
        mail: {
            title: '郵箱管理',
            description: '管理郵箱源、方案和使用者訂閱',
            tabs: {
                sources: '郵箱源',
                plans: '方案',
                subscriptions: '訂閱',
                domains: '網域',
            },
            createSource: '新增郵箱源',
            editSource: '編輯郵箱源',
            sourceCreated: '郵箱源建立成功',
            sourceUpdated: '郵箱源更新成功',
            sourceDeleted: '郵箱源已刪除',
            confirmDeleteSource: '確定要刪除郵箱源 {name} 嗎？請確保已無關聯方案。',
            noSources: '暫無郵箱源，請先新增',
            createPlan: '新增方案',
            editPlan: '編輯方案',
            planCreated: '方案建立成功',
            planUpdated: '方案更新成功',
            planDeleted: '方案已刪除',
            confirmDeletePlan: '確定要刪除方案 {name} 嗎？',
            noPlans: '暫無方案，請先新增',
            noSubscriptions: '暫無訂閱記錄',
            noDomains: '暫無網域記錄',
            searchSubscriptions: '搜尋使用者名稱、電子郵件或ID...',
            searchDomains: '搜尋網域、使用者名稱、電子郵件或ID...',
            fillRequired: '請填寫必填欄位',
            createSourceFirst: '請先建立郵箱源',
            region: '地區',
            apiEndpoint: 'API 端點',
            apiKey: 'API 密鑰',
            smtpHost: 'SMTP 伺服器',
            smtpPort: 'SMTP 連接埠',
            webmailUrl: 'Webmail 網址',
            sourcePlaceholder: '例如：美國資料中心',
            source: '郵箱源',
            domainLimit: '網域限制',
            diskLimit: '磁碟限制',
            diskLimitGb: '磁碟限制(GB)',
            price: '價格',
            billingCycle: '計費週期',
            planPlaceholder: '例如：基礎版',
            user: '使用者',
            plan: '方案',
            expiresAt: '到期時間',
            domain: '網域',
            accounts: '帳戶數',
            plans: '方案數',
            unsub: {
                button: '退訂',
                title: '退訂郵箱',
                refundType: '退款方式',
                refundNone: '不退款',
                refundNoneDesc: '直接取消訂閱，不退還任何費用',
                refundFull: '全額退款',
                refundFullDesc: '退還方案全價 {amount}',
                refundRemaining: '剩餘價值退款',
                refundRemainingDesc: '按剩餘有效期比例退款',
                reason: '退款原因',
                reasonPlaceholder: '請輸入退款原因，將記錄到餘額日誌...',
                reasonRequired: '退款時必須填寫原因',
                confirm: '確認退訂',
                success: '訂閱已退訂',
                successWithRefund: '訂閱已退訂，已退款 ¥{amount}',
            },
        },
        // 管理員建立實例
        instanceCreate: {
            title: '建立實例',
            description: '為使用者贈送實例，無需支付任何費用',
            targetUser: '目標使用者',
            usernamePlaceholder: '輸入使用者名稱',
            usernameHint: '實例將建立到該使用者帳戶下',
            userHint: '實例將建立到該使用者帳戶下',
            checkUser: '查詢',
            checking: '查詢中...',
            userFound: '使用者找到 (ID: {id})',
            userNotFound: '使用者不存在',
            userNotFoundHint: '請檢查使用者名稱是否正確',
            noSshKey: '該使用者未設定 SSH 金鑰',
            noSshKeyHint: '請讓使用者先在個人設定中新增 SSH 金鑰',
            orderSummary: '贈送摘要',
            freeGift: '免費贈送',
            freeGiftHint: '此實例由管理員免費建立，不計入收費統計',
            createFor: '建立給',
            create: '建立實例',
            creating: '建立中...',
            submit: '建立實例',
            success: '實例建立成功',
            selectUser: '請先選擇目標使用者',
            createSuccess: '實例已建立，將顯示在使用者 {username} 的實例列表中',
            createFailed: '建立實例失敗',
            selectUserFirst: '請先查詢並確認目標使用者',
            packageScope: {
                official: '自營方案',
                hosted: '託管方案',
            },
            // 付費實例相關
            instanceType: '實例類型',
            freeInstance: '免費實例',
            paidInstance: '付費實例',
            selectPlan: '選擇方案',
            noPlanHint: '該套餐暫無可用方案',
            chargeFirstMonth: '扣除首月費用',
            chargeFirstMonthHint: '從使用者餘額扣除首月費用',
            noChargeFirstMonthHint: '首月免費贈送，次月起正常計費',
            planPrice: '方案月費',
            setupFee: '開通費',
            totalCharge: '本次扣費',
            freeFirstMonth: '首月免費',
            userBalance: '使用者餘額',
            insufficientBalance: '使用者餘額不足',
            paidSummary: '付費摘要',
            paidInstanceHint: '建立付費實例，按方案計費',
        },
        dashboard: '儀表板',
        hosts: {
            title: '節點管理',
            description: '管理宿主機和節點組',
            create: '新增宿主機',
            address: '地址',
            status: '狀態',
            online: '線上',
            offline: '離線',
            maintenance: '維護中',
            hostsTab: '宿主機',
            searchPlaceholder: '搜尋宿主機...',
            noHosts: '暫無宿主機',
            name: '名稱',
            resources: '資源',
            instances: '實例',
            actions: '操作',
            cpu: 'CPU',
            cpuQuota: 'CPU 配額',
            memory: '記憶體',
            memoryQuota: '記憶體配額',
            disk: '硬碟',
            diskUsage: '硬碟使用情況',
            cores: '核',
            allowanceLimit: '額配上限',
            memoryLimit: '記憶體上限',
            instanceType: '類型',
            typeContainer: '容器',
            typeVm: '虛擬機',
            typeBoth: '兩者',
            edit: '編輯',
            test: '測試',
            delete: '刪除',
            testSuccess: '連線成功',
            testFailed: '連線失敗',
            confirmDelete: '確定刪除宿主機 "{name}"？',
            hostDeleted: '宿主機已刪除',
            deleteFailed: '刪除失敗',
            // 新增/編輯宿主機
            addHost: '新增宿主機',
            editHost: '編輯宿主機',
            hostName: '名稱',
            hostNameHint: '只能包含英文字母、數字、- 和 _',
            hostNameRequired: '請輸入節點名稱',
            hostDesc: '描述',
            apiUrl: 'API URL',
            ipAddress: '連線地址',
            ipAddressHint: '支持 IPv4、IPv6 裸地址或域名',
            ipAddressRequired: '請輸入伺服器地址',
            apiPort: 'API 連接埠',
            apiPortHint: '預設 8443',
            tokenPrompt: '若安裝時提示輸入安全通訊 Token，請複製下方內容並貼上：',
            copyToken: '複製 Token',
            country: '國家或地區',
            certPath: '憑證路徑',
            keyPath: '金鑰路徑',
            natPublicIp: '網卡IP',
            natPublicIpPlaceholder: '輸入伺服器的網卡IP',
            natConfig: 'NAT 設定',
            natPublicIpv4: '公網 IPv4',
            natPublicIpv4Placeholder: '請輸入使用者訪問時顯示的公網 IPv4',
            natPublicIpv4Desc: '使用者訪問 IPv4 連接埠映射時看到的公網 IPv4 地址。',
            natPublicIpv6: '公網 IPv6',
            natPublicIpv6Placeholder: '例如 2600:1900:41a0:5bb::',
            natPublicIpv6Desc: '用於向使用者展示的公網 IPv6 地址，不一定是實際監聽連接埠時使用的地址。',
            natBindIpv4: '監聽 IPv4',
            natBindIpv4Placeholder: '留空則自動識別，例如 0.0.0.0 或 10.170.0.3',
            natBindIpv4Desc: '實際綁定 IPv4 連接埠時使用的地址。留空後由系統自動選擇。',
            natBindIpv6: '監聽 IPv6',
            natBindIpv6Placeholder: '留空則自動識別，例如 2600:1900:41a0:5bb::',
            natBindIpv6Desc: '實際綁定 IPv6 連接埠時使用的地址。留空後由系統自動選擇。',
            natPublicIpv6Invalid: '公網 IPv6 地址格式無效',
            natBindIpv6Invalid: '監聽 IPv6 地址格式無效',
            portRangeStart: '連接埠範圍起始',
            portRangeEnd: '連接埠範圍結束',
            portRangeEndMustBeGreater: '連接埠範圍結束不能小於起始',
            cpuAllowanceMax: '總 CPU 時間片配額',
            memoryMax: '記憶體最大值',
            instanceTypeLabel: '實例類型',
            networkModeLabel: '網路模式',
            networkModeNat: 'IPv4 NAT',
            networkModeNatIpv6: 'IPv4 NAT & IPv6',
            networkModeNatIpv6Nat: 'IPv4 NAT & IPv6 NAT',
            networkModeIpv6Only: 'IPv6 Only',
            networkModeIpv6Nat: 'IPv6 NAT',
            autoAssign: '自動分配',
            hostAdded: '宿主機新增成功',
            hostUpdated: '宿主機更新成功',
            typeChangeWarning: '節點類型變更警告',
            addFailed: '新增失敗',
            updateFailed: '更新失敗',
            // 初始化設定
            initConfig: '初始化設定',
            // 儲存設定
            storageConfig: '儲存設定',
            storageDriver: '儲存驅動',
            storageDriverZfs: 'ZFS (推薦)',
            storageDriverLvm: 'LVM',
            storageType: '儲存類型',
            storageTypeLoop: 'Loop 檔案',
            storageTypeDisk: '實體磁碟',
            storagePath: '裝置路徑',
            storagePathHint: '如 /dev/sdb',
            storageSize: '儲存大小',
            // 網路設定
            networkConfig: '網路設定',
            networkOption: '網路選項',
            networkOptionHint: '選擇容器實例的網路出口方式',
            independentIpv6: '獨立 IPv6',
            ipv6Mode: 'IPv6 模式',
            ipv6Routed: 'Routed',
            ipv6Nat: 'NAT',
            ipv6Disabled: '停用',
            ipv6Subnet: 'IPv6 子網路',
            ipv6SubnetHint: '分配給容器的 IPv6 子網路段',
            ipv6SubnetRequired: '請輸入 IPv6 網段',
            ipv6SubnetInvalid: 'IPv6 網段格式無效，需要包含 CIDR 前綴（如 /48）',
            ipv6Gateway: 'IPv6 閘道',
            ipv6ParentInterface: 'IPv6 父介面',
            ipv6ParentInterfaceHint: 'IPv6 routed 模式使用的宿主機實體網卡名（如 eth0）',
            ipv6ParentInterfaceRequired: '請輸入 IPv6 父介面',
            enableApi: '啟用 API',
            // 核心參數
            sysctlConfig: '核心參數',
            sysctlConfigHint: '自訂 sysctl 設定，留空使用預設值',
            resetSysctl: '恢復預設',
            enableBBR: '啟用 BBR',
            bbrEnabled: 'BBR 已啟用',
            // 安裝腳本
            installScript: '安裝腳本',
            runOnHost: '請在宿主機上以 root 權限執行以下命令：',
            copyCommand: '複製命令',
            step1RunScript: '執行安裝腳本',
            step2Verify: '驗證並連線',
            verifyHint: '腳本執行完成後，點擊下方按鈕驗證連線',
            verifyAndConnect: '驗證並連線',
            verifying: '驗證中...',
            verifySuccess: '納管成功！',
            verifyFailed: '驗證失敗',
            reinstall: '重新安裝',
            reinstallScript: '重新安裝腳本',
            reinstallFailed: '產生安裝命令失敗',
            waitingInstall: '等待安裝完成...',
            installSuccess: '安裝成功！',
            tokenExpired: 'Token 已過期，請重新建立宿主機',
            // 詳情頁
            tabInfo: '資訊',
            tabConfig: '設定',
            tabInstances: '實例',
            tabStorage: '儲存',
            tabImages: '映像檔',
            tabOps: '運維',
            tabCreate: '創建',
            basicInfo: '基本資訊',
            config: '設定',
            resourceLimits: '資源限制',
            transferControl: '轉移控制',
            transferEnabled: '允許轉移',
            transferEnabledHint: '關閉後，該節點上的實例將無法發起轉移請求',
            extraConfig: '額外設定',
            trafficConfig: '流量設定',
            trafficResetDay: '流量重置日',
            trafficResetDayHint: '每月何日重置實例流量（可設定 1-28）',
            enableResourcePool: '參與資源池玩法',
            enableResourcePoolHint: '開啟後，該節點的實例可參與簽到/抽獎資源應用',
            announcement: '節點公告',
            announcementPlaceholder: '在此輸入公告內容，將顯示在該節點下所有實例的詳情頁',
            announcementHint: '留空則不顯示公告，支援換行',
            probeUrl: '探針地址',
            probeUrlPlaceholder: '輸入節點探針監控頁面地址',
            probeUrlHint: '可以輸入此節點的探針、腳本測試結果等連結，配置後，用戶在選擇節點時可點擊圖標跳轉查看',
            portRange: '連接埠範圍',
            portsUsed: '已用連接埠',
            recalculateResources: '對齊已用',
            recalculateResourcesTip: '重新計算資源使用量，並將配額對齊到已用配額',
            recalculateSuccess: '資源校對完成，配額已對齊',
            recalculateNoChanges: '資源數據正確，無需修正',
            recalculateFailed: '資源校對失敗',
            ops: {
                title: '宿主機運維中心',
                description: '優先執行非破壞性盤點、基線同步與網路修復，用於舊節點納管補齊與狀態校準。',
                discover: '實例盤點',
                baselineSync: '基線同步',
                networkRepair: '網路修復',
                refresh: '刷新結果',
                managed: '已納管實例',
                orphaned: '未納管遺留實例',
                missing: '資料庫異常實例',
                summary: '摘要',
                totalIncus: '宿主機實例',
                totalDb: '資料庫實例',
                managedCount: '已納管',
                orphanedCount: '未納管',
                missingCount: '異常缺失',
                runSuccess: '操作執行成功',
                runFailed: '操作執行失敗',
                lastRunAt: '最近執行時間',
                empty: '暫無結果，請先執行上方運維操作。',
                sectionInventory: '宿主機實例盤點',
                sectionRepair: '安全修復動作',
                sectionReport: '執行結果',
                resultInventory: '盤點結果',
                resultBaseline: '基線同步結果',
                resultNetwork: '網路修復結果',
                resultPreview: '實例預檢結果',
                resultInstanceSync: '單實例同步結果',
                resultInstanceRestart: '單實例重啟結果',
                resultDanger: '高風險動作結果',
                instanceName: '實例名',
                instanceType: '類型',
                incusStatus: '宿主機狀態',
                dbStatus: '資料庫狀態',
                dbInstance: '資料庫實例',
                changes: '變更數',
                synced: '已同步',
                failed: '失敗',
                total: '總數',
                ipv4: 'IPv4',
                ipv6: 'IPv6',
                details: '詳情',
                noManaged: '未發現已納管實例',
                noOrphaned: '未發現未納管遺留實例',
                noMissing: '未發現資料庫異常實例',
                baselineHint: '同步宿主機資源占用，並批次回填執行中實例的狀態與 IP。',
                networkHint: '批次校準非刪除實例的狀態、IPv4 與 IPv6 記錄。',
                discoverHint: '讀取宿主機當前所有 Incus 容器 / KVM，並與資料庫記錄對帳。',
                selectInstanceHint: '從已納管實例中選擇一個對象，執行單實例同步、重啟或高風險動作。',
                instancePanel: '單實例操作面板',
                loadPreview: '載入預檢',
                syncInstance: '同步實例',
                safeRestart: '安全重啟',
                forceRestart: '強制重啟',
                dangerZone: '高風險操作區',
                dangerHint: '這裡的動作會清空或替換實例系統資料，僅建議在盤點、同步與重啟均無法解決問題時使用。',
                rebuild: '重裝目前實例',
                recreate: '重建替換實例',
                imageAlias: '映像別名',
                imageAliasPlaceholder: '例如 ubuntu/22.04 或 debian/12',
                selectImage: '映像選擇',
                imagePlaceholder: '請選擇目標映像',
                loadingImages: '正在載入可用映像...',
                noImagesAvailable: '目前此節點暫無可用映像',
                sshKeyId: 'SSH 金鑰 ID',
                selectSshKey: 'SSH 金鑰',
                sshKeyPlaceholder: '不指定 SSH 金鑰',
                loadingSshKeys: '正在載入 SSH 金鑰...',
                noSshKeysAvailable: '該實例使用者暫無 SSH 金鑰，不指定時將沿用後端預設處理',
                sshKeyOptionalHint: '可選，不指定時使用實例使用者的預設金鑰策略',
                customInitCommandIds: '自訂初始化命令 ID',
                selectInitCommands: '初始化命令',
                loadingInitCommands: '正在載入初始化命令...',
                noInitCommandsAvailable: '目前映像沒有可選初始化命令',
                optionalField: '可選項，可留空',
                confirmDangerTitle: '執行前確認',
                riskCheckbox: '我已知悉此操作可能導致實例系統或資料不可恢復，並確認這是預期行為。',
                confirmTextHint: '請輸入實例真實名稱以確認，例如 u2-g65uoeo1',
                ownerUserId: '使用者 ID',
                fullInstanceName: '完整實例名稱',
                selectedOnlyHint: '單實例操作僅對目前選取的實例生效，不會影響其他未選取的實例。',
                localizedNone: '無需操作',
                dangerActionType: '動作類型',
                dangerConfirm1Title: '第一次確認高風險操作',
                dangerConfirm1Hint: '請再次確認你即將執行不可逆的高風險動作。',
                dangerConfirm1Btn: '確認繼續',
                dangerConfirm2Title: '第二次確認高風險操作',
                dangerConfirm2Hint: '這是最後一次確認，執行後將立即建立任務。',
                dangerConfirm2Btn: '確認執行',
                dangerConfirmStep: '確認步驟 {step} / {total}',
                executeDangerAction: '執行高風險動作',
                suggestedAction: '建議動作',
                activeTask: '活躍任務',
                latestInstanceAction: '最近單實例動作',
            },
            statusOnline: '線上',
            statusOffline: '離線',
            statusMaintenance: '維護中',
            invalidId: '無效的節點 ID',
            loadFailed: '載入失敗',
            noInstances: '該節點上暫無實例',
            search: '搜尋',
            instanceSearchPlaceholder: '搜尋實例ID、名稱、使用者名稱、電郵、IP地址...',
            imagesOnHost: '節點 {name} 上的映像檔',
            noImagesOnHost: '該節點上暫無映像檔',
            selectImagesToSync: '選擇要同步到節點 {name} 的映像檔',
            allImagesSynced: '所有映像檔都已同步到該節點',
            imagePolicy: {
                title: '映像檔策略',
                description: '設定節點「{name}」在開通與重裝時可選的映像檔範圍',
                defaultMode: '使用面板預設映像檔',
                defaultDesc: '不單獨限制此節點，開通與重裝時會依節點架構與實例類型載入全部可用映像檔。',
                restrictedMode: '限制為以下映像檔',
                restrictedDesc: '只有勾選的映像檔會出現在此節點的開通與重裝列表中。',
                selectableImages: '可選映像檔',
                defaultHint: '目前此節點未單獨限制映像檔。',
                selectedCount: '目前已選擇 {count} 個映像檔',
                searchPlaceholder: '搜尋映像檔名稱、別名或發行版...',
                emptySelection: '限制模式下至少要選擇一個映像檔，否則請切回預設模式。',
                noImages: '目前沒有符合此節點架構與實例類型的可見映像檔。',
                loadFailed: '載入映像檔策略失敗',
                saveSuccess: '映像檔策略已儲存',
                saveFailed: '儲存映像檔策略失敗',
            },
            addHostDesc: '新增新的宿主機節點',
            allocated: '已分配',
            includesPageCache: '包含頁面快取',
            syncTime: '同步時間',
            deleteHost: '刪除宿主機',
            deleteWarning: '此操作不可撤銷！刪除宿主機前，請確保該節點上沒有任何實例。',
            deleteConfirmHint: '請輸入宿主機名稱 "{name}" 以確認刪除：',
            enterHostName: '宿主機名稱',
            confirmDeleteBtn: '確認刪除',
            deleteNameMismatch: '輸入的名稱不匹配',
            hasInstances: '該節點上還有 {count} 個實例，請先刪除或遷移實例',
            checkFailed: '檢查失敗',
            // 批次延期
            batchExtend: '贈送時長',
            extendHint: '該節點下共有 {count} 個付費實例將被延期',
            extendDaysLabel: '延期天數',
            extendDaysPlaceholder: '請輸入 1-365 的整數',
            extendDaysInvalid: '請輸入有效的延期天數（1-365）',
            confirmExtendBtn: '確認贈送',
            extendSuccess: '已成功為 {count} 個付費實例延期 {days} 天',
            extendFailed: '批次延期失敗',
            // 批次刪除實例
            selectedCount: '已選擇 {count} 個實例',
            noInstanceSelected: '請勾選實例以使用批次操作',
            batchDelete: '批次刪除',
            batchDeleteTitle: '批次刪除實例',
            batchDeleteWarning: '此操作不可撤銷！刪除後實例資料將無法復原。',
            batchDeleteConfirm: '確定要刪除這 {count} 個實例嗎？',
            confirmBatchDelete: '確認刪除',
            databaseOnlyDelete: '僅資料庫刪除',
            batchDeleteSuccess: '成功刪除 {count} 個實例',
            batchDeletePartial: '成功刪除 {success} 個實例，{failed} 個失敗',
            batchDeleteFailed: '批次刪除失敗',
            batchDeleteRefundWarning: '刪除付費實例將自動退還剩餘價值給用戶，並從您的託管餘額扣除相應金額。',
            batchDeleteRefundTotal: '總退款金額',
            instanceName: '實例名稱',
            instanceUser: '所屬用戶',
            refundAmount: '退款金額',
            // 批次同步實例狀態
            batchSyncStatus: '同步狀態',
            batchSyncSuccess: '成功同步 {synced} 個實例，{changed} 個狀態已更新',
            batchSyncWithIpv4: '成功同步 {synced} 個實例，{changed} 個狀態更新，{ipv4Changed} 個內網 IP 更新',
            batchSyncPartial: '同步 {synced} 個，更新 {changed} 個，失敗 {failed} 個',
            batchSyncNoChange: '成功同步 {synced} 個實例，狀態無變化',
            batchSyncFailed: '同步狀態失敗',
            // 批次封停實例
            batchSuspend: '批次封停',
            batchSuspendTitle: '批次封停實例',
            batchSuspendWarning: '封停後，實例所有者將無法對實例進行任何操作，直到解除封停。',
            batchSuspendConfirm: '確定要封停這 {count} 個實例嗎？',
            confirmBatchSuspend: '確認封停',
            batchSuspendSuccess: '成功封停 {count} 個實例',
            batchSuspendPartial: '成功封停 {success} 個實例，{failed} 個失敗',
            batchSuspendFailed: '批次封停失敗',
            batchUnsuspend: '批次解封',
            batchUnsuspendSuccess: '成功解封 {count} 個實例',
            batchUnsuspendPartial: '成功解封 {success} 個實例，{failed} 個失敗',
            batchUnsuspendNone: '選中的實例中沒有已封停的實例',
            batchUnsuspendFailed: '批次解封失敗',
            suspendReason: '封停原因（選填）',
            suspendReasonPlaceholder: '填寫封停原因後，系統將透過站內信通知實例所有者...',
            deleteReason: '刪除原因（選填）',
            deleteReasonPlaceholder: '填寫刪除原因後，系統將透過站內信和通知管道告知使用者...',
            deleteReasonHint: '如果填寫了刪除原因，被刪除實例的所有者將收到通知',
            // 實例流量
            trafficUsage: '流量使用',
            trafficUnlimited: '不限制',
            resetTraffic: '重置流量',
            trafficResetSuccess: '流量已重置',
            trafficResetFailed: '重置流量失敗',
            resetTrafficTitle: '重置實例流量',
            resetTrafficWarning: '如果是已超額的實例，重置流量不會自動恢復實例的頻寬限速（1Mbps），請手動為該實例恢復頻寬速率。',
            resetTrafficDesc: '確定要重置實例 "{instance}" 的流量嗎？',
            // 節點流量統計
            trafficStats: '流量統計',
            monthlyUsed: '本月已用',
            hostTotalLimit: '節點總分配',
            // 宿主機狀態
            agentStatusTitle: '宿主機狀態',
            agentStatusDesc: 'Agent 按 {seconds} 秒間隔上報宿主機即時資源與執行狀態',
            agentStatusRefreshSuccess: '狀態介面已重新整理，請以最後心跳時間為準',
            agentStatusLoadFailed: '載入宿主機狀態失敗',
            agentNotInstalled: '未安裝',
            agentDisabled: '已停用',
            agentOnline: '線上',
            agentOffline: '離線',
            agentUnknown: '未知',
            agentVersionLatest: '最新',
            agentVersionOutdated: '可升級',
            agentVersionUnknown: '版本未知',
            agentLatestVersion: '最新版本：{version}',
            agentUpgradeClickHint: '點擊請求升級到 {version}，Agent 會在下次心跳執行',
            agentUpgradeRequestSuccess: '已請求升級，Agent 會在約 {seconds} 秒內的下一次心跳執行',
            agentUpgradeRequestFailed: '請求 Agent 升級失敗',
            agentAlreadyLatest: 'Agent 已是最新版本',
            agentInstallCommand: '安裝/重裝 Agent',
            agentInstallCommandTitle: 'Agent 安裝命令',
            agentInstallCommandHint: '可在宿主機執行完整命令，也可在 Agent 選單中貼上該命令或其中的 ait_ token。',
            agentInstallCommandConfirm: '產生新的 Agent 安裝命令會輪換該宿主機的 Agent 憑據。舊 Agent 會在重新安裝前無法繼續上報，確定繼續嗎？',
            agentInstallTokenExpiresAt: '有效期至 {time}',
            agentInstallCommandSuccess: 'Agent 安裝命令已產生',
            agentInstallCommandFailed: '產生 Agent 安裝命令失敗',
            agentInstallCommandCopied: 'Agent 安裝命令已複製',
            agentNoRecordHint: '該宿主機還沒有 Agent 心跳記錄。重新安裝或安裝 Agent 後會自動上報。',
            agentId: 'Agent ID',
            agentLastSeen: '最後心跳',
            agentHeartbeatIp: '心跳 IP',
            agentReportedAt: '上報時間',
            agentIncus: 'Incus 檢測',
            agentIncusAvailable: '可用',
            agentIncusUnavailable: '不可用',
            agentCpuTotal: 'CPU 核心',
            agentMemoryTotal: '記憶體總量',
            agentUptime: '宿主機執行時間',
            agentSocket: 'Incus Socket',
            agentCpuUsage: 'CPU 使用率',
            agentCpuCores: '核心',
            agentMemoryUsage: '記憶體使用',
            agentSwapUsage: 'SWAP 使用',
            agentDiskUsage: '磁碟使用',
            agentLoadAverage: '負載',
            agentLoadAverageHint: '1 / 5 / 15 分鐘',
            agentProcessCount: '處理程序數',
            // 儲存池管理
            storage: {
                title: '儲存池',
                subtitle: '管理此宿主機上的 Incus 儲存池',
                create: '新增儲存池',
                createTitle: '建立儲存池',
                empty: '暫無儲存池',
                loadFailed: '載入儲存池失敗',
                createSuccess: '儲存池建立成功',
                createFailed: '建立儲存池失敗',
                deleteSuccess: '儲存池已刪除',
                deleteFailed: '刪除儲存池失敗',
                deleteConfirm: '確定刪除儲存池 "{name}"？此操作不可撤銷。',
                updateSuccess: '儲存池已更新',
                updateFailed: '更新儲存池失敗',
                editTitle: '編輯儲存池',
                currentSize: '目前大小',
                newSize: '新大小',
                newSizeHint: '僅支援擴容，不支援縮容',
                nameRequired: '請輸入儲存池名稱',
                sourceRequired: '請輸入儲存源（裝置路徑）',
                sizeRequired: '請輸入儲存大小',
                pathRequired: '請輸入目錄路徑',
                poolName: '儲存池名稱',
                driver: '驅動類型',
                description: '描述',
                source: '儲存源',
                size: '儲存大小',
                usedBy: '使用者',
                volumes: '個卷',
                // 驅動描述
                zfsDesc: '推薦：功能最全（快照、複製、壓縮、配額），效能極佳',
                lvmDesc: 'Linux 標配，極其穩定，建議開啟 Thin Provisioning',
                btrfsDesc: '類似 ZFS 特性，單碟或 RAID1/10 可用',
                dirDesc: '目錄儲存，效能最差，僅用於測試',
                // 通用
                useLoop: '使用 Loop 檔案',
                loopSizeHint: '將在 /var/lib/incus/ 下建立映像檔檔案',
                // ZFS
                zfsSourceHint: '實體碟或分割區路徑，如 /dev/disk/by-id/nvme-xxx',
                zfsPoolName: 'ZFS 池名稱',
                zfsPoolNameHint: '選填，不填則使用儲存池名稱',
                // LVM
                lvmSourceHint: '實體碟路徑，如 /dev/sdb',
                lvmVgName: '卷組名稱',
                lvmUseThinpool: '啟用精簡卷（Thin Provisioning）',
                lvmThinpoolHint: '強烈建議開啟，否則快照效能極差',
                // Btrfs
                btrfsSourceHint: '實體碟路徑，如 /dev/sdb',
                // DIR
                dirPath: '目錄路徑',
                dirPathHint: '指定一個存在的目錄，如 /mnt/data/incus-storage',
                // 儲存用途
                purpose: '儲存用途',
                forInstances: '用於實例系統碟',
                forInstancesHint: '建立實例時作為預設儲存',
                forVolumes: '用於實例儲存碟',
                forVolumesHint: '可手動掛載到實例',
                purposeSystemDisk: '系統碟',
                purposeStorageDisk: '儲存碟',
                // 模式切換
                modeCreate: '建立新儲存池',
                modeExisting: '關聯已有儲存池',
                modeImport: '匯入已有儲存',
                modeCreateHint: '在宿主機上建立新的儲存池，需要設定驅動類型、儲存源等參數',
                modeExistingHint: '關聯已在宿主機上建立的儲存池，只需輸入儲存池名稱即可',
                modeImportHint: '匯入底層已存在但 Incus 還未知曉的儲存池（如手動建立的 ZFS 池、LVM VG）',
                linkSuccess: '儲存池關聯成功',
                importSuccess: '儲存池匯入成功',
                // 匯入儲存池
                importZfsSource: 'ZFS 池名稱',
                importLvmSource: 'LVM 卷組名稱',
                importBtrfsSource: 'Btrfs 裝置或子卷路徑',
                importDirSource: '目錄路徑',
                importZfsHint: '底層已存在的 ZFS 池名稱（透過 zpool list 查看）',
                importLvmHint: '底層已存在的 LVM 卷組名稱（透過 vgs 查看）',
                importBtrfsHint: '已格式化為 Btrfs 的裝置或子卷路徑',
                importDirHint: '已存在的目錄路徑，如 /mnt/storage',
                importSourceRequired: 'Btrfs 和 DIR 類型必須提供底層儲存源路徑',
            },
        },
        packages: {
            title: '方案管理',
            loadFailed: '載入方案失敗',
        },
        instances: '實例管理',
        settings: '系統設定',
        logs: '系統日誌',
        stats: '統計資料',
        nav: {
            users: '使用者',
            hosts: '主機',
            packages: '方案',
            instances: '實例',
            settings: '設定',
            logs: '日誌',
            stats: '統計',
            images: '映像檔',
            redeemCodes: '兌換碼',
        },
        tabs: {
            overview: '總覽',
            users: '使用者',
            hosts: '主機',
            packages: '方案',
        },
        overview: {
            title: '系統總覽',
            totalUsers: '總使用者數',
            totalHosts: '總主機數',
            totalInstances: '總實例數',
            totalPackages: '總方案數',
            activeUsers: '活躍使用者',
            onlineHosts: '線上主機',
            runningInstances: '運行中實例',
            systemHealth: '系統健康度',
        },
        user: {
            list: '使用者列表',
            create: '建立使用者',
            edit: '編輯使用者',
            delete: '刪除使用者',
            search: '搜尋使用者...',
            noUsers: '無使用者',
            role: '角色',
            status: '狀態',
            verified: '已驗證',
            unverified: '未驗證',
            active: '啟用',
            inactive: '停用',
            banned: '已封禁',
            lastLogin: '最後登入',
            createdAt: '建立時間',
            actions: '操作',
            ban: '封禁',
            unban: '解除封禁',
            resetPassword: '重設密碼',
            banConfirm: '確定要封禁此使用者嗎？',
            unbanConfirm: '確定要解除封禁此使用者嗎？',
            deleteConfirm: '確定要刪除此使用者嗎？此操作不可復原。',
            banSuccess: '使用者已封禁',
            unbanSuccess: '使用者已解除封禁',
            deleteSuccess: '使用者已刪除',
            roles: {
                admin: '管理員',
                user: '一般使用者',
            },
        },
        // 用戶管理頁面資料（用於UsersView.vue）
        users: {
            title: '使用者管理',
            description: '管理平台使用者與邀請碼',
            searchPlaceholder: '搜尋使用者名稱、ID、電子郵件...',
            searchRange: '搜尋範圍',
            searchFieldUsername: '使用者名稱',
            searchFieldId: 'ID',
            searchFieldEmail: '電子郵件',
            exactMatch: '絕對匹配',
            allInstances: '所有實例',
            promoteAdmin: '設為管理員',
            demoteAdmin: '取消管理員',
            confirmPromoteAdmin: '確定將使用者 "{name}" 設為管理員？該使用者需要重新登入後生效。',
            confirmDemoteAdmin: '確定取消使用者 "{name}" 的管理員權限？該使用者目前會話會被撤銷。',
            userPromotedAdmin: '已設為管理員',
            userDemotedAdmin: '已取消管理員權限',
            onlyActiveCanBeAdmin: '只有正常狀態的使用者可以設為管理員',
            userVipLevels: '使用者 VIP 等級',
            vipBenefits: '會員福利大廳設定',
            // 邀請碼
            invites: '邀請碼',
            inviteCode: '邀請碼',
            inviteStatus: '狀態',
            createdBy: '建立者',
            usedBy: '使用者',
            usedExpireAt: '使用/過期時間',
            noInvites: '暫無邀請碼',
            noMatchingInvites: '暫無符合條件的邀請碼',
            inviteFilterAll: '全部',
            inviteFilterUsed: '已用',
            inviteFilterUnused: '未用',
            inviteUsed: '已使用',
            inviteExpired: '已過期',
            inviteUnused: '未使用',
            permanent: '永久',
            deleteInvite: '刪除',
            confirmDeleteInvite: '確定刪除邀請碼 {code}？',
            inviteDeleted: '邀請碼已刪除',
            deleteFailed: '刪除失敗',
            // 發送站內信
            sendMessage: '發送站內信',
            sendMessageTo: '發送站內信給 {username}',
            messageTitle: '訊息標題',
            messageTitlePlaceholder: '輸入訊息標題',
            messageTitleRequired: '請輸入訊息標題',
            messageContent: '訊息內容',
            messageContentPlaceholder: '輸入訊息內容',
            messageContentRequired: '請輸入訊息內容',
            messageSent: '訊息已發送',
            messageSendFailed: '發送失敗',
            // 調整餘額
            adjustBalance: '調整餘額',
            adjustBalanceFor: '調整 {username} 的餘額',
            adjustType: '調整類型',
            addBalance: '增加餘額',
            deductBalance: '扣除餘額',
            amount: '金額',
            amountPlaceholder: '請輸入金額',
            adjustReason: '調整理由',
            adjustReasonPlaceholder: '請輸入調整理由（必填）',
            invalidAmount: '請輸入有效的金額',
            reasonRequired: '請輸入調整理由',
            balanceAdjusted: '餘額調整成功',
            balanceAdjustFailed: '餘額調整失敗',
            // 積分相關
            points: '積分',
            earned: '累計',
            totalEarnedPoints: '累計獲得積分',
            spent: '已用',
            spentPoints: '已用積分',
            adjustPoints: '調整積分',
            currentPoints: '目前積分',
            pointsAmount: '調整數量',
            pointsAmountHint: '正數增加，負數扣除',
            pointsAmountPlaceholder: '如：100 或 -50',
            pointsReasonPlaceholder: '請輸入調整理由（必填）',
            invalidPointsAmount: '請輸入有效的積分數量',
            pointsAdjusted: '積分調整成功',
            pointsAdjustFailed: '積分調整失敗',
            // 托管餘額相關
            hostingBalance: '托管餘額',
            hostingBalanceDetails: '托管餘額詳情',
            hostingBalanceOverview: '概覽',
            hostingBalanceLogs: '明細',
            adjustHostingBalance: '調整托管餘額',
            viewHostingBalance: '查看托管餘額',
            frozenHostingBalance: '凍結托管餘額',
            availableBalance: '可用餘額',
            frozenBalance: '凍結餘額',
            frozen: '凍結中',
            available: '可用',
            operation: '操作類型',
            operationAdd: '增加',
            operationDeduct: '扣減',
            hostingReasonPlaceholder: '請輸入調整理由（必填）',
            hostingBalanceAdjusted: '托管餘額調整成功',
            hostingBalanceAdjustFailed: '托管餘額調整失敗',
            loadHostingLogsFailed: '載入托管餘額明細失敗',
            logTime: '時間',
            logType: '類型',
            logAmount: '金額',
            logStatus: '狀態',
            logDescription: '描述',
            hostingLogType: {
                income: '收入',
                deduction: '扣減',
                unfreeze: '解凍',
                withdraw: '提現',
                admin_adjust: '管理員調整',
            },
            // 用戶餘額
            balance: '餘額',
            viewBalance: '查看餘額詳情',
            consumed: '已消費',
            totalConsumed: '已消費總金額',
            balanceDetails: '餘額詳情',
            balanceOverview: '帳戶概覽',
            balanceLogs: '餘額明細',
            rechargeRecords: '充值紀錄',
            currentBalance: '目前餘額',
            totalRecharge: '累計充值',
            totalConsume: '累計消費',
            noBalanceLogs: '暫無餘額變動',
            noRechargeRecords: '暫無充值紀錄',
            loadBalanceFailed: '載入餘額資訊失敗',
            loadBalanceLogsFailed: '載入餘額明細失敗',
            loadRechargeRecordsFailed: '載入充值紀錄失敗',
            totalRecords: '共 {count} 條',
            prevPage: '上一頁',
            nextPage: '下一頁',
            balanceType: {
                recharge: '充值',
                consume: '消費',
                refund: '退款',
                admin_adjust: '管理員調整',
                gift: '贈送',
                transfer_fee: '移轉手續費',
                transfer_refund: '手續費退還',
            },
            // 關聯帳號檢測
            linkedAccounts: '關聯帳號檢測',
            detectDays: '檢測範圍',
            daysUnit: '天',
            startDetect: '開始檢測',
            detecting: '檢測中...',
            detectingHint: '正在分析使用者資料，請稍候...',
            clickToDetect: '點擊上方按鈕開始檢測關聯帳號',
            loadLinkedAccountsFailed: '載入關聯帳號檢測失敗',
            detectTime: '檢測時間',
            detectDuration: '耗時',
            detectRange: '檢測範圍',
            ipGroupCount: '個 IP 關聯組',
            emailGroupCount: '個郵箱相似組',
            usernameGroupCount: '個使用者名稱相似組',
            ipLinkedGroups: 'IP 關聯組',
            emailSimilarGroups: '郵箱相似組',
            usernameSimilarGroups: '使用者名稱相似組',
            usersCount: '個使用者',
            loginsCount: '次登入',
            lastLoginAt: '最後登入',
            noLinkedAccounts: '未檢測到關聯帳號，您的使用者非常純潔！',
            registeredNew: '新',
            registeredDays: '註冊 {days} 天',
            // 用戶狀態
            active: '正常',
            banned: '已封禁',
            createdAt: '建立時間',
        },
        // 支付渠道管理
        paymentProviders: {
            title: '支付渠道管理',
            description: '設定和管理支付渠道',
            add: '新增渠道',
            create: '新增渠道',
            empty: '暫無設定支付渠道',
            noProviders: '暫無支付渠道',
            createFirst: '新增第一個支付渠道',
            providerName: '渠道名稱',
            providerType: '渠道類型',
            displayName: '顯示名稱',
            description_label: '描述',
            status: '狀態',
            statusActive: '啟用',
            statusDisabled: '停用',
            statusTesting: '測試中',
            feeRate: '費率',
            feeFixed: '固定費用',
            minAmount: '最小金額',
            maxAmount: '最大金額',
            sortOrder: '排序',
            methods: '支付方式',
            paymentMethods: '支援的支付方式',
            configLabel: '設定',
            configPlaceholder: 'JSON 格式的渠道設定',
            edit: '編輯',
            delete: '刪除',
            name: '名稱',
            nameRequired: '請輸入渠道名稱',
            type: '類型',
            confirmDelete: '確定刪除支付渠道 "{name}"？',
            deleteWarning: '確定刪除支付渠道 "{name}"？此操作不可恢復。',
            createSuccess: '支付渠道建立成功',
            updateSuccess: '支付渠道更新成功',
            deleteSuccess: '支付渠道已刪除',
            statusUpdated: '狀態已更新',
            statusUpdateSuccess: '狀態更新成功',
            statusUpdateFailed: '狀態更新失敗',
            saveFailed: '儲存失敗',
            createFailed: '建立支付渠道失敗',
            updateFailed: '更新支付渠道失敗',
            deleteFailed: '刪除失敗',
            loadFailed: '載入失敗',
            createProvider: '新增支付渠道',
            editProvider: '編輯支付渠道',
            namePlaceholder: '輸入渠道名稱',
            displayNamePlaceholder: '使用者看到的名稱',
            descPlaceholder: '可選的渠道描述',
            feeRateHint: '如 0.02 表示 2% 手續費',
            notImplemented: '待實現',
            providerTypes: {
                yipay: '易支付',
                heleket: 'Heleket',
                stripe: 'Stripe',
                alipayDirect: '支付寶直連',
                wechatDirect: '微信直連',
                manual: '人工充值',
            },
            deleteConfirm: '確認刪除',
            types: {
                alipay: '支付寶',
                wechat: '微信支付',
                stripe: 'Stripe',
                paypal: 'PayPal',
                usdt: 'USDT',
                manual: '人工充值',
            },
            config: {
                sdkVersion: 'SDK版本',
                apiurl: '支付介面地址',
                pid: '商戶ID',
                key: '商戶密鑰',
                platformPublicKey: '平台公鑰',
                merchantPrivateKey: '商戶私鑰',
                heleketMerchantUuid: 'Merchant UUID',
                heleketApiKey: 'API Key',
                heleketInvoiceCurrency: '發票法幣幣種',
                heleketLifetime: '發票有效期（秒）',
                heleketApiUrlHint: '預設使用 Heleket 官方介面地址，可按需切換到代理或私有網關。',
                heleketCurrencyHint: '建立 Heleket 發票時使用的法幣幣種，常用為 CNY。',
                heleketLifetimeHint: 'Heleket 發票有效期。預設 3600 秒，並會同步到本地訂單過期時間。',
                yipayVersionV1: 'V1 (MD5簽名) - 傳統版本',
                yipayVersionV2: 'V2 (RSA簽名) - 新版本',
                yipayVersionV1Hint: 'V1 版本使用 MD5 簽名，適用於傳統易支付平台。',
                yipayVersionV2Hint: 'V2 版本使用 RSA 簽名，適用於新版彩虹易支付。',
                yipayApiUrlPlaceholder: '如: https://pay.example.com/',
                yipayApiUrlHint: '支付介面地址，以 / 結尾。',
                yipayPidPlaceholder: '商戶ID',
                yipayKeyPlaceholder: '商戶密鑰',
                yipayKeyHint: '易支付平台提供的商戶密鑰（一串字元）。',
                platformPublicKeyPlaceholder: '平台公鑰（RSA）',
                platformPublicKeyHint: '易支付平台提供的公鑰，用於驗證平台返回的簽名。',
                merchantPrivateKeyPlaceholder: '商戶私鑰（RSA）',
                merchantPrivateKeyHint: '您生成的 RSA 私鑰，用於對請求進行簽名。',
                yipayMethodsHint: '選擇該渠道支援的支付方式，至少選擇一種。',
                yipayMethodFeeHint: '手續費會依使用者選擇的支付方式加到應付金額中，充值本金仍按原金額入帳。',
                yipayFeeFieldHint: '易支付手續費請在上方每個支付方式中設定。',
                heleketMethods: '常見幣種展示',
                heleketMethodsPlaceholder: 'USDT@TRON\nUSDT@BSC\nBTC\nETH',
                heleketMethodsHint: '僅作為後台展示與紀錄參考，不會限制使用者在 Heleket 支付頁最終選擇的幣種和網路。',
                instructions: '充值說明',
                instructionsPlaceholder: '請輸入使用者充值時看到的說明資訊...',
            },
        },
        // 計費管理
        billingManage: {
            title: '計費管理',
            description: '管理使用者付費實例和計費紀錄',
            tabOverview: '總覽',
            tabInstances: '付費實例',
            tabRecords: '扣費紀錄',
            totalIncome: '總收入',
            monthIncome: '本月收入',
            todayIncome: '今日收入',
            totalRefund: '總退款',
            paidInstances: '付費實例數',
            activeInstances: '活躍實例',
            searchPlaceholder: '搜尋實例...',
            instanceId: '實例ID',
            instanceName: '名稱',
            user: '使用者',
            plan: '方案',
            expiresAt: '到期時間',
            status: '狀態',
            actions: '操作',
            noInstances: '暫無付費實例',
            suspend: '封停',
            unsuspend: '解封',
            extend: '延期',
            refund: '退款',
            confirmSuspend: '確定封停實例 "{name}"？',
            confirmUnsuspend: '確定解封實例 "{name}"？',
            suspendSuccess: '實例已封停',
            unsuspendSuccess: '實例已解封',
            extendTitle: '延期實例',
            extendDays: '延期天數',
            extendReason: '延期原因',
            freeExtend: '免費延期',
            freeExtendHint: '勾選後不扣除使用者餘額',
            extendSuccess: '實例已延期',
            extendFailed: '延期失敗',
            refundTitle: '退款實例',
            refundAmount: '退款金額',
            refundReason: '退款原因',
            refundSuccess: '退款成功',
            refundFailed: '退款失敗',
            recordId: '紀錄ID',
            recordType: '類型',
            amount: '金額',
            period: '帳期',
            remark: '備註',
            createdAt: '時間',
            noRecords: '暫無扣費紀錄',
            userBalance: '使用者餘額',
            adjustBalance: '調整餘額',
            giftBalance: '贈送餘額',
            adjustTitle: '調整使用者餘額',
            giftTitle: '贈送餘額',
            adjustAmount: '調整金額',
            giftAmount: '贈送金額',
            adjustRemark: '調整原因',
            giftRemark: '贈送備註',
            adjustHint: '正數表示增加，負數表示扣除',
            adjustSuccess: '餘額調整成功',
            giftSuccess: '餘額贈送成功',
            operationFailed: '操作失敗',
        },
        // 計費管理（新鍵名 billing，與元件對應）
        billing: {
            title: '計費管理',
            description: '管理使用者付費實例和計費紀錄',
            loadFailed: '載入計費資料失敗',
            loadInstancesFailed: '載入實例列表失敗',
            loadRecordsFailed: '載入扣費紀錄失敗',
            // Tab 標籤
            tabs: {
                overview: '總覽',
                instances: '付費實例',
                records: '扣費紀錄',
                rechargeRecords: '充值紀錄',
                affConversions: 'AFF 轉化',
                paymentProviders: '支付渠道',
            },
            // 總覽統計
            totalRevenue: '總收入',
            thisMonthRevenue: '本月收入',
            todayRevenue: '今日收入',
            totalRefunds: '總退款',
            paidInstances: '付費實例數',
            activeInstances: '活躍實例',
            suspendedInstances: '已封停實例',
            expiringInstances: '即將到期',
            netRevenueLabel: '淨收入',
            thisMonthVsLastMonth: '本月 / 上月',
            hostedRevenueShare: '托管收入佔比',
            revenueBreakdownTitle: '收入結構',
            directRevenue: '自營收入',
            hostedRevenue: '托管收入',
            instanceHealthTitle: '實例狀態',
            affOverviewTitle: 'AFF返利',
            rechargeLabel: '充值',
            revenueLabel: '收入',
            overviewPeriods: {
                total: '總覽',
                thisMonth: '本月',
                today: '今日',
            },
            // 實例列表
            allStatus: '全部狀態',
            allHosts: '全部節點',
            showExpiring: '僅顯示即將到期',
            showDateColumns: '顯示日期欄',
            searchPlaceholder: '搜尋使用者/節點/實例名/方案/套餐...',
            user: '使用者',
            host: '節點',
            plan: '方案',
            package: '套餐',
            price: '價格',
            expiresAt: '到期時間',
            purchaseDate: '購買日期',
            remainingDays: '剩餘天數',
            expired: '已過期',
            days: '天',
            instanceType: '實例類型',
            instanceName: '實例名',
            instanceStatus: '狀態',
            noInstances: '暫無付費實例',
            viewInstance: '查看',
            autoRenew: '自動續費',
            // 托管類型
            hostingType: '托管類型',
            direct: '直營',
            hosted: '托管',
            cycle: '週期',
            cycleMonths: '{months}個月',
            perPage: '每頁',
            totalCount: '共 {count} 條',
            // 操作
            suspend: '封停',
            unsuspend: '解封',
            extend: '延期',
            refund: '退款',
            deleteRefund: '刪除並退款',
            // 操作彈窗
            suspendTitle: '封停實例',
            unsuspendTitle: '解封實例',
            extendTitle: '延期實例',
            refundTitle: '退款',
            deleteRefundTitle: '刪除並退款',
            targetInstance: '目標實例',
            reason: '原因',
            reasonPlaceholder: '請輸入原因...',
            extendDays: '延期天數',
            freeExtend: '免費延期（不扣餘額）',
            refundAmount: '退款金額',
            refundReasonPlaceholder: '請輸入退款原因...',
            refundReasonRequired: '請填寫退款原因',
            // 刪除並退款相關
            deleteRefundWarning: '警告：此操作將永久刪除實例及其所有資料（快照、備份、端口映射等），此操作不可撤銷！',
            refundTypeLabel: '退款方式',
            refundTypeRemaining: '按剩餘價值退款（根據剩餘天數計算）',
            refundTypeFull: '全額退款（退還所有已消費金額）',
            deleteRefundReasonPlaceholder: '請輸入刪除原因...',
            deleteRefundReasonRequired: '請填寫刪除原因',
            deleteRefundSuccess: '實例已刪除並退款',
            databaseOnlyDelete: '僅數據庫刪除',
            deleteRefundDatabaseOnlySuccess: '實例已從數據庫刪除',
            // 應用折扣相關
            applyDiscount: '應用折扣',
            applyDiscountTitle: '應用續費折扣',
            applyDiscountHint: '輸入AFF優惠碼後，該實例後續續費時將自動享受5%折扣，同時優惠碼創建者也將獲得續費返利。',
            affCodeLabel: 'AFF優惠碼',
            affCodePlaceholder: '請輸入AFF優惠碼...',
            affCodeRequired: '請輸入AFF優惠碼',
            applyDiscountSuccess: '已成功應用續費折扣',
                        // 修改價格相關
                        updatePrice: '修改價格',
                        owner: '擁有者',
                        currentPrice: '當前價格',
                        newPrice: '新價格',
                        enterNewPrice: '請輸入新價格',
                        priceHint: '此價格為單週期價格，修改後將影響續費費用',
                        settleBalance: '結算差價（根據剩餘天數補交/退還）',
                        needPay: '需補交',
                        willRefund: '將退還',
                        priceDiffHint: '根據剩餘 {days} 天計算，將自動處理用戶餘額',
                        noSettleHint: '不結算差價，僅修改後續續費價格，不影響當前週期餘額',
                        affDiscount: 'AFF折扣',
                        actualRenewPrice: '實際續費價',
                        affAppliedHint: '該實例已應用優惠碼，續費時享受 {discount}% 折扣。差價計算已基於折扣後價格。',
                        newActualPrice: '新實際續費價',
            // 切換方案相關
            upgradePlan: '切換',
            upgradePlanTitle: '切換方案',
            currentPlan: '當前方案',
            planName: '方案名稱',
            monthlyPrice: '月均價',
            memoryLabel: '記憶體',
            diskLabel: '磁碟',
            selectNewPlan: '選擇新方案',
            noAvailablePlans: '沒有可升級的方案（新方案月均價需高於當前方案）',
            priceDifference: '補差價',
            priceDifferenceHint: '根據剩餘天數計算，將從用戶餘額中扣除',
            userBalance: '用戶餘額',
            insufficientBalance: '用戶餘額不足，無法完成升級',
            confirmUpgrade: '確認升級',
            monthly: '月付',
            quarterly: '季付',
            semiAnnual: '半年付',
            yearly: '年付',
            month: '月',
            months: '個月',
            // 操作結果
            suspendSuccess: '實例已封停',
            unsuspendSuccess: '實例已解封',
            extendSuccess: '實例已延期',
            refundSuccess: '退款成功',
            batchUpdatePrice: '批量修改價格',
            batchSelectedCount: '已選擇 {count} 個實例',
            selectAllCurrentPage: '選擇目前頁實例',
            selectInstance: '選擇實例',
            batchPriceNoSelection: '請先選擇實例',
            batchSelected: '已選實例',
            batchPreviewChanged: '將更新',
            batchPreviewFailed: '失敗項',
            batchPriceHint: '批量使用同一個單週期價格；預覽會按每個實例的週期、剩餘天數和AFF折扣分別計算。',
            batchTotalCharge: '合計補交',
            batchTotalRefund: '合計退還',
            batchNetAmount: '淨影響',
            batchPreviewBlocked: '目前預覽包含失敗項或用戶餘額不足，不能提交。',
            batchUserImpact: '用戶餘額影響',
            batchPreviewDetails: '預覽明細',
            batchPreviewWaiting: '輸入價格後將自動產生預覽。',
            batchPriceStatusReady: '可更新',
            batchPriceStatusUnchanged: '無變化',
            batchPriceStatusFailed: '失敗',
            result: '結果',
            // 扣費紀錄
            recordType: '類型',
            recordTypes: {
                newPurchase: '新購',
                renew: '續費',
                upgrade: '升級',
                downgrade: '降級',
                refund: '退款',
                transfer_fee: '移轉手續費',
            },
            amount: '金額',
            instance: '實例',
            remark: '備註',
            time: '時間',
            noRecords: '暫無扣費紀錄',
            // 充值統計
            totalRecharge: '總充值',
            thisMonthRecharge: '本月充值',
            todayRecharge: '今日充值',
            orders: '筆',
            // AFF 返利統計
            totalAffCommission: 'AFF返利總額',
            thisMonthAff: '本月AFF返利',
            affConverted: '已轉化金額',
            affPendingConvert: '待審批轉化',
            // 充值紀錄
            loadRechargeRecordsFailed: '載入充值紀錄失敗',
            noRechargeRecords: '暫無充值紀錄',
            rechargeOrderNo: '訂單號',
            creditAmount: '到帳金額',
            actualAmount: '實際到帳',
            estimatedAmount: '預計到帳',
            payChannel: '支付渠道',
            paymentDetails: '支付詳情',
            paymentUuid: 'UUID:',
            paymentTxid: 'TxID:',
            rechargeStatusLabel: '狀態',
            tradeNo: '第三方單號',
            sync: '同步',
            syncSuccess: '同步成功，充值已到帳',
            rechargeStatus: {
                pending: '待支付',
                completed: '已完成',
                cancelled: '已取消',
                failed: '失敗',
            },
        },
    },

    // 錯誤頁面
    error: {
        notFound: '頁面不存在',
        notFoundMessage: '您尋找的頁面不存在或已被移動。',
        serverError: '伺服器錯誤',
        serverErrorMessage: '抱歉，伺服器發生錯誤，請稍後再試。',
        unauthorized: '未授權',
        unauthorizedMessage: '您沒有權限存取此頁面。',
        forbidden: '禁止存取',
        forbiddenMessage: '您沒有權限執行此操作。',
        goHome: '返回首頁',
        goBack: '返回上一頁',
        tryAgain: '重試',
    },

    // 時間格式化
    time: {
        justNow: '剛剛',
        minutesAgo: '{n} 分鐘前',
        hoursAgo: '{n} 小時前',
        daysAgo: '{n} 天前',
        weeksAgo: '{n} 週前',
        monthsAgo: '{n} 個月前',
        yearsAgo: '{n} 年前',
        inMinutes: '{n} 分鐘後',
        inHours: '{n} 小時後',
        inDays: '{n} 天後',
        inWeeks: '{n} 週後',
        inMonths: '{n} 個月後',
        inYears: '{n} 年後',
    },

    // 單位
    units: {
        bytes: 'B',
        kilobytes: 'KB',
        megabytes: 'MB',
        gigabytes: 'GB',
        terabytes: 'TB',
        bitsPerSecond: 'bps',
        kilobitsPerSecond: 'Kbps',
        megabitsPerSecond: 'Mbps',
        gigabitsPerSecond: 'Gbps',
        percentage: '%',
        cores: '核心',
        vcpu: 'vCPU',
    },

    // API 錯誤碼翻譯
    errors: {
        // 通用錯誤
        INVALID_ID: '無效的 ID',
        NOT_FOUND: '資源不存在',
        UNAUTHORIZED: '未授權',
        FORBIDDEN: '無權存取',
        ADMIN_REQUIRED: '需要管理員權限',
        // 使用者錯誤
        USER_NOT_FOUND: '使用者不存在',
        USER_EXISTS: '使用者名稱已存在',
        CANNOT_MODIFY_SELF: '無法修改自己的狀態',
        CANNOT_DELETE_SELF: '無法刪除自己',
        CANNOT_BAN_ADMIN: '無法封禁管理員帳號',
        CANNOT_DELETE_ADMIN: '無法刪除管理員帳號',
        USER_HAS_INSTANCES: '該使用者還有實例，請先刪除實例',
        // 認證錯誤
        INVALID_CREDENTIALS: '使用者名稱或密碼錯誤',
        ACCOUNT_BANNED: '帳號已被停用',
        TOO_MANY_ATTEMPTS: '登入嘗試次數過多，請稍後再試',
        REGISTRATION_DISABLED: '目前已關閉註冊',
        INVALID_INVITE_CODE: '邀請碼無效或已使用',
        INVITE_CODE_EXPIRED: '邀請碼已過期',
        INVALID_2FA_CODE: '驗證碼或恢復碼錯誤',
        TWO_FA_REQUIRED: '請輸入雙重驗證碼',
        TWO_FA_ALREADY_ENABLED: '2FA 已啟用，請先停用後再重新設定',
        TWO_FA_NOT_ENABLED: '2FA 未啟用',
        REFRESH_TOKEN_MISSING: '缺少重新整理權杖',
        REFRESH_TOKEN_INVALID: '重新整理權杖無效或已過期',
        SESSION_NOT_FOUND: '會話不存在',
        // 驗證錯誤
        INVALID_EMAIL: '請輸入有效的電子郵件地址',
        EMAIL_CONTAINS_ILLEGAL: '電子郵件包含非法字元',
        USERNAME_CONTAINS_ILLEGAL: '使用者名稱包含非法字元',
        PASSWORD_TOO_WEAK: '密碼強度不足',
        INVALID_SSH_KEY: '無效的 SSH 公鑰格式',
        SSH_KEY_EXISTS: '該公鑰已新增',
        INVALID_NAME: '名稱格式不正確',
        // 實例錯誤
        INSTANCE_NOT_FOUND: '實例不存在',
        INSTANCE_ALREADY_RUNNING: '實例已在運行',
        INSTANCE_ALREADY_STOPPED: '實例已停止',
        INSTANCE_STATUS_INVALID: '實例狀態不允許此操作',
        INSTANCE_SUSPENDED: '實例已被封停，無法執行此操作',
        INSTANCE_NOT_SUSPENDED: '實例未處於封停狀態',
        INSTANCE_SUSPENDED_EXPIRED: '實例因到期被封停，請續費後解封',
        INSTANCE_DESTROY_TRAFFIC_LIMIT_EXCEEDED: '當前月流量週期無法銷毀，已用流量達到或超過 5G',
        // 主機錯誤
        HOST_NOT_FOUND: '主機不存在',
        HOST_OFFLINE: '主機離線',
        HOST_HAS_INSTANCES: '主機上有實例，請先刪除',
        HOST_ALREADY_OFFICIAL: '此節點已經是自營節點',
        HOST_TAKEOVER_PACKAGE_BINDING_CONFLICT: '接管失敗，部分方案會失去全部綁定節點',
        NO_AVAILABLE_HOSTS: '沒有可用的節點',
        // 映像檔錯誤
        IMAGE_NOT_FOUND: '映像檔不存在',
        IMAGE_SYNCED_ON_HOSTS: '映像檔已在節點上同步，請先從節點刪除',
        IMAGE_TYPE_MISMATCH: '所選映像檔與方案實例類型不相容',
        // 方案錯誤
        PACKAGE_NOT_FOUND: '方案不存在',
        PACKAGE_IN_USE: '方案正在被實例使用',
        // 配額錯誤
        QUOTA_EXCEEDED: '配額不足',
        QUOTA_CPU_EXCEEDED: 'CPU 配額不足',
        QUOTA_MEMORY_EXCEEDED: '記憶體配額不足',
        QUOTA_DISK_EXCEEDED: '磁碟配額不足',
        QUOTA_INSTANCE_EXCEEDED: '實例數量已達上限',
        QUOTA_PORT_EXCEEDED: '連接埠配額不足',
        QUOTA_SNAPSHOT_EXCEEDED: '快照配額不足',
        QUOTA_BACKUP_EXCEEDED: '備份配額不足',
        QUOTA_NOT_ALLOCATED: '請先分配配額',
        // 快照錯誤
        SNAPSHOT_NOT_FOUND: '快照不存在',
        SNAPSHOT_RESTORE_REQUIRES_STOP: '請先停止實例再還原快照',
        // 備份錯誤
        BACKUP_NOT_FOUND: '備份不存在',
        BACKUP_NOT_READY: '備份尚未就緒，無法匯出',
        EXPORT_TASK_NOT_FOUND: '匯出任務不存在或已過期',
        EXPORT_TASK_EXPIRED: '匯出任務已過期',
        // 連接埠映射錯誤
        PORT_IN_USE: '該連接埠已被使用',
        PORT_OUT_OF_RANGE: '連接埠超出允許範圍',
        PORT_MAPPING_NOT_FOUND: '連接埠映射不存在',
        // 節點組錯誤
        NODE_GROUP_NOT_FOUND: '節點組不存在',
        NODE_GROUP_HAS_HOSTS: '節點組下有主機，請先移除',
        NODE_GROUP_HAS_PACKAGES: '節點組被方案使用中',
        // 通知錯誤
        NOTIFICATION_CHANNEL_NOT_FOUND: '通知管道不存在',
        // 幫助錯誤
        ARTICLE_NOT_FOUND: '文件不存在',
        SLUG_EXISTS: 'Slug 已存在',
        // 邀請碼錯誤
        INVITE_CODE_USED: '邀請碼已被使用',
        INVITE_CODE_NOT_FOUND: '邀請碼不存在',
        // OAuth 錯誤
        OAUTH_PROVIDER_DISABLED: '該登入方式已被停用',
        OAUTH_ALREADY_BOUND: '該帳號已被其他使用者綁定',
        OAUTH_NOT_BOUND: '帳號未綁定',
        OAUTH_TOKEN_ERROR: '取得授權失敗',
        // SSH 金鑰錯誤
        SSH_KEY_NOT_FOUND: 'SSH 金鑰不存在',
        SSH_KEY_REQUIRED: '必須選擇一個 SSH 金鑰，請先在個人設定中新增',
        SSH_KEY_NOT_OWNED: 'SSH 金鑰不存在或不屬於該使用者',
        // 方案錯誤（補充）
        PACKAGE_UNAVAILABLE: '方案不可用或已下架',
        CANNOT_CREATE_OWN_PAID_PACKAGE: '不能使用自己的付費方案建立實例',
        // 節點資源錯誤
        HOST_UNAVAILABLE: '選擇的主機不可用或資源不足',
        HOST_NO_ONLINE: '沒有線上的主機，請先在節點管理中測試連線',
        HOST_RESOURCES_NOT_SYNCED: '主機資源資訊未同步，請在節點管理中點擊「測試連線」',
        HOST_NODE_GROUP_NO_HOSTS: '方案要求的節點組中沒有可用節點',
        HOST_RESOURCES_INSUFFICIENT: '所有主機資源不足，請稍後再試或選擇其他方案',
        HOST_NAME_EXISTS: '主機名稱已存在',
        HOST_ADDRESS_EXISTS: '主機連線地址已存在',
        HOST_ADDRESS_UNRESOLVABLE: '面板目前無法解析該主機連線地址',
        HOST_CERT_NOT_CONFIGURED: '請先設定憑證路徑',
        HOST_INVALID_CPU_MAX: 'CPU 最大額配不能為負數',
        HOST_INVALID_MEMORY_MAX: '記憶體最大值不能為負數或低於 256MB',
        HOST_INVALID_IPV6_MODE: 'IPv6 模式必須是 1(路由)、2(NAT) 或 3(停用)',
        HOST_IPV6_ROUTE_REQUIRES_CONFIG: 'IPv6 路由模式需要提供子網路和父介面',
        HOST_CPU_BELOW_USED: 'CPU 最大額配不能低於實例已使用的資源',
        HOST_MEMORY_BELOW_USED: '記憶體最大值不能低於實例已使用的資源',
        // 實例操作錯誤
        INSTANCE_STOP_REQUIRED: '請先停止實例',
        INSTANCE_IMAGE_REQUIRED: '請指定映像檔',
        INSTANCE_IMAGE_UNAVAILABLE: '選擇的映像檔在目前節點不可用',
        INSTANCE_REBUILD_FAILED: '重裝系統失敗',
        INSTANCE_IPV6_NOT_SUPPORTED: '只有 NAT + IPv6 模式的實例才能重新分配 IPv6',
        INSTANCE_IPV6_REASSIGN_FAILED: '重新分配 IPv6 位址失敗',
        INSTANCE_NO_IPV4: '虛擬機實例需要分配 IPv4 位址才能新增連接埠映射',
        HOST_NO_IPV6_SUBNET: '主機未設定 IPv6 子網路',
        IPV6_POOL_EXHAUSTED: 'IPv6 位址池已耗盡，請稍後重試',
        IPV6_REASSIGN_COOLDOWN: '每實例每天只能重新分配一次 IPv6，請稍後再試',
        // 連接埠映射錯誤（補充）
        PORT_MAPPING_NAT_ONLY: '僅 NAT 和雙棧模式支援連接埠映射',
        PORT_NO_AVAILABLE: '沒有可用連接埠，請聯繫管理員',
        PORT_CONFLICT: '連接埠已被佔用，請使用其他連接埠',
        PORT_MAPPING_INVALID_ID: '無效的實例或連接埠映射 ID',
        // 映像檔錯誤（補充）
        IMAGE_CREATE_FAILED: '映像檔建立失敗',
        IMAGE_UPDATE_FAILED: '映像檔更新失敗',
        IMAGE_INVALID_HOST_ID: '無效的映像檔或節點 ID',
        // 備份錯誤（補充）
        BACKUP_CREATE_FAILED: '建立備份失敗',
        BACKUP_DELETE_FAILED: '刪除備份失敗',
        BACKUP_EXPORT_FAILED: '匯出備份失敗',
        BACKUP_QUOTA_NOT_SET: '請先為該實例設定備份配額',
        BACKUP_EXPORT_STATUS_INVALID: '匯出任務狀態異常',
        // 設定錯誤
        CONFIG_INVALID_KEY: '無效的設定鍵',
        CONFIG_INVALID_VALUE: '設定值必須是非負整數',
        // 快照錯誤（補充）
        SNAPSHOT_QUOTA_NOT_SET: '請先為該實例設定快照配額',
        // 方案錯誤（補充）
        PACKAGE_HAS_INSTANCES: '該方案正在被實例使用，無法刪除',
        // 資源限制錯誤
        RESOURCE_CPU_EXCEEDS_PACKAGE: 'CPU 設定超出方案限制',
        RESOURCE_MEMORY_EXCEEDS_PACKAGE: '記憶體設定超出方案限制',
        RESOURCE_DISK_EXCEEDS_PACKAGE: '磁碟設定超出方案限制',
        // 使用者配額錯誤（詳細）
        QUOTA_CPU_INSUFFICIENT: 'CPU 配額不足',
        QUOTA_MEMORY_INSUFFICIENT: '記憶體配額不足',
        QUOTA_DISK_INSUFFICIENT: '磁碟配額不足',
        QUOTA_INSTANCE_LIMIT_REACHED: '實例數量已達上限',
        QUOTA_HOST_LIMIT_REACHED: '主機數量已達上限',
        QUOTA_FRIEND_LIMIT_REACHED: '您的好友數量已達上限',
        QUOTA_PORT_BELOW_USED: '連接埠配額不能小於目前已使用量',
        QUOTA_SNAPSHOT_BELOW_USED: '快照配額不能小於目前已使用量',
        QUOTA_BACKUP_BELOW_USED: '備份配額不能小於目前已使用量',
        QUOTA_PORT_TOTAL_EXCEEDED: '連接埠配額超出使用者總配額',
        QUOTA_SNAPSHOT_TOTAL_EXCEEDED: '快照配額超出使用者總配額',
        QUOTA_BACKUP_TOTAL_EXCEEDED: '備份配額超出使用者總配額',
        // 映像檔錯誤（補充）
        IMAGE_NOT_SYNCED: '映像檔尚未同步到所選主機',
        IMAGE_SYNCING_CANNOT_DELETE: '映像檔正在同步中，無法刪除',
        IMAGE_NO_HOSTS: '沒有可用的節點，請先新增節點',
        // 連接埠錯誤（補充）
        PORT_RANGE_INVALID: '連接埠必須在允許範圍內',
        // 快照策略錯誤
        SNAPSHOT_MANUAL_FULL: '手動快照已達實例配額，無法啟用自動快照',
        SNAPSHOT_RETENTION_EXCEEDS: '保留數量超出可用配額',
        // 備份策略錯誤
        BACKUP_MANUAL_FULL: '手動備份已達實例配額，無法啟用自動備份',
        BACKUP_RETENTION_EXCEEDS: '保留數量超出可用配額',
        // OAuth 錯誤（補充）
        OAUTH_NOT_ENABLED: '該登入方式未啟用',
        // 儲存池錯誤
        STORAGE_POOL_NOT_CONFIGURED: '主機未設定系統磁碟儲存池，無法建立實例',
        // 好友系統錯誤
        CANNOT_ADD_SELF: '無法將自己加為好友',
        ALREADY_FRIENDS: '你們已經是好友了',
        FRIEND_REQUEST_PENDING: '好友請求已在待處理中',
        FRIEND_REQUEST_NOT_FOUND: '好友請求不存在',
        FRIEND_REQUEST_NOT_PENDING: '該請求已被處理',
        FRIENDSHIP_NOT_FOUND: '好友關係不存在',
        TARGET_FRIEND_QUOTA_FULL: '對方好友數量已達上限，無法新增',
        // 方案共享錯誤
        CANNOT_SHARE_TO_SELF: '無法共享給自己',
        PACKAGE_ALREADY_SHARED: '方案已共享給該使用者',
        SHARE_NOT_FOUND: '共享記錄不存在',
        NOT_FRIENDS: '對方不是您的好友',
        SHARE_QUOTA_CPU_EXCEEDED: '共享方案 CPU 配額已用完',
        SHARE_QUOTA_MEMORY_EXCEEDED: '共享方案記憶體配額已用完',
        SHARE_QUOTA_INSTANCES_EXCEEDED: '共享方案實例數量已達上限',
        // 電子郵件驗證錯誤
        EMAIL_VERIFICATION_DISABLED: '電子郵件驗證功能未啟用',
        EMAIL_CODE_REQUIRED: '請輸入電子郵件驗證碼',
        INVALID_EMAIL_CODE: '驗證碼無效或已過期',
        TOO_MANY_VERIFICATION_REQUESTS: '驗證碼請求過於頻繁，請稍後再試',
        EMAIL_SEND_FAILED: '驗證郵件發送失敗，請稍後再試',
        EMAIL_ALREADY_REGISTERED: '該電子郵件地址已被使用',
        EMAIL_DOMAIN_NOT_ALLOWED: '該電子郵件網域不允許註冊，請使用其他信箱',
        // 移轉錯誤
        TRANSFER_NOT_FOUND: '移轉請求不存在',
        TRANSFER_TO_SELF: '無法移轉給自己',
        TRANSFER_TO_BANNED: '無法移轉給被封禁的使用者',
        TRANSFER_ALREADY_PENDING: '該實例已有待處理的移轉請求',
        TRANSFER_NOT_PENDING: '移轉請求不在等待狀態',
        TRANSFER_INVALID_STATUS: '實例狀態不允許移轉',
        TRANSFER_QUOTA_NOT_FOUND: '接收方配額資訊不存在',
        TRANSFER_QUOTA_INSUFFICIENT: '接收方配額不足',
        TRANSFER_INSTANCE_LOCKED: '實例正在移轉中，暫時無法操作',
        TRANSFER_HOST_DISABLED: '該節點已禁止移轉操作',
        TRANSFER_INSUFFICIENT_BALANCE: '餘額不足，無法支付移轉手續費',
        // 移轉過程錯誤
        INSTANCE_MUST_BE_STOPPED: '實例必須在移轉前停止',
        INCUS_RENAME_FAILED: '在主機上重新命名實例失敗',
        DATABASE_ERROR: '資料庫操作失敗，請重試',
        // 敏感操作二次驗證錯誤
        VERIFICATION_REQUIRED: '此操作需要二次驗證',
        INVALID_CODE: '驗證碼無效或已過期',
        NO_NOTIFICATION_CHANNEL: '未綁定通知管道，無需二次驗證',
        EMAIL_NOT_CONFIGURED: '未設定電子郵件，無法發送驗證碼',
        SEND_FAILED: '驗證碼發送失敗',
        // 簽到錯誤
        CHECKIN_NO_INSTANCE: '您需要至少擁有一個實例才能簽到',
        CHECKIN_ALREADY_TODAY: '今日已簽到',
        REDEEM_ALREADY_TODAY: '今日已兌換過兌換碼',
        REDEEM_CODE_NOT_FOUND: '兌換碼不存在',
        REDEEM_CODE_USED: '兌換碼已被使用',
        REDEEM_CODE_EXPIRED: '兌換碼已過期',
        REDEEM_CODE_SELF_ONLY: '此兌換碼只能由擁有者自己使用',
        REDEEM_CODE_DISABLED: '此兌換碼已被停用',
        REDEEM_CODE_INVALID_FORMAT: '兌換碼格式錯誤，僅支援 h- 開頭的系統兌換碼',
        REDEEM_CODE_EXHAUSTED: '此兌換碼已達到最大使用次數',
        REDEEM_CODE_ALREADY_USED_BY_USER: '您已使用過此兌換碼',
        REDEEM_CODE_HOST_MISMATCH: '此兌換碼只能用於同一節點的實例',
        REDEEM_CODE_BATCH_LIMIT: '您已使用過該批次的其他兌換碼',
        REDEEM_EXCEEDS_PACKAGE_QUOTA: '兌換後將超出實例方案配額限制',
        REDEEM_ALREADY_AT_LIMIT: '實例資源已達到方案上限',
        CHECKIN_CODE_PAID_INSTANCE: '簽到兑換碼只能用於免費實例',
        PAID_INSTANCE_DELETION_NOT_ALLOWED: '付費實例不允許刪除',
        // 餘額錯誤
        INSUFFICIENT_BALANCE: '餘額不足，請先充值',
        INTERNAL_ERROR: '伺服器內部錯誤',
    },

    // 流量統計
    traffic: {
        title: '流量統計',
        monthlyUsage: '本月流量',
        used: '已使用',
        unlimited: '無限制',
        total: '總計',
        history30Days: '近 30 天流量',
        historyPeriod: '週期流量',
        noData: '暫無流量資料',
        noHistoryData: '暫無歷史資料',
        throttledHint: '已限速至 1Mbps',
        resetHint: '每月 1 號重置流量',
        periodResetHint: '每月 {date} 號重置流量',
        status: {
            normal: '正常',
            warning: '預警',
            limited: '已限速',
        },
        download: '下載',
        upload: '上傳',
        limit: '限額',
        extraQuota: '額外配額',
        resetDate: '重設日期',
        nextReset: '下次重設',
    },

    // 實例移轉
    transfer: {
        title: '實例移轉',
        sentTab: '移轉記錄',
        receivedTab: '接收記錄',
        pendingCount: '待處理',
        noTransfers: '暫無移轉記錄',
        noPendingTransfers: '暫無待接收的移轉',
        searchPlaceholder: '搜尋實例名稱、接收方使用者名稱或備註...',
        // 狀態
        status: {
            pending: '等待接收',
            processing: '處理中',
            accepted: '已接收',
            rejected: '已拒絕',
            cancelled: '已取消',
        },
        // 操作
        actions: {
            transfer: '移轉',
            accept: '接受',
            reject: '拒絕',
            cancel: '取消',
            push: '直接推送',
        },
        // 完成時間
        completedAt: '完成時間',
        rejectedAt: '拒絕時間',
        cancelledAt: '取消時間',
        // 移轉彈窗
        modal: {
            title: '移轉實例',
            targetUser: '接收方使用者名稱',
            targetUserPlaceholder: '輸入接收方使用者名稱',
            searchUser: '搜尋使用者',
            userNotFound: '使用者不存在',
            userBanned: '該使用者已被封禁',
            cannotTransferToSelf: '無法移轉給自己',
            remark: '備註（選填）',
            remarkPlaceholder: '輸入移轉備註',
            quotaCheck: '配額檢查',
            instance: '實例',
            quotaSufficient: '配額充足',
            quotaInsufficient: '配額不足',
            canTransfer: '使用者狀態正常，可以進行移轉操作',
            confirmTransfer: '確認移轉',
            transferring: '移轉中...',
            deleteWarning: '注意：如果對方接收移轉，系統將自動刪除該實例的連接埠映射、建站反向代理、快照、備份等關聯資源。',
            feeLabel: '移轉手續費',
            balanceLabel: '當前餘額',
            insufficientBalance: '餘額不足，請先充值',
            feeRefundHint: '確認移轉時將扣除手續費，對方拒絕接收將自動退還',
        },
        // 拒絕彈窗
        rejectModal: {
            title: '拒絕移轉',
            reason: '拒絕原因（選填）',
            reasonPlaceholder: '輸入拒絕原因',
        },
        // 設定詳情彈窗
        configModal: {
            title: '移轉時設定詳情',
            instanceName: '實例名稱',
            hostInfo: '主機資訊',
            networkMode: '網路模式',
            portMappings: '連接埠映射',
            snapshots: '快照',
            backups: '備份',
            package: '方案',
        },
        hasRemark: '有備註',
        // 詳情
        detail: {
            fromUser: '發起方',
            toUser: '接收方',
            instance: '實例',
            snapshot: '移轉時設定',
            cpu: 'CPU',
            memory: '記憶體',
            disk: '磁碟',
            ports: '連接埠映射',
            snapshots: '快照',
            backups: '備份',
            host: '節點',
            package: '方案',
            remark: '備註',
            rejectReason: '拒絕原因',
            createdAt: '發起時間',
            acceptedAt: '接收時間',
            rejectedAt: '拒絕時間',
            cancelledAt: '取消時間',
        },
        // 提示訊息
        messages: {
            transferSuccess: '移轉請求已發送',
            transferComplete: '移轉完成',
            acceptSuccess: '已接受移轉',
            rejectSuccess: '已拒絕移轉',
            cancelSuccess: '已取消移轉',
            pushSuccess: '已成功推送實例',
            instanceLocked: '該實例正在移轉中，暫時無法操作',
        },
        // 錯誤
        errors: {
            TRANSFER_NOT_FOUND: '移轉請求不存在',
            TRANSFER_TO_SELF: '無法移轉給自己',
            TRANSFER_TO_BANNED: '無法移轉給被封禁的使用者',
            TRANSFER_ALREADY_PENDING: '該實例已有待處理的移轉請求',
            TRANSFER_NOT_PENDING: '移轉請求不在等待狀態',
            TRANSFER_INVALID_STATUS: '實例狀態不允許移轉',
            TRANSFER_QUOTA_NOT_FOUND: '接收方配額資訊不存在',
            TRANSFER_QUOTA_INSUFFICIENT: '接收方配額不足',
            TRANSFER_INSTANCE_LOCKED: '實例正在移轉中，暫時無法操作',
            TRANSFER_HOST_DISABLED: '該節點已禁止移轉操作',
            TRANSFER_INSUFFICIENT_BALANCE: '餘額不足，無法支付移轉手續費',
            PUSH_NOT_HOST_OWNER: '只有主機擁有者才能直接推送',
        },
    },

    // 忘記密碼
    forgotPassword: {
        title: '忘記密碼',
        description: '輸入您的電子郵件地址，我們將發送重設密碼的連結。',
        emailPlaceholder: '請輸入電子郵件地址',
        submit: '發送重設連結',
        sending: '發送中...',
        success: '重設連結已發送到您的電子郵件',
        backToLogin: '返回登入',
        checkInbox: '請查看您的收件匣',
        didntReceive: '沒有收到電子郵件？',
        resend: '重新發送',
        resendIn: '{seconds} 秒後可重新發送',
    },

    // 重設密碼
    resetPassword: {
        title: '重設密碼',
        description: '輸入您的新密碼',
        newPassword: '新密碼',
        newPasswordPlaceholder: '請輸入新密碼',
        confirmPassword: '確認密碼',
        confirmPasswordPlaceholder: '請再次輸入新密碼',
        submit: '重設密碼',
        resetting: '重設中...',
        success: '密碼已重設，請使用新密碼登入',
        invalidToken: '重設連結無效或已過期',
        tokenExpired: '重設連結已過期，請重新申請',
        backToLogin: '返回登入',
    },

    // 管理後台 - 使用者管理
    adminUsers: {
        title: '使用者管理',
        description: '管理系統中的所有使用者',
        searchPlaceholder: '搜尋使用者名稱、電子郵件...',
        filterAll: '全部',
        filterAdmin: '管理員',
        filterUser: '一般使用者',
        filterBanned: '已封禁',
        columns: {
            user: '使用者',
            email: '電子郵件',
            role: '角色',
            status: '狀態',
            instances: '實例數',
            createdAt: '建立時間',
            lastLogin: '最後登入',
            actions: '操作',
        },
        roles: {
            admin: '管理員',
            user: '使用者',
        },
        status: {
            active: '啟用',
            banned: '已封禁',
            unverified: '未驗證',
        },
        noUsers: '無使用者',
        noUsersHint: '系統中還沒有任何使用者',
        loadFailed: '載入使用者失敗',
        banSuccess: '使用者已封禁',
        unbanSuccess: '使用者已解除封禁',
        deleteSuccess: '使用者已刪除',
        updateSuccess: '使用者已更新',
    },

    // 管理後台 - 主機管理
    adminHosts: {
        title: '主機管理',
        description: '管理系統中的所有主機',
        addHost: '新增主機',
        editHost: '編輯主機',
        deleteHost: '刪除主機',
        searchPlaceholder: '搜尋主機名稱、IP...',
        noHosts: '無主機',
        status: {
            online: '線上',
            offline: '離線',
            maintenance: '維護中',
        },
        columns: {
            name: '名稱',
            publicIp: '公網 IP',
            location: '位置',
            owner: '擁有者',
            status: '狀態',
            instances: '實例數',
            createdAt: '建立時間',
            actions: '操作',
        },
        createSuccess: '主機建立成功',
        updateSuccess: '主機更新成功',
        deleteSuccess: '主機已刪除',
        loadFailed: '載入主機失敗',
    },

    // 管理後台 - 方案管理
    adminPackages: {
        title: '方案管理',
        description: '管理系統中的所有方案',
        addPackage: '新增方案',
        editPackage: '編輯方案',
        deletePackage: '刪除方案',
        searchPlaceholder: '搜尋方案名稱...',
        noPackages: '無方案',
        columns: {
            name: '名稱',
            specs: '規格',
            type: '類型',
            host: '主機',
            instances: '實例數',
            actions: '操作',
        },
        types: {
            container: '容器',
            vm: '虛擬機器',
        },
        createSuccess: '方案建立成功',
        updateSuccess: '方案更新成功',
        deleteSuccess: '方案已刪除',
        loadFailed: '載入方案失敗',
    },

    // 管理後台 - 實例管理
    adminInstances: {
        title: '實例管理',
        description: '管理系統中的所有實例',
        searchPlaceholder: '搜尋實例名稱、擁有者...',
        noInstances: '無實例',
        columns: {
            name: '名稱',
            owner: '擁有者',
            host: '主機',
            package: '方案',
            status: '狀態',
            createdAt: '建立時間',
            actions: '操作',
        },
        filterAll: '全部',
        filterRunning: '運行中',
        filterStopped: '已停止',
        loadFailed: '載入實例失敗',
    },

    // 管理後台 - 系統設定
    adminSettings: {
        title: '系統設定',
        description: '管理系統設定',
        general: '一般設定',
        security: '安全設定',
        email: '電子郵件設定',
        notification: '通知設定',
        saveSuccess: '設定已儲存',
        saveFailed: '儲存設定失敗',
        tabs: {
            general: '一般',
            security: '安全',
            email: '電子郵件',
            notification: '通知',
        },
    },

    // 資源頁面（映像檔）
    resources: {
        hosts: {
            title: '我的節點',
            description: '管理您的節點，這些節點可以供您和您的好友使用',
            create: '新增節點',
            createDesc: '新增一個 Incus 節點',
            ubuntuOnlyHint: '目前僅支援 Ubuntu 22.04+ 和 Debian 11+ 系統。',
            installHintTitle: '填寫節點資訊並提交後，系統會生成包含面板地址和 Token 的安裝命令，複製到節點宿主機執行即可完成安裝。',
            installHintIpv6: '提示：如需 IPv6 網路模式（NAT+IPv6、IPv6 Only），請先在宿主機執行安裝腳本，腳本會自動生成 IPv6 子網資訊供您填入下方表單。',
            ipv6OptionalHint: '如不清楚以上資訊，可先留空。在節點宿主機執行安裝腳本後，腳本會自動檢測並輸出可用的 IPv6 子網，屆時回到面板編輯節點補充即可。',
            storagePoolAfterConnectHint: '節點連線成功後，請記得前往節點詳細頁的「儲存」標籤頁建立儲存池。',
            noHosts: '暫無節點',
            noHostsHint: '新增節點後可以在其上建立實例',
            calibrateAll: '對齊全部',
            noOnlineHosts: '沒有線上的節點可對齊',
            calibrateAllDone: '已對齊 {total} 個節點，其中 {changed} 個有差異已修正',
            calibrateAllNoChange: '已對齊 {total} 個節點，無差異',
            nameHint: '節點名稱以 PEER + 您的用戶ID 作為前綴，後面可自訂',
            nameSuffixRequired: '請輸入節點名稱後綴',
            // 管理員專用：節點切換器
            mine: '我的節點',
            hosted: '託管節點',
            owner: '擁有者',
            filterByUserId: '用戶ID',
            takeoverOfficial: '接管為自營',
            takeoverOfficialLoading: '接管中...',
            takeoverOfficialConfirm: '確定要將節點「{name}」接管為自營嗎？此操作會轉移目前節點，並自動接管可安全轉移的方案；現有實例的使用者歸屬不變。',
            takeoverOfficialSuccess: '已接管節點 {name}，轉移 {packages} 個方案，保留 {instances} 個實例',
            takeoverOfficialDetached: '其中 {count} 個方案仍綁定其他託管節點，已移除目前節點綁定：{names}',
            takeoverOfficialBlocked: '無法接管：有 {count} 個方案在移除目前節點後將失去全部綁定節點，請先手動處理這些方案：{names}',
            // 詳情頁
            transferControl: '移轉控制',
            transferEnabled: '允許移轉',
            transferEnabledHint: '關閉後，該節點上的實例將無法發起移轉請求',
            notificationSettings: '通知設定',
            notificationSettingsHint: '僅透過你已啟用的 Telegram、Discord、Webhook 渠道發送，這裡不會發送 Email。',
            notifyPurchase: '購買通知',
            notifyPurchaseHint: '當有使用者在該節點購買付費實例時通知你。',
            notifyRenew: '續費通知',
            notifyRenewHint: '當有使用者在該節點續費付費實例時通知你。',
            notifyDestroy: '銷毀通知',
            notifyDestroyHint: '當有使用者銷毀該節點實例時通知你，並包含實際退款金額與手續費金額。',
            extraConfig: '額外設定',
            trafficConfig: '流量設定',
            trafficResetDay: '流量重置日',
            trafficResetDayHint: '每月何日重置實例流量（可設定 1-28）',
            enableResourcePool: '參與資源池玩法',
            enableResourcePoolHint: '開啟後，該節點的實例可參與簽到/抽獎資源應用',
        },
        packages: {
            title: '我的方案',
            description: '管理您的方案設定，這些方案可以供您和您的好友使用',
            create: '建立方案',
            noPackages: '暫無方案',
            noPackagesHint: '建立方案後可以在建立實例時使用',
            share: '共享方案',
            viewShares: '查看共享列表',
            selectFriend: '選擇好友',
            selectFriendPlaceholder: '請選擇要共享的好友',
            noFriends: '暫無好友，請先新增好友',
            shareSuccess: '方案共享成功',
            shareFailed: '方案共享失敗',
            confirmUnshare: '確定要取消共享嗎？',
            unshareSuccess: '已取消共享',
            unshareFailed: '取消共享失敗',
            sharesList: '共享列表',
            sharesCount: '{count} 人',
            noShares: '暫無共享記錄',
            noSharesHint: '共享後好友可使用此方案建立實例',
            sharedAt: '共享時間',
            unshare: '取消共享',
            searchFriend: '搜尋好友...',
            noAvailableFriends: '所有好友都已共享此方案',
            selectToShare: '選擇要共享的好友',
            // 配額限制
            quotaSettings: '配額限制',
            quotaMultiplier: '資源配額倍數',
            quotaMultiplierHint: '限制好友可使用的 CPU/記憶體佔方案比例',
            maxInstances: '最大實例數',
            maxInstancesHint: '限制好友最多可開通的實例數量',
            noLimit: '無限制',
            instanceUnit: '{n} 台',
            quotaDisplay: '配額: {multiplier} · 實例: {instances}',
            usageDisplay: '已用: {cpu}% CPU / {memory} MB 記憶體 / {instances} 台',
            updateQuota: '修改配額',
            updateQuotaSuccess: '配額已更新',
            updateQuotaFailed: '更新配額失敗',
            // 美化彈窗新增
            shareToFriend: '分享方案給好友',
            noFriendsHint: '先新增好友才能共享方案',
            allFriendsShared: '已全部共享',
            confirmShare: '確認共享',
            editQuota: '編輯配額',
            editQuotaFor: '正在編輯 {username} 的配額',
            quotaUpdated: '配額已更新',
            quotaUpdateFailed: '更新配額失敗',
            usageStatus: '使用情況',
            instanceCount: '實例數量',
            packageInstanceCount: '套餐下實例數',
            networkModeColumn: '網路模式',
            instanceTypeColumn: '實例類型',
            trafficMultiplierColumn: '流量倍率',
            hostColumn: '宿主機',
            instanceColumn: '實例數',
            publicBadge: '已公開',
            currentUsage: '目前已用: {cpu}% CPU / {memory} MB 記憶體 / {instances} 台實例',
            currentUsageInfo: '目前已使用 {cpu}% CPU、{memory} MB 記憶體、{instances} 台實例',
            addShare: '新增共享',
            searchPlaceholder: '搜尋方案名、節點名、描述...',
            noSearchResults: '未找到符合的方案',
            clearSearch: '清除搜尋',
            // 通知渠道設定
            notifyChannel: '通知渠道',
            notifyChannelTitle: '資源釋放通知渠道',
            notifyChannelDesc: '當使用者刪除實例或主機所有者釋放配額時，系統會透過此渠道發送通知',
            // 分享連結
            copyShareLink: '複製分享連結',
            shareLinkCopied: '分享連結已複製，使用者訪問該連結可直達開通實例頁面',
            // 管理員專用：套餐切換器
            mine: '我的套餐',
            hosted: '託管套餐',
            owner: '擁有者',
            filterByUserId: '用戶ID',
        },
        // 套餐方案管理
        plans: {
            title: '方案管理',
            manage: '管理方案',
            noPlans: '暫無方案',
            noPlansHint: '建立方案後，使用者可以購買此套餐的付費實例',
            add: '新增方案',
            create: '建立方案',
            edit: '編輯方案',
            name: '方案名稱',
            namePlaceholder: '如：基礎版、專業版、企業版',
            description: '方案描述',
            descriptionPlaceholder: '可選，用於向使用者展示方案特點',
            resourceConfig: '資源設定',
            portLimit: '連接埠數',
            snapshotLimit: '快照數',
            backupLimit: '備份數',
            siteLimit: '站點數',
            swapSize: 'SWAP 大小',
            trafficLimit: '流量限額',
            trafficSpeed: '頻寬限制',
            unlimitedHint: '留空表示無限制',
            billingConfig: '計費設定',
            price: '價格',
            billingCycle: '計費週期',
            setupFee: '開通費',
            slaGuarantee: 'SLA保證',
            stock: '庫存',
            isActive: '啟用方案',
            status: '方案狀態',
            statusActive: '可售',
            statusActiveHint: '正常展示並允許使用者選擇和開通',
            statusSoldOut: '售罄',
            statusSoldOutHint: '繼續展示，但禁止新開通和改方案',
            statusInactive: '下架',
            statusInactiveHint: '不在開通入口展示，也不能被選擇',
            sortOrder: '排序',
            daily: '按天',
            weekly: '按週',
            monthly: '月付',
            quarterly: '季付',
            semiAnnual: '半年付',
            yearly: '年付',
            days: '天',
            months: '個月',
            createSuccess: '方案建立成功',
            updateSuccess: '方案更新成功',
            saveFailed: '儲存方案失敗',
            priceRangeHint: '最高 ¥{max}',
            priceRangeError: '方案價格必須在 0-{max} 元之間，最多支援兩位小數',
            confirmDelete: '確定要刪除方案「{name}」嗎？',
            deleteSuccess: '方案已刪除',
            deleteFailed: '刪除方案失敗',
        },
        images: {
            title: '我的映像檔',
            description: '管理您的映像檔設定，這些映像檔可以供您和您的好友使用',
            create: '新增映像檔',
            noImages: '暫無映像檔',
            noImagesHint: '新增映像檔後可以在建立實例時使用',
        },
        title: '資源',
        description: '管理主機的映像檔資源',
        tabs: {
            images: '映像檔',
        },
    },

    // 實例設定標籤頁
    instanceConfig: {
        title: '進階設定',
        sections: {
            swap: 'SWAP',
            storageIO: '儲存 I/O 限制',
            networkLimits: '網路限制',
            processScheduling: '處理程序與排程',
            bootSettings: '啟動設定',
        },
        swap: {
            size: '大小',
            enabled: '已啟用',
            disabled: '已關閉',
            enableButton: '啟用 SWAP',
            disableButton: '關閉 SWAP',
            toggleHint: 'SWAP 可依需求啟用或關閉，重裝或重建後會保留目前狀態。',
            runningRequired: '虛擬機需要先啟動後才能啟用 SWAP。',
            vmHint: '虛擬機會透過實例內的 swapfile 持久啟用。',
            containerHint: '容器會透過 Incus 的記憶體交換限制套用 SWAP。',
            enableConfirmTitle: '啟用 SWAP',
            enableConfirmText: '確定要為此實例啟用 {size} 的 SWAP 嗎？',
            disableConfirmTitle: '關閉 SWAP',
            disableConfirmText: '確定要為此實例關閉 SWAP 嗎？',
            enableSuccess: 'SWAP 已啟用',
            enableFailed: '啟用 SWAP 失敗',
            disableSuccess: 'SWAP 已關閉',
            disableFailed: '關閉 SWAP 失敗',
        },
        changeHost: {
            title: '改節點',
            description: '將實例重新建立到同方案的其他節點，實例 ID 與計費資訊會保留。',
            currentHost: '目前節點',
            availableCount: '{count} 個可選節點',
            button: '改節點',
            loadFailed: '載入可用節點失敗',
            submitFailed: '提交改節點失敗',
            taskQueued: '改節點任務已提交，請稍候...',
            modalTitle: '選擇目標節點',
            modalSubtitle: '只能選擇同方案下 CPU 和記憶體容量充足的節點。',
            warning: '此操作會重新建立實例系統碟，舊實例資料、快照、備份、連接埠映射和反代站點會被清空。',
            selectSshKey: 'SSH 金鑰',
            noSshKey: '沒有可用 SSH 金鑰',
            confirm: '確認改節點',
            current: '目前',
            available: '可用',
            memory: '記憶體',
            reasons: {
                current_host: '目前節點',
                host_offline: '離線',
                host_type_mismatch: '類型不匹配',
                cpu_full: '已滿',
                memory_full: '已滿',
                resource_unconfigured: '未配置配額',
                image_unavailable: '映像檔不可用',
            },
        },
        overridden: '已覆寫',
        resetToDefault: '重設為方案預設值',
        saveSuccess: '設定已儲存',
        saveFailed: '儲存設定失敗',
        boostProcesses: {
            button: '提高上限',
            title: '提高處理程序數上限',
            confirm: '確定要為該 {type} 實例提高處理程序數限制嗎？操作後處理程序數上限將提升至 {limit}。',
            hint: '此操作僅提高處理程序數上限，不會影響實例的其他設定',
            success: '處理程序數上限已提升至 {limit}',
            failed: '提升處理程序數上限失敗',
        },
    },

    // 方案表單頁面
    packageForm: {
        createTitle: '建立方案',
        editTitle: '編輯方案',
        description: '設定方案的資源限制和進階選項',
        sections: {
            basicInfo: '基本資訊',
            resourceLimits: '資源限制',
            storageIO: '儲存 I/O 限制',
            networkLimits: '網路限制',
            processScheduling: '處理程序與排程',
            bootSettings: '啟動設定',
            prerequisite: '前置方案',
            visibility: '可見性',
            instancePermissions: '實例操作權限',
            advancedOptions: '進階選項',
            instanceQuota: '實例配額',
        },
        fields: {
            networkMode: '網路模式',
            instanceType: '實例類型',
            packageCreationMode: '方案用途',
            ioLimitMode: 'IO 限制模式',
            limitsRead: '讀取速率限制',
            limitsWrite: '寫入速率限制',
            limitsReadIops: '讀取 IOPS 限制',
            limitsWriteIops: '寫入 IOPS 限制',
            limitsIngress: '入站頻寬限制',
            limitsEgress: '出站頻寬限制',
            limitsProcesses: '最大處理程序數',
            limitsCpuPriority: 'CPU 優先級',
            bootAutostart: '隨主機自動啟動',
            bootAutostartPriority: '啟動優先級',
            bootAutostartDelay: '啟動延遲',
            bootHostShutdownTimeout: '關機逾時時間',
            portLimit: '連接埠映射數量限制',
            snapshotLimit: '快照數量限制',
            backupLimit: '備份數量限制',
            siteLimit: '站點數量限制',
            hostStoragePools: '節點系統碟儲存池',
            hostTrafficMultiplier: '節點流量倍率',
            requiredPackage: '前置方案',
            publicAccess: '公開方案',
            globalMaxInstances: '最大實例數',
            allowInstanceDeletion: '允許使用者刪除實例',
        },
        hostSelector: {
            official: '自營節點',
            searchPlaceholder: '搜尋節點名、地區、地址、擁有者...',
            selectedCount: '已選擇 {count} 台宿主機',
            noSearchResults: '未找到符合的宿主機',
            detailUnavailable: '目前視圖未載入此宿主機詳情，儲存時仍會保留綁定',
        },
        creationModes: {
            free: {
                title: '免費實例方案',
                description: '實例直接使用方案裡的資源、配額與頻寬限制',
            },
            paid: {
                title: '付費實例方案',
                description: '建立後透過方案設定資源、配額、流量與價格',
            },
        },
        ioMode: {
            throughput: '讀寫速率限制',
            iops: 'IOPS 限制',
        },
        hints: {
            ioLimitMode: 'Incus 僅支援其中一種 IO 限制模式，請選擇一種',
            cpuPriority: '0 為最低優先級，10 為最高優先級',
            bootPriority: '數值越小越先啟動',
            startupDelay: '實例啟動前等待的秒數 (5-600)',
            shutdownTimeout: '主機關機時等待實例關閉的秒數 (30-600)',
            instanceQuota: '限制使用者在此方案實例上可建立的資源數量',
            portLimit: '每個實例可建立的連接埠映射數量上限',
            snapshotLimit: '每個實例可建立的快照數量上限（0表示無配額）',
            backupLimit: '每個實例可建立的備份數量上限（0表示無配額）',
            siteLimit: '每個實例可建立的反代站點數量上限（0表示無配額）',
            hostStoragePools: '為每個已綁定節點指定預設系統碟儲存池；留空時按節點預設規則自動選擇',
            hostTrafficMultiplier: '實例月流量 = 方案或套餐流量 × 此倍率，預設 1',
            requiredPackage: '選擇後，使用者需要先擁有該方案的實例，才能建立此方案實例',
            noSystemStoragePools: '此節點目前沒有可用於實例系統碟的儲存池',
            instanceType: '容器輕量快速，虛擬機器提供完整隔離',
            publicAccess: '開啟後，方案將對所有使用者可見，他們可以使用此方案建立實例；關閉後方案將被隱藏/歸檔',
            globalMaxInstances: '限制使用者最多可開通的實例數量，必須填寫 1-5 之間的整數',
            allowInstanceDeletion: '關閉後，使用此方案建立的實例將不允許使用者刪除',
            freePackageCreationMode: '免費實例無需建立方案，實例會直接繼承本頁設定。若需要門檻或想按付費實例流程開通，請選擇付費實例方案，建立後新增方案並將價格設為 0 元。',
            paidPackageCreationMode: '付費實例會使用方案裡的資源、實例配額、流量與價格。本頁會隱藏這些會被方案覆蓋的項目，並使用預設值儲存方案。',
        },
        units: {
            seconds: '秒',
        },
        placeholders: {
            unlimited: '留空表示無限制',
            autoStoragePool: '自動選擇（未指定）',
            noPrerequisite: '無前置方案',
        },
        validation: {
            cpuPriorityRange: 'CPU 優先級必須在 0-10 之間',
            bootPriorityRange: '啟動優先級必須在 0-100 之間',
            startupDelayRange: '啟動延遲必須在 5-600 秒之間',
            shutdownTimeoutRange: '關機逾時時間必須在 30-600 秒之間',
            portLimitMin: '連接埠映射數量至少為 1',
            globalMaxInstancesRange: '公開方案最大實例數必須是 1-5 之間的整數',
        },
        typeHelp: {
            containerFast: '啟動快速，秒級回應',
            containerLight: '資源佔用小，適合大多數 Linux 應用程式',
            containerDocker: '支援 Docker（需啟用嵌套虛擬化）',
            vmIsolation: '完整隔離，獨立核心',
            vmKernel: '支援自訂核心和核心模組',
            vmWindows: '可運行 Windows 等非 Linux 系統',
        },
    },

    // 敏感操作二次驗證
    sensitiveVerification: {
        title: '敏感操作驗證',
        description: '此操作需要二次驗證以確保帳戶安全',
        operationLabel: '操作類型',
        sendCode: '發送驗證碼',
        resendCode: '重新發送',
        resendIn: '{seconds} 秒後可重新發送',
        codeSent: '驗證碼已發送',
        enterCode: '請輸入驗證碼',
        verify: '驗證',
        verifySuccess: '驗證成功，請重新執行操作',
        verifyFailed: '驗證失敗',
        operationTypes: {
            change_password: '變更密碼',
            disable_2fa: '停用雙重驗證',
            delete_instance: '刪除實例',
            reinstall_instance: '重裝實例',
            recreate_instance: '重建實例',
            transfer_instance: '移轉實例',
            delete_snapshot: '刪除快照',
            delete_backup: '刪除備份',
        },
    },

    // 站內信
    inbox: {
        title: '通知中心',
        description: '查看您的所有系統通知',
        notifications: '通知',
        unread: '未讀',
        all: '全部',
        allCategories: '全部類型',
        markAllRead: '全部已讀',
        markRead: '標記已讀',
        clearRead: '清除已讀',
        noMessages: '暫無通知',
        noUnread: '沒有未讀通知',
        viewAll: '查看全部',
        justNow: '剛剛',
        minutesAgo: '{n} 分鐘前',
        hoursAgo: '{n} 小時前',
        daysAgo: '{n} 天前',
        categories: {
            instance: '實例',
            snapshot: '快照',
            backup: '備份',
            social: '好友',
            transfer: '移轉',
            package: '方案',
            security: '安全',
            quota: '配額',
            ticket: '工單',
            system: '系統',
        },
    },

    // 配額釋放
    quotaRelease: {
        title: '釋放配額',
        packageQuota: '方案配額',
        noHosts: '無可用主機',
        noHostsHint: '此方案未綁定任何主機',
        selectHosts: '選擇主機',
        selectAll: '全選',
        deselectAll: '取消全選',
        available: '可用',
        quotaToAdd: '增加配額',
        preview: '將為 {count} 台主機各增加 {cpu}% CPU 和 {memory} 記憶體',
        notificationChannel: '通知管道',
        noNotification: '不發送通知',
        notificationHint: '釋放配額後，系統會透過此管道發送通知',
        selectChannel: '選擇通知管道',
        bindChannelHint: '僅顯示停用狀態的通知管道，用於資源釋放通知',
        unbindChannel: '解除綁定',
        sendNotification: '發送通知',
        noDisabledChannel: '暫無可用的通知管道',
        noDisabledChannelHint: '請先在「個人設定 - 通知」中新增一個管道並停用它',
        channelEnabledWarning: '此管道已啟用，將同時接收系統事件通知',
        noGlobalChannel: '暫無全域通知管道',
        noGlobalChannelHint: '請聯繫管理員在系統設定中建立全域通知管道',
        confirm: '釋放配額',
        success: '成功為 {count} 台主機釋放配額',
        failed: '釋放配額失敗',
        loadFailed: '載入主機資訊失敗',
        selectHost: '請至少選擇一台主機',
        enterQuota: '請輸入要增加的配額',
        channelUpdated: '通知管道已更新',
        channelUpdateFailed: '更新通知管道失敗',
    },

    // Web 終端機
    terminal: {
        title: '終端機',
        connecting: '正在連線...',
        connected: '已連線',
        disconnected: '已中斷連線',
        failed: '連線失敗',
        connectionFailed: '連線失敗',
        connectionError: '連線錯誤',
        reconnecting: '正在重新連線...',
        reconnect: '重新連線',
        requiresRunning: '需要實例處於運行狀態',
        clear: '清除畫面',
        fullscreen: '全螢幕',
        exitFullscreen: '離開全螢幕',
        fontSize: '字型大小',
        fontSizeIncrease: '放大字型',
        fontSizeDecrease: '縮小字型',
        close: '關閉終端機',
        disconnect: '中斷連線',
        modeExec: 'Shell',
        modeConsole: '控制台',
        modeBootConsole: '啟動控制台',
        modeSwitching: '切換到 Shell',
        modeUnknown: '未知模式',
        consoleFallback: '目前已回退到控制台模式',
        consoleFallbackHint: '此虛擬機未能進入 Shell 模式，目前使用的是串口控制台。若體驗異常，請檢查 qemu-guest-agent、cloud-init 與串口登入設定。',
        switchingToShell: '正在切換到 Shell...',
        switchingToShellHint: 'Shell 已就緒，終端機正在從啟動控制台切換到互動式 Shell。',
        shellReadyNotice: '已進入 Shell',
        shellReadyHint: '啟動控制台輸出已完成，目前終端機已切換到互動式 Shell。',
        consoleOnlyHint: '目前仍處於控制台模式，Shell 尚未就緒或正在重新連線。',
        instanceInfo: '實例：{name}',
        statusConnecting: '連線中',
        statusConnected: '已連線',
        statusDisconnected: '未連線',
        statusError: '錯誤',
        escToClose: '按 Esc 關閉',
        pressCtrlShiftFToSearch: '按 Ctrl+Shift+F 搜尋',
        searchPlaceholder: '搜尋...',
        searchNext: '下一個',
        searchPrevious: '上一個',
        restore: '恢復終端機',
        exportLog: '匯出日誌',
        tab: '標籤',
        newTab: '新增標籤',
        closeTab: '關閉標籤',
        maxTabsReached: '已達到最大標籤數',
        contextMenu: {
            copy: '複製',
            paste: '貼上',
            selectAll: '全選',
        },
        cloudInitChecking: '正在檢查實例初始化狀態...',
        cloudInitInProgress: '實例正在初始化中',
        cloudInitInProgressHint: '實例正在運行 Cloud-init 初始化，可能需要等待 10-60 秒。請稍後點擊「重新檢查」嘗試連線。',
        cloudInitUnknown: 'Cloud-init 狀態待確認',
        cloudInitUnknownHint: '目前無法可靠檢測此 KVM 實例內的 Cloud-init 狀態。你可以繼續連線，或手動標記為已完成。',
        cloudInitRetry: '重新檢查',
        cloudInitSkip: '忽略並連線',
        cloudInitManualComplete: '手動標記完成',
        cloudInitManualCompleteSuccess: '已手動標記此實例初始化為完成',
        mobileKeyboardHint: '請切換至英文鍵盤以取得最佳體驗',
        help: '說明',
        helpTitle: '終端機使用說明',
        helpShortcuts: '快速鍵',
        helpShortcutSearch: '搜尋內容',
        helpShortcutCopy: '複製選取',
        helpShortcutPaste: '貼上',
        helpShortcutFontIncrease: '放大字型',
        helpShortcutFontDecrease: '縮小字型',
        helpShortcutFontReset: '重設字型',
        helpShortcutExport: '匯出日誌',
        helpShortcutNewTab: '新增標籤',
        helpShortcutCloseTab: '關閉標籤',
        helpMouseOps: '滑鼠操作',
        helpMouseSelect: '拖曳選取文字',
        helpMouseCopy: '右鍵選單複製/貼上',
        helpMouseScroll: '滾輪捲動歷史',
        helpTouchOps: '觸控操作',
        helpTouchPinchZoom: '雙指捏合調整字型大小',
        helpTouchSwipeScroll: '單指滑動捲動歷史',
        settings: '設定',
        settingBell: '終端機提示音',
        settingBellDesc: '程式發出提醒時播放聲音（如指令完成、錯誤警告等）',
        settingAutoCopy: '選取自動複製',
        settingAutoCopyDesc: '選取文字後自動複製到剪貼簿',
        settingLinkPreview: '連結預覽',
        settingLinkPreviewDesc: '滑鼠懸停在連結上時顯示 URL',
        settingTouch: '觸控最佳化',
        settingTouchDesc: '啟用行動裝置手勢支援（雙指縮放等）',
        settingThemeDesc: '選擇終端機的配色方案',
        settingTheme: '終端機佈景主題',
        themeDark: '深色',
        themeLight: '淺色',
        themeHighContrast: '高對比度',
        currentStatus: '目前狀態',
        latency: '延遲',
        savedCommands: {
            cloud: '雲端同步',
            title: '快捷命令',
            subtitle: '保存常用命令，隨時送到目前終端機',
            add: '新增',
            synced: '雲端保存',
            encrypted: '加密保存',
            count: '共 {count} 條',
            collapse: '收合快捷命令',
            expand: '展開快捷命令',
            open: '打開快捷命令',
            short: '命令',
            new: '新增命令',
            edit: '編輯命令',
            name: '名稱',
            namePlaceholder: '例如：更新軟體來源',
            command: '命令內容',
            commandPlaceholder: '輸入要保存到雲端的終端機命令',
            description: '備註',
            descriptionPlaceholder: '可選備註，說明這條命令的用途',
            loadFailed: '載入快捷命令失敗',
            createSuccess: '快捷命令已保存',
            updateSuccess: '快捷命令已更新',
            saveFailed: '保存快捷命令失敗',
            deleteSuccess: '快捷命令已刪除',
            deleteFailed: '刪除快捷命令失敗',
            deleteConfirm: '確定刪除「{name}」嗎？',
            emptyTitle: '還沒有快捷命令',
            emptyDescription: '點擊右上角「新增」保存常用命令。',
            selected: '已選擇：{name}',
            notSelected: '選擇一條快捷命令後即可執行或刪除',
            execute: '執行',
            runHint: '會直接送到目前啟用的終端機並立即執行。',
            disconnectedHint: '目前終端機未連線，連線成功後才可執行命令',
            shellRequiredHint: '目前尚未進入 Shell，需等 Shell 就緒後才能執行快捷命令',
        },
        paste: '貼上',
        hideKeyboard: '收起鍵盤',
    },

    // 終端機管理頁面
    terminalPage: {
        newConnection: '新增連線',
        selectInstance: '選擇實例',
        runningCount: '運行中實例 {count} 台',
        selectedInstance: '目前選擇',
        selectionHint: '請選擇一個運行中的實例，終端機會直接連入該實例。',
        directShell: '控制台優先連線',
        directShellHint: '終端機會先附著啟動控制台，並在互動式 Shell 就緒後自動切換。',
        host: '節點',
        package: '套餐',
        instanceId: '實例 ID',
        statusRunning: '運行中',
        noConnections: '暫無終端機連線',
        noRunningInstances: '沒有運行中的實例',
        noRunningInstancesHint: '請先啟動一個實例，或回到實例詳情頁確認運行狀態。',
        connect: '連線',
        description: '管理所有實例的終端機連線',
        searchInstances: '搜尋實例名稱或映像檔...',
        noMatchingInstances: '沒有符合的實例',
        noMatchingInstancesHint: '請嘗試其他關鍵字，或清空搜尋條件查看全部運行中的實例。',
    },

    // 工單系統
    tickets: {
        title: '工單中心',
        myTickets: '我的工單',
        hostTickets: '收到的工單',
        createTicket: '建立工單',
        newTicket: '新增工單',
        ticketDetails: '工單詳情',
        noTickets: '暫無工單',
        noTicketsHint: '您還沒有建立任何工單',
        noHostTickets: '暫無收到的工單',
        noHostTicketsHint: '您的主機沒有收到任何工單',
        noUserTickets: '暫無使用者工單',
        noUserTicketsHint: '目前沒有未綁定實例、直接發給管理員的使用者工單',
        noOfficialTickets: '暫無自營工單',
        noOfficialTicketsHint: '目前沒有來自自營節點的工單',
        noHostedTickets: '暫無託管工單',
        noHostedTicketsHint: '目前沒有來自託管節點的工單',
        status: {
            open: '待處理',
            in_progress: '處理中',
            resolved: '已解決',
            closed: '已關閉',
        },
        priority: {
            low: '低',
            normal: '普通',
            high: '高',
            urgent: '緊急',
        },
        category: {
            general: '一般諮詢',
            billing: '帳務問題',
            technical: '技術支援',
            abuse: '濫用檢舉',
        },
        subject: '主題',
        subjectPlaceholder: '簡要描述問題',
        content: '內容',
        contentPlaceholder: '請至少寫 10 個字，詳細描述您的問題，或上傳圖片附件',
        selectInstance: '選擇實例',
        selectInstanceHint: '選擇實例（可選）',
        noInstancesHint: '您還沒有實例，可直接提交工單',
        hostedInstanceHint: '如需針對託管實例提交工單，請務必選擇對應實例，工單將發送至該節點負責人處理。',
            hostedInstanceHintTitle: '託管實例提示',
        selectCategory: '選擇分類',
        selectPriority: '選擇優先級',
        reply: '回覆',
        replyPlaceholder: '輸入回覆內容...',
        close: '關閉工單',
        reopen: '重新開啟',
        updateStatus: '更新狀態',
        markResolved: '標記為已解決',
        markInProgress: '標記為處理中',
        confirmClose: '確認關閉工單？',
        confirmCloseHint: '關閉後將無法繼續回覆',
        createSuccess: '工單建立成功',
        replySuccess: '回覆成功',
        closeSuccess: '工單已關閉',
        statusUpdated: '狀態已更新',
        host: '主機',
        instance: '實例',
        from: '來自',
        assignedTo: '分配給',
        createdAt: '建立時間',
        lastReply: '最後回覆',
        messages: '訊息',
        viewDetails: '查看詳情',
        pendingCount: '待處理',
        allHosts: '所有主機',
        filterByHost: '按主機篩選',
        filterByStatus: '按狀態篩選',
        sourceFilter: {
            all: '全部工單',
            user: '使用者工單',
            official: '自營工單',
            hosted: '託管工單',
        },
        activeStatus: '活躍',
        allStatus: '全部',
        ownerReply: '客服回覆',
        userReply: '使用者回覆',
        ticketClosed: '工單已關閉，無法回覆',
        mustSelectInstance: '請先選擇實例',
        noInstancesAvailable: '沒有可用的實例',
        instanceDetails: '實例詳情',
        instanceStatus: '狀態',
        instanceId: '實例 ID',
        incusId: 'Incus ID',
        packageName: '方案',
        cores: '核',
        memory: '記憶體',
        disk: '硬碟',
        image: '映像檔',
        loadMoreMessages: '載入更多訊息',
        remaining: '條剩餘',
        needsReply: '需要回覆',
        searchPlaceholder: '搜尋工單 ID、主題、使用者名稱...',
        perPage: '每頁',
        totalCount: '共 {count} 條',
        images: {
            label: '圖片附件',
            hint: '支援 JPG、PNG、WebP、GIF、AVIF，最多 {count} 張，每張不超過 {size}MB',
            add: '新增圖片',
            remove: '移除圖片',
            selected: '已選擇 {count}/{max} 張圖片',
            maxReached: '最多只能上傳 {count} 張圖片',
            invalidType: '僅支援 JPG、PNG、WebP、GIF、AVIF 圖片',
            fileTooLarge: '單張圖片不能超過 {size}MB',
            loadFailed: '圖片載入失敗',
            zoomIn: '放大',
            zoomOut: '縮小',
            resetZoom: '重設縮放',
        },
    },

    // 簽到系統
    checkin: {
        title: '每日簽到',
        checkinTab: '簽到',
        redeemTab: '兌換',
        recordsTab: '記錄',
        notCheckedIn: '今日尚未簽到',
        alreadyCheckedIn: '今日已簽到',
        checkinButton: '簽到',
        checkinSuccess: '簽到成功',
        noInstance: '您需要至少擁有一個實例才能簽到',
        clickToOpen: '點擊禮盒抽取今日獎勵',
        opening: '開啟中',
        revealing: '揭曉獎勵',
        congratulations: '恭喜您獲得以下獎勵',
        redeemCode: '兌換碼',
        codeExpired: '已過期',
        codeUsed: '已使用',
        expiresIn: '剩餘時間',
        copyCode: '複製兌換碼',
        codeCopied: '兌換碼已複製',
        resourceType: '資源類型',
        resourceValue: '資源數值',
        cpu: 'CPU',
        memory: '記憶體',
        disk: '硬碟',
        traffic: '流量',
        points: '積分',
        redeemTitle: '兌換兌換碼',
        inputCode: '請輸入兌換碼',
        selectInstance: '選擇實例',
        selectInstanceHint: '選擇要兌換資源的免費實例',
        redeemButton: '兌換',
        redeemSuccess: '兌換成功',
        cappedFromPackageLimit: '已達方案上限',
        redeemHint: '簽到兌換碼僅可用於免費實例',
        alreadyRedeemed: '今日簽到碼已兌換過',
        noInstancesForRedeem: '沒有可用的免費實例',
        checkinRecords: '簽到記錄',
        redeemRecords: '兌換記錄',
        noRecords: '暫無記錄',
        showingRecent: '顯示最近 {count} 條，共 {total} 條',
        usedBy: '使用者',
        usedFor: '兌換實例',
        self: '自己',
        others: '他人',
        unused: '未使用',
        selfOnlyMode: '僅限自用',
        selfOnlyHint: '您的兌換碼已連續兩天被他人使用，從今天起只能自己使用，直到您自己使用一次',
        rulesTitle: '簽到說明',
        rulesCheckin: '簽到規則',
        rulesCheckin1: '每日 1 次，0 點重置',
        rulesCheckin2: '需擁有至少 1 個實例',
        rulesCheckin3: '隨機獲得 CPU / 記憶體 / 硬碟 / 流量 獎勵',
        rulesRedeem: '兌換規則',
        rulesRedeem1: '兌換碼有效期 3 小時',
        rulesRedeem2: '每人每日限兌換 1 次',
        rulesRedeem3: '資源不能超過方案上限',
        rulesShare: '分享',
        rulesShare1: '兌換碼可分享給好友使用',
        rulesShare2: '連續 2 天被他人使用將限制為僅自己可用，直到再次自己使用後解除',
        percent: '%',
        mb: 'MB',
        gb: 'GB',
        // 資源池系統新增
        tabCheckin: '簽到',
        tabRedeem: '兌換',
        tabPool: '資源池',
        tabLogs: '記錄',
        clickToCheckin: '點擊簽到領取獎勵',
        noInstances: '您需要至少擁有一個實例才能簽到',
        bonusPoints: '額外獲得 {points} 積分',
        savedToPool: '已存入資源池',
        redeemSystemCode: '系統兌換碼',
        enterCode: '輸入兌換碼',
        systemCodePlaceholder: '輸入 h- 開頭的系統兌換碼',
        systemCodeHint: '系統兌換碼（h-前綴）需選擇目標實例，資源將直接應用到該實例',
        redeem: '兌換',
        redeemToInstanceSuccess: '{type} +{value}{unit} 已應用到 {instance}',
        applyToInstance: '應用資源到實例',
        amount: '數量',
        targetInstance: '目標實例',
        kvmCpuHint: 'CPU參數兑換到KVM實例時，必須是100的整數倍',
        kvmHint: 'KVM實例限制：CPU必須是100的倍數，記憶體必須是128MB的倍數，硬碟必須是1GB的倍數，且調整記憶體/硬碟需先停止實例。LXC實例無此限制。',
        apply: '應用',
        applySuccess: '{type} +{value}{unit} 已應用到 {instance}',
        insufficientPool: '資源池餘額不足',
        enterAmount: '請輸入數量',
        allActions: '所有操作',
        allResources: '所有資源',
        noLogs: '暫無記錄',
        action: '操作',
        instance: '實例',
        time: '時間',
        actionCheckin: '簽到獲得',
        actionRedeem: '兌換獲得',
        actionAdminGrant: '管理員贈送',
        actionSystemGrant: '系統獎勵',
        actionLottery: '抽獎獲得',
        actionApply: '應用消耗',
        actionSystemRedeem: '系統兑換碼',
    },

    // 兌換碼管理
    redeemCodes: {
        title: '兌換碼管理',
        create: '建立兌換碼',
        createTitle: '建立兌換碼',
        createBatch: '批次建立',
        codeType: '資源類型',
        codeValue: '資源數值',
        resourceType: '資源類型',
        resourceValue: '資源數值',
        maxUses: '最大使用次數',
        usedCount: '已使用',
        expiresAt: '過期時間',
        expiresAtHint: '留空表示永不過期',
        neverExpires: '永不過期',
        enabled: '已啟用',
        disabled: '已停用',
        enable: '啟用',
        disable: '停用',
        remark: '備註',
        remarkPlaceholder: '可選備註資訊',
        batchCount: '產生數量',
        batchCountHint: '數量大於 1 時將批次產生一次性兌換碼',
        createSuccess: '兌換碼建立成功',
        batchCreateSuccess: '成功建立 {count} 個兌換碼',
        createFailed: '建立失敗',
        deleteConfirm: '確認刪除',
        deleteSuccess: '成功刪除 {count} 個兌換碼',
        deleteFailed: '刪除失敗',
        confirmDelete: '確認刪除',
        confirmDeleteMessage: '確定要刪除選取的 {count} 個兌換碼嗎？此操作不可撤銷。',
        deleteSelected: '刪除選取 ({count})',
        updateSuccess: '更新成功',
        copyCode: '複製兌換碼',
        copyAll: '複製全部',
        copyCodes: '複製所有兌換碼',
        codesCopied: '兌換碼已複製',
        exhausted: '已用完',
        expired: '已過期',
        active: '有效',
        paused: '已暫停',
        usages: '使用記錄',
        usageRecords: '使用記錄',
        noUsages: '暫無使用記錄',
        user: '使用者',
        instance: '實例',
        usedAt: '使用時間',
        selectType: '選擇資源類型',
        selectValue: '請選擇資源數值',
        empty: '暫無兌換碼',
        emptyList: '暫無兌換碼，點擊上方按鈕建立',
        filterAll: '全部',
        filterEnabled: '已啟用',
        filterDisabled: '已停用',
        batchDelete: '批次刪除',
        batchDeleteConfirm: '確定要刪除選取的 {count} 個兌換碼嗎？',
        usesHint: '設為 1 表示一次性兌換碼',
        batchHint: '批次建立只能產生一次性兌換碼',
        batchResult: '批次建立結果',
        code: '兌換碼',
        type: '類型',
        usage: '使用情況',
        status: '狀態',
        actions: '操作',
        loadFailed: '載入失敗',
        batchId: '批次 ID',
        batchLimitHint: '同一批次的兑換碼，每個使用者只能使用一張',
        batch: '批次',
        valueRange: '範圍：{min} - {max}',
        valueOutOfRange: '數值必須在 {min} 到 {max} 之間',
        valueMustBeInteger: '數值必須為整數',
    },

    // 擴充
    extensions: {
        title: '腳本',
        description: '管理擴充功能',
        initCommands: {
            title: '自訂初始化指令',
            description: '建立指令範本，在實例建立/重裝時執行',
            add: '新增指令',
            addFirst: '新增第一個指令',
            edit: '編輯指令',
            view: '查看詳情',
            viewDetail: '指令詳情',
            empty: '暫無自訂指令',
            emptyHint: '點擊上方按鈕建立第一個初始化指令範本',
            name: '名稱',
            namePlaceholder: '輸入指令名稱',
            command: '指令內容',
            commandPlaceholder: '輸入 Shell 指令，每行一條\n範例：\napt update\napt install -y nginx',
            commandHint: '每行一條指令，實例初始化時按順序執行',
            distros: '適配發行版',
            distrosHint: '選擇此指令相容的 Linux 發行版',
            remark: '備註',
            remarkPlaceholder: '可選描述',
            createdAt: '建立時間',
            actions: '操作',
            status: '狀態',
            statusEnabled: '已啟用',
            statusDisabled: '已停用',
            enabled: '指令已啟用',
            disabled: '指令已停用',
            clickToEnable: '點擊啟用',
            clickToDisable: '點擊停用',
            toggleFailed: '切換狀態失敗',
            confirmDelete: '確定要刪除指令「{name}」嗎？此操作不可撤銷。',
            createSuccess: '指令建立成功',
            updateSuccess: '指令更新成功',
            deleteSuccess: '指令已刪除',
            createFailed: '建立失敗',
            updateFailed: '更新失敗',
            deleteFailed: '刪除失敗',
            loadFailed: '載入指令失敗',
            loadDetailFailed: '載入指令詳情失敗',
            noContent: '無內容',
            lineCount: '{count} 行',
            addTitle: '新增初始化指令',
            editTitle: '編輯初始化指令',
            modalDesc: '指令將在實例初始化時執行',
            selectTitle: '初始化指令',
            optional: '(可選)',
            noAvailable: '暫無可用的初始化指令',
            goToManage: '前往擴充頁面建立',
            selectHint: '已選指令將在實例初始化完成後執行',
            selectedCount: '已選擇 {count} 個',
            showAll: '展開全部 {count} 條',
            collapse: '收合',
            distroAll: '所有發行版',
            distroNames: {
                all: '所有發行版',
                ubuntu: 'Ubuntu',
                debian: 'Debian',
                rhel: 'RHEL/CentOS/Fedora',
                alpine: 'Alpine',
                arch: 'Arch Linux',
                suse: 'openSUSE/SLES',
            },
        },
    },

    // 計費管理
    billing: {
        // 通用
        balance: '餘額',
        frozen: '凍結',
        totalRecharge: '累計充值',
        totalConsume: '累計消費',
        yuan: '元',
        months: '個月',
        month: '月',
        days: '天',
        save: '節省',
        freeInstance: '免費實例',
        paidInstance: '付費實例',
        traffic: '月流量',
        trafficBidirectional: '雙向',
        soldOut: '售罄',
        
        // 實例計費資訊
        billingInfo: '計費資訊',
        currentPlan: '當前方案',
        expiresAt: '到期時間',
        neverExpires: '永不過期',
        autoRenew: '自動續費',
        autoRenewOn: '自動開',
        autoRenewOff: '自動關',
        autoRenewEnabled: '已開啟自動續費',
        autoRenewDisabled: '已關閉自動續費',
        autoRenewing: '自動續費',
        enableAutoRenew: '開啟自動續費',
        disableAutoRenew: '關閉自動續費',
        autoRenewHint: '到期前 24 小時將自動從餘額扣款續費',
        autoRenewDesc: '開啟自動續費後，實例將在到期前自動按 {cycle} 週期續費，每次續費 ￥{price}',
        currentStatus: '當前狀態',
        
        // 續費
        renew: '續費',
        renewInstance: '實例續費',
        renewTitle: '續費實例',
        selectRenewPeriod: '選擇續費時長',
        renewMonths: '{months} 個月',
        renewPrice: '續費金額',
        originalPrice: '原價',
        affDiscount: '優惠碼折扣',
        actualPrice: '實付金額',
        newExpiresAt: '續費後到期',
        currentBalance: '當前餘額',
        balanceAfterRenew: '續費後餘額',
        insufficientBalance: '餘額不足',
        goRecharge: '前往充值',
        renewing: '續費中...',
        renewSuccess: '續費成功',
        renewFailed: '續費失敗',
        freeInstanceNoRenew: '免費實例無需續費',
        hostingRenewTooEarly: '託管實例僅可在到期前 7 天內續費（當前剩餘 {days} 天）',
        
        // 升降級
        changePlan: '升級',
        changePlanTitle: '變更套餐方案',
        upgrade: '升級',
        selectNewPlan: '選擇新方案',
        currentPlanLabel: '當前方案',
        newPlanLabel: '新方案',
        remainingDays: '剩餘天數',
        remainingValue: '剩餘價值',
        newPlanCost: '新方案費用',
        priceDiff: '差價',
        needPay: '需要支付',
        noPriceChange: '無需補差價',
        isUpgrade: '升級',
        planNotActive: '方案已下架',
        planNoStock: '方案已售罄',
        changePlanInProgress: '升級方案中...',
        changePlanSuccess: '方案升級成功',
        changePlanFailed: '方案升級失敗',
        needRestart: '請重啟實例以套用新配置',
        newConfig: '新配置',
        freeInstanceNoChange: '免費實例不支援升級',
        samePlan: '不能切換到相同方案',
        // 變更規則
        viewRules: '變更規則',
        hideRules: '收起規則',
        changePlanRulesTitle: '方案升級規則',
        changePlanRule1: '按日價計算差價，升級補差價',
        changePlanRule2: '剩餘天數 ≥ 15 天才可升級方案',
        changePlanRule3: '到期時間保持不變',
        changePlanRule4: '優惠碼折扣繼續享受',
        // 已是最高方案
        alreadyHighestPlan: '當前已是最高方案',
        contactForCustomPlan: '更高配置可提交工單定制',
        // KVM/LXC 重啟提示
        kvmRestartHint: 'KVM 實例升級後需重啟以套用新配置；若使用過重裝腳本，可能需自行擴容分割區',
        lxcInstantHint: 'LXC 實例升級後配置即時生效',
        kvmRestartRequired: 'KVM 實例方案已變更，請重啟實例以套用新配置',
        // 不能變更原因
        cannotChange: '暫時無法升級',
        cannotChangeRemainingDays: '剩餘天數不足 {days} 天，無法升級方案',
        cannotChangeInstanceStatus: '當前實例狀態不允許升級方案，僅運行中或已停止的實例可以操作',
        cannotChangeUnknown: '當前無法升級方案',
        // 計算詳情
        oldDailyPrice: '原方案日價',
        newDailyPrice: '新方案日價',
        day: '天',
        newPlanCostOriginal: '新方案剩餘費用',
        newPlanCostFinal: '新方案剩餘費用（折後）',
        discountAmount: '優惠碼折扣',
        
        // 計費記錄
        records: '計費記錄',
        billingRecords: '計費記錄',
        recordType: '類型',
        recordAmount: '金額',
        recordPeriod: '帳期',
        recordRemark: '備註',
        recordTypes: {
            purchase: '購買',
            renewal: '續費',
            upgrade: '升級',
            downgrade: '降級',
            admin_extension: '管理員延期',
        },
        
        // 充值
        recharge: '充值',
        rechargeTitle: '帳戶充值',
        rechargeAmount: '充值金額',
        actualAmount: '實際到帳',
        fee: '手續費',
        minAmount: '最低充值',
        maxAmount: '最高充值',
        selectPaymentMethod: '選擇支付方式',
        noPaymentProviders: '暫無可用支付渠道',
        createOrder: '建立訂單',
        creatingOrder: '建立訂單中...',
        orderCreated: '訂單已建立',
        orderNo: '訂單號',
        orderStatus: '訂單狀態',
        orderExpiredAt: '支付截止時間',
        cancelOrder: '取消訂單',
        orderCancelled: '訂單已取消',
        orderStatus_pending: '待支付',
        orderStatus_paid: '已支付',
        orderStatus_completed: '已完成',
        orderStatus_failed: '已失敗',
        orderStatus_cancelled: '已取消',
        orderStatus_expired: '已過期',
        orderStatus_refunded: '已退款',
        
        // 充值記錄
        rechargeRecords: '充值記錄',
        noRecords: '暫無記錄',
        viewDetails: '查看詳情',
        
        // 餘額記錄
        balanceLogs: '餘額明細',
        balanceLogTypes: {
            recharge: '充值',
            purchase: '購買',
            renewal: '續費',
            upgrade: '升級',
            downgrade: '降級',
            refund: '退款',
            admin_adjust: '管理員調整',
        },
        
        // 套餐方案
        plan: '方案',
        planName: '方案名稱',
        planPrice: '價格',
        planBillingCycle: '帳期',
        planConfig: '配置',
        planStock: '庫存',
        planSoldOut: '已售罄',
        planInactive: '已下架',
        billingCycleMonthly: '月付',
        billingCycleQuarterly: '季付',
        billingCycleYearly: '年付',
        perMonth: '/月',
        perQuarter: '/季',
        perYear: '/年',
    },

    // 託管準入
    hosting: {
        accessDenied: {
            title: '暫不滿足託管條件',
            description: '您需要滿足以下條件才能使用託管功能：',
            condition: '至少擁有過 1 台實例',
            currentInstances: '當前擁有 {count} 台實例',
            hint: '實例包括免費和付費實例，官方直營和託管節點均可。',
            featureHiddenCondition: '託管功能暫未對新使用者開放',
            featureHiddenCurrent: '您還沒有建立過節點，目前入口已被系統隱藏。',
            featureHiddenHint: '如需使用託管功能，請聯絡管理員開放，或等待功能重新開放。',
        },
    },

    // 託管收益
    hostingWallet: {
        title: '託管收益',
        description: '查看您的節點託管收益和提現記錄',
        hostingMember: '託管者會員',
        notice: {
            title: '託管公告',
        },
        balance: {
            available: '可用餘額',
            frozen: '凍結中',
            frozenNote: '收入凍結30天後解凍',
            totalIncome: '累計收入',
        },
        stats: {
            myHostsCount: '託管節點',
            instancesOnMyHosts: '節點實例',
            uniqueCustomersCount: '客戶數',
            monthIncome: '本月收入',
        },
        withdraw: {
            button: '申請提現',
            minAmountNote: '可用餘額達到 {amount} 後可提現',
        },
        tabs: {
            overview: '概覽',
            logs: '收支明細',
            withdrawals: '提現記錄',
            blocks: '黑名單',
        },
        overview: {
            title: '提現說明',
            howItWorks: '收益流程',
            step1Title: '用戶購買實例',
            step1Desc: '用戶在您的節點上購買/續費實例',
            step2Title: '收入凍結',
            step2Desc: '收益計入託管餘額，凍結30天',
            step3Title: '解凍提現',
            step3Desc: '凍結期滿後可申請提現',
            minAmountTitle: '最低提現',
            minAmount: '最低提現金額 {amount}',
            feeTitle: '提現手續費',
            feeDesc: '提現到面板餘額手續費 {rate}%',
            feeDescNew: '提現到面板餘額手續費 5%，提現到指定方式手續費 10%',
            manualTitle: '手動提現',
            manualDesc: '如需提現到其他方式（手續費 10%），請提交工單申請',
            withdrawMethodTitle: '提現方式',
            withdrawMethodDesc: '自助提現至餘額或發送工單申請其他提現方式',
        },
        logs: {
            noRecords: '暫無收支記錄',
            emptyHint: '當用戶在您的節點上購買實例後，收益將顯示在這裡',
            searchPlaceholder: '搜尋用戶名/郵箱/實例名...',
            filterAll: '全部類型',
            freePlan: '免費',
            columns: {
                type: '類型',
                amount: '金額',
                status: '狀態',
                buyer: '購買者',
                instance: '實例',
                host: '節點',
                package: '套餐',
                plan: '方案',
                remark: '備註',
                time: '時間',
            },
            types: {
                income: '收入',
                unfreeze: '解凍',
                withdraw: '提現',
                deduction: '扣除',
            },
            actionTypes: {
                purchase: '開通',
                renew: '續費',
                upgrade: '升級',
                destroy: '銷毀',
                unfreeze: '解凍',
                withdraw: '提現',
                admin_adjust: '管理員調整',
            },
            status: {
                frozen: '凍結中',
                unfrozen: '已解凍',
            },
            unknownInstance: '未知實例',
            unknownUser: '未知用戶',
            unknownHost: '未知節點',
        },
        perPage: '條/頁',
        prevPage: '上一頁',
        nextPage: '下一頁',
        withdrawals: {
            noRecords: '暫無提現記錄',
            emptyTitle: '還沒有提現記錄',
            emptyHint: '當您的可用餘額達到最低提現金額後，可以申請提現',
            startEarning: '立即提現',
            columns: {
                amount: '金額',
                actualAmount: '實際到賬',
                target: '提現方式',
                status: '狀態',
                time: '申請時間',
            },
            target: {
                balance: '面板餘額',
            },
            status: {
                pending: '待審核',
                approved: '已通過',
                rejected: '已拒絕',
                completed: '已完成',
            },
        },
        blocks: {
            title: '用戶黑名單',
            description: '被拉黑用戶無法在開通實例處看到您的託管套餐和方案，也無法新開通您的實例。',
            total: '共 {count} 位用戶',
            searchLabel: '搜尋站內用戶',
            searchPlaceholder: '輸入 UID、用戶名或郵箱，至少 2 個字元',
            noSearchResults: '沒有找到匹配的用戶',
            blockedUsers: '已拉黑用戶',
            effectHint: '這些用戶無法新開通您的託管套餐，已有實例和續費不受影響。',
            emptyTitle: '暫無拉黑用戶',
            emptyHint: '可以透過上方搜尋添加。',
            block: '拉黑',
            unblock: '解除拉黑',
            blockSuccess: '已加入黑名單',
            unblockSuccess: '已移出黑名單',
        },
        modal: {
            title: '申請提現',
            amount: '提現金額',
            availableNote: '可用餘額：{amount}',
            targetBalance: '提現到面板餘額（手續費 {rate}%）',
            manualWithdrawNote: '如需手動提現到指定方式（手續費 10%），請提交工單申請提現託管餘額',
            summary: {
                amount: '提現金額',
                fee: '手續費',
                actual: '實際到賬',
            },
            cancel: '取消',
            confirm: '確認提現',
            submitting: '提交中...',
        },
        errors: {
            minAmount: '最低提現金額為 {amount}',
            exceedBalance: '提現金額超過可用餘額',
        },
    },

    vipBenefits: {
        commonMember: '普通會員',
        overviewLabel: 'VIP 福利大廳',
        overviewTitle: '當前等級 {level}',
        overviewDesc: '達到最高 {level}，即可領取下方已解鎖等級的全部獎勵。請先領完低等級福利，再領取更高等級福利。',
        noVipDesc: '升級 VIP 後可領取等級福利，所有獎品會按等級從低到高展示。',
        availableSummary: '已解鎖獎勵匯總',
        availableSummaryDesc: '這裡匯總當前等級已解鎖的全部獎勵額度。',
        remainingSummary: '剩餘可領取',
        noAvailableReward: '暫無已解鎖獎勵',
        empty: '暫無 VIP 福利，請稍後再來。',
        levelRewards: 'VIP{level} 獎勵',
        levelUnlocked: '已達到該等級',
        levelLocked: '升級後可領取',
        rewardCount: '{count} 個獎品',
        rewardValue: '獎勵內容',
        claimProgress: '領取進度',
        claim: '領取',
        claimAll: '一鍵領取剩餘獎勵',
        claimingAll: '正在領取...',
        claimed: '已領取',
        pendingDelivery: '待發放',
        upgradeRequired: '待升級',
        claimLowerFirst: '先領 VIP{level}',
        claimSuccess: '領取成功',
        noClaimableReward: '暫無可領取獎勵',
        rewardReceived: 'VIP 福利獎勵',
        pointsUnit: '積分',
        instanceReward: '套餐實例',
        instanceValue: '{plan} · {quantity} 台 · {days} 天',
        feedback: {
            delivered: '已到帳',
            pending: '待發放',
        },
        types: {
            balance: '餘額',
            points: '積分',
            instance: '實例',
        },
        summary: {
            unlocked: '已解鎖',
            claimable: '可領取',
            claimed: '已領取',
            pending: '待發放',
        },
        status: {
            claimable: '可領取',
            claimed: '已領取',
            locked: '待升級',
            blocked: '先領取 VIP{level}',
            pending: '待發放',
        },
    },

    // 福利系統
    entertainment: {
        title: '福利',
        description: '領取會員福利，管理積分和徽章獎勵',
        currentPoints: '當前積分',
        convertPoints: '兑換積分',
        noPointsToConvert: '暫無可兑換積分',
        convertSuccess: '成功兑換 {points} 積分',
        convertFailed: '兑換失敗',
        pointsUnit: '分',
        tabs: {
            lottery: '抽獎',
            records: '抽獎記錄',
            points: '積分明細',
        },
        mainTabs: {
            vipBenefits: 'VIP 福利',
            lottery: '抽獎',
            badge: '徽章',
            blindbox: '盲盒',
            checkin: '簽到',
        },
        comingSoon: '敬請期待',
        blindbox: {
            title: '盲盒',
        },
        checkinSection: {
            title: '每日簽到',
        },
        // 抽獎
        spin: '抽獎',
        spinCost: '消耗 {points} 積分',
        spinFailed: '抽獎失敗',
        selectLottery: '請選擇抽獎活動',
        notEnoughPoints: '積分不足',
        noActiveLotteries: '暫無可用的抽獎活動',
        prizeList: '獎品列表',
        probability: '概率',
        remaining: '剩餘',
        // 十連抽
        multiDraw: '十連抽',
        multiDrawAgain: '再次十連',
        multiDrawFailed: '十連抽失敗',
        multiDrawResults: '十連抽結果',
        multiDrawStopped: '抽獎提前結束',
        notEnoughPointsForMulti: '積分不足，需要 {required} 積分，當前僅有 {current} 積分',
        totalDraws: '抽獎次數',
        totalPointsSpent: '消耗積分',
        badgeUnit: '枚',
        instanceUnit: '台',
        multiDrawBadgesTitle: '本次十連抽中了徽章',
        multiDrawBadgesSubtitle: '本輪十連共獲得 {count} 枚徽章，先看看這次的新收穫。',
        continueToMultiResults: '繼續查看十連結果',
        // 獎品類型
        prizeTypes: {
            nothing: '再接再勵',
            points: '積分',
            balance: '餘額',
            badge: '隨機徽章',
            instance: '實例',
            cpu: 'CPU資源',
            memory: '記憶體資源',
            disk: '硬碟資源',
            traffic: '流量資源',
        },
        // 中獎結果
        congratulations: '恭喜中獎！',
        betterLuckNextTime: '再接再勵',
        wonPoints: '獲得 {points} 積分',
        wonBalance: '獲得 ¥{amount} 餘額',
        wonBadge: '獲得徽章：{badge}',
        wonInstance: '請提交工單領取實例獎勵',
        wonCpu: '獲得 {value}% CPU，已存入資源池',
        wonMemory: '獲得 {value}MB 記憶體，已存入資源池',
        wonDisk: '獲得 {value}MB 硬碟，已存入資源池',
        wonTraffic: '獲得 {value}GB 流量，已存入資源池',
        // 抽獎記錄
        lotteryName: '活動名稱',
        prize: '獎品',
        prizeType: '獎品類型',
        value: '獎勵值',
        time: '時間',
        noRecords: '暫無抽獎記錄',
        loadRecordsFailed: '載入抽獎記錄失敗',
        loadLotteriesFailed: '載入抽獎活動失敗',
        // 積分明細
        pointsLogType: '類型',
        pointsChange: '變動',
        pointsAfter: '變動後',
        remark: '備註',
        noPointsLogs: '暫無積分記錄',
        loadPointsLogsFailed: '載入積分記錄失敗',
        pointsLogTypes: {
            convert: '消費兑換',
            lotteryWin: '抽獎獲得',
            lotterySpend: '抽獎消耗',
            badgeDrawSpend: '徽章隨機抽取消耗',
            badgeSelectSpend: '徽章自選消耗',
            adminAdjust: '管理員調整',
            checkin: '簽到獎勵',
        },
        badges: {
            drawTab: '抽卡',
            myTab: '我的徽章',
            randomTitle: '隨機抽取',
            randomHint: '等概率，必中一個徽章',
            randomDescription: '消耗 {points} 積分，所有徽章等概率，必定獲得一個徽章副本。',
            randomButton: '隨機抽一次（{points} 積分）',
            randomMultiButton: '隨機十連（{points} 積分）',
            selectTitle: '自選領取',
            selectHint: '直接選擇一個指定徽章',
            selectDescription: '消耗 {points} 積分，從下方直接選擇一個想要的徽章。',
            selectButton: '領取目前選中徽章（{points} 積分）',
            multiDrawTitle: '十連抽獲得的徽章',
            multiDrawSubtitle: '本次十連共獲得 {count} 枚徽章。',
            myTitle: '我的徽章',
            summary: '可用 {available}，已套用 {applied}',
            filterAll: '全部類型',
            ownedCount: '已擁有 {count}',
            empty: '還沒有獲得任何徽章。',
            statusAvatar: '已套用到頭像',
            statusInstance: '已套用到實例',
            statusUnused: '未套用',
            sourceLabel: '來源',
            sourceDraw: '隨機抽取',
            sourceLottery: '抽獎獲得',
            sourceSelect: '自選領取',
            sourceAdminGrant: '管理員發放',
            obtainedAt: '獲得時間',
            currentInstance: '目前實例',
            applyAvatar: '套用到頭像',
            applyInstance: '套用到實例圖示',
            applyInstanceButton: '套用到實例',
            selectInstance: '選擇一個實例',
            unapply: '取消套用',
            selectRequired: '請先選擇一個徽章',
            instanceRequired: '請先選擇實例',
            drawSuccess: '獲得徽章：{badge}',
            selectSuccess: '領取成功：{badge}',
            rewardTitleDraw: '抽卡成功',
            rewardTitleSelect: '領取成功',
            rewardSubtitle: '新徽章已經加入你的收藏，現在就可以前往「我的徽章」套用到頭像或實例。',
            rewardSeriesLabel: '所屬系列',
            rewardRemainingPoints: '剩餘積分',
            rewardDrawAgain: '再抽一次',
            rewardViewMine: '查看我的徽章',
            applyAvatarSuccess: '已套用到頭像',
            applyInstanceSuccess: '已套用到實例圖示',
            unapplySuccess: '已取消套用',
        },
        // 管理端
        admin: {
            title: '娛樂管理',
            description: '管理抽獎活動、獎品和用戶積分',
            tabs: {
                lotteries: '抽獎活動',
                records: '中獎記錄',
                users: '用戶積分',
                badges: '徽章',
            },
            createLottery: '建立抽獎',
            editLottery: '編輯抽獎',
            lotteryName: '活動名稱',
            enterLotteryName: '請輸入活動名稱',
            lotteryDesc: '描述',
            enterDescription: '請輸入描述（可選）',
            costPoints: '消耗積分',
            startAt: '開始時間',
            endAt: '結束時間',
            isActive: '啟用',
            enterName: '請輸入名稱',
            invalidCostPoints: '消耗積分必須大於0',
            createSuccess: '建立成功',
            updateSuccess: '更新成功',
            saveFailed: '儲存失敗',
            deleteSuccess: '刪除成功',
            deleteFailed: '刪除失敗',
            noLotteries: '暫無抽獎活動',
            loadLotteriesFailed: '載入抽獎活動失敗',
            prizes: '獎品',
            totalDraws: '抽獎次數',
            status: '狀態',
            active: '已啟用',
            inactive: '已停用',
            // 獎品管理
            managePrizes: '管理獎品',
            addPrize: '新增獎品',
            prizeName: '獎品名稱',
            prizeType: '獎品類型',
            prizeValue: '獎勵值',
            balanceValue: '餘額（分）',
            balanceCents: '輸入分，如100=1元',
            cpuPercent: '輸入CPU百分比',
            memoryMB: '輸入記憶體(MB)',
            diskMB: '輸入硬碟(MB)',
            trafficGB: '輸入流量(GB)',
            probability: '權重',
            quantity: '數量',
            unlimited: '無限',
            noQuantityForType: '此類型獎品不能設定數量限制',
            replenish: '補充庫存',
            remaining: '剩餘',
            replenishPlaceholder: '輸入補充數量',
            instanceDesc: '實例描述',
            instanceDescPlaceholder: '如：1核/1G/10G SSD',
            noPrizes: '暫無獎品，點擊上方按鈕新增',
            enterPrizeName: '請輸入獎品名稱',
            invalidProbability: '權重必須大於0',
            savePrizesSuccess: '獎品儲存成功',
            savePrizesFailed: '獎品儲存失敗',
            // 中獎記錄
            user: '用戶',
            searchUser: '搜尋用戶名',
            noRecords: '暫無中獎記錄',
            loadRecordsFailed: '載入中獎記錄失敗',
            prize: '獎品',
            value: '獎勵值',
            // 用戶積分
            currentPoints: '當前積分',
            totalEarned: '累計獲得',
            totalSpent: '累計消耗',
            lastConvertedAt: '最後兑換',
            noUsers: '暫無用戶積分資料',
            loadUsersFailed: '載入用戶積分失敗',
            // 徽章目錄
            badgeCatalog: {
                loadFailed: '載入徽章目錄失敗',
                fillSeriesRequired: '請填寫系列 ID、標題、名稱和說明',
                seriesUpdated: '系列已更新',
                seriesCreated: '系列已建立',
                saveSeriesFailed: '儲存系列失敗',
                seriesDeleted: '系列已刪除',
                deleteSeriesFailed: '刪除系列失敗',
                fillBadgeRequired: '請填寫徽章 ID、名稱、標籤、系列和預設圖片地址',
                badgeUpdated: '徽章已更新',
                badgeCreated: '徽章已建立',
                saveBadgeFailed: '儲存徽章失敗',
                badgeDeleted: '徽章已刪除',
                deleteBadgeFailed: '刪除徽章失敗',
                addSeries: '新增系列',
                addBadge: '新增徽章',
                series: {
                    title: '系列',
                    description: '控制前台篩選分組和整組啟用狀態',
                    add: '新增',
                    all: '全部系列',
                    enabledCount: '{active} / {total} 個啟用',
                    empty: '暫無系列',
                    editTitle: '編輯系列',
                    createTitle: '新增系列',
                    id: '系列 ID',
                    sort: '排序',
                    nameZh: '中文名',
                    nameEn: '英文名',
                    titleLabel: '標題',
                    titlePlaceholder: 'SUPREME 尊貴系列',
                    descriptionLabel: '說明',
                    sourceId: '來源 ID',
                    sourceLabel: '來源名稱',
                    enable: '啟用該系列',
                },
                badges: {
                    title: '徽章',
                    currentFilter: '當前篩選：{name}',
                    empty: '暫無徽章',
                    tableBadge: '徽章',
                    tableSeries: '系列',
                    tableAssetUrl: '圖片地址',
                    tableStatus: '狀態',
                    tableUsage: '使用',
                    drawable: '可抽取',
                    notDrawable: '不可抽取',
                    usage: '擁有 {ownership} / 頭像 {avatar} / 實例 {instance}',
                    editTitle: '編輯徽章',
                    createTitle: '新增徽章',
                    id: '徽章 ID',
                    series: '系列',
                    name: '名稱',
                    nameEn: '英文名',
                    fullLabel: '完整標籤',
                    fullLabelPlaceholder: '精英 (Elite)',
                    sourceId: '來源 ID',
                    sourceLabel: '來源名稱',
                    assetUrl: '預設圖片地址',
                    assetUrlPlaceholder: '/badges/dark/elite.svg 或 https://example.com/badge.svg',
                    assetUrlDark: '深色圖片地址',
                    assetUrlLight: '淺色圖片地址',
                    sort: '排序',
                    enable: '啟用該徽章',
                    preview: '預覽',
                    previewName: '徽章名稱',
                    previewLabel: '完整標籤',
                },
            },
            // 通知配置
            notification: {
                title: '中獎通知',
                enabled: '啟用通知',
                type: '通知方式',
                conditions: '通知條件',
                notifyBalance: '中餘額時通知',
                notifyInstance: '中實例時通知',
                secret: '簽名密鑰',
                secretPlaceholder: '用於驗證 Webhook 請求（可選）',
                fillTelegram: '請填寫 Telegram Bot Token 和 Chat ID',
                fillDiscord: '請填寫 Discord Webhook URL',
                fillWebhook: '請填寫 Webhook URL',
                saveSuccess: '通知配置保存成功',
                saveFailed: '通知配置保存失敗',
            },
        },
    },

    // 郵箱模組
    mail: {
        title: '郵箱',
        description: '管理您的專業郵箱服務',
        tabs: {
            my: '我的郵箱',
            buy: '購買郵箱',
            accounts: '郵箱帳戶',
            dns: 'DNS 配置',
            settings: '設定',
        },
        noSubscription: '您還沒有郵箱服務',
        buyNowHint: '立即購買專業的郵箱服務',
        buyNow: '立即購買',
        subscriptionOverview: '訂閱概覽',
        expiresAt: '到期時間',
        domainsUsed: '已用網域',
        diskUsed: '已用空間',
        totalSpace: '總空間',
        accounts: '帳戶',
        plan: '方案',
        domains: '個網域',
        month: '月',
        year: '年',
        renew: '續費',
        myDomains: '我的網域',
        addDomain: '新增網域',
        noDomains: '暫無網域，點擊上方按鈕新增',
        used: '已用',
        status: {
            active: '活躍',
            expired: '已過期',
            suspended: '已暫停',
        },
        domainStatus: {
            pending: '待驗證',
            verified: '已驗證',
            suspended: '已暫停',
        },
        selectRegion: '選擇服務地區',
        nodeStatus: {
            available: '節點狀態: 充足',
            limited: '庫存緊張',
        },
        plans: '個方案',
        planDetails: '方案配置詳情',
        planTag: '正式版方案',
        allFeaturesIncluded: '包含所有基礎及進階功能',
        pureStorage: '純淨儲存空間',
        feature: {
            domains: '支援 {count} 個自訂網域綁定',
            domainStorage: '{count}主網域 {storage}G儲存空間',
            unlimitedAliases: '每個網域無限個別名',
            unlimitedMailboxes: '每個網域無限個郵箱',
            emailLimit: '每個網域 600 封電子郵件/小時',
            emClientPro: '免費的 eM Client Pro 許可證',
            catchAll: '支援 Catch All',
            antispam: '自研反垃圾郵件閘道',
            protocols: '支援 SMTP/IMAP/POP3 全協議',
            aliases: '無限郵箱別名設定',
        },
        otherOptions: '其他選項',
        verify: '驗證',
        checkout: {
            title: '結算匯總',
            region: '選定地區',
            serviceStatus: '服務狀態',
            instant: '即時開通',
            amount: '應付金額',
            confirm: '立即開通',
            securePayment: '加密支付保障，支援隨時申請退款',
            balanceRequired: '需要先充值餘額，才能購買',
        },
        help: {
            title: '遇到問題？',
            desc: '如果您在購買過程中遇到任何技術問題，請提交工單聯系支援人員。',
        },
        selectPlan: '選擇方案',
        storage: '儲存空間',
        unlimitedAccounts: '無限郵箱帳戶',
        orderConfirm: '訂單確認',
        billingCycle: '計費週期',
        monthly: '月付',
        yearly: '年付',
        totalPrice: '總價',
        confirmRenew: '確認續費',
        confirmPurchase: '確認購賣',
        renewSubscription: '續費訂閱',
        renewMonths: '續費時長',
        monthlyPrice: '月單價',
        yearlyPrice: '年單價',
                alreadyPurchased: '您已購買該地區的郵箱服務',
                alreadyPurchasedDesc: '每個用戶僅可購買一個地區的郵箱服務。如需更換方案，請先到「我的郵箱」進行管理。',
                viewMySubscription: '查看我的訂閱',
        renewDuration: '續費時長',
        months: '個月',
        renewSuccess: '續費成功',
        selectPlanFirst: '請先選擇一個方案',
        purchaseSuccess: '購賣成功',
        domainName: '網域',
        domainPlaceholder: '例如：example.com',
        domainHint: '請輸入您擁有的網域，新增後需要配置 DNS 記錄驗證',
        domainRequired: '請輸入網域',
        domainAdded: '網域新增成功，請配置 DNS 記錄',
        accountsDescription: '管理此網域下的郵箱帳戶',
        createAccount: '建立帳戶',
        verifyFirst: '請先驗證網域 DNS 配置後再建立郵箱帳戶',
        completeDnsFirst: '請先完成 DNS 配置驗證，郵箱服務才能正常使用',
        goDnsConfig: '前往配置',
        adminAccount: '管理員帳號',
        adminAccountDesc: '此帳號在新增網域時自動建立，可用於登入 Webmail 管理郵箱',
        webmailUrl: '登入地址',
        helpDoc: '查看幫助文檔',
        noAdminAccount: '管理員帳號資訊不可用',
        refreshStatus: '重新整理狀態',
        noAccounts: '暫無郵箱帳戶',
        admin: '管理員',
        resetPassword: '重設密碼',
        deleteAccountConfirm: '確定要刪除郵箱帳戶 {email} 嗎？此操作不可復原。',
        accountDeleted: '帳戶已刪除',
        dnsDescription: '請在您的網域 DNS 管理面板中新增以下記錄',
        recordType: '記錄類型',
        hostRecord: '主機記錄',
        recordValue: '記錄值',
        emailAddress: '郵箱地址',
        txtVerification: 'TXT 驗證記錄',
        pending: '待驗證',
        verified: '已驗證',
        mxRecords: 'MX 記錄',
        cnameRecords: 'CNAME 記錄',
        spfRecord: 'SPF 記錄',
        dkimRecord: 'DKIM 記錄',
        optional: '可選',
        required: '必需',
        recommended: '推薦',
        dnsHint: {
            txt: '網域驗證記錄，新增後點擊「刷新狀態」驗證',
            mx: '郵件交換記錄，數字表示優先級（數字越小優先級越高）',
            cname: '別名記錄，用於 Webmail 和自動發現功能',
            spf: '寄件人策略框架，防止郵件偽造，提高送達率',
            dkim: '網域密鑰認證，提高郵件可信度',
            dmarc: '網域郵件認證策略，防止釣魚和欺詐郵件',
        },
        domainInfo: '網域資訊',
        createdAt: '建立時間',
        verifiedAt: '驗證時間',
        dangerZone: '危險區域',
        deleteDomainWarning: '刪除網域將同時刪除該網域下所有郵箱帳戶和資料，此操作不可復原。',
        deleteDomain: '刪除網域',
        deleteDomainConfirm: '確定要刪除網域 {domain} 嗎？此操作將刪除所有相關資料且不可復原。',
        domainDeleted: '網域已刪除',
        domainVerified: '網域驗證成功',
        domainNotVerified: 'DNS 記錄尚未生效，請稍後重試',
        username: '使用者名稱',
        password: '密碼',
        displayName: '顯示名稱',
        diskLimit: '空間配額',
        setAsAdmin: '設為網域管理員',
        usernamePlaceholder: '例如：admin',
        passwordPlaceholder: '至少8位字元',
        passwordHint: '密碼至少8位，建議包含大小寫字母和數字',
        displayNamePlaceholder: '例如：張三',
        accountFieldsRequired: '請填寫使用者名稱和密碼',
        accountCreated: '帳戶建立成功',
        accountUpdated: '帳戶更新成功',
        passwordMinLength: '密碼至少8位字元',
        passwordReset: '密碼重設成功',
        editAccount: '編輯帳戶',
        newPassword: '新密碼',
        newPasswordPlaceholder: '輸入新密碼',
    },
}
