Nils Maier 8235af22db Implement own locale loader
Why?
* Because i18n sucks multi-browser, especially on Chrome.
* What's more, this will allow overlaying "incomplete" locales with
  missing strings over the base locale and get a semi-translated one,
  which probably is better than nothing.
* Additionally we kinda need that implementation anyway for node-based
  tests.
* Also, while not currently implemented, it could allow (hot) reloading
  of locales, or loading external ones, which would help translators,
  or providing an option to the user to choose a locale.
* And finally, not calling i18n will avoid the "context switch" into
  browserland.

Some implementation details:
* Before code can use a locale, it has to be loaded. Sadly sync loading
  is not really supported. So `await locale` or `await localize`.
* Background force reloads locales right now, and caches them in
  localStorage. Windows will look into localStorage for that cache.
* The locale loader will not verify locales other than some rudimentary
  checks. It is assumed that shipped locales where verified before
  check-in.
2019-08-26 02:37:27 +02:00

38 lines
1.2 KiB
TypeScript

"use strict";
// License: MIT
import * as _DownloadState from "../../lib/manager/state";
import { _, locale } from "../../lib/i18n";
export const DownloadState = _DownloadState;
export const StateTexts = locale.then(() => Object.freeze(new Map([
[DownloadState.QUEUED, _("queued")],
[DownloadState.RUNNING, _("running")],
[DownloadState.FINISHING, _("finishing")],
[DownloadState.PAUSED, _("paused")],
[DownloadState.DONE, _("done")],
[DownloadState.CANCELED, _("canceled")],
[DownloadState.MISSING, _("missing")],
])));
export const StateClasses = Object.freeze(new Map([
[DownloadState.QUEUED, "queued"],
[DownloadState.RUNNING, "running"],
[DownloadState.FINISHING, "finishing"],
[DownloadState.PAUSED, "paused"],
[DownloadState.DONE, "done"],
[DownloadState.CANCELED, "canceled"],
[DownloadState.MISSING, "missing"],
]));
export const StateIcons = Object.freeze(new Map([
[DownloadState.QUEUED, "icon-pause"],
[DownloadState.RUNNING, "icon-go"],
[DownloadState.FINISHING, "icon-go"],
[DownloadState.PAUSED, "icon-pause"],
[DownloadState.DONE, "icon-done"],
[DownloadState.CANCELED, "icon-error"],
[DownloadState.MISSING, "icon-failed"],
]));