/**
 * The English message bundle, and the source of the key set.
 *
 * Every other language is typed against these keys, so a missing or misspelled
 * translation is a compile error rather than a blank label at runtime.
 */
export const ENGLISH_MESSAGES = {
  appName: 'WarpEngine Client',
  refresh: 'Refresh the catalog',
  install: 'Install',
  upgrade: 'Upgrade',
  play: 'Play',
  open: 'Open',
  uninstall: 'Uninstall',
  moreActions: 'More actions',
  installed: 'installed',
  native: 'native',
  hosted: 'hosted',
  hostedHint: 'Opens in your browser — needs the network',
  nativeHint: 'Installed on this machine — works offline',
  updateAvailable: 'update available',
  unsupportedPlatform: 'unsupported platform',
  unsupportedBuild: 'no build for this machine',
  log: 'Log',
  menu: 'Menu',
  stores: 'Stores',
  addStore: 'Add a store…',
  cancel: 'Cancel',
  addStoreHint: 'Add a store',
  customTitle: 'Or a catalog of your own',
  customHint: 'Any WarpEngine catalog. The name is taken from the address; https is assumed when you leave the scheme out.',
  customAction: 'Add',
  removeStore: 'Remove this store',
  removeStoreConfirm: 'Remove %{store}? Its settings and its record of what it installed are deleted.',
  removeStoreConfirmGames: 'Remove %{store}? This uninstalls the %{count} title(s) it put on this machine and deletes its menu entries.',
  switchFailed: 'That store could not be opened',
  categories: 'Categories',
  catAll: 'Everything',
  catInstalled: 'Installed',
  catUpdates: 'Updates',
  catAvailable: 'Not installed',
  catOwned: 'Owned',
  catPurchasable: 'To buy',
  catUnsupported: 'Not for this machine',
  catPlatform: 'Platform',
  catMode: 'Kind',
  language: 'Language',
  noGames: 'No installable titles in the catalog.',
  noMatch: 'Nothing in this category.',
  setupTitle: 'Set up a store',
  setupBody: 'No store on this machine yet. Pick one and it will be downloaded — the same files the shell installer would place, in the same folder.',
  setupAction: 'Download the store',
  setupWorking: 'Setting up…',
  setupChoose: 'Store',
  registryFailed: 'The list of stores could not be fetched',
  registryEmpty: 'The list of stores came back empty. Nothing to install from yet.',
  registryRetry: 'Try again',
  paths: 'Where things go',
  openStoreFolder: 'Open the store folder',
  openMenuFolder: 'Open the menu folder',
  busy: 'Working…',
  failed: 'failed',
  removed: 'removed',
  upToDate: 'Everything is up to date.',
  of: 'of',
  owned: 'owned',
  ownedHint: 'This account owns it — install it on this machine',
  purchase: 'Buy',
  purchaseHint: 'Opens the store page in your browser',
  signInToInstall: 'Sign in to install',
  signInToInstallHint: 'This title needs an account; the catalog will say whether you own it',
  account: 'Account',
  signIn: 'Sign in…',
  signOut: 'Sign out',
  signedIn: 'Signed in',
  signInTitle: 'Sign in to %{store}',
  signInBody: 'Your browser is opening the sign-in page. Type this code there:',
  signInOpenAgain: 'Open the page again',
  signInWaiting: 'Waiting for you to approve it…',
  signInCancel: 'Cancel',
  signInDone: 'Signed in.',
  signInDenied: 'That sign-in was refused.',
  signInExpired: 'That code expired. Try again.',
  signInCancelled: 'Sign-in cancelled.',
  signInFailed: 'Signing in did not work.'
} as const

/** Every string the window can show, by key. */
export type MessageKey = keyof typeof ENGLISH_MESSAGES
