export default {
  common: {
    prism: 'Prism',
    refresh: '重新整理',
    save: '儲存',
    cancel: '取消',
    confirm: '確認',
    search: '搜尋',
    delete: '刪除',
    import: '匯入',
    export: '匯出',
    add: '新增',
    create: '建立',
    revoke: '吊销',
    copy: '複製',
    loading: '載入中',
    unknown: '未知',
    none: '—',
    success: '成功',
    failed: '失敗',
    all: '全部',
    manual: '手動',
    subscription: '訂閱',
    source: '來源',
    name: '名稱',
    type: '類型',
    status: '狀態',
    actions: '操作',
    upload: '上行',
    download: '下行',
    connections: '連線數',
    time: '時間',
    level: '級別',
    message: '訊息',
    testing: '測速中',
    saved: '已儲存',
    empty: '暫無資料',
    management: '管理',
    logout: '登出',
    minutes: '{n} 分鐘',
    seconds: '{n} 秒',
    periodHours: '近 {n} 小時累計',
  },
  nav: {
    dashboard: '監控大盤',
    subscriptions: '訂閱管理',
    proxies: '代理節點',
    outbound: '出站管理',
    rules: '路由規則',
    trafficLogs: '請求日誌',
    logs: '執行日誌',
    settings: '系統設定',
  },
  login: {
    subtitle: 'HTTP / SOCKS5 代理閘道管理台',
    title: '登入',
    password: '密碼',
    passwordPlaceholder: '預設 admin',
    submit: '登入',
    hint: '首次使用預設密碼為 admin，請在設定中修改',
    failed: '登入失敗',
    wrongPassword: '密碼錯誤',
    wrongPasswordRemaining: '密碼錯誤，還可嘗試 {n} 次',
    tooManyAttempts: '登入嘗試過多，請 {wait} 後再試',
  },
  dashboard: {
    title: '監控大盤',
    desc: '即時流量、按網域/節點分佈與連線概覽',
    checking: '檢測中',
    engineRunning: '核心執行中',
    engineStopped: '核心未執行',
    totalNodes: '總節點',
    aliveNodes: '可用節點',
    activeConnections: '活躍連線',
    downloadRate: '下行速率',
    domainTraffic: '網域流量',
    nodeTraffic: '節點流量',
    trafficTrend: '流量趨勢',
    tabLive: '目前活躍連線',
    domain: '網域',
    outboundNode: '出站節點',
    hintLiveDomain: '按網域與出站節點彙總目前活躍連線流量',
    hintPeriodDomain: '來自請求日誌，按網域與出站節點聚合',
    hintLiveNode: '按具體代理節點（跳過策略組）彙總活躍連線流量',
    hintPeriodNode: '近24小時各具體代理節點完成的請求流量合計',
    seriesDownload: '下行',
    seriesUpload: '上行',
  },
  subscriptions: {
    title: '訂閱管理',
    desc: '新增並定時更新 Clash 或節點連結訂閱',
    add: '新增訂閱',
    url: 'URL',
    nodeCount: '節點數',
    lastFetch: '上次更新',
    normal: '正常',
    error: '異常',
    refresh: '重新整理',
    dialogTitle: '新增訂閱',
    interval: '更新間隔',
    intervalHint: '秒，最小 300',
    typeAuto: '自動識別',
    typeClash: 'Clash YAML',
    typeLinks: '節點連結',
    typeHint: '短鏈 / Base64 節點訂閱選「自動識別」即可',
    added: '已新增訂閱',
    refreshed: '重新整理成功',
    deleted: '已刪除',
    confirmDelete: '確定刪除訂閱「{name}」？',
  },
  proxies: {
    title: '代理節點',
    desc: '查看節點狀態與延遲，支援國家標籤與按國家篩選',
    rebuildCountries: '重新識別國家',
    addNode: '新增節點',
    testAll: '全部測速',
    testingProgress: '測速中 {progress}',
    cancelTest: '取消測速',
    testOne: '測速',
    country: '國家',
    latency: '延遲',
    notTested: '未測',
    alive: '可用',
    filterCountry: '按國家篩選',
    allCountries: '全部國家',
    testingHint: '按序逐個測速，請勿關閉頁面',
    tabAll: '全部',
    countriesRebuilt: '已重新識別 {n} 個節點國家標籤',
    noTestable: '沒有可測速的節點',
    testCancelled: '已取消測速',
    testDone: '測速完成',
    testDoneFailed: '測速完成，{n} 個失敗',
    nodeAdded: '節點已新增',
    exported: '節點已匯出',
    exportJson: 'JSON 格式',
    exportLinks: '分享連結（每行一條）',
    importTitle: '匯入手動節點',
    importMode: '匯入模式',
    append: '追加到現有節點',
    replace: '替換全部手動節點',
    importFile: '節點檔案',
    importContent: '節點內容',
    importFileHint: '支援 JSON 或分享連結文字（ss/socks5/http/trojan）',
    importPlaceholder: '每行一條分享連結，或貼上 JSON；# 開頭為註解',
    importConfirmReplace: '將刪除全部現有手動節點並替換為匯入內容，確定繼續？',
    importConfirmTitle: '確認匯入',
    pasteRequired: '請貼上節點或選擇檔案',
    imported: '已匯入 {n} 個節點',
    importedPartial: '已匯入 {n} 個，跳過 {s} 條',
    importFailed: '匯入失敗',
    addDialogTitle: '新增手動節點',
    server: '伺服器',
    port: '埠',
    username: '使用者名稱',
    password: '密碼',
    chooseFile: '選擇檔案',
  },
  outbound: {
    title: '出站管理',
    desc: '管理策略組目前節點與預設出站；規則出站請在「路由規則」頁設定',
    defaultTitle: '預設出站',
    defaultHint: '未命中任何規則時使用的策略組或直連',
    save: '儲存',
    countryPools: '國家池（自動測速）',
    countryPoolsHint: '按國家聚合的 url-test 組，自動選擇該國最快節點',
    policyGroups: '策略組',
    countryPool: '國家池',
    currentNode: '目前節點',
    memberCount: '成員數',
    policyGroup: '策略組',
    switchNode: '切換節點',
    auto: '（自動）',
    fallbackHint: '按列表順序主備，不通才切換（不比延遲）',
    skipDirect: '按延遲自動測速選最快節點（不含 DIRECT）',
    emptyCountry: '暫無國家池（請為節點標註國家後重載）',
    emptyPolicy: '暫無策略組',
    saved: '預設出站已儲存',
    groupSwitched: '策略組已切換',
    policyGroupsHint: '僅 Selector（手動選擇）類型可切換目前節點；URLTest / Fallback 由核心自動決定，無法固定某節點',
    typeSelector: '手動選擇',
    typeURLTest: '自動測速',
    typeFallback: '故障轉移',
    typeLoadBalance: '負載均衡',
    typeRelay: '中繼',
    countryPoolName: '{name}（國家池）',
    policyGroupName: '{name}（{type}）',
  },
  rules: {
    title: '路由規則',
    desc: '手動規則優先級高於訂閱規則；可將網域指定到某國家的自動優選節點',
    testCard: '規則命中測試',
    testPlaceholder: '輸入 URL 或網域，如 https://www.google.com',
    test: '測試',
    testHint: '按合成後規則優先級模擬匹配；GEOIP/GEOSITE 需核心 Geo 資料，本地測試會跳過',
    parsedHost: '解析網域',
    matchedRule: '命中規則',
    outboundTarget: '出站目標',
    manualRules: '手動規則（高優先級）',
    mergedPreview: '合成後規則預覽',
    mergedSummary: '共 {total} 條規則，兜底出站 {policy}',
    priority: '優先級',
    match: '匹配',
    target: '目標',
    rule: '規則',
    seq: '序',
    ruleAdded: '規則已新增',
    ruleDeleted: '已刪除',
    confirmDelete: '確定刪除該規則？',
    urlRequired: '請輸入 URL 或網域',
    exported: '規則已匯出',
    exportJson: 'JSON 格式',
    exportText: 'Mihomo 文字（每行一條）',
    importTitle: '匯入手動規則',
    importConfirmReplace: '將刪除全部現有手動規則並替換為匯入內容，確定繼續？',
    pasteRequired: '請貼上規則或選擇檔案',
    imported: '已匯入 {n} 條規則',
    importedPartial: '已匯入 {n} 條，跳過 {s} 條',
    importFailed: '匯入失敗',
    addDialogTitle: '新增規則',
    matchValue: '匹配值',
    matchPlaceholder: '如 google.com',
    outboundType: '出站類型',
    byCountry: '按國家',
    byPolicy: '策略/直連',
    outboundTargetLabel: '出站目標',
    selectCountryPool: '選擇國家節點池',
    selectPolicy: '選擇策略或直連',
    countryPoolHint: '國家池使用 url-test 自動選擇該國延遲最低的節點',
    importFile: '規則檔案',
    importContent: '規則內容',
    importFileHint: '支援 JSON 或 Mihomo 規則文字（DOMAIN-SUFFIX,example.com,PROXY）',
    importPlaceholder: '每行一條規則，或以 JSON 格式貼上；# 開頭為註解',
    chooseFile: '選擇檔案',
    importMode: '匯入模式',
    append: '追加到現有規則',
    replace: '替換全部手動規則',
    targetDirect: 'DIRECT（直連）',
    targetReject: 'REJECT（拒絕）',
    targetProxy: 'PROXY（預設策略組）',
    targetGlobal: 'GLOBAL（訂閱總組）',
    countryFastest: '{name}（自動選最快）',
  },
  trafficLogs: {
    title: '請求日誌',
    desc: '代理請求命中規則、出站節點與連線結果（連線結束後寫入）',
    searchPlaceholder: '搜尋網域、規則或節點',
    target: '請求目標',
    matchedRule: '命中規則',
    outboundNode: '出站節點',
    chain: '鏈路',
    traffic: '流量',
    result: '結果',
    pageSuccess: '本頁 {ok}/{total} 成功',
  },
  logs: {
    title: '執行日誌',
    desc: 'Prism 與代理核心執行日誌',
    runtime: '執行日誌',
    audit: '稽核日誌',
    searchPlaceholder: '搜尋關鍵詞',
    action: '操作',
    resource: '資源',
    detail: '詳情',
  },
  settings: {
    title: '系統設定',
    desc: '代理埠、排程間隔與安全配置',
    reloadEngine: '重載核心',
    saved: '設定已儲存',
    engineReloaded: '核心已重載',
    inboundApi: '入站與 API',
    proxyInbound: '代理入站',
    httpPort: 'HTTP 埠',
    socksPort: 'SOCKS5 埠',
    proxyUser: '代理使用者名稱',
    proxyUserPlaceholder: '留空表示不啟用認證',
    proxyPass: '代理密碼',
    proxyPassPlaceholder: '留空則不修改；清空使用者名稱可關閉認證',
    proxyAuthHint: '填寫後 HTTP / SOCKS5 入站均需該帳號密碼；本機 127.0.0.1 可免認證',
    adminApi: '管理 API',
    apiPort: 'API 埠',
    apiPortHint: '修改後需重啟程序生效',
    mihomoApi: 'Mihomo API',
    apiSecret: 'API Secret',
    apiSecretPlaceholder: 'Clash API 密鑰',
    scheduler: '排程',
    healthInterval: '健康檢查間隔',
    seconds: '秒',
    logLevel: '日誌級別',
    security: '安全',
    authEnabled: '啟用登入',
    loginMaxAttempts: '登入失敗上限',
    loginMaxAttemptsHint: '同一 IP 在鎖定時長內連續失敗達到此次數後將暫時鎖定',
    loginLockMinutes: '登入鎖定時長',
    loginLockMinutesHint: '分鐘；鎖定期間該 IP 無法繼續嘗試登入',
    newPassword: '新密碼',
    newPasswordPlaceholder: '留空則不修改',
    appearance: '介面',
    uiLocale: '顯示語言',
    localeZhCN: '简体中文',
    localeZhTW: '繁體中文',
    localeEn: 'English',
    apiKeys: 'API Key',
    apiKeysHint: '申請後可用 Key 直接呼叫管理 API，無需每次登入。請求標頭任選其一：',
    applyKey: '申請 API Key',
  },
  apiKey: {
    empty: '暫無 API Key',
    prefix: 'Key 前綴',
    lastUsed: '最近使用',
    createdAt: '建立時間',
    neverUsed: '從未使用',
    created: 'API Key 已建立，請立即複製儲存',
    copied: '已複製到剪貼簿',
    confirmRevoke: '確定吊销 Key「{name}」（{prefix}）？',
    revoked: '已吊销',
    dialogCreate: '申請 API Key',
    dialogSave: '請儲存 API Key',
    name: '名稱',
    namePlaceholder: '如 automation、ci',
    onceHint: '此 Key 只顯示一次，關閉後無法再次查看完整內容。',
  },
  geo: {
    title: 'Geo 資料',
    autoDownload: '啟動時自動下載',
    autoDownloadHint: '啟動時若本地缺少 Geo 檔案則按下方位址自動下載',
    countryMmdb: 'Country.mmdb',
    countryMmdbHint: 'GEOIP 國家匹配資料庫；清空並儲存可恢復內建預設位址',
    geoip: 'GEOIP',
    geoipHint: 'geoip.dat 下載位址；清空並儲存可恢復內建預設位址',
    geosite: 'GEOSITE',
    geositeHint: 'geosite.dat 下載位址；清空並儲存可恢復內建預設位址',
    localStatus: '本地狀態',
    ready: '已就緒',
    notReady: '未就緒',
    missing: '缺失',
    downloadMissing: '下載缺失檔案',
    forceUpdate: '強制更新全部',
    updateHint: '修改下載位址後請先儲存，再點擊更新；規則含 GEOIP/GEOSITE 時需保證三項檔案齊全',
    updated: '已更新：{files}',
    upToDate: 'Geo 資料已是最新',
    updateFailed: '更新失敗',
  },
}
