From 1028403b7ce5962b7a7c6dfd3bad45bab1d428cd Mon Sep 17 00:00:00 2001 From: Stephan Schreiner Date: Thu, 4 Aug 2022 16:14:28 +0200 Subject: [PATCH] make language matching more robust * adding BCP-47 module * use BCP-47 extended filter in settings matcher --- package.json | 2 ++ src/streaming/controllers/MediaController.js | 7 ++++++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index 296a26beac..369e838671 100644 --- a/package.json +++ b/package.json @@ -57,6 +57,8 @@ "yargs": "16.0.3" }, "dependencies": { + "bcp-47-match": "^2.0.2", + "bcp-47-normalize": "^2.1.0", "codem-isoboxer": "0.3.6", "es6-promise": "^4.2.8", "fast-deep-equal": "2.0.1", diff --git a/src/streaming/controllers/MediaController.js b/src/streaming/controllers/MediaController.js index 5bd59bbe69..82dff354d6 100644 --- a/src/streaming/controllers/MediaController.js +++ b/src/streaming/controllers/MediaController.js @@ -33,6 +33,11 @@ import Events from '../../core/events/Events'; import EventBus from '../../core/EventBus'; import FactoryMaker from '../../core/FactoryMaker'; import Debug from '../../core/Debug'; +import {bcp47Normalize} from 'bcp-47-normalize'; +import {extendedFilter} from 'bcp-47-match'; +// const bcp47Normalize = require('bcp-47-normalize').bcp47Normalize; +// const extendedFilter = require('bcp-47-match').extendedFilter; + function MediaController() { @@ -309,7 +314,7 @@ function MediaController() { } function matchSettings(settings, track, isTrackActive = false) { - const matchLang = !settings.lang || (track.lang.match(settings.lang)); + const matchLang = !settings.lang || ( extendedFilter(track.lang, bcp47Normalize(settings.lang)).length>0 ); const matchIndex = (settings.index === undefined) || (settings.index === null) || (track.index === settings.index); const matchViewPoint = !settings.viewpoint || (settings.viewpoint === track.viewpoint); const matchRole = !settings.role || !!track.roles.filter(function (item) {