shaka-player 4.9.26 → 4.9.28
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/controls.css +2 -2
- package/dist/controls.css.map +1 -1
- package/dist/deps.js +1 -1
- package/dist/locales.js +54 -54
- package/dist/shaka-player.compiled.d.ts +5 -1
- package/dist/shaka-player.compiled.debug.d.ts +5 -1
- package/dist/shaka-player.compiled.debug.externs.js +6 -0
- package/dist/shaka-player.compiled.debug.js +124 -115
- package/dist/shaka-player.compiled.debug.map +4 -4
- package/dist/shaka-player.compiled.externs.js +6 -0
- package/dist/shaka-player.compiled.js +1113 -1105
- package/dist/shaka-player.compiled.map +4 -4
- package/dist/shaka-player.ui.d.ts +5 -1
- package/dist/shaka-player.ui.debug.d.ts +5 -1
- package/dist/shaka-player.ui.debug.externs.js +6 -0
- package/dist/shaka-player.ui.debug.js +367 -355
- package/dist/shaka-player.ui.debug.map +4 -4
- package/dist/shaka-player.ui.externs.js +6 -0
- package/dist/shaka-player.ui.js +1285 -1276
- package/dist/shaka-player.ui.map +4 -4
- package/externs/ima.js +22 -2
- package/externs/shaka/player.js +13 -2
- package/lib/dash/dash_parser.js +17 -9
- package/lib/dash/mpd_utils.js +0 -3
- package/lib/hls/hls_parser.js +18 -4
- package/lib/media/gap_jumping_controller.js +4 -2
- package/lib/media/segment_index.js +18 -6
- package/lib/media/streaming_engine.js +22 -9
- package/lib/net/networking_utils.js +5 -0
- package/lib/offline/storage.js +12 -10
- package/lib/player.js +13 -4
- package/lib/text/simple_text_displayer.js +1 -1
- package/lib/text/text_utils.js +4 -0
- package/lib/text/ttml_text_parser.js +26 -5
- package/lib/util/periods.js +60 -4
- package/lib/util/player_configuration.js +5 -0
- package/lib/util/tXml.js +17 -9
- package/package.json +1 -1
- package/ui/controls.js +14 -2
- package/ui/less/overflow_menu.less +1 -0
- package/ui/less/tooltip.less +1 -1
- package/ui/locales/README.md +16 -0
- package/ui/locales/ar-XB.json +1 -1
- package/ui/locales/ar.json +1 -1
- package/ui/locales/bg.json +1 -1
- package/ui/locales/ca.json +5 -5
- package/ui/locales/cs.json +1 -1
- package/ui/locales/da.json +1 -1
- package/ui/locales/de.json +1 -1
- package/ui/locales/el.json +1 -1
- package/ui/locales/en-GB.json +1 -1
- package/ui/locales/en-XA.json +1 -1
- package/ui/locales/es-419.json +4 -4
- package/ui/locales/es.json +3 -3
- package/ui/locales/fa.json +1 -1
- package/ui/locales/fi.json +1 -1
- package/ui/locales/fil.json +1 -1
- package/ui/locales/fr.json +6 -6
- package/ui/locales/hi.json +1 -1
- package/ui/locales/hr.json +1 -1
- package/ui/locales/hu.json +1 -1
- package/ui/locales/id.json +1 -1
- package/ui/locales/it.json +1 -1
- package/ui/locales/iw.json +1 -1
- package/ui/locales/ja.json +1 -1
- package/ui/locales/ko.json +1 -1
- package/ui/locales/lt.json +1 -1
- package/ui/locales/lv.json +1 -1
- package/ui/locales/nl.json +1 -1
- package/ui/locales/no.json +1 -1
- package/ui/locales/pl.json +6 -6
- package/ui/locales/pt-BR.json +6 -6
- package/ui/locales/pt-PT.json +7 -7
- package/ui/locales/ro.json +1 -1
- package/ui/locales/ru.json +1 -1
- package/ui/locales/sjn-translations.yaml +50 -4
- package/ui/locales/sjn.json +8 -1
- package/ui/locales/sk.json +1 -1
- package/ui/locales/sl.json +1 -1
- package/ui/locales/sr.json +1 -1
- package/ui/locales/sv.json +1 -1
- package/ui/locales/sync-sjn.py +41 -0
- package/ui/locales/th.json +1 -1
- package/ui/locales/tr.json +1 -1
- package/ui/locales/uk.json +1 -1
- package/ui/locales/vi.json +1 -1
- package/ui/locales/zh-HK.json +1 -1
- package/ui/locales/zh-TW.json +1 -1
- package/ui/locales/zh.json +1 -1
package/lib/util/periods.js
CHANGED
|
@@ -107,6 +107,56 @@ shaka.util.PeriodCombiner = class {
|
|
|
107
107
|
return this.imageStreams_;
|
|
108
108
|
}
|
|
109
109
|
|
|
110
|
+
/**
|
|
111
|
+
* Deletes a stream from matchedStreams because it is no longer needed
|
|
112
|
+
*
|
|
113
|
+
* @param {?shaka.extern.Stream} stream
|
|
114
|
+
* @param {string} periodId
|
|
115
|
+
*
|
|
116
|
+
* @export
|
|
117
|
+
*/
|
|
118
|
+
deleteStream(stream, periodId) {
|
|
119
|
+
if (!stream) {
|
|
120
|
+
return;
|
|
121
|
+
}
|
|
122
|
+
const ContentType = shaka.util.ManifestParserUtils.ContentType;
|
|
123
|
+
if (stream.type == ContentType.AUDIO) {
|
|
124
|
+
for (const audioStream of this.audioStreams_) {
|
|
125
|
+
audioStream.matchedStreams = audioStream.matchedStreams.filter((s) => {
|
|
126
|
+
return s !== stream;
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
} else if (stream.type == ContentType.VIDEO) {
|
|
130
|
+
for (const videoStream of this.videoStreams_) {
|
|
131
|
+
videoStream.matchedStreams = videoStream.matchedStreams.filter((s) => {
|
|
132
|
+
return s !== stream;
|
|
133
|
+
});
|
|
134
|
+
if (videoStream.trickModeVideo) {
|
|
135
|
+
videoStream.trickModeVideo.matchedStreams =
|
|
136
|
+
videoStream.trickModeVideo.matchedStreams.filter((s) => {
|
|
137
|
+
return s !== stream;
|
|
138
|
+
});
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
} else if (stream.type == ContentType.TEXT) {
|
|
142
|
+
for (const textStream of this.textStreams_) {
|
|
143
|
+
textStream.matchedStreams = textStream.matchedStreams.filter((s) => {
|
|
144
|
+
return s !== stream;
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
} else if (stream.type == ContentType.IMAGE) {
|
|
148
|
+
for (const imageStream of this.imageStreams_) {
|
|
149
|
+
imageStream.matchedStreams = imageStream.matchedStreams.filter((s) => {
|
|
150
|
+
return s !== stream;
|
|
151
|
+
});
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
if (stream.segmentIndex) {
|
|
155
|
+
stream.closeSegmentIndex();
|
|
156
|
+
}
|
|
157
|
+
this.usedPeriodIds_.delete(periodId);
|
|
158
|
+
}
|
|
159
|
+
|
|
110
160
|
/**
|
|
111
161
|
* Returns an object that contains arrays of streams by type
|
|
112
162
|
* @param {!Array<shaka.extern.Period>} periods
|
|
@@ -600,7 +650,8 @@ shaka.util.PeriodCombiner = class {
|
|
|
600
650
|
const streams = outputStream.matchedStreams;
|
|
601
651
|
goog.asserts.assert(streams, 'matched streams should be valid');
|
|
602
652
|
|
|
603
|
-
for (
|
|
653
|
+
for (let i = firstNewPeriodIndex; i < streams.length; i++) {
|
|
654
|
+
const stream = streams[i];
|
|
604
655
|
operations.push(stream.createSegmentIndex());
|
|
605
656
|
if (stream.trickModeVideo && !stream.trickModeVideo.segmentIndex) {
|
|
606
657
|
operations.push(stream.trickModeVideo.createSegmentIndex());
|
|
@@ -783,7 +834,8 @@ shaka.util.PeriodCombiner = class {
|
|
|
783
834
|
clone.segmentIndex = null;
|
|
784
835
|
clone.emsgSchemeIdUris = [];
|
|
785
836
|
clone.keyIds = new Set();
|
|
786
|
-
clone.closedCaptions =
|
|
837
|
+
clone.closedCaptions = stream.closedCaptions ?
|
|
838
|
+
new Map(stream.closedCaptions) : null;
|
|
787
839
|
clone.trickModeVideo = null;
|
|
788
840
|
|
|
789
841
|
return clone;
|
|
@@ -808,7 +860,8 @@ shaka.util.PeriodCombiner = class {
|
|
|
808
860
|
clone.keyIds = new Set();
|
|
809
861
|
clone.segments = [];
|
|
810
862
|
clone.variantIds = [];
|
|
811
|
-
clone.closedCaptions =
|
|
863
|
+
clone.closedCaptions = streamDb.closedCaptions ?
|
|
864
|
+
new Map(streamDb.closedCaptions) : null;
|
|
812
865
|
|
|
813
866
|
return clone;
|
|
814
867
|
}
|
|
@@ -852,7 +905,10 @@ shaka.util.PeriodCombiner = class {
|
|
|
852
905
|
if (output.originalId == null) {
|
|
853
906
|
output.originalId = input.originalId;
|
|
854
907
|
} else {
|
|
855
|
-
|
|
908
|
+
const newOriginalId = (input.originalId || '');
|
|
909
|
+
if (newOriginalId && !output.originalId.endsWith(newOriginalId)) {
|
|
910
|
+
output.originalId += ',' + newOriginalId;
|
|
911
|
+
}
|
|
856
912
|
}
|
|
857
913
|
|
|
858
914
|
const commonDrmInfos = shaka.util.DrmUtils.getCommonDrmInfos(
|
|
@@ -205,6 +205,7 @@ shaka.util.PlayerConfiguration = class {
|
|
|
205
205
|
alwaysStreamText: false,
|
|
206
206
|
startAtSegmentBoundary: false,
|
|
207
207
|
gapDetectionThreshold: 0.5,
|
|
208
|
+
gapPadding: 0.01,
|
|
208
209
|
gapJumpTimerTime: 0.25 /* seconds */,
|
|
209
210
|
durationBackoff: 1,
|
|
210
211
|
// Offset by 5 seconds since Chromecast takes a few seconds to start
|
|
@@ -270,6 +271,10 @@ shaka.util.PlayerConfiguration = class {
|
|
|
270
271
|
streaming.stallSkip = 0;
|
|
271
272
|
}
|
|
272
273
|
|
|
274
|
+
if (shaka.util.Platform.isTizen()) {
|
|
275
|
+
streaming.gapPadding = 2;
|
|
276
|
+
}
|
|
277
|
+
|
|
273
278
|
const offline = {
|
|
274
279
|
// We need to set this to a throw-away implementation for now as our
|
|
275
280
|
// default implementation will need to reference other fields in the
|
package/lib/util/tXml.js
CHANGED
|
@@ -44,11 +44,13 @@ shaka.util.TXml = class {
|
|
|
44
44
|
* Parse some data
|
|
45
45
|
* @param {BufferSource} data
|
|
46
46
|
* @param {string=} expectedRootElemName
|
|
47
|
+
* @param {boolean=} includeParent
|
|
47
48
|
* @return {shaka.extern.xml.Node | null}
|
|
48
49
|
*/
|
|
49
|
-
static parseXml(data, expectedRootElemName) {
|
|
50
|
+
static parseXml(data, expectedRootElemName, includeParent = false) {
|
|
50
51
|
const xmlString = shaka.util.StringUtils.fromBytesAutoDetect(data);
|
|
51
|
-
return shaka.util.TXml.parseXmlString(
|
|
52
|
+
return shaka.util.TXml.parseXmlString(
|
|
53
|
+
xmlString, expectedRootElemName, includeParent);
|
|
52
54
|
}
|
|
53
55
|
|
|
54
56
|
/**
|
|
@@ -57,8 +59,9 @@ shaka.util.TXml = class {
|
|
|
57
59
|
* @param {string=} expectedRootElemName
|
|
58
60
|
* @return {shaka.extern.xml.Node | null}
|
|
59
61
|
*/
|
|
60
|
-
static parseXmlString(xmlString, expectedRootElemName
|
|
61
|
-
|
|
62
|
+
static parseXmlString(xmlString, expectedRootElemName,
|
|
63
|
+
includeParent = false) {
|
|
64
|
+
const result = shaka.util.TXml.parse(xmlString, includeParent);
|
|
62
65
|
if (!expectedRootElemName && result.length) {
|
|
63
66
|
return result[0];
|
|
64
67
|
}
|
|
@@ -109,9 +112,10 @@ shaka.util.TXml = class {
|
|
|
109
112
|
* parseXML / html into a DOM Object,
|
|
110
113
|
* with no validation and some failure tolerance
|
|
111
114
|
* @param {string} S your XML to parse
|
|
115
|
+
* @param {boolean} includeParent
|
|
112
116
|
* @return {Array.<shaka.extern.xml.Node>}
|
|
113
117
|
*/
|
|
114
|
-
static parse(S) {
|
|
118
|
+
static parse(S, includeParent) {
|
|
115
119
|
let pos = 0;
|
|
116
120
|
|
|
117
121
|
const openBracket = '<';
|
|
@@ -286,9 +290,11 @@ shaka.util.TXml = class {
|
|
|
286
290
|
children,
|
|
287
291
|
parent: null,
|
|
288
292
|
};
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
children[i]
|
|
293
|
+
if (includeParent) {
|
|
294
|
+
for (let i = 0; i < children.length; i++) {
|
|
295
|
+
if (typeof children[i] !== 'string') {
|
|
296
|
+
children[i].parent = node;
|
|
297
|
+
}
|
|
292
298
|
}
|
|
293
299
|
}
|
|
294
300
|
return node;
|
|
@@ -330,7 +336,9 @@ shaka.util.TXml = class {
|
|
|
330
336
|
for (let i = 0; i < childrenLength; i++) {
|
|
331
337
|
const childrenValue = children[i];
|
|
332
338
|
if (typeof childrenValue !== 'string') {
|
|
333
|
-
|
|
339
|
+
if (includeParent) {
|
|
340
|
+
childrenValue.parent = node;
|
|
341
|
+
}
|
|
334
342
|
} else if (i == childrenLength - 1 && childrenValue == '\n') {
|
|
335
343
|
children.pop();
|
|
336
344
|
}
|
package/package.json
CHANGED
package/ui/controls.js
CHANGED
|
@@ -259,6 +259,16 @@ shaka.ui.Controls = class extends shaka.util.FakeEventTarget {
|
|
|
259
259
|
this.castProxy_ = null;
|
|
260
260
|
}
|
|
261
261
|
|
|
262
|
+
if (this.spinnerContainer_) {
|
|
263
|
+
this.videoContainer_.removeChild(this.spinnerContainer_);
|
|
264
|
+
this.spinnerContainer_ = null;
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
if (this.clientAdContainer_) {
|
|
268
|
+
this.videoContainer_.removeChild(this.clientAdContainer_);
|
|
269
|
+
this.clientAdContainer_ = null;
|
|
270
|
+
}
|
|
271
|
+
|
|
262
272
|
if (this.localPlayer_) {
|
|
263
273
|
await this.localPlayer_.destroy();
|
|
264
274
|
this.localPlayer_ = null;
|
|
@@ -518,6 +528,8 @@ shaka.ui.Controls = class extends shaka.util.FakeEventTarget {
|
|
|
518
528
|
* @export
|
|
519
529
|
*/
|
|
520
530
|
getClientSideAdContainer() {
|
|
531
|
+
goog.asserts.assert(
|
|
532
|
+
this.clientAdContainer_, 'No client ad container after destruction!');
|
|
521
533
|
return this.clientAdContainer_;
|
|
522
534
|
}
|
|
523
535
|
|
|
@@ -976,7 +988,7 @@ shaka.ui.Controls = class extends shaka.util.FakeEventTarget {
|
|
|
976
988
|
|
|
977
989
|
/** @private */
|
|
978
990
|
addBufferingSpinner_() {
|
|
979
|
-
/** @private {
|
|
991
|
+
/** @private {HTMLElement} */
|
|
980
992
|
this.spinnerContainer_ = shaka.util.Dom.createHTMLElement('div');
|
|
981
993
|
this.spinnerContainer_.classList.add('shaka-spinner-container');
|
|
982
994
|
this.videoContainer_.appendChild(this.spinnerContainer_);
|
|
@@ -1133,7 +1145,7 @@ shaka.ui.Controls = class extends shaka.util.FakeEventTarget {
|
|
|
1133
1145
|
* @private
|
|
1134
1146
|
*/
|
|
1135
1147
|
addClientAdContainer_() {
|
|
1136
|
-
/** @private {
|
|
1148
|
+
/** @private {HTMLElement} */
|
|
1137
1149
|
this.clientAdContainer_ = shaka.util.Dom.createHTMLElement('div');
|
|
1138
1150
|
this.clientAdContainer_.classList.add('shaka-client-side-ad-container');
|
|
1139
1151
|
shaka.ui.Utils.setDisplay(this.clientAdContainer_, false);
|
package/ui/less/tooltip.less
CHANGED
|
@@ -47,7 +47,7 @@
|
|
|
47
47
|
content: attr(aria-label);
|
|
48
48
|
|
|
49
49
|
/* Override .material-icons-round text styling */
|
|
50
|
-
font-family: Roboto, sans-serif;
|
|
50
|
+
font-family: Roboto, sans-serif, TengwarTelcontar;
|
|
51
51
|
line-height: calc(@material-icons-width / 2);
|
|
52
52
|
white-space: nowrap;
|
|
53
53
|
font-size: 13px;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# Maintenance of translations
|
|
2
|
+
|
|
3
|
+
Most translations are maintained by Google, but need internal scripts run to
|
|
4
|
+
sync between our internal translation system and GitHub. Changes made directly
|
|
5
|
+
on GitHub are welcome, but need to be pushed back into Google's internal
|
|
6
|
+
systems by a Googler to avoid having them overwritten later.
|
|
7
|
+
|
|
8
|
+
The following locales are fake "meta-languages" that are used only for testing.
|
|
9
|
+
They are automatically maintained by our internal systems:
|
|
10
|
+
- ar-XB (Right-to-left English (not Arabic), to help identify RTL issues)
|
|
11
|
+
- en-XA (Accented English, accents added to help spot hard-coded text)
|
|
12
|
+
|
|
13
|
+
The following locales are not maintained by Google at all, and must be kept
|
|
14
|
+
up-to-date by the community:
|
|
15
|
+
- oc (Occitan)
|
|
16
|
+
- sjn (Sindarin, see sjn-translations.yaml for more information)
|
package/ui/locales/ar-XB.json
CHANGED
package/ui/locales/ar.json
CHANGED
package/ui/locales/bg.json
CHANGED
package/ui/locales/ca.json
CHANGED
|
@@ -7,10 +7,10 @@
|
|
|
7
7
|
"CAPTIONS": "Subtítols",
|
|
8
8
|
"CAST": "Emet…",
|
|
9
9
|
"ENTER_LOOP_MODE": "Reprodueix en bucle el vídeo actual",
|
|
10
|
-
"ENTER_PICTURE_IN_PICTURE": "Entra
|
|
10
|
+
"ENTER_PICTURE_IN_PICTURE": "Entra a imatge sobre imatge",
|
|
11
11
|
"EXIT_FULL_SCREEN": "Surt del mode de pantalla completa",
|
|
12
12
|
"EXIT_LOOP_MODE": "Deixa de reproduir en bucle el vídeo actual",
|
|
13
|
-
"EXIT_PICTURE_IN_PICTURE": "Surt
|
|
13
|
+
"EXIT_PICTURE_IN_PICTURE": "Surt d'imatge sobre imatge",
|
|
14
14
|
"FAST_FORWARD": "Avança ràpidament",
|
|
15
15
|
"FULL_SCREEN": "Pantalla completa",
|
|
16
16
|
"LANGUAGE": "Idioma",
|
|
@@ -22,8 +22,8 @@
|
|
|
22
22
|
"NOT_APPLICABLE": "No aplicable",
|
|
23
23
|
"OFF": "Desactivat",
|
|
24
24
|
"ON": "Activat",
|
|
25
|
-
"PAUSE": "
|
|
26
|
-
"PICTURE_IN_PICTURE": "
|
|
25
|
+
"PAUSE": "Posa en pausa",
|
|
26
|
+
"PICTURE_IN_PICTURE": "Imatge sobre imatge",
|
|
27
27
|
"PLAY": "Reprodueix",
|
|
28
28
|
"PLAYBACK_RATE": "Velocitat de reproducció",
|
|
29
29
|
"RESOLUTION": "Resolució",
|
|
@@ -35,4 +35,4 @@
|
|
|
35
35
|
"UNMUTE": "Deixa de silenciar",
|
|
36
36
|
"UNRECOGNIZED_LANGUAGE": "No reconegut",
|
|
37
37
|
"VOLUME": "Volum"
|
|
38
|
-
}
|
|
38
|
+
}
|
package/ui/locales/cs.json
CHANGED
package/ui/locales/da.json
CHANGED
package/ui/locales/de.json
CHANGED
package/ui/locales/el.json
CHANGED
package/ui/locales/en-GB.json
CHANGED
package/ui/locales/en-XA.json
CHANGED
package/ui/locales/es-419.json
CHANGED
|
@@ -26,17 +26,17 @@
|
|
|
26
26
|
"PICTURE_IN_PICTURE": "Pantalla en pantalla",
|
|
27
27
|
"PLAY": "Reproducir",
|
|
28
28
|
"PLAYBACK_RATE": "Velocidad de reproducción",
|
|
29
|
-
"RECENTER_VR": "
|
|
29
|
+
"RECENTER_VR": "Volver a centrar",
|
|
30
30
|
"RESOLUTION": "Resolución",
|
|
31
31
|
"REWIND": "Retroceder",
|
|
32
32
|
"SEEK": "Buscar",
|
|
33
33
|
"SKIP_AD": "Omitir anuncio",
|
|
34
34
|
"SKIP_TO_LIVE": "Adelantar hasta la transmisión en vivo",
|
|
35
35
|
"SUBTITLE_FORCED": "Forzado",
|
|
36
|
-
"SURROUND": "
|
|
37
|
-
"TOGGLE_STEREOSCOPIC": "
|
|
36
|
+
"SURROUND": "Sonido envolvente",
|
|
37
|
+
"TOGGLE_STEREOSCOPIC": "Activar o desactivar el modo estereoscópico",
|
|
38
38
|
"UNDETERMINED_LANGUAGE": "Sin especificar",
|
|
39
39
|
"UNMUTE": "Dejar de silenciar",
|
|
40
40
|
"UNRECOGNIZED_LANGUAGE": "No reconocida",
|
|
41
41
|
"VOLUME": "Volumen"
|
|
42
|
-
}
|
|
42
|
+
}
|
package/ui/locales/es.json
CHANGED
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
"PLAY": "Reproducir",
|
|
29
29
|
"PLAYBACK_RATE": "Velocidad de reproducción",
|
|
30
30
|
"QUALITY": "Calidad",
|
|
31
|
-
"RECENTER_VR": "
|
|
31
|
+
"RECENTER_VR": "Volver a centrar",
|
|
32
32
|
"RESOLUTION": "Resolución",
|
|
33
33
|
"REWIND": "Rebobinar",
|
|
34
34
|
"SEEK": "Buscar",
|
|
@@ -36,9 +36,9 @@
|
|
|
36
36
|
"SKIP_TO_LIVE": "Ir al vídeo en directo",
|
|
37
37
|
"SUBTITLE_FORCED": "Forzado",
|
|
38
38
|
"SURROUND": "Envolvente",
|
|
39
|
-
"TOGGLE_STEREOSCOPIC": "
|
|
39
|
+
"TOGGLE_STEREOSCOPIC": "Activar/Desactivar estereoscópica",
|
|
40
40
|
"UNDETERMINED_LANGUAGE": "Sin especificar",
|
|
41
41
|
"UNMUTE": "Activar sonido",
|
|
42
42
|
"UNRECOGNIZED_LANGUAGE": "No reconocida",
|
|
43
43
|
"VOLUME": "Volumen"
|
|
44
|
-
}
|
|
44
|
+
}
|
package/ui/locales/fa.json
CHANGED
package/ui/locales/fi.json
CHANGED
package/ui/locales/fil.json
CHANGED
package/ui/locales/fr.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"AD_DURATION": "Durée de l'annonce",
|
|
3
|
-
"AD_PROGRESS": "Annonce
|
|
4
|
-
"AD_STATISTICS": "Statistiques
|
|
5
|
-
"AD_TIME": "Annonce
|
|
3
|
+
"AD_PROGRESS": "Annonce [AD_ON] sur [NUM_ADS]",
|
|
4
|
+
"AD_STATISTICS": "Statistiques sur les annonces",
|
|
5
|
+
"AD_TIME": "Annonce : [AD_TIME]",
|
|
6
6
|
"AIRPLAY": "AirPlay",
|
|
7
7
|
"AUTO_QUALITY": "Automatique",
|
|
8
8
|
"BACK": "Retour",
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
"PLAYBACK_RATE": "Vitesse de lecture",
|
|
31
31
|
"QUALITY": "Qualité",
|
|
32
32
|
"RECENTER_VR": "Recentrer",
|
|
33
|
-
"REPLAY": "
|
|
33
|
+
"REPLAY": "Revoir",
|
|
34
34
|
"RESOLUTION": "Résolution",
|
|
35
35
|
"REWIND": "Retour arrière",
|
|
36
36
|
"SEEK": "Chercher",
|
|
@@ -39,9 +39,9 @@
|
|
|
39
39
|
"STATISTICS": "Statistiques",
|
|
40
40
|
"SUBTITLE_FORCED": "Forcé",
|
|
41
41
|
"SURROUND": "Surround",
|
|
42
|
-
"TOGGLE_STEREOSCOPIC": "
|
|
42
|
+
"TOGGLE_STEREOSCOPIC": "Activer/Désactiver le mode stéréoscopique",
|
|
43
43
|
"UNDETERMINED_LANGUAGE": "Langue indéterminée",
|
|
44
44
|
"UNMUTE": "Réactiver le son",
|
|
45
45
|
"UNRECOGNIZED_LANGUAGE": "Non reconnu",
|
|
46
46
|
"VOLUME": "Volume"
|
|
47
|
-
}
|
|
47
|
+
}
|
package/ui/locales/hi.json
CHANGED
package/ui/locales/hr.json
CHANGED
package/ui/locales/hu.json
CHANGED
package/ui/locales/id.json
CHANGED
package/ui/locales/it.json
CHANGED
package/ui/locales/iw.json
CHANGED
package/ui/locales/ja.json
CHANGED
package/ui/locales/ko.json
CHANGED
package/ui/locales/lt.json
CHANGED
package/ui/locales/lv.json
CHANGED
package/ui/locales/nl.json
CHANGED
package/ui/locales/no.json
CHANGED
package/ui/locales/pl.json
CHANGED
|
@@ -8,8 +8,8 @@
|
|
|
8
8
|
"BACK": "Wstecz",
|
|
9
9
|
"CAPTIONS": "Napisy",
|
|
10
10
|
"CAST": "Przesyłaj...",
|
|
11
|
-
"ENTER_LOOP_MODE": "Odtwarzaj bieżący film w
|
|
12
|
-
"ENTER_PICTURE_IN_PICTURE": "Włącz tryb obrazu w
|
|
11
|
+
"ENTER_LOOP_MODE": "Odtwarzaj bieżący film w pętli",
|
|
12
|
+
"ENTER_PICTURE_IN_PICTURE": "Włącz tryb obrazu w obrazie",
|
|
13
13
|
"EXIT_FULL_SCREEN": "Zamknij pełny ekran",
|
|
14
14
|
"EXIT_LOOP_MODE": "Wyłącz odtwarzanie bieżącego filmu w pętli",
|
|
15
15
|
"EXIT_PICTURE_IN_PICTURE": "Wyłącz tryb obrazu w obrazie",
|
|
@@ -29,8 +29,8 @@
|
|
|
29
29
|
"PLAY": "Odtwórz",
|
|
30
30
|
"PLAYBACK_RATE": "Szybkość odtwarzania",
|
|
31
31
|
"QUALITY": "Jakość",
|
|
32
|
-
"RECENTER_VR": "
|
|
33
|
-
"REPLAY": "Odtwórz
|
|
32
|
+
"RECENTER_VR": "Wyśrodkuj",
|
|
33
|
+
"REPLAY": "Odtwórz ponownie",
|
|
34
34
|
"RESOLUTION": "Rozdzielczość",
|
|
35
35
|
"REWIND": "Przewiń do tyłu",
|
|
36
36
|
"SEEK": "Szukaj",
|
|
@@ -39,9 +39,9 @@
|
|
|
39
39
|
"STATISTICS": "Statystyki",
|
|
40
40
|
"SUBTITLE_FORCED": "Wymuszone",
|
|
41
41
|
"SURROUND": "Przestrzenny",
|
|
42
|
-
"TOGGLE_STEREOSCOPIC": "Przełącz
|
|
42
|
+
"TOGGLE_STEREOSCOPIC": "Przełącz tryb stereoskopowy",
|
|
43
43
|
"UNDETERMINED_LANGUAGE": "Nie określono",
|
|
44
44
|
"UNMUTE": "Wyłącz wyciszenie",
|
|
45
45
|
"UNRECOGNIZED_LANGUAGE": "Nierozpoznany",
|
|
46
46
|
"VOLUME": "Głośność"
|
|
47
|
-
}
|
|
47
|
+
}
|
package/ui/locales/pt-BR.json
CHANGED
|
@@ -29,19 +29,19 @@
|
|
|
29
29
|
"PLAY": "Reproduzir",
|
|
30
30
|
"PLAYBACK_RATE": "Velocidade da reprodução",
|
|
31
31
|
"QUALITY": "Qualidade",
|
|
32
|
-
"RECENTER_VR": "
|
|
33
|
-
"REPLAY": "
|
|
32
|
+
"RECENTER_VR": "Centralizar",
|
|
33
|
+
"REPLAY": "Repetir",
|
|
34
34
|
"RESOLUTION": "Resolução",
|
|
35
|
-
"REWIND": "
|
|
35
|
+
"REWIND": "Voltar",
|
|
36
36
|
"SEEK": "Procurar",
|
|
37
37
|
"SKIP_AD": "Pular anúncio",
|
|
38
38
|
"SKIP_TO_LIVE": "Pular para transmissão ao vivo",
|
|
39
39
|
"STATISTICS": "Estatísticas",
|
|
40
|
-
"SUBTITLE_FORCED": "
|
|
40
|
+
"SUBTITLE_FORCED": "Exibição forçada",
|
|
41
41
|
"SURROUND": "Surround",
|
|
42
|
-
"TOGGLE_STEREOSCOPIC": "Alternar
|
|
42
|
+
"TOGGLE_STEREOSCOPIC": "Alternar imagem estereoscópica",
|
|
43
43
|
"UNDETERMINED_LANGUAGE": "Indeterminado",
|
|
44
44
|
"UNMUTE": "Ativar som",
|
|
45
45
|
"UNRECOGNIZED_LANGUAGE": "Não reconhecido",
|
|
46
46
|
"VOLUME": "Volume"
|
|
47
|
-
}
|
|
47
|
+
}
|