diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/js/controls.js | 31 | ||||
-rw-r--r-- | src/js/defaults.js | 8 | ||||
-rw-r--r-- | src/js/i18n.js | 8 | ||||
-rw-r--r-- | src/js/plyr.js | 2 | ||||
-rw-r--r-- | src/js/utils.js | 5 |
5 files changed, 28 insertions, 26 deletions
diff --git a/src/js/controls.js b/src/js/controls.js index 32e82f78..20518f9c 100644 --- a/src/js/controls.js +++ b/src/js/controls.js @@ -664,27 +664,7 @@ const controls = { // Get the badge HTML for HD, 4K etc const getBadge = quality => { - let label = ''; - - switch (quality) { - case 2160: - label = '4K'; - break; - - case 1440: - case 1080: - case 720: - label = 'HD'; - break; - - case 576: - case 480: - label = 'SD'; - break; - - default: - break; - } + const label = i18n.get(`qualityBadge.${quality}`, this.config); if (!label.length) { return null; @@ -708,7 +688,6 @@ const controls = { }, // Translate a value into a nice label - // TODO: Localisation getLabel(setting, value) { switch (setting) { case 'speed': @@ -716,7 +695,13 @@ const controls = { case 'quality': if (utils.is.number(value)) { - return `${value}p`; + const label = i18n.get(`qualityLabel.${value}`, this.config); + + if (!label.length) { + return `${value}p`; + } + + return label; } return utils.toTitleCase(value); diff --git a/src/js/defaults.js b/src/js/defaults.js index 6a88e73f..a6b83f1f 100644 --- a/src/js/defaults.js +++ b/src/js/defaults.js @@ -190,6 +190,14 @@ const defaults = { disabled: 'Disabled', enabled: 'Enabled', advertisement: 'Ad', + qualityBadge: { + 2160: '4K', + 1440: 'HD', + 1080: 'HD', + 720: 'HD', + 576: 'SD', + 480: 'SD', + }, }, // URLs diff --git a/src/js/i18n.js b/src/js/i18n.js index 58c3e7cf..62e5bdb0 100644 --- a/src/js/i18n.js +++ b/src/js/i18n.js @@ -6,11 +6,15 @@ import utils from './utils'; const i18n = { get(key = '', config = {}) { - if (utils.is.empty(key) || utils.is.empty(config) || !Object.keys(config.i18n).includes(key)) { + if (utils.is.empty(key) || utils.is.empty(config)) { return ''; } - let string = config.i18n[key]; + let string = utils.getDeep(config.i18n, key); + + if (utils.is.empty(string)) { + return ''; + } const replace = { '{seektime}': config.seekTime, diff --git a/src/js/plyr.js b/src/js/plyr.js index 557291d9..cfce37c9 100644 --- a/src/js/plyr.js +++ b/src/js/plyr.js @@ -675,7 +675,7 @@ class Plyr { quality = Number(input); } - if (!utils.is.number(quality) || quality === 0) { + if (!utils.is.number(quality)) { quality = this.storage.get('quality'); } diff --git a/src/js/utils.js b/src/js/utils.js index 0334879d..b6ba0941 100644 --- a/src/js/utils.js +++ b/src/js/utils.js @@ -728,6 +728,11 @@ const utils = { return JSON.parse(JSON.stringify(object)); }, + // Get a nested value in an object + getDeep(object, path) { + return path.split('.').reduce((obj, key) => obj && obj[key], object); + }, + // Get the closest value in an array closest(array, value) { if (!utils.is.array(array) || !array.length) { |