shaka-player 4.11.2 → 4.11.3
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/locales.js +55 -55
- package/dist/shaka-player.compiled.d.ts +9 -0
- package/dist/shaka-player.compiled.debug.d.ts +9 -0
- package/dist/shaka-player.compiled.debug.externs.js +13 -0
- package/dist/shaka-player.compiled.debug.js +226 -222
- package/dist/shaka-player.compiled.debug.map +3 -3
- package/dist/shaka-player.compiled.externs.js +13 -0
- package/dist/shaka-player.compiled.js +344 -341
- package/dist/shaka-player.compiled.map +3 -3
- package/dist/shaka-player.ui.d.ts +9 -0
- package/dist/shaka-player.ui.debug.d.ts +9 -0
- package/dist/shaka-player.ui.debug.externs.js +13 -0
- package/dist/shaka-player.ui.debug.js +101 -97
- package/dist/shaka-player.ui.debug.map +3 -3
- package/dist/shaka-player.ui.externs.js +13 -0
- package/dist/shaka-player.ui.js +475 -471
- package/dist/shaka-player.ui.map +3 -3
- package/lib/dash/dash_parser.js +3 -3
- package/lib/dash/mpd_utils.js +0 -3
- package/lib/dash/segment_template.js +11 -2
- package/lib/media/presentation_timeline.js +16 -0
- package/lib/media/segment_index.js +4 -4
- package/lib/media/streaming_engine.js +2 -1
- package/lib/player.js +4 -2
- package/lib/text/ttml_text_parser.js +1 -1
- package/lib/util/periods.js +56 -3
- package/lib/util/tXml.js +17 -9
- package/package.json +1 -1
- 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 +4 -4
- 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 +5 -5
- 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 +5 -5
- package/ui/locales/pt-BR.json +7 -7
- package/ui/locales/pt-PT.json +8 -8
- package/ui/locales/ro.json +1 -1
- package/ui/locales/ru.json +1 -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/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/dash/dash_parser.js
CHANGED
|
@@ -1492,14 +1492,14 @@ shaka.dash.DashParser = class {
|
|
|
1492
1492
|
*/
|
|
1493
1493
|
cleanStreamMap_() {
|
|
1494
1494
|
const oldPeriodIds = Object.keys(this.indexStreamMap_);
|
|
1495
|
-
if (oldPeriodIds.length === this.lastManifestUpdatePeriodIds_.length) {
|
|
1496
|
-
return;
|
|
1497
|
-
}
|
|
1498
1495
|
const diffPeriodsIDs = oldPeriodIds.filter((pId) => {
|
|
1499
1496
|
return !this.lastManifestUpdatePeriodIds_.includes(pId);
|
|
1500
1497
|
});
|
|
1501
1498
|
for (const pId of diffPeriodsIDs) {
|
|
1502
1499
|
for (const contextId of this.indexStreamMap_[pId]) {
|
|
1500
|
+
if (this.periodCombiner_) {
|
|
1501
|
+
this.periodCombiner_.deleteStream(this.streamMap_[contextId], pId);
|
|
1502
|
+
}
|
|
1503
1503
|
delete this.streamMap_[contextId];
|
|
1504
1504
|
}
|
|
1505
1505
|
delete this.indexStreamMap_[pId];
|
package/lib/dash/mpd_utils.js
CHANGED
|
@@ -481,9 +481,6 @@ shaka.dash.MpdUtils = class {
|
|
|
481
481
|
// Move the children of the loaded xml into the current element.
|
|
482
482
|
while (rootElem.children.length) {
|
|
483
483
|
const child = rootElem.children.shift();
|
|
484
|
-
if (TXml.isNode(child)) {
|
|
485
|
-
child.parent = element;
|
|
486
|
-
}
|
|
487
484
|
element.children.push(child);
|
|
488
485
|
}
|
|
489
486
|
|
|
@@ -86,10 +86,19 @@ shaka.dash.SegmentTemplate = class {
|
|
|
86
86
|
};
|
|
87
87
|
} else if (info.segmentDuration) {
|
|
88
88
|
if (!isUpdate && context.adaptationSet.contentType !== 'image') {
|
|
89
|
+
const periodStart = context.periodInfo.start;
|
|
90
|
+
const periodId = context.period.id;
|
|
91
|
+
const initialPeriodDuration = context.periodInfo.duration;
|
|
92
|
+
const periodDuration =
|
|
93
|
+
(periodId != null && periodDurationMap[periodId]) ||
|
|
94
|
+
initialPeriodDuration;
|
|
95
|
+
const periodEnd = periodDuration ?
|
|
96
|
+
(periodStart + periodDuration) : Infinity;
|
|
97
|
+
|
|
89
98
|
context.presentationTimeline.notifyMaxSegmentDuration(
|
|
90
99
|
info.segmentDuration);
|
|
91
|
-
context.presentationTimeline.
|
|
92
|
-
|
|
100
|
+
context.presentationTimeline.notifyPeriodDuration(
|
|
101
|
+
periodStart, periodEnd);
|
|
93
102
|
}
|
|
94
103
|
|
|
95
104
|
return {
|
|
@@ -331,6 +331,22 @@ shaka.media.PresentationTimeline = class {
|
|
|
331
331
|
}
|
|
332
332
|
|
|
333
333
|
|
|
334
|
+
/**
|
|
335
|
+
* Gives PresentationTimeline an startTime and endTime of the period.
|
|
336
|
+
* This should be only set for Dash.
|
|
337
|
+
*
|
|
338
|
+
* @param {number} startTime
|
|
339
|
+
* @param {number} endTime
|
|
340
|
+
* @export
|
|
341
|
+
*/
|
|
342
|
+
notifyPeriodDuration(startTime, endTime) {
|
|
343
|
+
this.notifyMinSegmentStartTime(startTime);
|
|
344
|
+
if (endTime != Infinity && !this.isLive()) {
|
|
345
|
+
this.maxSegmentEndTime_ = Math.max(this.maxSegmentEndTime_, endTime);
|
|
346
|
+
}
|
|
347
|
+
}
|
|
348
|
+
|
|
349
|
+
|
|
334
350
|
/**
|
|
335
351
|
* Gets the end time of the last available segment.
|
|
336
352
|
*
|
|
@@ -834,10 +834,10 @@ shaka.media.MetaSegmentIndex = class extends shaka.media.SegmentIndex {
|
|
|
834
834
|
* @export
|
|
835
835
|
*/
|
|
836
836
|
evict(time) {
|
|
837
|
-
|
|
838
|
-
|
|
839
|
-
|
|
840
|
-
|
|
837
|
+
for (const index of this.indexes_) {
|
|
838
|
+
index.evict(time);
|
|
839
|
+
}
|
|
840
|
+
this.evictEmpty();
|
|
841
841
|
}
|
|
842
842
|
|
|
843
843
|
/**
|
|
@@ -2505,7 +2505,8 @@ shaka.media.StreamingEngine = class {
|
|
|
2505
2505
|
async evict_(mediaState, presentationTime) {
|
|
2506
2506
|
const segmentIndex = mediaState.stream.segmentIndex;
|
|
2507
2507
|
if (segmentIndex instanceof shaka.media.MetaSegmentIndex) {
|
|
2508
|
-
segmentIndex.
|
|
2508
|
+
segmentIndex.evict(
|
|
2509
|
+
this.manifest_.presentationTimeline.getSeekRangeStart());
|
|
2509
2510
|
}
|
|
2510
2511
|
|
|
2511
2512
|
const logPrefix = shaka.media.StreamingEngine.logPrefix_(mediaState);
|
package/lib/player.js
CHANGED
|
@@ -7231,11 +7231,13 @@ shaka.Player = class extends shaka.util.FakeEventTarget {
|
|
|
7231
7231
|
this.playhead_.notifyOfBufferingChange();
|
|
7232
7232
|
// Skip the initial buffer gap
|
|
7233
7233
|
const startTime = this.mediaSourceEngine_.bufferStart(contentType);
|
|
7234
|
+
const ContentType = shaka.util.ManifestParserUtils.ContentType;
|
|
7234
7235
|
if (
|
|
7235
7236
|
!this.isLive() &&
|
|
7236
7237
|
// If not paused then GapJumpingController will handle this gap.
|
|
7237
7238
|
this.video_.paused &&
|
|
7238
7239
|
startTime != null &&
|
|
7240
|
+
contentType != ContentType.TEXT &&
|
|
7239
7241
|
startTime > 0 &&
|
|
7240
7242
|
this.playhead_.getTime() < startTime
|
|
7241
7243
|
) {
|
|
@@ -8062,8 +8064,8 @@ shaka.Player.TYPICAL_BUFFERING_THRESHOLD_ = 0.5;
|
|
|
8062
8064
|
* @define {string} A version number taken from git at compile time.
|
|
8063
8065
|
* @export
|
|
8064
8066
|
*/
|
|
8065
|
-
// eslint-disable-next-line no-useless-concat
|
|
8066
|
-
shaka.Player.version = 'v4.11.
|
|
8067
|
+
// eslint-disable-next-line no-useless-concat, max-len
|
|
8068
|
+
shaka.Player.version = 'v4.11.3' + '-uncompiled'; // x-release-please-version
|
|
8067
8069
|
|
|
8068
8070
|
// Initialize the deprecation system using the version string we just set
|
|
8069
8071
|
// on the player.
|
|
@@ -65,7 +65,7 @@ shaka.text.TtmlTextParser = class {
|
|
|
65
65
|
return cues;
|
|
66
66
|
}
|
|
67
67
|
|
|
68
|
-
const tt = TXml.parseXmlString(str, 'tt');
|
|
68
|
+
const tt = TXml.parseXmlString(str, 'tt', /* includeParent= */ true);
|
|
69
69
|
if (!tt) {
|
|
70
70
|
throw new shaka.util.Error(
|
|
71
71
|
shaka.util.Error.Severity.CRITICAL,
|
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
|
}
|
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
|
}
|
|
@@ -110,9 +113,10 @@ shaka.util.TXml = class {
|
|
|
110
113
|
* parseXML / html into a DOM Object,
|
|
111
114
|
* with no validation and some failure tolerance
|
|
112
115
|
* @param {string} S your XML to parse
|
|
116
|
+
* @param {boolean} includeParent
|
|
113
117
|
* @return {Array.<shaka.extern.xml.Node>}
|
|
114
118
|
*/
|
|
115
|
-
static parse(S) {
|
|
119
|
+
static parse(S, includeParent) {
|
|
116
120
|
let pos = 0;
|
|
117
121
|
|
|
118
122
|
const openBracket = '<';
|
|
@@ -287,9 +291,11 @@ shaka.util.TXml = class {
|
|
|
287
291
|
children,
|
|
288
292
|
parent: null,
|
|
289
293
|
};
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
children[i]
|
|
294
|
+
if (includeParent) {
|
|
295
|
+
for (let i = 0; i < children.length; i++) {
|
|
296
|
+
if (typeof children[i] !== 'string') {
|
|
297
|
+
children[i].parent = node;
|
|
298
|
+
}
|
|
293
299
|
}
|
|
294
300
|
}
|
|
295
301
|
return node;
|
|
@@ -331,7 +337,9 @@ shaka.util.TXml = class {
|
|
|
331
337
|
for (let i = 0; i < childrenLength; i++) {
|
|
332
338
|
const childrenValue = children[i];
|
|
333
339
|
if (typeof childrenValue !== 'string') {
|
|
334
|
-
|
|
340
|
+
if (includeParent) {
|
|
341
|
+
childrenValue.parent = node;
|
|
342
|
+
}
|
|
335
343
|
} else if (i == childrenLength - 1 && childrenValue == '\n') {
|
|
336
344
|
children.pop();
|
|
337
345
|
}
|
package/package.json
CHANGED
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
|
@@ -11,10 +11,10 @@
|
|
|
11
11
|
"CHAPTERS": "Capítols",
|
|
12
12
|
"DOWNLOAD_VIDEO_FRAME": "Desa el fotograma del vídeo",
|
|
13
13
|
"ENTER_LOOP_MODE": "Reprodueix en bucle el vídeo actual",
|
|
14
|
-
"ENTER_PICTURE_IN_PICTURE": "Entra
|
|
14
|
+
"ENTER_PICTURE_IN_PICTURE": "Entra a imatge sobre imatge",
|
|
15
15
|
"EXIT_FULL_SCREEN": "Surt del mode de pantalla completa",
|
|
16
16
|
"EXIT_LOOP_MODE": "Deixa de reproduir en bucle el vídeo actual",
|
|
17
|
-
"EXIT_PICTURE_IN_PICTURE": "Surt
|
|
17
|
+
"EXIT_PICTURE_IN_PICTURE": "Surt d'imatge sobre imatge",
|
|
18
18
|
"FAST_FORWARD": "Avança ràpidament",
|
|
19
19
|
"FULL_SCREEN": "Pantalla completa",
|
|
20
20
|
"LANGUAGE": "Idioma",
|
|
@@ -26,8 +26,8 @@
|
|
|
26
26
|
"NOT_APPLICABLE": "No aplicable",
|
|
27
27
|
"OFF": "Desactivat",
|
|
28
28
|
"ON": "Activat",
|
|
29
|
-
"PAUSE": "
|
|
30
|
-
"PICTURE_IN_PICTURE": "
|
|
29
|
+
"PAUSE": "Posa en pausa",
|
|
30
|
+
"PICTURE_IN_PICTURE": "Imatge sobre imatge",
|
|
31
31
|
"PLAY": "Reprodueix",
|
|
32
32
|
"PLAYBACK_RATE": "Velocitat de reproducció",
|
|
33
33
|
"QUALITY": "Qualitat",
|
|
@@ -46,4 +46,4 @@
|
|
|
46
46
|
"UNMUTE": "Deixa de silenciar",
|
|
47
47
|
"UNRECOGNIZED_LANGUAGE": "No reconegut",
|
|
48
48
|
"VOLUME": "Volum"
|
|
49
|
-
}
|
|
49
|
+
}
|
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
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
"PLAY": "Reproducir",
|
|
32
32
|
"PLAYBACK_RATE": "Velocidad de reproducción",
|
|
33
33
|
"QUALITY": "Calidad",
|
|
34
|
-
"RECENTER_VR": "
|
|
34
|
+
"RECENTER_VR": "Volver a centrar",
|
|
35
35
|
"REPLAY": "Volver a reproducir",
|
|
36
36
|
"RESOLUTION": "Resolución",
|
|
37
37
|
"REWIND": "Retroceder",
|
|
@@ -40,10 +40,10 @@
|
|
|
40
40
|
"SKIP_TO_LIVE": "Adelantar hasta la transmisión en vivo",
|
|
41
41
|
"STATISTICS": "Estadísticas",
|
|
42
42
|
"SUBTITLE_FORCED": "Forzado",
|
|
43
|
-
"SURROUND": "
|
|
44
|
-
"TOGGLE_STEREOSCOPIC": "
|
|
43
|
+
"SURROUND": "Sonido envolvente",
|
|
44
|
+
"TOGGLE_STEREOSCOPIC": "Activar o desactivar el modo estereoscópico",
|
|
45
45
|
"UNDETERMINED_LANGUAGE": "Sin especificar",
|
|
46
46
|
"UNMUTE": "Dejar de silenciar",
|
|
47
47
|
"UNRECOGNIZED_LANGUAGE": "No reconocida",
|
|
48
48
|
"VOLUME": "Volumen"
|
|
49
|
-
}
|
|
49
|
+
}
|
package/ui/locales/es.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"AD_DURATION": "Duración del anuncio",
|
|
3
3
|
"AD_PROGRESS": "Anuncio [AD_ON] de [NUM_ADS]",
|
|
4
|
-
"AD_STATISTICS": "Estadísticas
|
|
4
|
+
"AD_STATISTICS": "Estadísticas del anuncio",
|
|
5
5
|
"AD_TIME": "Anuncio: [AD_TIME]",
|
|
6
6
|
"AIRPLAY": "AirPlay",
|
|
7
7
|
"AUTO_QUALITY": "Automático",
|
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
"PLAY": "Reproducir",
|
|
32
32
|
"PLAYBACK_RATE": "Velocidad de reproducción",
|
|
33
33
|
"QUALITY": "Calidad",
|
|
34
|
-
"RECENTER_VR": "
|
|
34
|
+
"RECENTER_VR": "Volver a centrar",
|
|
35
35
|
"REPLAY": "Volver a reproducir",
|
|
36
36
|
"RESOLUTION": "Resolución",
|
|
37
37
|
"REWIND": "Rebobinar",
|
|
@@ -41,9 +41,9 @@
|
|
|
41
41
|
"STATISTICS": "Estadísticas",
|
|
42
42
|
"SUBTITLE_FORCED": "Forzado",
|
|
43
43
|
"SURROUND": "Envolvente",
|
|
44
|
-
"TOGGLE_STEREOSCOPIC": "
|
|
44
|
+
"TOGGLE_STEREOSCOPIC": "Activar/Desactivar estereoscópica",
|
|
45
45
|
"UNDETERMINED_LANGUAGE": "Sin especificar",
|
|
46
46
|
"UNMUTE": "Activar sonido",
|
|
47
47
|
"UNRECOGNIZED_LANGUAGE": "No reconocida",
|
|
48
48
|
"VOLUME": "Volumen"
|
|
49
|
-
}
|
|
49
|
+
}
|
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,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"AD_DURATION": "Durée de l'annonce",
|
|
3
3
|
"AD_PROGRESS": "Annonce [AD_ON] sur [NUM_ADS]",
|
|
4
|
-
"AD_STATISTICS": "Statistiques
|
|
4
|
+
"AD_STATISTICS": "Statistiques sur les annonces",
|
|
5
5
|
"AD_TIME": "Annonce : [AD_TIME]",
|
|
6
6
|
"AIRPLAY": "AirPlay",
|
|
7
7
|
"AUTO_QUALITY": "Automatique",
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
"CAPTIONS": "Sous-titres",
|
|
10
10
|
"CAST": "Caster…",
|
|
11
11
|
"CHAPTERS": "Chapitres",
|
|
12
|
-
"DOWNLOAD_VIDEO_FRAME": "
|
|
12
|
+
"DOWNLOAD_VIDEO_FRAME": "Télécharger l'image de la vidéo",
|
|
13
13
|
"ENTER_LOOP_MODE": "Lire en boucle la vidéo en cours",
|
|
14
14
|
"ENTER_PICTURE_IN_PICTURE": "Utiliser le mode Picture-in-Picture",
|
|
15
15
|
"EXIT_FULL_SCREEN": "Quitter le mode plein écran",
|
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
"PLAYBACK_RATE": "Vitesse de lecture",
|
|
33
33
|
"QUALITY": "Qualité",
|
|
34
34
|
"RECENTER_VR": "Recentrer",
|
|
35
|
-
"REPLAY": "
|
|
35
|
+
"REPLAY": "Revoir",
|
|
36
36
|
"RESOLUTION": "Résolution",
|
|
37
37
|
"REWIND": "Retour arrière",
|
|
38
38
|
"SEEK": "Chercher",
|
|
@@ -41,9 +41,9 @@
|
|
|
41
41
|
"STATISTICS": "Statistiques",
|
|
42
42
|
"SUBTITLE_FORCED": "Forcé",
|
|
43
43
|
"SURROUND": "Surround",
|
|
44
|
-
"TOGGLE_STEREOSCOPIC": "
|
|
44
|
+
"TOGGLE_STEREOSCOPIC": "Activer/Désactiver le mode stéréoscopique",
|
|
45
45
|
"UNDETERMINED_LANGUAGE": "Langue indéterminée",
|
|
46
46
|
"UNMUTE": "Réactiver le son",
|
|
47
47
|
"UNRECOGNIZED_LANGUAGE": "Non reconnu",
|
|
48
48
|
"VOLUME": "Volume"
|
|
49
|
-
}
|
|
49
|
+
}
|
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
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
"CAPTIONS": "Napisy",
|
|
10
10
|
"CAST": "Przesyłaj...",
|
|
11
11
|
"CHAPTERS": "Rozdziały",
|
|
12
|
-
"DOWNLOAD_VIDEO_FRAME": "Zapisz klatkę
|
|
12
|
+
"DOWNLOAD_VIDEO_FRAME": "Zapisz klatkę filmu",
|
|
13
13
|
"ENTER_LOOP_MODE": "Odtwarzaj bieżący film w pętli",
|
|
14
14
|
"ENTER_PICTURE_IN_PICTURE": "Włącz tryb obrazu w obrazie",
|
|
15
15
|
"EXIT_FULL_SCREEN": "Zamknij pełny ekran",
|
|
@@ -31,8 +31,8 @@
|
|
|
31
31
|
"PLAY": "Odtwórz",
|
|
32
32
|
"PLAYBACK_RATE": "Szybkość odtwarzania",
|
|
33
33
|
"QUALITY": "Jakość",
|
|
34
|
-
"RECENTER_VR": "
|
|
35
|
-
"REPLAY": "Odtwórz
|
|
34
|
+
"RECENTER_VR": "Wyśrodkuj",
|
|
35
|
+
"REPLAY": "Odtwórz ponownie",
|
|
36
36
|
"RESOLUTION": "Rozdzielczość",
|
|
37
37
|
"REWIND": "Przewiń do tyłu",
|
|
38
38
|
"SEEK": "Szukaj",
|
|
@@ -41,9 +41,9 @@
|
|
|
41
41
|
"STATISTICS": "Statystyki",
|
|
42
42
|
"SUBTITLE_FORCED": "Wymuszone",
|
|
43
43
|
"SURROUND": "Przestrzenny",
|
|
44
|
-
"TOGGLE_STEREOSCOPIC": "Przełącz
|
|
44
|
+
"TOGGLE_STEREOSCOPIC": "Przełącz tryb stereoskopowy",
|
|
45
45
|
"UNDETERMINED_LANGUAGE": "Nie określono",
|
|
46
46
|
"UNMUTE": "Wyłącz wyciszenie",
|
|
47
47
|
"UNRECOGNIZED_LANGUAGE": "Nierozpoznany",
|
|
48
48
|
"VOLUME": "Głośność"
|
|
49
|
-
}
|
|
49
|
+
}
|