const en = {
  setup: 'Setup',
  overview: 'Overview',
  proxies: 'Proxies',
  rules: 'Rules',
  connections: 'Connections',
  logs: 'Logs',
  protocol: 'Protocol',
  host: 'Host',
  port: 'Port',
  password: 'Password',
  submit: 'Submit',
  cancel: 'Cancel',
  download: 'Download',
  upload: 'Upload',
  downloadSpeed: 'Download speed',
  uploadSpeed: 'Upload speed',
  speed: 'Speed',
  memoryUsage: 'Memory usage',
  version: 'Version',
  noContent: 'No content',
  flushFakeIP: 'Flush Fake IP',
  flushDNSCache: 'Flush DNS cache',
  flushDNSCacheSuccess: 'DNS cache flushed successfully',
  flushFakeIPSuccess: 'Fake IP flushed successfully',
  restartCoreSuccess: 'Core restarted successfully',
  reloadConfigsSuccess: 'Configs reloaded successfully',
  updateGeoSuccess: 'Geo database updated successfully',
  chains: 'Chains',
  outbound: 'Outbound',
  sortBy: 'Sort by',
  rule: 'Rule',
  sourceIP: 'Source IP',
  activeConnections: 'Active',
  closedConnections: 'Closed',
  logLevel: 'Log level',
  logType: 'Log type',
  twoColumnProxyGroup: 'Two-Column proxy group',
  type: 'Type',
  process: 'Process',
  connectTime: 'Connect time',
  sourcePort: 'Source port',
  destination: 'Resolved address',
  destinationType: 'Resolved type',
  inboundUser: 'Inbound user',
  dl: 'DL',
  ul: 'UL',
  dlSpeed: 'DL speed',
  ulSpeed: 'UL speed',
  settings: 'Settings',
  speedtestUrl: 'Speedtest URL',
  speedtestTimeout: 'Speedtest timeout',
  connectionStyle: 'Connection style',
  card: 'Card',
  table: 'Table',
  customTableColumns: 'Custom table columns',
  customCardLines: 'Custom card lines',
  close: 'Close',
  defaultTheme: 'Default theme',
  darkTheme: 'Dark theme',
  proxyProvider: 'Proxy provider',
  ruleProvider: 'Rule provider',
  expire: 'Expire',
  noExpire: 'No expiry',
  updated: 'Updated',
  upgradeUI: 'Upgrade dashboard',
  reloadConfigs: 'Reload configs',
  mode: 'Mode',
  proxySortType: 'Proxy sort type',
  defaultsort: 'Config order',
  nameasc: 'Name ascending',
  namedesc: 'Name descending',
  latencydesc: 'Latency descending',
  latencyasc: 'Latency ascending',
  language: 'Language',
  automaticDisconnection: 'Auto disconnect on node switch',
  backend: 'Backend',
  tunMode: 'Tun mode',
  upgradeCore: 'Upgrade core',
  upgradeToRelease: 'Upgrade to release',
  upgradeToAlpha: 'Upgrade to alpha',
  updateGeoDatabase: 'Update Geo',
  truncateProxyName: 'Truncate proxy name',
  sourceIPLabels: 'Source IP labels',
  proxyPreviewType: 'Proxy preview type',
  auto: 'Auto',
  dots: 'Dots',
  bar: 'Bar',
  exportSettings: 'Export settings',
  importSettings: 'Import settings',
  connectionSettings: 'Connection settings',
  proxySettings: 'Proxy settings',
  logSettings: 'Log settings',
  ruleSettings: 'Rule settings',
  connectionDetails: 'Connection details',
  customTheme: 'Custom theme',
  unavailableProxy: 'Hide unavailable proxies',
  protocolTips:
    'You are trying to connect to an HTTP backend, but zashboard is provided via HTTPS. This may cause connection errors. Please allow insecure content in your browser settings or use the HTTP version of zashboard, such as http://board.zash.run.place.',
  global: 'Global',
  direct: 'Direct',
  lowLatencyDesc: 'Yellow threshold',
  mediumLatencyDesc: 'Red threshold',
  fonts: 'Fonts',
  emoji: 'Emoji',
  unauthorizedTip: 'Unauthorized, please log in again.',
  restartCore: 'Restart core',
  checkUpgrade: 'Check for updates',
  autoUpgrade: 'Auto upgrade',
  secondaryPath: 'Secondary path',
  secondaryPathTip: 'If present, start with "/", otherwise leave empty.',
  logRetentionLimit: 'Log retention limit',
  DNSQuery: 'DNS query',
  currentBackendUnavailable:
    'The current backend is unavailable. Would you like to switch to another backend?',
  confirm: 'Confirm',
  backendSwitchTo: 'Auto switch to {backend}',
  ipv6Test: 'IPv6 test',
  socksPort: 'SOCKS port',
  httpPort: 'HTTP port',
  mixedPort: 'Mixed port',
  redirPort: 'Redir port',
  tproxyPort: 'TProxy port',
  tableSize: 'Table size',
  proxyCardSize: 'Proxy card size',
  small: 'Small',
  normal: 'Normal',
  large: 'Large',
  autoIPCheckWhenStart: 'Auto IP check on start',
  autoConnectionCheckWhenStart: 'Auto connection check on start',
  chinaIP: 'China IP',
  globalIP: 'Global IP',
  networkInfo: 'Network info',
  autoSwitchTheme: 'Auto switch theme',
  customBackgroundURL: 'Background',
  splitOverviewPage: 'Split overview page',
  manageHiddenGroup: 'Manage hidden groups',
  transparent: 'Transparency',
  proxyGroupIconSize: 'Proxy group icon size',
  proxyGroupIconMargin: 'Proxy group icon margin',
  allowLan: 'Allow LAN',
  proxyChainDirection: 'Proxy chain direction',
  showFullProxyChain: 'Show full proxy chain',
  reverse: 'Reverse',
  sniffHost: 'Sniff host',
  ipScreenshotTip: 'Please hide the IP when taking screenshots.',
  showStatisticsWhenSidebarCollapsed: 'Show statistics when sidebar collapsed',
  totalConnections: 'Connection statistics',
  totalConnectionsTip:
    'Only connections opened while the panel is open are counted. \nRecording start time: {statsStartTime}',
  mostDownloadHost: 'Most downloaded host',
  mostUploadHost: 'Most uploaded host',
  mostDownloadSourceIP: 'Most downloaded source IP',
  mostUploadSourceIP: 'Most uploaded source IP',
  mostDownloadProxy: 'Most downloaded proxy',
  mostUploadProxy: 'Most uploaded proxy',
  manual: 'Manual',
  tableWidthMode: 'Table width mode',
  testFailed: 'Test failed',
  testFinishedTip: '{name}\n{number}/{total} test finished',
  testFinishedResultTip: '{name}\nTest finished: {success} success, {failed} timeout',
  testFailedTip: '{name}\nTest failed',
  updateFinishedTip: '{number} update(s) finished',
  independentLatencyTest: 'Independent latency test',
  independentLatencyTestTip:
    "When enabled, the latency test will use URLs specified in the configuration file instead of zashboard's URL settings. Latency will be displayed independently based on the URLs set in policy groups.",
  search: 'Search',
  searchMultiple: 'Space-separated keywords',
  importing: 'Importing...',
  hideConnection: 'Hide connection',
  showConnection: 'Show connection',
  hideConnectionRegex: 'Hide connection regex',
  hideConnectionTip:
    'You can use case-insensitive regular expressions to match and hide unwanted connections.',
  hideLog: 'Hide log',
  showLog: 'Show log',
  hideLogRegex: 'Hide log regex',
  hideLogTip: 'You can use case-insensitive regular expressions to match and hide unwanted logs.',
  loadBalance: 'Load Balance',
  label: 'Label',
  optional: 'Optional',
  swipeInTabs: 'Swipe to switch between tabs',
  swipeInPages: 'Swipe to switch between pages',
  simpleCardPreset: 'Simple preset',
  detailedCardPreset: 'Detailed preset',
  refresh: 'Refresh',
  reset: 'Reset',
  minProxyCardWidth: 'Proxy card min width',
  displayGlobalByMode: 'Display GLOBAL by mode',
  displaySelectedNode: 'Show selected node',
  displayLatencyNumber: 'Show latency numbers',
  disconnectOnRuleDisable: 'Disconnect connections when disabling rule',
  tipForFixed:
    'The current policy group is locked to the current node. Run a speed test to restore {type} behavior.',
  remoteAddress: 'Remote address',
  themeName: 'Theme name',
  save: 'Save',
  moreDetails: 'More details',
  moreSettings: 'More settings',
  customIcon: 'Custom icon',
  disablePullToRefresh: 'Disable pull to refresh',
  disablePullToRefreshTip:
    'Pull-to-refresh and virtual scrolling components may conflict. If you experience lag or accidentally trigger pull-to-refresh while scrolling, try disabling this feature.',
  displayAllFeatures: 'Show all features',
  displayAllFeaturesTip:
    "Show all features, including those not supported by the official sing-box version. If you're using a forked version of sing-box that supports some of these features, you can try enabling them.",
  blurIntensity: 'Blur intensity',
  scrollAnimationEffect: 'Scroll animation effect',
  importFromFile: 'Import from file',
  importFromUrl: 'Import from URL',
  sync: 'Sync',
  upgradeSuccess: 'Upgrade successful',
  numberOfChartsInSidebar: 'Number of charts in sidebar',
  flushSmartWeights: 'Clear smart weights',
  IPInfoAPI: 'IP info API',
  IPInfoAPITip:
    "This API will be used for IP checks in global node IP information queries, IP geolocation queries in connection details, and IP geolocation queries in zashboard's DNS query feature.",
  general: 'General',
  groupProxiesByProvider: 'Group proxies by provider',
  useSmartGroupSort: 'Smart group sort by usage frequency',
  RarelyUsed: 'Rarely used',
  OccasionalUsed: 'Occasionally used',
  MostUsed: 'Most used',
  all: 'All',
  autoDisconnectIdleUDP: 'Auto disconnect idle UDP',
  autoDisconnectIdleUDPTime: 'UDP idle time',
  autoDisconnectIdleUDPTip:
    "When enabled, opening zashboard will close UDP connections that have been idle longer than the configured time. This may help with UDP connections that don't disconnect automatically as expected.",
  customGlobalNode: 'Custom GLOBAL node',
  connectionTopology: 'Connection topology',
  editBackend: 'Edit backend',
  editBackendTitle: 'Edit backend configuration',
  selectBackend: 'Select backend',
  backendConnectionFailed: 'Backend connection failed, please check configuration',
  backendConfigSaved: 'Backend configuration saved successfully',
  saveFailed: 'Save failed',
  checking: 'Checking...',
  copySuccess: 'Copied successfully',
  importFromBackend: 'Import from backend',
  importFromBackendTip:
    'The default ./zashboard-settings.json is located in the ui folder. Please ensure the ui folder exists and contains the configuration file.',
  importFailed: 'Import failed, please check the URL: {url}',
  autoImportFromUrl: 'Auto import',
  autoImportFromUrlTip:
    'When enabled, settings will be automatically imported from the URL when opening zashboard. If the hash differs from the last imported hash, settings will be re-imported and the page will be refreshed.',
  getting: 'Getting...',
  mmdbSizeTip: 'If you are using mmdb format Geo files, the number will be 0',
  displayFinalOutbound: 'Show final outbound node',
  groupTestUrls: 'Group test URLs',
  groupTestUrlsTip:
    'For manual tests triggered from the panel, set test URLs here > URLs in configuration > Global test URLs, but for groups with UrlTest/Fallback, etc., the URLs in the configuration still need to be modified, So this is only recommended for Selector scenes',
  groupName: 'Group name',
  noData: 'No data',
  unknown: 'Unknown',
  sourceIPAddress: 'Source IP address',
  ruleMatch: 'Rule match',
  proxyChainEntry: 'Proxy chain entry',
  proxyChainExit: 'Proxy chain exit',
  nodeType: 'Node type',
  connectionCount: 'Connection count',
  zashboardSettings: 'Dashboard Settings',
  backendSettings: 'Backend Settings',
  generalSettings: 'General Settings',
  overviewCard: 'Overview Card',
  overviewSettings: 'Overview Settings',
  overviewCardSettings: 'Card Settings',
  chartsCard: 'Charts Card',
  networkCard: 'Network Card',
  providerTrafficOverview: 'Provider Traffic Overview',
  topologyCharts: 'Topology Charts',
  connectionHistory: 'Connection History',
  ruleHitCountCard: 'Rule Hit/Miss Statistics',
  ruleHitChart: 'Hit Statistics',
  ruleMissChart: 'Miss Statistics',
  latency: 'Latency',
  proxyStyle: 'Proxy style',
  icon: 'Icon',
  settingsVisibility: 'Settings Visibility',
  ports: 'Ports',
  actions: 'Actions',
  showAllPreset: 'Show All',
  minimalPreset: 'Minimal View',
  aggregateBy: 'Aggregate by',
  aggregateBySourceIP: 'By source IP',
  aggregateByDestination: 'By destination',
  aggregateByProcess: 'By process',
  aggregateByOutbound: 'By outbound',
  aggregateByNode: 'By node',
  totalTraffic: 'Total traffic',
  total: 'Total',
  clearConnectionHistory: 'Clear connection history',
  clearConnectionHistoryConfirm:
    'Are you sure you want to clear all connection history data? This action cannot be undone.',
  clearConnectionHistorySuccess: 'Connection history data cleared successfully',
  autoCleanupInterval: 'Auto cleanup interval',
  autoCleanupIntervalWeek: 'Weekly',
  autoCleanupIntervalMonth: 'Monthly',
  autoCleanupIntervalQuarter: 'Quarterly',
  autoCleanupIntervalNever: 'Never',
  remainingTraffic: 'Remaining',
  usedTraffic: 'Used',
  ruleHitCount: 'Hit: {count} times',
  ruleLastHit: 'Last hit: {time}',
  ruleMissCount: 'Miss: {count} times',
  ruleLastMiss: 'Last miss: {time}',
}

export type LANG_MESSAGE = typeof en
export default en
