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.
38 lines
1.2 KiB
TypeScript
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"],
|
|
]));
|