aboutsummaryrefslogtreecommitdiffstats
path: root/src/js
diff options
context:
space:
mode:
Diffstat (limited to 'src/js')
-rw-r--r--src/js/captions.js29
1 files changed, 15 insertions, 14 deletions
diff --git a/src/js/captions.js b/src/js/captions.js
index fd2692f7..94500290 100644
--- a/src/js/captions.js
+++ b/src/js/captions.js
@@ -71,7 +71,7 @@ const captions = {
const languages = dedupe(Array.from(navigator.languages || navigator.userLanguage)
.map(language => language.split('-')[0]));
- let language = this.storage.get('language') || this.config.captions.language;
+ let language = (this.storage.get('language') || this.config.captions.language || 'auto').toLowerCase();
// Use first browser language when language is 'auto'
if (language === 'auto') {
@@ -156,6 +156,12 @@ const captions = {
// Update state and trigger event
if (active !== toggled) {
+ // When passive, don't override user preferences
+ if (!passive) {
+ this.captions.active = active;
+ this.storage.set({ captions: active });
+ }
+
// Force language if the call isn't passive and there is no matching language to toggle to
if (!this.language && active && !passive) {
const tracks = captions.getTracks.call(this);
@@ -183,12 +189,6 @@ const captions = {
// Update settings menu
controls.updateSetting.call(this, 'captions');
- // When passive, don't override user preferences
- if (!passive) {
- this.captions.active = active;
- this.storage.set({ captions: active });
- }
-
// Trigger event (not used internally)
triggerEvent.call(this, this.media, active ? 'captionsenabled' : 'captionsdisabled');
}
@@ -241,24 +241,25 @@ const captions = {
triggerEvent.call(this, this.media, 'languagechange');
}
+ // Show captions
+ captions.toggle.call(this, true, passive);
+
if (this.isHTML5 && this.isVideo) {
// If we change the active track while a cue is already displayed we need to update it
captions.updateCues.call(this);
}
-
- // Show captions
- captions.toggle.call(this, true, passive);
},
// Set captions by language
// Used internally for the language setter with the passive option forced to false
- setLanguage(language, passive = true) {
- if (!is.string(language)) {
- this.debug.warn('Invalid language argument', language);
+ setLanguage(input, passive = true) {
+ if (!is.string(input)) {
+ this.debug.warn('Invalid language argument', input);
return;
}
// Normalize
- this.captions.language = language.toLowerCase();
+ const language = input.toLowerCase();
+ this.captions.language = language;
// Set currentTrack
const tracks = captions.getTracks.call(this);