mirror of
https://github.com/jellyfin/jellyfin-web
synced 2025-03-30 19:56:21 +00:00
save additional info to recording nfo's
This commit is contained in:
parent
70994b54a6
commit
44513d8744
42 changed files with 7006 additions and 774 deletions
|
@ -14,12 +14,12 @@
|
|||
},
|
||||
"devDependencies": {},
|
||||
"ignore": [],
|
||||
"version": "1.4.342",
|
||||
"_release": "1.4.342",
|
||||
"version": "1.4.348",
|
||||
"_release": "1.4.348",
|
||||
"_resolution": {
|
||||
"type": "version",
|
||||
"tag": "1.4.342",
|
||||
"commit": "3d2f6e49f078abb2d5d258a904c691ef1847c1ad"
|
||||
"tag": "1.4.348",
|
||||
"commit": "d2faa01cf34ba1e52308619e3b703c2b13361b08"
|
||||
},
|
||||
"_source": "https://github.com/MediaBrowser/emby-webcomponents.git",
|
||||
"_target": "^1.2.1",
|
||||
|
|
|
@ -140,7 +140,7 @@
|
|||
var html = '';
|
||||
|
||||
var scrollType = layoutManager.desktop ? 'smoothScrollY' : 'hiddenScrollY';
|
||||
var style = (browser.noFlex || browser.firefox) ? 'max-height:400px;' : '';
|
||||
var style = (browser.firefox) ? 'max-height:400px;' : '';
|
||||
|
||||
// Admittedly a hack but right now the scrollbar is being factored into the width which is causing truncation
|
||||
if (options.items.length > 20) {
|
||||
|
@ -193,7 +193,7 @@
|
|||
|
||||
html += '<div class="actionSheetScroller ' + scrollType + '" style="' + style + '">';
|
||||
|
||||
var menuItemClass = browser.noFlex || browser.firefox ? 'actionSheetMenuItem actionSheetMenuItem-noflex' : 'actionSheetMenuItem';
|
||||
var menuItemClass = browser.firefox ? 'actionSheetMenuItem actionSheetMenuItem-noflex' : 'actionSheetMenuItem';
|
||||
|
||||
if (options.menuItemClass) {
|
||||
menuItemClass += ' ' + options.menuItemClass;
|
||||
|
|
|
@ -1,24 +0,0 @@
|
|||
@keyframes slideupfadeshow {
|
||||
from {
|
||||
opacity: 0;
|
||||
transform: translate3d(0, 100%, 0);
|
||||
}
|
||||
|
||||
to {
|
||||
opacity: 1;
|
||||
transform: none;
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes slidedownfadehide {
|
||||
|
||||
from {
|
||||
opacity: 1;
|
||||
transform: none;
|
||||
}
|
||||
|
||||
to {
|
||||
opacity: 0;
|
||||
transform: translate3d(0, 100%, 0);
|
||||
}
|
||||
}
|
|
@ -2,7 +2,7 @@
|
|||
position: relative;
|
||||
z-index: 1;
|
||||
vertical-align: middle;
|
||||
display: inline-block;
|
||||
display: inline-flex;
|
||||
box-sizing: border-box;
|
||||
width: 100%;
|
||||
margin: 0;
|
||||
|
@ -18,18 +18,7 @@
|
|||
|
||||
.checkboxContainer {
|
||||
margin-bottom: 1.8em;
|
||||
display: block;
|
||||
}
|
||||
|
||||
@supports (display: flex) {
|
||||
|
||||
.mdl-checkbox {
|
||||
display: inline-flex;
|
||||
}
|
||||
|
||||
.checkboxContainer {
|
||||
display: flex;
|
||||
}
|
||||
}
|
||||
|
||||
.checkboxContainer-withDescription {
|
||||
|
|
|
@ -51,7 +51,8 @@
|
|||
bottom: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
display: block;
|
||||
display: flex;
|
||||
position: absolute;
|
||||
padding: 1.25em 1em;
|
||||
/* Without this emby-checkbox is able to appear on top */
|
||||
z-index: 1;
|
||||
|
@ -60,14 +61,6 @@
|
|||
flex-wrap: wrap;
|
||||
}
|
||||
|
||||
@supports (display: flex) {
|
||||
|
||||
.formDialogFooter {
|
||||
display: flex;
|
||||
position: absolute;
|
||||
}
|
||||
}
|
||||
|
||||
.formDialogFooter-flex {
|
||||
position: static;
|
||||
}
|
||||
|
|
|
@ -12,6 +12,12 @@
|
|||
padding-left: 3.4em;
|
||||
}
|
||||
|
||||
.guideContent {
|
||||
display: flex;
|
||||
flex-grow: 1;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.tvProgramSectionHeader {
|
||||
margin: 0;
|
||||
}
|
||||
|
@ -49,6 +55,7 @@
|
|||
position: relative;
|
||||
display: flex;
|
||||
align-items: flex-start;
|
||||
flex-grow: 1;
|
||||
}
|
||||
|
||||
.channelPrograms {
|
||||
|
@ -469,3 +476,10 @@
|
|||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
.guideRequiresUnlock {
|
||||
margin: 1em auto;
|
||||
text-align: center;
|
||||
padding: 1em;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
|
|
@ -14,12 +14,12 @@
|
|||
<div class="timeslotHeaders smoothScrollX guideScroller" style="scroll-behavior: auto;"></div>
|
||||
</div>
|
||||
|
||||
<div style="display: flex;flex-grow:1;overflow:hidden;">
|
||||
<div class="guideContent">
|
||||
|
||||
<button is="emby-button" type="button" class="btnCategories">
|
||||
<div class="btnCategoriesText">${Categories}</div>
|
||||
</button>
|
||||
<div class="smoothScrollY guideVerticalScroller programContainer guideScroller" style="flex-grow: 1;">
|
||||
<div class="smoothScrollY guideVerticalScroller programContainer guideScroller">
|
||||
|
||||
<div class="channelsContainer">
|
||||
<div class="channelList"></div>
|
||||
|
@ -30,7 +30,7 @@
|
|||
</div>
|
||||
</div>
|
||||
|
||||
<div class="guideRequiresUnlock readOnlyContent hide" style="margin: 1em auto; text-align: center; padding: 1em; flex-shrink: 0;">
|
||||
<div class="guideRequiresUnlock hide">
|
||||
<p class="unlockText"></p>
|
||||
<button is="emby-button" type="button" class="raised button-submit block btnUnlockGuide">
|
||||
<span>${UnlockGuide}</span>
|
||||
|
|
16
dashboard-ui/bower_components/emby-webcomponents/imageeditor/imageeditor.css
vendored
Normal file
16
dashboard-ui/bower_components/emby-webcomponents/imageeditor/imageeditor.css
vendored
Normal file
|
@ -0,0 +1,16 @@
|
|||
.imageEditor-buttons {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
margin: 1em 0 1em;
|
||||
}
|
||||
|
||||
.first-imageEditor-buttons {
|
||||
margin-top: 2em;
|
||||
}
|
||||
|
||||
@media all and (min-width: 1200px) {
|
||||
|
||||
.imageEditorCard {
|
||||
width: 20%;
|
||||
}
|
||||
}
|
|
@ -1,4 +1,4 @@
|
|||
define(['dialogHelper', 'connectionManager', 'loading', 'dom', 'layoutManager', 'focusManager', 'globalize', 'scrollHelper', 'imageLoader', 'require', 'cardStyle', 'formDialogStyle', 'emby-button', 'paper-icon-button-light'], function (dialogHelper, connectionManager, loading, dom, layoutManager, focusManager, globalize, scrollHelper, imageLoader, require) {
|
||||
define(['dialogHelper', 'connectionManager', 'loading', 'dom', 'layoutManager', 'focusManager', 'globalize', 'scrollHelper', 'imageLoader', 'require', 'cardStyle', 'formDialogStyle', 'emby-button', 'paper-icon-button-light', 'css!./imageeditor'], function (dialogHelper, connectionManager, loading, dom, layoutManager, focusManager, globalize, scrollHelper, imageLoader, require) {
|
||||
'use strict';
|
||||
|
||||
var currentItem;
|
||||
|
|
|
@ -1,14 +1,4 @@
|
|||
<style>
|
||||
@media all and (min-width: 1200px) {
|
||||
|
||||
.imageEditorCard {
|
||||
width: 20%;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
||||
|
||||
<div class="formDialogHeader">
|
||||
<div class="formDialogHeader">
|
||||
<button is="paper-icon-button-light" class="btnCancel autoSize" tabindex="-1"><i class="md-icon"></i></button>
|
||||
<h3 class="formDialogHeaderTitle">
|
||||
${HeaderEditImages}
|
||||
|
@ -19,7 +9,7 @@
|
|||
<div class="dialogContentInner">
|
||||
|
||||
<div id="imagesContainer">
|
||||
<div style="display: flex; align-items: center;margin:2em 0 1em;">
|
||||
<div class="imageEditor-buttons first-imageEditor-buttons">
|
||||
<h1 style="margin:0;">${Images}</h1>
|
||||
<button type="button" is="emby-button" class="btnBrowseAllImages fab mini autoSize" style="margin-left: 1em;">
|
||||
<i class="md-icon">search</i>
|
||||
|
@ -34,7 +24,7 @@
|
|||
</div>
|
||||
|
||||
<div id="backdropsContainer" class="hide">
|
||||
<div style="display: flex; align-items: center;margin:1em 0 1em;">
|
||||
<div class="imageEditor-buttons">
|
||||
<h1 style="margin:0;">${Backdrops}</h1>
|
||||
<button type="button" is="emby-button" class="btnBrowseAllImages fab mini autoSize" style="margin-left: 1em;" data-imagetype="Backdrop">
|
||||
<i class="md-icon">search</i>
|
||||
|
@ -49,7 +39,7 @@
|
|||
</div>
|
||||
|
||||
<div id="screenshotsContainer" class="hide">
|
||||
<div style="display: flex; align-items: center; margin: 1em 0 1em;">
|
||||
<div class="imageEditor-buttons">
|
||||
<h1 style="margin: 0;">${Screenshots}</h1>
|
||||
<button type="button" is="emby-button" class="btnBrowseAllImages fab mini autoSize" style="margin-left: 1em;" data-imagetype="Screenshot">
|
||||
<i class="md-icon">search</i>
|
||||
|
|
|
@ -166,12 +166,9 @@
|
|||
align-items: center;
|
||||
}
|
||||
|
||||
@supports (display: flex) {
|
||||
|
||||
.listItem, .listItemBody, .listItemMediaInfo {
|
||||
.listItem, .listItemBody, .listItemMediaInfo {
|
||||
display: flex;
|
||||
contain: layout style;
|
||||
}
|
||||
}
|
||||
|
||||
@media all and (max-width: 800px) {
|
||||
|
|
|
@ -20,3 +20,17 @@
|
|||
.recordingDialog-btnRecord {
|
||||
background-color: #cc3333;
|
||||
}
|
||||
|
||||
.recordingDetailsContainer {
|
||||
display: flex;
|
||||
}
|
||||
|
||||
.recordingDetails {
|
||||
flex-grow: 1;
|
||||
}
|
||||
|
||||
.recordingDetailText {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
|
|
|
@ -5,14 +5,14 @@
|
|||
<div class="formDialogContent smoothScrollY">
|
||||
<form class="dialogContentInner dialog-content-centered">
|
||||
|
||||
<div style="display: flex;">
|
||||
<div class="recordingDetailsContainer">
|
||||
<div class="recordingDialog-imageContainer">
|
||||
|
||||
</div>
|
||||
<div style="flex-grow: 1;">
|
||||
<div class="recordingDetails">
|
||||
<h1 class="programDialog-itemName recordingDialog-itemName dialogContentTitle"></h1>
|
||||
<p class="itemMiscInfoPrimary" style="display: flex; align-items: center; flex-wrap: wrap;"></p>
|
||||
<p class="itemMiscInfoSecondary secondaryText" style="display: flex; align-items: center; flex-wrap: wrap;"></p>
|
||||
<p class="itemMiscInfoPrimary recordingDetailText"></p>
|
||||
<p class="itemMiscInfoSecondary recordingDetailText secondaryText"></p>
|
||||
<p class="itemGenres secondaryText"></p>
|
||||
|
||||
<div style="margin:.5em 0 1em;" class="recordingFields">
|
||||
|
|
49
dashboard-ui/bower_components/emby-webcomponents/recordingcreator/recordingfields.css
vendored
Normal file
49
dashboard-ui/bower_components/emby-webcomponents/recordingcreator/recordingfields.css
vendored
Normal file
|
@ -0,0 +1,49 @@
|
|||
.visibilityHide {
|
||||
visibility: hidden;
|
||||
}
|
||||
|
||||
.recordingButton {
|
||||
margin-left: 0;
|
||||
min-width: 10em;
|
||||
font-size: 92%;
|
||||
}
|
||||
|
||||
.recordingIcon {
|
||||
font-size: 1.3em !important;
|
||||
}
|
||||
|
||||
.recordingIcon-active {
|
||||
color: #cc3333;
|
||||
}
|
||||
|
||||
.manageButtonText {
|
||||
text-transform: none;
|
||||
}
|
||||
|
||||
.recordSeriesContainer {
|
||||
margin-bottom: .8em;
|
||||
}
|
||||
|
||||
.recordingFields-buttons {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
@media all and (max-width: 440px) {
|
||||
|
||||
.manageButtonText {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
.recordingButton {
|
||||
width: auto;
|
||||
margin-right: 1.5em !important;
|
||||
}
|
||||
}
|
||||
|
||||
@media all and (min-width: 440px) {
|
||||
|
||||
.manageButtonIcon {
|
||||
font-size: 90% !important;
|
||||
}
|
||||
}
|
|
@ -1,4 +1,4 @@
|
|||
define(['globalize', 'connectionManager', 'require', 'loading', 'apphost', 'dom', 'recordingHelper', 'events', 'registrationServices', 'paper-icon-button-light', 'emby-button'], function (globalize, connectionManager, require, loading, appHost, dom, recordingHelper, events, registrationServices) {
|
||||
define(['globalize', 'connectionManager', 'require', 'loading', 'apphost', 'dom', 'recordingHelper', 'events', 'registrationServices', 'paper-icon-button-light', 'emby-button', 'css!./recordingfields'], function (globalize, connectionManager, require, loading, appHost, dom, recordingHelper, events, registrationServices) {
|
||||
'use strict';
|
||||
|
||||
function getRegistration(apiClient, programId, feature) {
|
||||
|
|
|
@ -1,47 +1,4 @@
|
|||
<style>
|
||||
.visibilityHide {
|
||||
visibility: hidden;
|
||||
}
|
||||
|
||||
.recordingButton {
|
||||
margin-left: 0;
|
||||
min-width: 10em;
|
||||
font-size: 92%;
|
||||
}
|
||||
|
||||
.recordingIcon {
|
||||
font-size: 1.3em !important;
|
||||
}
|
||||
|
||||
.recordingIcon-active {
|
||||
color: #cc3333;
|
||||
}
|
||||
|
||||
.manageButtonText {
|
||||
text-transform: none;
|
||||
}
|
||||
|
||||
@media all and (max-width: 440px) {
|
||||
|
||||
.manageButtonText {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
.recordingButton {
|
||||
width: auto;
|
||||
margin-right: 1.5em !important;
|
||||
}
|
||||
}
|
||||
|
||||
@media all and (min-width: 440px) {
|
||||
|
||||
.manageButtonIcon {
|
||||
font-size: 90% !important;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
||||
<div class="convertRecordingsContainer hide" style="padding: 1.25em 1.5em; background: #242424; border-radius: 3px; margin: 1em 0 2em;">
|
||||
<div class="convertRecordingsContainer hide" style="padding: 1.25em 1.5em; background: #242424; border-radius: 3px; margin: 1em 0 2em;">
|
||||
<h1 style="margin: .25em 0 .5em;">${HeaderConvertYourRecordings}</h1>
|
||||
<div class="fieldDescription">${PromoConvertRecordingsToStreamingFormat}</div>
|
||||
<br />
|
||||
|
@ -58,7 +15,7 @@
|
|||
</div>
|
||||
<div class="recordingFields hide">
|
||||
|
||||
<div class="recordSeriesContainer hide" style="display: flex; align-items: center;margin-bottom:.8em;">
|
||||
<div class="recordSeriesContainer recordingFields-buttons hide">
|
||||
<div>
|
||||
<button is="emby-button" type="button" class="raised button-cancel recordingButton seriesRecordingButton">
|
||||
<i class="md-icon recordingIcon"></i>
|
||||
|
@ -71,7 +28,7 @@
|
|||
</button>
|
||||
</div>
|
||||
|
||||
<div style="display: flex; align-items: center;">
|
||||
<div class="recordingFields-buttons">
|
||||
<div>
|
||||
<button is="emby-button" type="button" class="raised button-cancel recordingButton singleRecordingButton">
|
||||
<i class="md-icon recordingIcon"></i>
|
||||
|
|
|
@ -1,3 +1,6 @@
|
|||
.originalSubtitleFileLabel {
|
||||
margin-right: 1em;
|
||||
}
|
||||
.btnSearchSubtitles {
|
||||
flex-shrink: 0;
|
||||
}
|
|
@ -15,7 +15,7 @@
|
|||
<div class="selectContainer" style="flex-grow: 1; margin-bottom: 0;">
|
||||
<select is="emby-select" id="selectLanguage" required="required" label="${LabelLanguage}"></select>
|
||||
</div>
|
||||
<button type="submit" is="paper-icon-button-light" title="${Search}" class="btnSearchSubtitles" style="flex-shrink: 0;"><i class="md-icon">search</i></button>
|
||||
<button type="submit" is="paper-icon-button-light" title="${Search}" class="btnSearchSubtitles"><i class="md-icon">search</i></button>
|
||||
</div>
|
||||
<button is="emby-button" type="submit" class="raised btnSubmit block button-submit">${Search}</button>
|
||||
</form>
|
||||
|
|
15
dashboard-ui/bower_components/hlsjs/.bower.json
vendored
15
dashboard-ui/bower_components/hlsjs/.bower.json
vendored
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "hls.js",
|
||||
"version": "0.5.52",
|
||||
"version": "0.6.11",
|
||||
"license": "Apache-2.0",
|
||||
"description": "Media Source Extension - HLS library, by/for Dailymotion",
|
||||
"homepage": "https://github.com/dailymotion/hls.js",
|
||||
|
@ -16,13 +16,14 @@
|
|||
"test",
|
||||
"tests"
|
||||
],
|
||||
"_release": "0.5.52",
|
||||
"_release": "0.6.11",
|
||||
"_resolution": {
|
||||
"type": "version",
|
||||
"tag": "v0.5.52",
|
||||
"commit": "2afcbb2bfb0d4a285537adaa60e413df0773e4b2"
|
||||
"tag": "v0.6.11",
|
||||
"commit": "7c55e06093ee8f9a9ab29aee94c3f4bef65fd77d"
|
||||
},
|
||||
"_source": "git://github.com/dailymotion/hls.js.git",
|
||||
"_target": "~0.5.7",
|
||||
"_originalSource": "dailymotion/hls.js"
|
||||
"_source": "https://github.com/dailymotion/hls.js.git",
|
||||
"_target": "^0.6.11",
|
||||
"_originalSource": "hls.js",
|
||||
"_direct": true
|
||||
}
|
910
dashboard-ui/bower_components/hlsjs/API.md
vendored
910
dashboard-ui/bower_components/hlsjs/API.md
vendored
File diff suppressed because it is too large
Load diff
32
dashboard-ui/bower_components/hlsjs/CONTRIBUTING.md
vendored
Normal file
32
dashboard-ui/bower_components/hlsjs/CONTRIBUTING.md
vendored
Normal file
|
@ -0,0 +1,32 @@
|
|||
# Contributing to hls.js
|
||||
|
||||
:+1::tada: First off, thanks for taking the time to contribute! :tada::+1:
|
||||
|
||||
#### **Did you find a bug?**
|
||||
|
||||
* **Ensure the bug was not already reported** by searching on GitHub under [Issues](https://github.com/dailymotion/hls.js/issues).
|
||||
|
||||
* If you're unable to find an open issue addressing the problem, [open a new one](https://github.com/dailymotion/hls.js/issues/new). Be sure to include a **title and clear description**, as much relevant information as possible, and a **code sample** or an **executable test case** demonstrating the expected behavior that is not occurring.
|
||||
|
||||
#### **Did you write a patch that fixes a bug?**
|
||||
|
||||
- First, checkout the repository and install required dependencies
|
||||
|
||||
```sh
|
||||
git clone https://github.com/dailymotion/hls.js.git
|
||||
# setup dev environement
|
||||
cd hls.js
|
||||
npm install
|
||||
# build dist/hls.js, watch file change for rebuild and launch demo page
|
||||
npm run dev
|
||||
# lint
|
||||
npm run lint
|
||||
# test
|
||||
npm run test
|
||||
```
|
||||
|
||||
- Use [EditorConfig](http://editorconfig.org/) or at least stay consistent to the file formats defined in the `.editorconfig` file.
|
||||
- Develop in a topic branch, not master
|
||||
- Don't commit the updated `dist/hls.js` file in your PR. We'll take care of generating an updated build right before releasing a new tagged version.
|
||||
|
||||
Thanks! :heart: :heart: :heart:
|
31
dashboard-ui/bower_components/hlsjs/ISSUE_TEMPLATE.md
vendored
Normal file
31
dashboard-ui/bower_components/hlsjs/ISSUE_TEMPLATE.md
vendored
Normal file
|
@ -0,0 +1,31 @@
|
|||
<!-- If you are raising a bug playing a stream, you must fill out the following or your issue may not be responded to. For features or improvements, you may delete this. -->
|
||||
##### Environment
|
||||
<!-- Replace [ ] with [x] to check off the list -->
|
||||
- [ ] The stream has correct Access-Control-Allow-Origin headers (CORS)
|
||||
- [ ] There are no network errors such as 404s in the browser console when trying to play the stream
|
||||
- [ ] The issue observed is not already reported by searching on Github under https://github.com/dailymotion/hls.js/issues
|
||||
- [ ] The issue occurs in the latest reference client on http://dailymotion.github.io/hls.js/demo and not just on my page
|
||||
* Link to playable M3U8 file:
|
||||
* Hls.js version:
|
||||
* Browser name/version:
|
||||
* OS name/version:
|
||||
|
||||
##### Steps to reproduce
|
||||
1. Please provide clear steps to reproduce your problem
|
||||
2. Whenever possible, share a demo/example page which reproduces the problem you are having with the least amount of code possible.
|
||||
2. If the bug is intermittent, give a rough frequency if possible
|
||||
|
||||
##### Expected behavior
|
||||
What you expected to happen
|
||||
|
||||
##### Actual behavior
|
||||
What actually happened
|
||||
|
||||
##### Console output
|
||||
```
|
||||
Paste the contents of the browser console here.
|
||||
```
|
||||
|
||||
```
|
||||
For media errors reported on Chrome browser, please also paste the output of chrome://media-internals
|
||||
```
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "hls.js",
|
||||
"version": "0.5.52",
|
||||
"version": "0.6.11",
|
||||
"license": "Apache-2.0",
|
||||
"description": "Media Source Extension - HLS library, by/for Dailymotion",
|
||||
"homepage": "https://github.com/dailymotion/hls.js",
|
||||
|
|
140
dashboard-ui/bower_components/hlsjs/design.md
vendored
140
dashboard-ui/bower_components/hlsjs/design.md
vendored
|
@ -3,24 +3,73 @@
|
|||
design idea is pretty simple :
|
||||
|
||||
- main functionalities are splitted into several subsystems
|
||||
- all subsytems are instantiated by Hls instance.
|
||||
- each subsystem heavily relies on events for internal/external communications.
|
||||
- Events are handled using [browserified](http://browserify.org/) [EventEmitter](https://nodejs.org/api/events.html)
|
||||
|
||||
##code structure
|
||||
|
||||
- [src/hls.js][]
|
||||
- definition of Hls Class. instantiate all subcomponents.
|
||||
- [src/events.js][]
|
||||
- definition of Hls.Events
|
||||
- [src/errors.js][]
|
||||
- definition of Hls.ErrorTypes and Hls.ErrorDetails
|
||||
- [src/event-handler.js][]
|
||||
- helper class simplifying Hls event handling, event error catching
|
||||
- [src/events.js][]
|
||||
- definition of Hls.Events
|
||||
- [src/hls.js][]
|
||||
- definition of Hls Class. instantiate all subcomponents.
|
||||
- [src/index.js][]
|
||||
- needed for ES6 export
|
||||
- [src/controller/abr-controller.js][]
|
||||
- in charge of determining auto quality level.
|
||||
- auto quality switch algorithm is bitrate based : fragment loading bitrate is monitored and smoothed using 2 exponential weighted moving average (a fast one, to adapt quickly on bandwidth drop and a slow one, to avoid ramping up too quickly on bandwidth increase)
|
||||
- in charge of **monitoring fragment loading speed** (by monitoring data received from FRAG_LOAD_PROGRESS event)
|
||||
- "expected time of fragment load completion" is computed using "fragment loading instant bandwidth".
|
||||
- this time is compared to the "expected time of buffer starvation".
|
||||
- if we have less than 2 fragments buffered and if "expected time of fragment load completion" is bigger than "expected time of buffer starvation" and also bigger than duration needed to load fragment at next quality level (determined by auto quality switch algorithm), current fragment loading is aborted, stream-controller will **trigger an emergency switch down**.
|
||||
- [src/controller/audio-stream-controller.js][]
|
||||
- audio stream controller is in charge of filling audio buffer in case alternate audio tracks are used
|
||||
- if buffer is not filled up appropriately (i.e. as per defined maximum buffer size, it will trigger the following actions:
|
||||
- retrieve "not buffered" media position greater then current playback position. this is performed by comparing audio sourcebuffer.buffered and media.currentTime.
|
||||
- retrieve URL of fragment matching with this media position, and appropriate audio track
|
||||
- trigger KEY_LOADING event (only if fragment is encrypted)
|
||||
- trigger FRAG_LOADING event
|
||||
- **trigger fragment demuxing** on FRAG_LOADED
|
||||
- trigger BUFFER_CODECS on FRAG_PARSING_INIT_SEGMENT
|
||||
- trigger BUFFER_APPENDING on FRAG_PARSING_DATA
|
||||
- once FRAG_PARSED is received an all segments have been appended (BUFFER_APPENDED) then audio stream controller will recheck whether it needs to buffer more data.
|
||||
- [src/controller/audio-track-controller.js][]
|
||||
- audio track controller is handling alternate audio track set/get ((re)loading tracks/switching)
|
||||
- [src/controller/buffer-controller.js][]
|
||||
- in charge of:
|
||||
- resetting media buffer upon BUFFER_RESET event reception
|
||||
- initializing [SourceBuffer](http://www.w3.org/TR/media-source/#sourcebuffer) with appropriate codecs info upon BUFFER_CODECS event reception
|
||||
- appending MP4 boxes in [SourceBuffer](http://www.w3.org/TR/media-source/#sourcebuffer) upon BUFFER_APPENDING
|
||||
- trigger BUFFER_APPENDED event upon successful buffer appending
|
||||
- flushing specified buffer range upon reception of BUFFER_FLUSHING event
|
||||
- trigger BUFFER_FLUSHED event upon successful buffer flushing
|
||||
- [src/controller/cap-level-controller.js][]
|
||||
- in charge of determining best quality level to actual size (dimensions: width and height) of the player
|
||||
- [src/controller/ewma-bandwidth-estimator.js][]
|
||||
- Exponential Weighted Moving Average bandwidth estimator, heavily inspired from shaka-player
|
||||
- Tracks bandwidth samples and estimates available bandwidth, based on the minimum of two exponentially-weighted moving averages with different half-lives.
|
||||
- one fast average with a short half-life: useful to quickly react to bandwidth drop and switch rendition down quickly
|
||||
- one slow average with a long half-life: useful to slowly react to bandwidth increase and avoid switching up rendition to quickly
|
||||
- bandwidth estimate is Math.min(fast average,slow average)
|
||||
- average half-life are configurable , refer to abrEwma* config params
|
||||
- [src/controller/fps-controller.js][]
|
||||
- in charge of monitoring frame rate, and fire FPS_DROP event in case FPS drop exceeds configured threshold. disabled for now.
|
||||
- [src/controller/level-controller.js][]
|
||||
- level controller is handling quality level set/get ((re)loading stream manifest/switching levels)
|
||||
- in charge of scheduling playlist (re)loading and monitoring of fragment loading bitrate
|
||||
- a timer is armed to periodically refresh active live playlist.
|
||||
- [src/controller/stream-controller.js][]
|
||||
- stream controller actions are scheduled by a tick timer (invoked every 100ms) and actions are controlled by a state machine.
|
||||
- stream controller is in charge of:
|
||||
- **ensuring that buffer is filled as per defined quality selection logic**.
|
||||
- if buffer is not filled up appropriately (i.e. as per defined maximum buffer size, or as per defined quality level), buffer controller will trigger the following actions:
|
||||
- **ensuring that media buffer is filled as per defined quality selection logic**.
|
||||
- if buffer is not filled up appropriately (i.e. as per defined maximum buffer size, or as per defined quality level), stream controller will trigger the following actions:
|
||||
- retrieve "not buffered" media position greater then current playback position. this is performed by comparing video.buffered and video.currentTime.
|
||||
- if there are holes in video.buffered, smaller than config.maxBufferHole, they will be ignored.
|
||||
- retrieve URL of fragment matching with this media position, and appropriate quality level
|
||||
- trigger KEY_LOADING event (only if fragment is encrypted)
|
||||
- trigger FRAG_LOADING event
|
||||
- **trigger fragment demuxing** on FRAG_LOADED
|
||||
- trigger BUFFER_RESET on MANIFEST_PARSED or startLoad()
|
||||
|
@ -31,30 +80,9 @@ design idea is pretty simple :
|
|||
- **monitor playback progress** : if playhead is not moving anymore although it should (video metadata is known and video is not ended, nor paused, nor in seeking state) and if we have less than 400ms buffered upfront, and if there is a new buffer range available upfront, less than config.maxSeekHole from currentTime, then hls.js will **jump over the buffer hole** and seek to the beginning of this new buffered range, to "unstuck" the playback.
|
||||
400 ms is a "magic number" that has been set to overcome browsers not always stopping playback at the exact end of a buffered range.
|
||||
these holes in media buffered are often encountered on stream discontinuity or on quality level switch. holes could be "large" especially if fragments are not starting with a keyframe.
|
||||
- [src/controller/buffer-controller.js][]
|
||||
- in charge of:
|
||||
- resetting media buffer upon BUFFER_RESET event reception
|
||||
- initializing [SourceBuffer](http://www.w3.org/TR/media-source/#sourcebuffer) with appropriate codecs info upon BUFFER_CODECS event reception
|
||||
- appending MP4 boxes in [SourceBuffer](http://www.w3.org/TR/media-source/#sourcebuffer) upon BUFFER_APPENDING
|
||||
- trigger BUFFER_APPENDED event upon successful buffer appending
|
||||
- flushing specified buffer range upon reception of BUFFER_FLUSHING event
|
||||
- trigger BUFFER_FLUSHED event upon successful buffer flushing
|
||||
|
||||
- [src/controller/fps-controller.js][]
|
||||
- in charge of monitoring frame rate, and fire FPS_DROP event in case FPS drop exceeds configured threshold. disabled for now.
|
||||
- [src/controller/level-controller.js][]
|
||||
- in charge of scheduling playlist (re)loading and monitoring of fragment loading bitrate
|
||||
- a timer is armed to periodically refresh active live playlist.
|
||||
|
||||
- [src/controller/abr-controller.js][]
|
||||
- in charge of determining auto quality level.
|
||||
- auto quality switch algorithm is bitrate based : fragment loading bitrate is monitored and smoothed using 2 exponential weighted moving average (a fast one, to adapt quickly on bandwidth drop and a slow one, to avoid ramping up too quickly on bandwidth increase)
|
||||
- in charge of **monitoring fragment loading speed** (by monitoring data received from FRAG_LOAD_PROGRESS event)
|
||||
- "expected time of fragment load completion" is computed using "fragment loading instant bandwidth".
|
||||
- this time is compared to the "expected time of buffer starvation".
|
||||
- if we have less than 2 fragments buffered and if "expected time of fragment load completion" is bigger than "expected time of buffer starvation" and also bigger than duration needed to load fragment at next quality level (determined by auto quality switch algorithm), current fragment loading is aborted, stream-controller will **trigger an emergency switch down**.
|
||||
- [src/controller/cap-level-controller.js][]
|
||||
- in charge of determining best quality level to actual size (dimensions: width and height) of the player
|
||||
- stream controller actions are scheduled by a tick timer (invoked every 100ms) and actions are controlled by a state machine.
|
||||
- [src/controller/timeline-controller.js][]
|
||||
- Manages pulling CEA-708 caption data from the fragments, running them through the cea-608-parser, and handing them off to a display class, which defaults to src/utils/cues.js
|
||||
- [src/crypt/aes.js][]
|
||||
- AES 128 software decryption routine, low level class handling decryption of 128 bit of data.
|
||||
- [src/crypt/aes128-decrypter.js][]
|
||||
|
@ -95,14 +123,18 @@ design idea is pretty simple :
|
|||
- it also tries to workaround as best as it can audio codec switch (HE-AAC to AAC and vice versa), without having to restart the MediaSource.
|
||||
- it also controls the remuxing process :
|
||||
- upon discontinuity or level switch detection, it will also notifies the remuxer so that it can reset its state.
|
||||
- [src/helper/aac.js][]
|
||||
- helper class to create silent AAC frames (useful to handle streams with audio holes)
|
||||
- [src/helper/buffer-helper.js][]
|
||||
- helper class, providing methods dealing buffer length retrieval (given a media position, it will return the upfront buffer length, next buffer position ...)
|
||||
- [src/helper/level-helper.js][]
|
||||
- helper class providing methods dealing with playlist sliding and fragment duration drift computation : after fragment parsing, start/end fragment timestamp will be used to adjust potential playlist drifts and live playlist sliding.
|
||||
- [src/loader/fragment-loader.js][]
|
||||
- in charge of loading fragments, use xhr-loader if not overrided by user config
|
||||
- [src/loader/playlist-loader.js][]
|
||||
- in charge of loading manifest, and level playlists, use xhr-loader if not overrided by user config.
|
||||
- [src/loader/key-loader.js][]
|
||||
- in charge of loading decryption key
|
||||
- [src/loader/playlist-loader.js][]
|
||||
- in charge of loading manifest, and level playlists, use xhr-loader if not overrided by user config.
|
||||
- [src/remux/dummy-remuxer.js][]
|
||||
- example dummy remuxer
|
||||
- [src/remux/mp4-generator.js][]
|
||||
|
@ -117,10 +149,18 @@ design idea is pretty simple :
|
|||
- Attribute List parsing helper class, used by playlist-loader
|
||||
- [src/utils/binary-search.js][]
|
||||
- binary search helper class
|
||||
- [src/utils/cea-608-parser.js][]
|
||||
- Port of dash.js class of the same name to ECMAScript. This class outputs "Screen" objects which contain rows of characters that can be rendered by a separate class.
|
||||
- [src/utils/cues.js][]
|
||||
- Default CC renderer. Translates Screen objects from cea-608-parser into HTML5 VTTCue objects, rendered by the video tag
|
||||
- [src/utils/ewma.js][]
|
||||
- compute [exponential weighted moving average](https://en.wikipedia.org/wiki/Moving_average#Exponential_moving_average)
|
||||
- [src/utils/hex.js][]
|
||||
- Hex dump utils, useful for debug
|
||||
- [src/utils/logger.js][]
|
||||
- logging utils, useful for debug
|
||||
- [src/utils/polyfill.js][]
|
||||
- ArrayBuffer.slice polyfill
|
||||
- [src/utils/url.js][]
|
||||
- convert base+relative URL into absolute URL
|
||||
- [src/utils/xhr-loader.js][]
|
||||
|
@ -128,16 +168,22 @@ design idea is pretty simple :
|
|||
- retries : if xhr fails, HTTP GET will be retried after a predetermined delay. this delay is increasing following an exponential backoff. after a predetemined max number of retries, an error callback will be triggered.
|
||||
- timeout: if load exceeds max allowed duration, a timeout callback will be triggered. it is up to the callback to decides whether the connection should be cancelled or not.
|
||||
|
||||
[src/hls.js]: src/hls.js
|
||||
[src/events.js]: src/events.js
|
||||
|
||||
[src/errors.js]: src/errors.js
|
||||
[src/stats.js]: src/stats.js
|
||||
[src/event-handler.js]: src/event-handler.js
|
||||
[src/events.js]: src/events.js
|
||||
[src/hls.js]: src/hls.js
|
||||
[src/index.js]: src/index.js
|
||||
[src/controller/abr-controller.js]: src/controller/abr-controller.js
|
||||
[src/controller/audio-stream-controller.js]: src/controller/audio-stream-controller.js
|
||||
[src/controller/audio-track-controller.js]: src/controller/audio-track-controller.js
|
||||
[src/controller/buffer-controller.js]: src/controller/buffer-controller.js
|
||||
[src/controller/cap-level-controller.js]: src/controller/cap-level-controller.js
|
||||
[src/controller/ewma-bandwidth-estimator.js]: src/controller/ewma-bandwidth-estimator.js
|
||||
[src/controller/fps-controller.js]: src/controller/fps-controller.js
|
||||
[src/controller/level-controller.js]: src/controller/level-controller.js
|
||||
[src/controller/stream-controller.js]: src/controller/stream-controller.js
|
||||
[src/controller/timeline-controller.js]: src/controller/timeline-controller.js
|
||||
[src/crypt/aes.js]: src/crypt/aes.js
|
||||
[src/crypt/aes128-decrypter.js]: src/crypt/aes128-decrypter.js
|
||||
[src/crypt/decrypter.js]: src/crypt/decrypter.js
|
||||
|
@ -149,17 +195,24 @@ design idea is pretty simple :
|
|||
[src/demux/exp-golomb.js]: src/demux/exp-golomb.js
|
||||
[src/demux/id3.js]: src/demux/id3.js
|
||||
[src/demux/tsdemuxer.js]: src/demux/tsdemuxer.js
|
||||
[src/helper/aac.js]: src/helper/aac.js
|
||||
[src/helper/buffer-helper.js]: src/helper/buffer-helper.js
|
||||
[src/helper/level-helper.js]: src/helper/level-helper.js
|
||||
[src/loader/fragment-loader.js]: src/loader/fragment-loader.js
|
||||
[src/loader/playlist-loader.js]: src/loader/playlist-loader.js
|
||||
[src/loader/key-loader.js]: src/loader/key-loader.js
|
||||
[src/loader/playlist-loader.js]: src/loader/playlist-loader.js
|
||||
[src/remux/dummy-remuxer.js]: src/remux/dummy-remuxer.js
|
||||
[src/remux/mp4-generator.js]: src/remux/mp4-generator.js
|
||||
[src/remux/passthrough-remuxer.js]: src/remux/passthrough-remuxer.js
|
||||
[src/remux/mp4-remuxer.js]: src/remux/mp4-remuxer.js
|
||||
[src/utils/attr-list.js]: src/utils/attr-list.js
|
||||
[src/utils/binary-search.js]: src/utils/binary-search.js
|
||||
[src/utils/cea-608-parser.js]: src/utils/cea-608-parser.js
|
||||
[src/utils/cues.js]: src/utils/cues.js
|
||||
[src/utils/ewma.js]: src/utils/ewma.js
|
||||
[src/utils/hex.js]: src/utils/hex.js
|
||||
[src/utils/logger.js]: src/utils/logger.js
|
||||
[src/utils/polyfill.js]: src/utils/polyfill.js
|
||||
[src/utils/url.js]: src/utils/url.js
|
||||
[src/utils/xhr-loader.js]: src/utils/xhr-loader.js
|
||||
|
||||
|
@ -172,6 +225,8 @@ design idea is pretty simple :
|
|||
- ```LEVEL_LOAD_ERROR``` is raised by [src/loader/playlist-loader.js][] upon xhr failure detected by [src/utils/xhr-loader.js][]. this error is marked as fatal and will not be recovered automatically. a call to ```hls.startLoad()``` could help recover it.
|
||||
- ```LEVEL_LOAD_TIMEOUT``` is raised by [src/loader/playlist-loader.js][] upon xhr timeout detected by [src/utils/xhr-loader.js][]. this error is marked as fatal and will not be recovered automatically. a call to ```hls.startLoad()``` could help recover it.
|
||||
- ```LEVEL_SWITCH_ERROR``` is raised by [src/controller/level-controller.js][] if user tries to switch to an invalid level (invalid/out of range level id)
|
||||
- ```AUDIO_TRACK_LOAD_ERROR``` is raised by [src/loader/playlist-loader.js][] upon xhr failure detected by [src/utils/xhr-loader.js][]. this error is marked as fatal and will not be recovered automatically. a call to ```hls.startLoad()``` could help recover it.
|
||||
- ```AUDIO_TRACK_LOAD_TIMEOUT``` is raised by [src/loader/playlist-loader.js][] upon xhr timeout detected by [src/utils/xhr-loader.js][]. this error is marked as fatal and will not be recovered automatically. a call to ```hls.startLoad()``` could help recover it.
|
||||
- ```FRAG_LOAD_ERROR``` is raised by [src/loader/fragment-loader.js][] upon xhr failure detected by [src/utils/xhr-loader.js][].
|
||||
- if auto level switch is enabled and loaded frag level is greater than 0, this error is not fatal: in that case [src/controller/level-controller.js][] will trigger an emergency switch down to level 0.
|
||||
- if frag level is 0 or auto level switch is disabled, this error is marked as fatal and a call to ```hls.startLoad()``` could help recover it.
|
||||
|
@ -181,9 +236,18 @@ design idea is pretty simple :
|
|||
- ```FRAG_LOAD_TIMEOUT``` is raised by [src/loader/fragment-loader.js][] upon xhr timeout detected by [src/utils/xhr-loader.js][].
|
||||
- if auto level switch is enabled and loaded frag level is greater than 0, this error is not fatal: in that case [src/controller/level-controller.js][] will trigger an emergency switch down to level 0.
|
||||
- if frag level is 0 or auto level switch is disabled, this error is marked as fatal and a call to ```hls.startLoad()``` could help recover it.
|
||||
- ```FRAG_PARSING_ERROR``` is raised by [src/demux/tsdemuxer.js][] upon TS parsing error. this error is not fatal.
|
||||
- ```FRAG_DECRYPT_ERROR``` is raised by [src/demux/demuxer.js][] upon fragment decrypting error. this error is fatal.
|
||||
- ```FRAG_PARSING_ERROR``` is raised by [src/demux/tsdemuxer.js][] upon TS parsing error. this error is not fatal.
|
||||
- ```KEY_LOAD_ERROR``` is raised by [src/loader/key-loader.js][] upon xhr failure detected by [src/utils/xhr-loader.js][].
|
||||
- if auto level switch is enabled and loaded frag level is greater than 0, this error is not fatal: in that case [src/controller/level-controller.js][] will trigger an emergency switch down to level 0.
|
||||
- if frag level is 0 or auto level switch is disabled, this error is marked as fatal and a call to ```hls.startLoad()``` could help recover it.
|
||||
- ```KEY_LOAD_TIMEOUT``` is raised by [src/loader/key-loader.js][] upon xhr timeout detected by [src/utils/xhr-loader.js][].
|
||||
- if auto level switch is enabled and loaded frag level is greater than 0, this error is not fatal: in that case [src/controller/level-controller.js][] will trigger an emergency switch down to level 0.
|
||||
- if frag level is 0 or auto level switch is disabled, this error is marked as fatal and a call to ```hls.startLoad()``` could help recover it.
|
||||
- ```BUFFER_ADD_CODEC_ERROR``` is raised by [src/controller/buffer-controller.js][] when an exception is raised when calling mediaSource.addSourceBuffer(). this error is non fatal.
|
||||
- ```BUFFER_APPEND_ERROR``` is raised by [src/controller/buffer-controller.js][] when an exception is raised when calling sourceBuffer.appendBuffer(). this error is non fatal and become fatal after config.appendErrorMaxRetry retries. when fatal, a call to ```hls.recoverMediaError()``` could help recover it.
|
||||
- ```BUFFER_APPENDING_ERROR``` is raised by [src/controller/buffer-controller.js][] after SourceBuffer appending error. this error is fatal and a call to ```hls.recoverMediaError()``` could help recover it.
|
||||
- ```BUFFER_STALLED_ERROR``` is raised by [src/controller/stream-controller.js][] if playback is stalling because of buffer underrun
|
||||
- ```BUFFER_FULL_ERROR``` is raised by [src/controller/buffer-controller.js][] if sourcebuffer is full
|
||||
- ```BUFFER_SEEK_OVER_HOLE``` is raised by [src/controller/stream-controller.js][] when hls.js seeks over a buffer hole after playback stalls
|
||||
- ```INTERNAL_EXCEPTION``` is raised by [src/event-handler.js][] when a runtime exception is triggered by an internal Hls event handler. this error is non-fatal.
|
||||
|
|
File diff suppressed because one or more lines are too long
55
dashboard-ui/bower_components/hlsjs/package.json
vendored
55
dashboard-ui/bower_components/hlsjs/package.json
vendored
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "hls.js",
|
||||
"version": "0.5.52",
|
||||
"version": "0.6.11",
|
||||
"license": "Apache-2.0",
|
||||
"description": "Media Source Extension - HLS library, by/for Dailymotion",
|
||||
"homepage": "https://github.com/dailymotion/hls.js",
|
||||
|
@ -12,49 +12,54 @@
|
|||
"bugs": {
|
||||
"url": "https://github.com/dailymotion/hls.js/issues"
|
||||
},
|
||||
"main": "./lib/index.js",
|
||||
"main": "./dist/hls.js",
|
||||
"private": false,
|
||||
"scripts": {
|
||||
"clean": "find dist -mindepth 1 -delete",
|
||||
"prebuild": "npm run clean & npm run test",
|
||||
"build": "npm run babel && browserify -t [babelify] -s Hls src/index.js --debug | exorcist dist/hls.js.map -b . > dist/hls.js",
|
||||
"postbuild": "npm run minify",
|
||||
"prerelease": "npm run prebuild && npm run build && npm run postbuild && git add --ignore-errors dist/* && git commit -m 'update dist'",
|
||||
"patch": "npm run prerelease && mversion p",
|
||||
"minor": "npm run prerelease && mversion mi",
|
||||
"major": "npm run prerelease && mversion ma",
|
||||
"build": "npm run buildlib && npm run builddist",
|
||||
"buildlib": "rimraf lib/* && babel src --out-dir lib",
|
||||
"builddist": "rimraf dist/* && browserify -t browserify-versionify -t [babelify] -p browserify-derequire -p bundle-collapser/plugin -s Hls src/index.js --debug | exorcist dist/hls.js.map -b . > dist/hls.js && npm run minify",
|
||||
"preparerelease": "npm run build && npm run test && git add dist/* && git commit -m 'update dist'",
|
||||
"prerelease": "mversion prerelease && npm run preparerelease",
|
||||
"patch": "mversion p && npm run preparerelease",
|
||||
"minor": "mversion mi && npm run preparerelease",
|
||||
"major": "mversion ma && npm run preparerelease",
|
||||
"minify": "uglifyjs dist/hls.js -c sequences=true,dead_code=true,conditionals=true,booleans=true,unused=true,if_return=true,join_vars=true,drop_console=true -m sort --screw-ie8 > dist/hls.min.js",
|
||||
"watch": "watchify --debug -s Hls src/index.js -t [babelify] -o dist/hls.js",
|
||||
"pretest": "npm run lint",
|
||||
"test": "mocha --compilers js:babel-register --recursive tests/unit",
|
||||
"testfunc": "mocha --compilers js:babel-register --recursive tests/functional/auto --timeout 40000",
|
||||
"lint": "jshint src/",
|
||||
"serve": "http-server -p 8000 .",
|
||||
"open": "opener http://localhost:8000/demo/",
|
||||
"live-reload": "live-reload --port 8001 dist/",
|
||||
"dev": "npm run build && npm run open -s & parallelshell 'npm run live-reload -s' 'npm run serve -s' 'npm run watch -s'",
|
||||
"babel": "babel src --out-dir lib"
|
||||
},
|
||||
"dependencies": {
|
||||
"webworkify": "^1.4.0"
|
||||
"dev": "npm run build && (npm run open -s & parallelshell 'npm run live-reload -s' 'npm run serve -s' 'npm run watch -s')"
|
||||
},
|
||||
"devDependencies": {
|
||||
"babel-preset-es2015": "^6.3.13",
|
||||
"babel-register": "^6.3.13",
|
||||
"babelify": "^7.2.0",
|
||||
"arraybuffer-equal": "^1.0.4",
|
||||
"babel": "^6.3.26",
|
||||
"babel-cli": "^6.3.17",
|
||||
"browserify": "^13.0.0",
|
||||
"deep-strict-equal": "^0.1.0",
|
||||
"babel-cli": "^6.18.0",
|
||||
"babel-preset-es2015": "^6.18.0",
|
||||
"babel-register": "^6.18.0",
|
||||
"babelify": "^7.2.0",
|
||||
"browserify": "^13.1.1",
|
||||
"browserify-derequire": "^0.9.4",
|
||||
"browserify-versionify": "^1.0.6",
|
||||
"bundle-collapser": "^1.2.1",
|
||||
"chromedriver": "^2.24.1",
|
||||
"deep-strict-equal": "^0.2.0",
|
||||
"exorcist": "^0.4.0",
|
||||
"http-server": "^0.9.0",
|
||||
"jshint": "^2.5.11",
|
||||
"jshint": "^2.9.4",
|
||||
"live-reload": "^1.1.0",
|
||||
"mocha": "^2.1.0",
|
||||
"mocha": "^3.0.2",
|
||||
"mversion": "^1.10.1",
|
||||
"opener": "^1.4.0",
|
||||
"parallelshell": "^2.0.0",
|
||||
"uglify-js": "^2.4.23",
|
||||
"watchify": "^3.7.0"
|
||||
"rimraf": "^2.5.1",
|
||||
"uglify-js": "^2.7.4",
|
||||
"url-toolkit": "^1.0.4",
|
||||
"selenium-webdriver": "^2.52.0",
|
||||
"watchify": "^3.7.0",
|
||||
"webworkify": "^1.4.0"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -324,6 +324,10 @@
|
|||
return 'secondaryitems.html?type=' + type + '&genreId=' + item.Id + '&parentId=' + params.topParentId;
|
||||
}
|
||||
|
||||
if (item.Type == 'Studio') {
|
||||
return 'secondaryitems.html?type=' + type + '&studioId=' + item.Id + '&parentId=' + params.topParentId;
|
||||
}
|
||||
|
||||
return 'secondaryitems.html?type=' + type + '&parentId=' + item.Id;
|
||||
}
|
||||
|
||||
|
|
|
@ -991,7 +991,11 @@
|
|||
if (isStatic) {
|
||||
html += ' on ' + item.Studios[0].Name;
|
||||
} else {
|
||||
html += ' on <a class="textlink" href="itemdetails.html?id=' + item.Studios[0].Id + '">' + item.Studios[0].Name + '</a>';
|
||||
|
||||
var context = inferContext(item);
|
||||
|
||||
var href = LibraryBrowser.getHref(item.Studios[i], context);
|
||||
html += ' on <a class="textlink" href="' + href + '">' + item.Studios[0].Name + '</a>';
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1295,8 +1299,31 @@
|
|||
});
|
||||
}
|
||||
|
||||
function inferContext(item) {
|
||||
|
||||
if (item.Type == 'Movie' || item.Type == 'BoxSet') {
|
||||
return 'movies';
|
||||
}
|
||||
if (item.Type == 'Series' || item.Type == 'Season' || item.Type == 'Episode') {
|
||||
return 'tvshows';
|
||||
}
|
||||
if (item.Type == 'Game' || item.Type == 'GameSystem') {
|
||||
return 'games';
|
||||
}
|
||||
if (item.Type == 'Game' || item.Type == 'GameSystem') {
|
||||
return 'games';
|
||||
}
|
||||
if (item.Type == 'MusicArtist' || item.Type == 'MusicAlbum') {
|
||||
return 'music';
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
function renderStudios(elem, item, isStatic) {
|
||||
|
||||
var context = inferContext(item);
|
||||
|
||||
if (item.Studios && item.Studios.length && item.Type != "Series") {
|
||||
|
||||
var html = '';
|
||||
|
@ -1310,7 +1337,10 @@
|
|||
if (isStatic) {
|
||||
html += item.Studios[i].Name;
|
||||
} else {
|
||||
html += '<a class="textlink" href="itemdetails.html?id=' + item.Studios[i].Id + '">' + item.Studios[i].Name + '</a>';
|
||||
|
||||
item.Studios[i].Type = 'Studio';
|
||||
var href = LibraryBrowser.getHref(item.Studios[i], context);
|
||||
html += '<a class="textlink" href="' + href + '">' + item.Studios[i].Name + '</a>';
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1328,6 +1358,8 @@
|
|||
|
||||
function renderGenres(elem, item, limit, isStatic) {
|
||||
|
||||
var context = inferContext(item);
|
||||
|
||||
var html = '';
|
||||
|
||||
var genres = item.Genres || [];
|
||||
|
@ -1351,7 +1383,23 @@
|
|||
if (isStatic) {
|
||||
html += genres[i];
|
||||
} else {
|
||||
html += '<a class="textlink" href="itemdetails.html?' + param + '=' + ApiClient.encodeName(genres[i]) + '">' + genres[i] + '</a>';
|
||||
|
||||
var type;
|
||||
switch (context) {
|
||||
case 'tvshows':
|
||||
type = 'Series';
|
||||
break;
|
||||
case 'games':
|
||||
type = 'Game';
|
||||
break;
|
||||
default:
|
||||
type = 'Movie';
|
||||
break;
|
||||
}
|
||||
|
||||
var url = "secondaryitems.html?type=" + type + "&" + param + "=" + ApiClient.encodeName(genres[i]);
|
||||
|
||||
html += '<a class="textlink" href="' + url + '">' + genres[i] + '</a>';
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -239,24 +239,6 @@
|
|||
|
||||
getHref: function (item, context, topParentId) {
|
||||
|
||||
var href = LibraryBrowser.getHrefInternal(item, context);
|
||||
|
||||
if (context == 'tv') {
|
||||
if (!topParentId) {
|
||||
topParentId = LibraryMenu.getTopParentId();
|
||||
}
|
||||
|
||||
if (topParentId) {
|
||||
href += href.indexOf('?') == -1 ? "?topParentId=" : "&topParentId=";
|
||||
href += topParentId;
|
||||
}
|
||||
}
|
||||
|
||||
return href;
|
||||
},
|
||||
|
||||
getHrefInternal: function (item, context) {
|
||||
|
||||
if (!item) {
|
||||
throw new Error('item cannot be null');
|
||||
}
|
||||
|
@ -265,6 +247,7 @@
|
|||
return item.url;
|
||||
}
|
||||
|
||||
var url;
|
||||
// Handle search hints
|
||||
var id = item.Id || item.ItemId;
|
||||
|
||||
|
@ -348,16 +331,56 @@
|
|||
return "itemdetails.html?id=" + id;
|
||||
}
|
||||
if (item.Type == "Genre") {
|
||||
return "itemdetails.html?id=" + id;
|
||||
var type;
|
||||
switch (context) {
|
||||
case 'tvshows':
|
||||
type = 'Series';
|
||||
break;
|
||||
case 'games':
|
||||
type = 'Game';
|
||||
break;
|
||||
default:
|
||||
type = 'Movie';
|
||||
break;
|
||||
}
|
||||
|
||||
url = "secondaryitems.html?type=" + type + "&genreId=" + id;
|
||||
if (topParentId) {
|
||||
url += "&parentId=" + topParentId;
|
||||
}
|
||||
return url;
|
||||
}
|
||||
if (item.Type == "MusicGenre") {
|
||||
return "itemdetails.html?id=" + id;
|
||||
}
|
||||
if (item.Type == "GameGenre") {
|
||||
return "itemdetails.html?id=" + id;
|
||||
|
||||
url = "secondaryitems.html?type=Game&genreId=" + id;
|
||||
if (topParentId) {
|
||||
url += "&parentId=" + topParentId;
|
||||
}
|
||||
return url;
|
||||
}
|
||||
if (item.Type == "Studio") {
|
||||
return "itemdetails.html?id=" + id;
|
||||
|
||||
var type;
|
||||
switch (context) {
|
||||
case 'tvshows':
|
||||
type = 'Series';
|
||||
break;
|
||||
case 'games':
|
||||
type = 'Game';
|
||||
break;
|
||||
default:
|
||||
type = 'Movie';
|
||||
break;
|
||||
}
|
||||
|
||||
url = "secondaryitems.html?type=" + type + "&studioId=" + id;
|
||||
if (topParentId) {
|
||||
url += "&parentId=" + topParentId;
|
||||
}
|
||||
return url;
|
||||
}
|
||||
if (item.Type == "Person") {
|
||||
return "itemdetails.html?id=" + id;
|
||||
|
|
|
@ -221,12 +221,41 @@
|
|||
|
||||
view.addEventListener('click', onListItemClick);
|
||||
|
||||
function getItemPromise() {
|
||||
|
||||
var id = params.genreId || params.studioId || params.parentId;
|
||||
|
||||
if (id) {
|
||||
return ApiClient.getItem(Dashboard.getCurrentUserId(), id);
|
||||
}
|
||||
|
||||
var name = params.genre;
|
||||
|
||||
if (name) {
|
||||
return ApiClient.getGenre(name, Dashboard.getCurrentUserId());
|
||||
}
|
||||
|
||||
name = params.musicgenre;
|
||||
|
||||
if (name) {
|
||||
return ApiClient.getMusicGenre(name, Dashboard.getCurrentUserId());
|
||||
}
|
||||
|
||||
name = params.gamegenre;
|
||||
|
||||
if (name) {
|
||||
return ApiClient.getGameGenre(name, Dashboard.getCurrentUserId());
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
view.addEventListener('viewbeforeshow', function (e) {
|
||||
|
||||
var parentId = params.genreId || params.parentId;
|
||||
var parentPromise = getItemPromise();
|
||||
|
||||
if (parentId) {
|
||||
ApiClient.getItem(Dashboard.getCurrentUserId(), parentId).then(function (parent) {
|
||||
if (parentPromise) {
|
||||
parentPromise.then(function (parent) {
|
||||
LibraryMenu.setTitle(parent.Name);
|
||||
|
||||
onViewStyleChange(parent);
|
||||
|
|
|
@ -89,11 +89,11 @@
|
|||
"OptionEnableAccessToAllLibraries": "\u062a\u0645\u0643\u064a\u0646 \u0627\u0644\u062f\u062e\u0648\u0644 \u0639\u0644\u0649 \u0643\u0627\u0641\u0629 \u0627\u0644\u0645\u0643\u062a\u0628\u0627\u062a",
|
||||
"DeviceAccessHelp": "\u0647\u0630\u0647 \u0627\u0644\u0645\u064a\u0632\u0629 \u062a\u0646\u0637\u0628\u0642 \u062d\u0635\u0631\u064a\u0627\u064b \u0639\u0644\u0649 \u0627\u0644\u0623\u062c\u0647\u0632\u0629 \u0627\u0644\u062a\u064a \u064a\u0645\u0643\u0646 \u0627\u0644\u062a\u0639\u0631\u0641 \u0639\u0644\u064a\u0647\u0627 \u0641\u0631\u062f\u064a\u0627\u064b \u0648\u0644\u0646 \u062a\u0645\u0646\u0639 \u0627\u0644\u0645\u062a\u0635\u0641\u062d \u0645\u0646 \u0627\u0644\u062f\u062e\u0648\u0644 \u0639\u0644\u064a\u0647\u0627. \u062a\u0631\u0634\u064a\u062d \u0627\u0644\u0648\u0635\u0648\u0644 \u0644\u0623\u062c\u0647\u0632\u0629 \u0627\u0644\u0645\u0633\u062a\u062e\u062f\u0645 \u0633\u062a\u0645\u0646\u0639 \u0627\u0644\u0645\u0633\u062a\u062e\u062f\u0645\u064a\u0646 \u0645\u0646 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u0627\u0644\u0623\u062c\u0647\u0632\u0629 \u0627\u0644\u062c\u062f\u064a\u062f\u0629 \u0625\u0644\u0649 \u0623\u0646 \u064a\u062a\u0645 \u0627\u0639\u062a\u0645\u0627\u062f\u0647\u0645 \u0645\u0646 \u0647\u0646\u0627.",
|
||||
"LabelDisplayMissingEpisodesWithinSeasons": "\u0623\u0638\u0647\u0631 \u0627\u0644\u062d\u0644\u0642\u0627\u062a \u0627\u0644\u0645\u0641\u0642\u0648\u062f\u0629 \u0641\u064a \u0645\u062c\u0644\u062f\u0627\u062a \u0627\u0644\u0645\u0648\u0627\u0633\u0645",
|
||||
"LabelDisplayMissingEpisodesWithinSeasonsHelp": "This must also be enabled for TV libraries in Emby Server setup.",
|
||||
"LabelDisplayMissingEpisodesWithinSeasonsHelp": "\u064a\u0646\u0628\u063a\u064a \u062a\u0641\u0639\u064a\u0644 \u0647\u0630\u0647 \u0627\u0644\u062e\u0627\u0635\u064a\u0629 \u0644\u0645\u0643\u062a\u0628\u0627\u062a \u0627\u0644\u062a\u0644\u0641\u0632\u0629 \u0641\u064a \u0625\u0639\u062f\u0627\u062f\u0627\u062a \u062e\u0627\u062f\u0645 \u0623\u0645\u0628\u064a",
|
||||
"LabelUnairedMissingEpisodesWithinSeasons": "\u0627\u0639\u0631\u0636 \u0627\u0644\u062d\u0644\u0642\u0627\u062a \u0627\u0644\u062a\u064a \u0644\u0645 \u062a\u0628\u062b \u0641\u064a \u0645\u062c\u0644\u062f\u0627\u062a \u0627\u0644\u0645\u0648\u0627\u0633\u0645",
|
||||
"ImportMissingEpisodesHelp": "If enabled, information about missing episodes will be imported into your Emby database and displayed within seasons and series. This may cause significantly longer library scans.",
|
||||
"ImportMissingEpisodesHelp": "\u0639\u0646\u062f \u0627\u0644\u062a\u0645\u0643\u064a\u0646\u060c \u0627\u0644\u0645\u0639\u0644\u0648\u0645\u0627\u062a \u0627\u0644\u0646\u0627\u0642\u0635\u0629 \u0644\u0644\u062d\u0644\u0642\u0627\u062a \u0633\u062a\u0648\u0631\u0651\u062f \u0625\u0644\u0649 \u0642\u0627\u0639\u062f\u0629 \u0628\u064a\u0627\u0646\u0627\u062a \u0623\u0645\u0628\u064a \u0648\u0633\u062a\u0639\u0631\u0636 \u062f\u0627\u062e\u0644 \u0627\u0644\u0645\u0648\u0627\u0633\u0645 \u0648\u0627\u0644\u0645\u0633\u0644\u0633\u0644\u0627\u062a. \u0642\u062f \u062a\u062a\u0633\u0628\u0628 \u0647\u0630\u0647 \u0628\u0623\u0648\u0642\u0627\u062a \u0623\u0637\u0648\u0644 \u0628\u0643\u062b\u064a\u0631 \u0639\u0646\u062f \u062a\u0645\u0634\u064a\u0637 \u0627\u0644\u0645\u0643\u0646\u0628\u0627\u062a.",
|
||||
"HeaderVideoPlaybackSettings": "\u0627\u0639\u062f\u0627\u062f\u0627\u062a \u062a\u0634\u063a\u064a\u0644 \u0627\u0644\u0641\u064a\u062f\u064a\u0648",
|
||||
"OptionDownloadInternetMetadataTvPrograms": "Download internet metadata for programs listed in the guide",
|
||||
"OptionDownloadInternetMetadataTvPrograms": "\u062a\u0646\u0632\u064a\u0644 \u0648\u0627\u0635\u0641\u0627\u062a \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a \u0645\u0646 \u0627\u0644\u0625\u0646\u062a\u0631\u0646\u062a \u0644\u0644\u0628\u0631\u0627\u0645\u062c \u0627\u0644\u0645\u0630\u0643\u0648\u0631\u0629 \u0641\u064a \u0647\u0630\u0627 \u0627\u0644\u062f\u0644\u064a\u0644",
|
||||
"HeaderPlaybackSettings": "\u0625\u0639\u062f\u0627\u062f\u0627\u062a \u0627\u0644\u062a\u0634\u063a\u064a\u0644",
|
||||
"LabelAudioLanguagePreference": "\u0627\u0644\u0644\u063a\u0629 \u0627\u0644\u0645\u0641\u0636\u0644\u0629 \u0644\u0644\u0635\u0648\u062a:",
|
||||
"LabelSubtitleLanguagePreference": "\u0627\u0644\u0644\u063a\u0629 \u0627\u0644\u0645\u0641\u0636\u0644\u0629 \u0644\u0644\u062a\u0631\u062c\u0645\u0629:",
|
||||
|
@ -326,10 +326,10 @@
|
|||
"TabFavorites": "\u0627\u0644\u0645\u0641\u0636\u0644\u0629",
|
||||
"TabMyLibrary": "\u0645\u0643\u062a\u0628\u062a\u064a",
|
||||
"ButtonCancelRecording": "\u0625\u0644\u063a\u0627\u0621 \u062a\u0633\u062c\u064a\u0644 \u0627\u0644\u0645\u0642\u0637\u0639",
|
||||
"LabelStartWhenPossible": "Start when possible:",
|
||||
"LabelStopWhenPossible": "Stop when possible:",
|
||||
"MinutesBefore": "minutes before",
|
||||
"MinutesAfter": "minutes after",
|
||||
"LabelStartWhenPossible": "\u0625\u0628\u062f\u0623 \u062d\u0627\u0644 \u0627\u0644\u0625\u0645\u0643\u0627\u0646:",
|
||||
"LabelStopWhenPossible": "\u0623\u0648\u0642\u0641 \u062d\u0627\u0644 \u0627\u0644\u0625\u0645\u0643\u0627\u0646",
|
||||
"MinutesBefore": "\u0639\u062f\u062f \u0627\u0644\u062f\u0642\u0627\u0626\u0642 \u0627\u0644\u0633\u0627\u0628\u0642\u0629",
|
||||
"MinutesAfter": "\u0639\u062f\u062f \u0627\u0644\u062f\u0642\u0627\u0626\u0642 \u0627\u0644\u0644\u0627\u062d\u0642\u0629",
|
||||
"HeaderWhatsOnTV": "\u0645\u0627 \u0647\u0648 \u0627\u0644\u0645\u0639\u0631\u0648\u0636 \u0627\u0644\u0622\u0646",
|
||||
"TabSettings": "\u0627\u0644\u0625\u0639\u062f\u0627\u062f\u0627\u062a",
|
||||
"ButtonRefreshGuideData": "\u0625\u0639\u0627\u062f\u0629 \u062a\u0646\u0634\u064a\u0637 \u0628\u064a\u0627\u0646\u0627\u062a \u0627\u0644\u062f\u0644\u064a\u0644",
|
||||
|
@ -1177,7 +1177,7 @@
|
|||
"HeaderSetupTVGuide": "\u0636\u0628\u0637 \u0625\u0639\u062f\u0627\u062f\u0627\u062a \u0627\u0644\u062f\u0644\u064a\u0644 \u0627\u0644\u062a\u0644\u0641\u0632\u064a\u0648\u0646\u064a",
|
||||
"LabelDataProvider": "\u0645\u0632\u0648\u062f \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a:",
|
||||
"OptionSendRecordingsToAutoOrganize": "\u0631\u062a\u0628 \u0627\u0644\u0633\u062c\u0644\u0627\u062a \u0622\u0644\u064a\u0627\u064b \u0641\u064a \u0645\u062c\u0644\u062f\u0627\u062a \u0645\u0633\u0644\u0633\u0644\u0627\u062a \u0645\u0648\u062c\u0648\u062f\u0629 \u0641\u064a \u0627\u0644\u0645\u0643\u062a\u0628\u0627\u062a",
|
||||
"HeaderDefaultRecordingSettings": "Default Recording Settings",
|
||||
"HeaderDefaultRecordingSettings": "\u0625\u0639\u062f\u0627\u062f\u0627\u062a \u0627\u0644\u062a\u0633\u062c\u064a\u0644 \u0627\u0644\u0627\u0641\u062a\u0631\u0627\u0636\u064a\u0629",
|
||||
"OptionEnableRecordingSubfolders": "\u0625\u0646\u0634\u0626 \u0645\u062c\u0644\u062f\u0627\u064b \u0641\u0631\u0639\u064a\u0627\u064b \u0644\u0644\u062a\u0635\u0646\u064a\u0641\u0627\u062a \u0645\u062b\u0644 \u0627\u0644\u0631\u064a\u0627\u0636\u0629 \u0648\u0627\u0644\u0625\u0637\u0641\u0627\u0644 \u0648\u060c\u060c \u0625\u0644\u062e.",
|
||||
"HeaderSubtitles": "\u0627\u0644\u062a\u0631\u062c\u0645\u0627\u062a",
|
||||
"HeaderVideos": "\u0627\u0644\u0641\u064a\u062f\u064a\u0648\u0647\u0627\u062a",
|
||||
|
@ -1933,8 +1933,8 @@
|
|||
"LatestFromLibrary": "\u0623\u062d\u062f\u062b \u0627\u0644{0}",
|
||||
"LabelMoviePrefix": "\u0628\u0627\u062f\u0626\u0629 \u0627\u0644\u0623\u0641\u0644\u0627\u0645:",
|
||||
"LabelMoviePrefixHelp": "\u0625\u0646 \u0643\u0627\u0646 \u0647\u0646\u0627\u0643 \u0628\u0627\u062f\u0626\u0629 \u0644\u0639\u0646\u0627\u0648\u064a\u0646 \u0627\u0644\u0623\u0641\u0644\u0627\u0645\u060c \u0641\u0623\u062f\u062e\u0644\u0647\u0627 \u0647\u0646\u0627 \u0644\u0643\u064a \u064a\u062a\u0645\u0643\u0646 \u0623\u0645\u0628\u064a \u0645\u0646 \u0623\u0646 \u064a\u062a\u0639\u0627\u0645\u0644 \u0645\u0639\u0647\u0627 \u0628\u0627\u0644\u0637\u0631\u064a\u0642\u0629 \u0627\u0644\u0635\u062d\u064a\u062d\u0629.",
|
||||
"HeaderRecordingPostProcessing": "Recording Post Processing",
|
||||
"LabelPostProcessorArguments": "Post-processor command line arguments:",
|
||||
"LabelPostProcessorArgumentsHelp": "Use {path} as the path to the recording file.",
|
||||
"LabelPostProcessor": "Post-processing application:"
|
||||
"HeaderRecordingPostProcessing": "\u062a\u0637\u0628\u064a\u0642 \u0645\u0627-\u0628\u0639\u062f-\u0627\u0644\u0645\u0639\u0627\u0644\u062c\u0629 \u0644\u0644\u062a\u0633\u062c\u064a\u0644",
|
||||
"LabelPostProcessorArguments": "\u0645\u0639\u0637\u064a\u0627\u062a \u0633\u0637\u0631 \u0627\u0644\u0623\u0648\u0627\u0645\u0631 \u0644\u062a\u0637\u0628\u064a\u0642 \u0645\u0627 \u0628\u0639\u062f \u0627\u0644\u0645\u0639\u0627\u0644\u062c\u0629",
|
||||
"LabelPostProcessorArgumentsHelp": "\u0627\u0633\u062a\u062e\u062f\u0645 \u0627\u0644\u0645\u0633\u0627\u0631: {path} \u0643\u0645\u0633\u0627\u0631 \u0644\u0645\u0644\u0641 \u0627\u0644\u062a\u0633\u062c\u064a\u0644.",
|
||||
"LabelPostProcessor": "\u062a\u0637\u0628\u064a\u0642 \u0645\u0627-\u0628\u0639\u062f-\u0627\u0644\u0645\u0639\u0627\u0644\u062c\u0629"
|
||||
}
|
1940
dashboard-ui/strings/de-DE.json
Normal file
1940
dashboard-ui/strings/de-DE.json
Normal file
File diff suppressed because it is too large
Load diff
|
@ -93,7 +93,7 @@
|
|||
"LabelUnairedMissingEpisodesWithinSeasons": "Display unaired episodes within series",
|
||||
"ImportMissingEpisodesHelp": "If enabled, information about missing episodes will be imported into your Emby database and displayed within seasons and series. This may cause significantly longer library scans.",
|
||||
"HeaderVideoPlaybackSettings": "Video Playback Settings",
|
||||
"OptionDownloadInternetMetadataTvPrograms": "Download internet metadata for programs listed in the guide",
|
||||
"OptionDownloadInternetMetadataTvPrograms": "Download internet metadata for programmes listed in the guide",
|
||||
"HeaderPlaybackSettings": "Playback Settings",
|
||||
"LabelAudioLanguagePreference": "Audio language preference:",
|
||||
"LabelSubtitleLanguagePreference": "Subtitle language preference:",
|
||||
|
@ -1404,8 +1404,8 @@
|
|||
"LabelPlayMethodDirectPlay": "Direct Playing",
|
||||
"LabelAudioCodec": "Audio: {0}",
|
||||
"LabelVideoCodec": "Video: {0}",
|
||||
"LabelLocalAccessUrl": "Local access: {0}",
|
||||
"LabelRemoteAccessUrl": "Remote access: {0}",
|
||||
"LabelLocalAccessUrl": "In-Home (LAN) access: {0}",
|
||||
"LabelRemoteAccessUrl": "Remote (WAN) access: {0}",
|
||||
"LabelRunningOnPort": "Running on HTTP port {0}.",
|
||||
"LabelRunningOnPorts": "Running on HTTP port {0}, and HTTPS port {1}.",
|
||||
"HeaderLatestFromChannel": "Latest from {0}",
|
||||
|
@ -1609,7 +1609,7 @@
|
|||
"HeaderUnaired": "Unaired",
|
||||
"HeaderMissing": "Missing",
|
||||
"ButtonWebsite": "Website",
|
||||
"ValueSeriesYearToPresent": "{0}-Present",
|
||||
"ValueSeriesYearToPresent": "{0} - Present",
|
||||
"ValueAwards": "Awards: {0}",
|
||||
"ValuePremiered": "Premiered {0}",
|
||||
"ValuePremieres": "Premieres {0}",
|
||||
|
@ -1755,8 +1755,8 @@
|
|||
"SyncJobItemStatusCancelled": "Cancelled",
|
||||
"LabelProfile": "Profile:",
|
||||
"LabelBitrateMbps": "Bitrate (Mbps):",
|
||||
"EmbyIntroDownloadMessage": "To download and install Emby Server visit {0}.",
|
||||
"EmbyIntroDownloadMessageWithoutLink": "To download and install Emby Server visit the Emby website.",
|
||||
"EmbyIntroDownloadMessage": "To download and install the free Emby Server, visit {0}.",
|
||||
"EmbyIntroDownloadMessageWithoutLink": "To download and install the free Emby Server, visit the Emby website.",
|
||||
"ButtonNewServer": "New Server",
|
||||
"MyDevice": "My Device",
|
||||
"ButtonRemote": "Remote",
|
||||
|
@ -1882,7 +1882,7 @@
|
|||
"MapChannels": "Map Channels",
|
||||
"LabelffmpegPath": "FFmpeg path:",
|
||||
"LabelffmpegVersion": "FFmpeg version:",
|
||||
"LabelffmpegPathHelp": "The path to your downloaded FFmpeg application, or folder containing FFmpeg.",
|
||||
"LabelffmpegPathHelp": "The path to the ffmpeg application file or folder containing ffmpeg.",
|
||||
"SetupFFmpeg": "Setup FFmpeg",
|
||||
"SetupFFmpegHelp": "Emby may require a library or application to convert certain media types. There are many different applications available, however, Emby has been tested to work with FFmpeg. Emby is in no way affiliated with FFmpeg, its ownership, code or distribution.",
|
||||
"EnterFFmpegLocation": "Enter FFmpeg path",
|
||||
|
|
|
@ -29,6 +29,8 @@
|
|||
"ButtonCancel": "Cancel",
|
||||
"ButtonExit": "Exit",
|
||||
"ButtonNew": "New",
|
||||
"OptionDev": "Dev",
|
||||
"OptionBeta": "Beta",
|
||||
"HeaderTaskTriggers": "Task Triggers",
|
||||
"HeaderTV": "TV",
|
||||
"HeaderAudio": "Audio",
|
||||
|
|
1940
dashboard-ui/strings/es-ES.json
Normal file
1940
dashboard-ui/strings/es-ES.json
Normal file
File diff suppressed because it is too large
Load diff
|
@ -89,11 +89,11 @@
|
|||
"OptionEnableAccessToAllLibraries": "Habilitar el acceso a todas las bibliotecas",
|
||||
"DeviceAccessHelp": "Esto solo aplica a dispositivos que pueden ser identificados de manera individual y no evitar\u00e1 acceso al navegador. Al filtrar el acceso de usuarios a dispositivos se impedir\u00e1 que utilicen nuevos dispositivos hasta que hayan sido aprobados aqu\u00ed.",
|
||||
"LabelDisplayMissingEpisodesWithinSeasons": "Mostar episodios no disponibles en las temporadas",
|
||||
"LabelDisplayMissingEpisodesWithinSeasonsHelp": "This must also be enabled for TV libraries in Emby Server setup.",
|
||||
"LabelDisplayMissingEpisodesWithinSeasonsHelp": "Esta opci\u00f3n tambi\u00e9n debe de estar habilitada en la configuraci\u00f3n del servidor Emby para bibliotecas de TV.",
|
||||
"LabelUnairedMissingEpisodesWithinSeasons": "Mostrar episodios a\u00fan no emitidos en las temporadas",
|
||||
"ImportMissingEpisodesHelp": "If enabled, information about missing episodes will be imported into your Emby database and displayed within seasons and series. This may cause significantly longer library scans.",
|
||||
"ImportMissingEpisodesHelp": "Si se habilita, se importara a su base de datos de Emby informaci\u00f3n sobre episodios faltantes y se mostrara dentro de las temporadas y series. Esto podr\u00eda ocasionar escaneos de biblioteca significativamente mas largos.",
|
||||
"HeaderVideoPlaybackSettings": "Configuraci\u00f3n de Reproducci\u00f3n de Video",
|
||||
"OptionDownloadInternetMetadataTvPrograms": "Download internet metadata for programs listed in the guide",
|
||||
"OptionDownloadInternetMetadataTvPrograms": "Descargar metadatos de internet para programas listados en la gu\u00eda",
|
||||
"HeaderPlaybackSettings": "Configuraci\u00f3n de Reproducci\u00f3n",
|
||||
"LabelAudioLanguagePreference": "Preferencia de idioma de audio:",
|
||||
"LabelSubtitleLanguagePreference": "Preferencia de idioma de subt\u00edtulos:",
|
||||
|
@ -326,10 +326,10 @@
|
|||
"TabFavorites": "Favoritos",
|
||||
"TabMyLibrary": "Mi Biblioteca",
|
||||
"ButtonCancelRecording": "Cancelar Grabaci\u00f3n",
|
||||
"LabelStartWhenPossible": "Start when possible:",
|
||||
"LabelStopWhenPossible": "Stop when possible:",
|
||||
"MinutesBefore": "minutes before",
|
||||
"MinutesAfter": "minutes after",
|
||||
"LabelStartWhenPossible": "Iniciar cuando sea posible:",
|
||||
"LabelStopWhenPossible": "Detener cuando sea posible:",
|
||||
"MinutesBefore": "minutos antes",
|
||||
"MinutesAfter": "minutos despu\u00e9s",
|
||||
"HeaderWhatsOnTV": "\u00bfQu\u00e9 hay?",
|
||||
"TabSettings": "Configuraci\u00f3n",
|
||||
"ButtonRefreshGuideData": "Actualizar Datos de la Gu\u00eda",
|
||||
|
@ -1177,7 +1177,7 @@
|
|||
"HeaderSetupTVGuide": "Configurar Gu\u00eda de TV",
|
||||
"LabelDataProvider": "Proveedor de datos:",
|
||||
"OptionSendRecordingsToAutoOrganize": "Organiza autom\u00e1ticamente las grabaciones dentro de las carpetas existentes de series en otras bibliotecas.",
|
||||
"HeaderDefaultRecordingSettings": "Default Recording Settings",
|
||||
"HeaderDefaultRecordingSettings": "Configuraci\u00f3n Predeterminada de Grabaciones",
|
||||
"OptionEnableRecordingSubfolders": "Crear sub-carpetas para categor\u00edas como Deportes, Ni\u00f1os, etc.",
|
||||
"HeaderSubtitles": "Subt\u00edtulos",
|
||||
"HeaderVideos": "Videos",
|
||||
|
@ -1933,8 +1933,8 @@
|
|||
"LatestFromLibrary": "M\u00e1s recientes {0}",
|
||||
"LabelMoviePrefix": "Prefijo de la pel\u00edcula:",
|
||||
"LabelMoviePrefixHelp": "Si un prefijo es aplicado al titulo de las pel\u00edculas, introduzcalo aqu\u00ed para que emby pueda tratarlo adecuadamente.",
|
||||
"HeaderRecordingPostProcessing": "Recording Post Processing",
|
||||
"LabelPostProcessorArguments": "Post-processor command line arguments:",
|
||||
"LabelPostProcessorArgumentsHelp": "Use {path} as the path to the recording file.",
|
||||
"LabelPostProcessor": "Post-processing application:"
|
||||
"HeaderRecordingPostProcessing": "Post Procesado de las Grabaciones",
|
||||
"LabelPostProcessorArguments": "Argumentos de linea de comando para el post-procesador:",
|
||||
"LabelPostProcessorArgumentsHelp": "Use {path} como la ruta a el archivo de grabado.",
|
||||
"LabelPostProcessor": "Aplicaci\u00f3n de Post Procesado:"
|
||||
}
|
|
@ -89,11 +89,11 @@
|
|||
"OptionEnableAccessToAllLibraries": "Habilitar acceso a todas las bibliotecas",
|
||||
"DeviceAccessHelp": "Esto solo aplica a equipos que puedan ser singularmente identificados y no prevendr\u00e1 acceso al navegador. Filtrar el acceso de equipos del usuario les prevendr\u00e1 que usen nuevos equipos hasta que sean aprobados aqui.",
|
||||
"LabelDisplayMissingEpisodesWithinSeasons": "Mostar episodios no disponibles en temporadas",
|
||||
"LabelDisplayMissingEpisodesWithinSeasonsHelp": "This must also be enabled for TV libraries in Emby Server setup.",
|
||||
"LabelDisplayMissingEpisodesWithinSeasonsHelp": "Tambi\u00e9n debe habilitarse para bibliotecas de TV en la configuraci\u00f3n de Emby Server.",
|
||||
"LabelUnairedMissingEpisodesWithinSeasons": "Mostrar episodios a\u00fan no emitidos en temporadas",
|
||||
"ImportMissingEpisodesHelp": "If enabled, information about missing episodes will be imported into your Emby database and displayed within seasons and series. This may cause significantly longer library scans.",
|
||||
"ImportMissingEpisodesHelp": "Si est\u00e1 activada, la informaci\u00f3n sobre los episodios que faltan se importar\u00e1 en su base de datos Emby y se mostrar\u00e1 en temporadas y series. Esto puede causar exploraciones de bibliotecas significativamente m\u00e1s largas.",
|
||||
"HeaderVideoPlaybackSettings": "Ajustes de Reproducci\u00f3n de Video",
|
||||
"OptionDownloadInternetMetadataTvPrograms": "Download internet metadata for programs listed in the guide",
|
||||
"OptionDownloadInternetMetadataTvPrograms": "Descargar los metadatos de Internet para los programas que aparecen en la gu\u00eda",
|
||||
"HeaderPlaybackSettings": "Ajustes de reproducci\u00f3n",
|
||||
"LabelAudioLanguagePreference": "Preferencia de idioma de audio",
|
||||
"LabelSubtitleLanguagePreference": "Preferencia de idioma de subtitulos",
|
||||
|
@ -146,7 +146,7 @@
|
|||
"OptionWriters": "Guionistas",
|
||||
"OptionProducers": "Productores",
|
||||
"HeaderResume": "Continuar",
|
||||
"HeaderContinueWatching": "Continue Watching",
|
||||
"HeaderContinueWatching": "Continuar viendo",
|
||||
"HeaderNextUp": "Siguiendo",
|
||||
"NoNextUpItemsMessage": "Nada encontrado. \u00a1Comienza a ver tus programas!",
|
||||
"HeaderLatestEpisodes": "Ultimos episodios",
|
||||
|
@ -326,10 +326,10 @@
|
|||
"TabFavorites": "Favoritos",
|
||||
"TabMyLibrary": "Mi biblioteca",
|
||||
"ButtonCancelRecording": "Cancelar grabaci\u00f3n",
|
||||
"LabelStartWhenPossible": "Start when possible:",
|
||||
"LabelStopWhenPossible": "Stop when possible:",
|
||||
"MinutesBefore": "minutes before",
|
||||
"MinutesAfter": "minutes after",
|
||||
"LabelStartWhenPossible": "Empiece cuando sea posible:",
|
||||
"LabelStopWhenPossible": "Det\u00e9ngase cuando sea posible:",
|
||||
"MinutesBefore": "minutos antes",
|
||||
"MinutesAfter": "minutos despu\u00e9s",
|
||||
"HeaderWhatsOnTV": "Que hacen ahora",
|
||||
"TabSettings": "Opciones",
|
||||
"ButtonRefreshGuideData": "Actualizar datos de la gu\u00eda",
|
||||
|
@ -708,10 +708,10 @@
|
|||
"PluginTabAppClassic": "Emby Classic",
|
||||
"LabelEpisodeNamePlain": "Nombre del episodio",
|
||||
"LabelSeriesNamePlain": "Nombre de la serie",
|
||||
"ValueSeriesNamePeriod": "Series.name",
|
||||
"ValueSeriesNameUnderscore": "Series_name",
|
||||
"ValueEpisodeNamePeriod": "Episode.name",
|
||||
"ValueEpisodeNameUnderscore": "Episode_name",
|
||||
"ValueSeriesNamePeriod": "Series.nombre",
|
||||
"ValueSeriesNameUnderscore": "Series_nombre",
|
||||
"ValueEpisodeNamePeriod": "Episodio.nombre",
|
||||
"ValueEpisodeNameUnderscore": "Episodio_nombre",
|
||||
"LabelSeasonNumberPlain": "Temporada n\u00famero",
|
||||
"LabelEpisodeNumberPlain": "Episodio n\u00famero",
|
||||
"LabelEndingEpisodeNumberPlain": "N\u00famero del \u00faltimo episodio",
|
||||
|
@ -796,7 +796,7 @@
|
|||
"TabBranding": "Branding",
|
||||
"HeaderBrandingHelp": "Personalice la apariencia de Emby para que se ajuste a las necesidades de su grupo u organizaci\u00f3n.",
|
||||
"LabelLoginDisclaimer": "Login renuncia:",
|
||||
"LabelLoginDisclaimerHelp": "This will be displayed at the bottom of the login page.",
|
||||
"LabelLoginDisclaimerHelp": "Esto se mostrar\u00e1 en la parte inferior de la p\u00e1gina de inicio de sesi\u00f3n.",
|
||||
"OptionList": "Lista",
|
||||
"TabDashboard": "Panel de control",
|
||||
"TitleServer": "Servidor",
|
||||
|
@ -1091,7 +1091,7 @@
|
|||
"HeaderPlayback": "Reproducci\u00f3n de contenido",
|
||||
"OptionAllowAudioPlaybackTranscoding": "Permitir reproducci\u00f3n de audio que requiere transcodificaci\u00f3n",
|
||||
"OptionAllowVideoPlaybackTranscoding": "Permitir reproducci\u00f3n de v\u00eddeo que requiere transcodificaci\u00f3n",
|
||||
"OptionAllowVideoPlaybackRemuxing": "Allow video playback that requires conversion without re-encoding",
|
||||
"OptionAllowVideoPlaybackRemuxing": "Permitir reproducci\u00f3n de v\u00eddeo que requiere conversi\u00f3n sin necesidad de volver a codificar",
|
||||
"OptionAllowMediaPlaybackTranscodingHelp": "Los usuarios recibir\u00e1n un mensaje cuando no pueden reproducir contenido en base a los ajustes.",
|
||||
"TabStreaming": "Transmisi\u00f3n",
|
||||
"LabelRemoteClientBitrateLimit": "L\u00edmite de la transmisi\u00f3n de tasa de bits por internet (Mbps):",
|
||||
|
@ -1177,7 +1177,7 @@
|
|||
"HeaderSetupTVGuide": "Configurar gu\u00eda de TV",
|
||||
"LabelDataProvider": "Proveedor de datos:",
|
||||
"OptionSendRecordingsToAutoOrganize": "Ordenar las grabaciones autom\u00e1ticamente en las carpetas existentes de series en otras bibliotecas",
|
||||
"HeaderDefaultRecordingSettings": "Default Recording Settings",
|
||||
"HeaderDefaultRecordingSettings": "Configuraci\u00f3n predeterminada de grabaci\u00f3n",
|
||||
"OptionEnableRecordingSubfolders": "Crear subcarpetas para categor\u00edas como Deportes, Ni\u00f1os, etc.",
|
||||
"HeaderSubtitles": "Subt\u00edtulos",
|
||||
"HeaderVideos": "V\u00eddeos",
|
||||
|
@ -1291,7 +1291,7 @@
|
|||
"HeaderWelcomeBack": "\u00a1Bienvenido de nuevo!",
|
||||
"ButtonTakeTheTourToSeeWhatsNew": "Da un paseo para ver que hay nuevo",
|
||||
"MessageNoSyncJobsFound": "No se han encontrado trabajos de sincronizaci\u00f3n. Cr\u00e9alos usando los botones de sincronizaci\u00f3n que se encuentran a trav\u00e9s de la interfaz web.",
|
||||
"MessageDownloadsFound": "No offline downloads. Make your media available offline by clicking Make Available Offline throughout the app.",
|
||||
"MessageDownloadsFound": "No hay descargas sin conexi\u00f3n. Haga que sus medios est\u00e9n disponibles sin conexi\u00f3n haciendo clic en Hacer disponible sin conexi\u00f3n en toda la aplicaci\u00f3n.",
|
||||
"HeaderSelectDevices": "Elegir dispositivos",
|
||||
"ButtonCancelItem": "Cancelar \u00edtem",
|
||||
"ButtonQueueForRetry": "En cola para reintentar",
|
||||
|
@ -1429,12 +1429,12 @@
|
|||
"MessageEnsureOpenTuner": "Aseg\u00farese que hay un sintonizador disponible.",
|
||||
"ButtonDashboard": "Panel de control",
|
||||
"ButtonReports": "Informes",
|
||||
"MetadataManager": "Metadata Manager",
|
||||
"MetadataManager": "Administrador de metadatos",
|
||||
"HeaderTime": "Duraci\u00f3n",
|
||||
"LabelAddedOnDate": "A\u00f1adido {0}",
|
||||
"ButtonStart": "Inicio",
|
||||
"OptionBlockOthers": "Otros",
|
||||
"OptionBlockTvShows": "Tv Shows",
|
||||
"OptionBlockTvShows": "Programas TV",
|
||||
"OptionBlockTrailers": "Trailers",
|
||||
"OptionBlockMusic": "M\u00fasica",
|
||||
"OptionBlockMovies": "Pel\u00edculas",
|
||||
|
@ -1505,20 +1505,20 @@
|
|||
"HeaderSelectPlayer": "Elegir reproductor",
|
||||
"HeaderVideoError": "Error de v\u00eddeo",
|
||||
"ButtonViewSeriesRecording": "Ver grabaciones de series",
|
||||
"HeaderSpecials": "Specials",
|
||||
"HeaderSpecials": "Especiales",
|
||||
"HeaderTrailers": "Trailers",
|
||||
"HeaderResolution": "Resolution",
|
||||
"HeaderResolution": "Resoluci\u00f3n",
|
||||
"HeaderRuntime": "Runtime",
|
||||
"HeaderParentalRating": "Parental Rating",
|
||||
"HeaderReleaseDate": "Release date",
|
||||
"HeaderParentalRating": "Calificaci\u00f3n parental",
|
||||
"HeaderReleaseDate": "Fecha de lanzamiento",
|
||||
"HeaderSeries": "Series:",
|
||||
"HeaderSeason": "Season",
|
||||
"HeaderSeasonNumber": "Season number",
|
||||
"HeaderNetwork": "Network",
|
||||
"HeaderYear": "Year:",
|
||||
"HeaderSeason": "Temporada",
|
||||
"HeaderSeasonNumber": "Temporada numero",
|
||||
"HeaderNetwork": "Red",
|
||||
"HeaderYear": "A\u00f1o:",
|
||||
"HeaderGameSystem": "Sistema de juego",
|
||||
"HeaderEmbeddedImage": "Embedded image",
|
||||
"HeaderTrack": "Track",
|
||||
"HeaderEmbeddedImage": "Imagen",
|
||||
"HeaderTrack": "Pista",
|
||||
"OptionCollections": "Colecciones",
|
||||
"OptionSeries": "Series",
|
||||
"OptionSeasons": "Temporadas",
|
||||
|
@ -1528,7 +1528,7 @@
|
|||
"OptionMusicAlbums": "\u00c1lbumes de m\u00fasica",
|
||||
"OptionMusicVideos": "V\u00eddeos de m\u00fasica",
|
||||
"OptionSongs": "Canciones",
|
||||
"OptionHomeVideos": "V\u00eddeos caseros",
|
||||
"OptionHomeVideos": "V\u00eddeos caseros y fotos",
|
||||
"OptionBooks": "Libros",
|
||||
"ButtonUp": "Arriba",
|
||||
"ButtonDown": "Abajo",
|
||||
|
@ -1633,7 +1633,7 @@
|
|||
"MediaInfoLongitude": "Longitud",
|
||||
"MediaInfoShutterSpeed": "Velocidad del obturador",
|
||||
"MediaInfoSoftware": "Software",
|
||||
"HeaderMoreLikeThis": "More Like This",
|
||||
"HeaderMoreLikeThis": "M\u00e1s como esto",
|
||||
"HeaderMovies": "Pel\u00edculas",
|
||||
"HeaderAlbums": "Albums",
|
||||
"HeaderGames": "Juegos",
|
||||
|
@ -1769,7 +1769,7 @@
|
|||
"ButtonServer": "Servidor",
|
||||
"HeaderLibrary": "Biblioteca",
|
||||
"HeaderMedia": "Medios",
|
||||
"NoResultsFound": "No results found.",
|
||||
"NoResultsFound": "No se han encontrado resultados.",
|
||||
"ButtonManageServer": "Administrar servidor",
|
||||
"ButtonPreferences": "Preferencias",
|
||||
"ButtonViewArtist": "Ver artista",
|
||||
|
@ -1779,7 +1779,7 @@
|
|||
"ErrorMessageUsernameInUse": "El usuario ya est\u00e1 en uso. Por favor elige otro nombre e int\u00e9ntalo de nuevo.",
|
||||
"ErrorMessageEmailInUse": "La direcci\u00f3n de correo ya est\u00e1 en uso. Por favor introduce una nueva direcci\u00f3n de correo e int\u00e9ntalo de nuevo, o utiliza la caracter\u00edstica de restablecer contrase\u00f1a.",
|
||||
"MessageThankYouForConnectSignUp": "Gracias por iniciar sesi\u00f3n con Emby Connect. Se te ha enviado un correo con las instrucciones para confirmar tu nueva cuenta. Por favor confirma la cuenta y vuelve aqu\u00ed para iniciar sesi\u00f3n.",
|
||||
"MessageThankYouForConnectSignUpNoValidation": "Thank you for signing up for Emby Connect! You will now be asked to login with your Emby Connect information.",
|
||||
"MessageThankYouForConnectSignUpNoValidation": "Gracias por inscribirse en Emby Connect! Ahora se le pedir\u00e1 que inicie sesi\u00f3n con su informaci\u00f3n de Emby Connect.",
|
||||
"ButtonShare": "Compartir",
|
||||
"HeaderConfirm": "Confirmar",
|
||||
"MessageConfirmDeleteTunerDevice": "\u00bfEst\u00e1s seguro de que quieres borrar este dispositivo?",
|
||||
|
@ -1824,7 +1824,7 @@
|
|||
"ErrorRemovingEmbyConnectAccount": "Ha habido un error quitando la cuenta de Emby Connect. Por favor aseg\u00farate de que tienes una conexi\u00f3n a internet activa e int\u00e9ntalo otra vez.",
|
||||
"ErrorAddingEmbyConnectAccount1": "Ha habido un error a\u00f1adiendo la cuenta de Emby Connect. \u00bfTe has creado una cuenta de Emby primero? Reg\u00edstrate en {0}.",
|
||||
"ErrorAddingEmbyConnectAccount2": "Por favor aseg\u00farate de que la cuenta de Emby ha sido activada siguiendo las instrucciones del correo que se te envi\u00f3 despu\u00e9s de crear tu cuenta. Si no has recibido el correo, por favor m\u00e1ndanos un correo a {0} desde la direcci\u00f3n que has usado para crearte la cuenta de Emby.",
|
||||
"ErrorAddingEmbyConnectAccount3": "The Emby account is already linked to an existing local user. An Emby account can only be linked to one local user at a time.",
|
||||
"ErrorAddingEmbyConnectAccount3": "La cuenta Emby ya est\u00e1 vinculada a un usuario local existente. Una cuenta Emby s\u00f3lo puede enlazarse a un usuario local a la vez.",
|
||||
"HeaderFavoriteArtists": "Artistas favoritos",
|
||||
"HeaderFavoriteSongs": "Canciones favoritas",
|
||||
"HeaderConfirmPluginInstallation": "Confirmar la instalaci\u00f3n del Plugin",
|
||||
|
@ -1849,24 +1849,24 @@
|
|||
"TabResumeSettings": "Ajustes de reanudaci\u00f3n",
|
||||
"DrmChannelsNotImported": "Los canales con DRM no se importar\u00e1n",
|
||||
"LabelAllowHWTranscoding": "Permitir transcodificaci\u00f3n por hardware",
|
||||
"AllowHWTranscodingHelp": "If enabled, allow the tuner to transcode streams on the fly. This may help reduce transcoding required by Emby Server.",
|
||||
"OptionRequirePerfectSubtitleMatch": "Only download subtitles that are a perfect match for my video files",
|
||||
"ErrorAddingGuestAccount1": "There was an error adding the Emby Connect account. Has your guest created an Emby account? They can sign up at {0}.",
|
||||
"ErrorAddingGuestAccount2": "Please ensure your guest has completed activation by following the instructions in the email sent after creating the account. If they did not receive this email then please send an email to {0}, and include your email address as well as theirs.",
|
||||
"GuestUserNotFound": "User not found. Please ensure the name is correct and try again, or try entering their email address.",
|
||||
"Yesterday": "Yesterday",
|
||||
"DownloadImagesInAdvanceWarning": "Downloading all images in advance will result in longer library scan times.",
|
||||
"MetadataSettingChangeHelp": "Changing metadata settings will affect new content that is added going forward. To refresh existing content, open the detail screen and click the refresh button, or perform bulk refreshes using the metadata manager.",
|
||||
"OptionConvertRecordingPreserveAudio": "Preserve original audio when converting recordings (when possible)",
|
||||
"OptionConvertRecordingPreserveAudioHelp": "This will provide better audio but may require transcoding during playback on some devices.",
|
||||
"OptionConvertRecordingPreserveVideo": "Preserve original video when converting recordings",
|
||||
"OptionConvertRecordingPreserveVideoHelp": "This may provide better video quality but will require transcoding during playback on some devices.",
|
||||
"AddItemToCollectionHelp": "Add items to collections by searching for them and using their right-click or tap menus to add them to a collection.",
|
||||
"AllowHWTranscodingHelp": "Si est\u00e1 habilitado, permita que el sintonizador transcodifique secuencias sobre la marcha. Esto puede ayudar a reducir la transcodificaci\u00f3n requerida por Emby Server.",
|
||||
"OptionRequirePerfectSubtitleMatch": "S\u00f3lo descargar subt\u00edtulos que son una combinaci\u00f3n perfecta para mis archivos de v\u00eddeo",
|
||||
"ErrorAddingGuestAccount1": "Se ha producido un error al agregar la cuenta Emby Connect. \u00bfHa creado su invitado una cuenta de Emby? Pueden registrarse en {0}.",
|
||||
"ErrorAddingGuestAccount2": "Aseg\u00farese de que su invitado ha completado la activaci\u00f3n siguiendo las instrucciones del correo electr\u00f3nico enviado despu\u00e9s de crear la cuenta. Si no recibieron este correo electr\u00f3nico, env\u00ede un correo electr\u00f3nico a {0} e incluya su direcci\u00f3n de correo electr\u00f3nico, as\u00ed como la suya.",
|
||||
"GuestUserNotFound": "Usuario no encontrado. Aseg\u00farese de que el nombre es correcto y vuelva a intentarlo o intente ingresar su direcci\u00f3n de correo electr\u00f3nico.",
|
||||
"Yesterday": "Ayer",
|
||||
"DownloadImagesInAdvanceWarning": "Al descargar todas las im\u00e1genes con antelaci\u00f3n, se obtendr\u00e1n tiempos m\u00e1s largos de exploraci\u00f3n de la biblioteca.",
|
||||
"MetadataSettingChangeHelp": "El cambio de la configuraci\u00f3n de metadatos afectar\u00e1 al nuevo contenido que se a\u00f1ada en el futuro. Para actualizar el contenido existente, abra la pantalla de detalles y haga clic en el bot\u00f3n Actualizar o realice actualizaciones masivas utilizando el administrador de metadatos.",
|
||||
"OptionConvertRecordingPreserveAudio": "Conservar el audio original al convertir grabaciones (cuando sea posible)",
|
||||
"OptionConvertRecordingPreserveAudioHelp": "Esto proporcionar\u00e1 un mejor sonido, pero puede requerir transcodificaci\u00f3n durante la reproducci\u00f3n en algunos dispositivos.",
|
||||
"OptionConvertRecordingPreserveVideo": "Conservar el video original al convertir grabaciones",
|
||||
"OptionConvertRecordingPreserveVideoHelp": "Esto puede proporcionar una mejor calidad de video pero requerir\u00e1 transcodificaci\u00f3n durante la reproducci\u00f3n en algunos dispositivos.",
|
||||
"AddItemToCollectionHelp": "Agregue elementos a las colecciones buscando en ellos y utilizando sus men\u00fas con el bot\u00f3n derecho del rat\u00f3n o pulsando en los men\u00fas para agregarlos a una colecci\u00f3n.",
|
||||
"HeaderHealthMonitor": "Health Monitor",
|
||||
"HealthMonitorNoAlerts": "There are no active alerts.",
|
||||
"RecordingPathChangeMessage": "Changing your recording folder will not migrate existing recordings from the old location to the new. You'll need to move them manually if desired.",
|
||||
"VisualLoginFormHelp": "Select a user or sign in manually",
|
||||
"LabelSportsCategories": "Sports categories:",
|
||||
"HealthMonitorNoAlerts": "No hay alertas activas.",
|
||||
"RecordingPathChangeMessage": "Cambiar la carpeta de grabaci\u00f3n no migrar\u00e1 las grabaciones existentes de la ubicaci\u00f3n antigua a la nueva. Tendr\u00e1 que moverlos manualmente si lo desea.",
|
||||
"VisualLoginFormHelp": "Seleccione un usuario o inicie sesi\u00f3n manualmente",
|
||||
"LabelSportsCategories": "Categor\u00edas de deportes:",
|
||||
"XmlTvSportsCategoriesHelp": "Programs with these categories will be displayed as sports programs. Separate multiple with '|'.",
|
||||
"LabelNewsCategories": "News categories:",
|
||||
"XmlTvNewsCategoriesHelp": "Programs with these categories will be displayed as news programs. Separate multiple with '|'.",
|
||||
|
|
|
@ -513,7 +513,7 @@
|
|||
"OptionCopy": "Copy",
|
||||
"OptionMove": "Move",
|
||||
"LabelTransferMethodHelp": "Copy or move files from the watch folder",
|
||||
"HeaderLatestNews": "Leg\u00fajabb H\u00edrek",
|
||||
"HeaderLatestNews": "Friss h\u00edrek",
|
||||
"HeaderRunningTasks": "Fut\u00f3 Folyamatok",
|
||||
"HeaderActiveDevices": "Akt\u00edv Eszk\u00f6z\u00f6k",
|
||||
"HeaderPendingInstallations": "F\u00fcgg\u0151 Telep\u00edt\u00e9sek",
|
||||
|
@ -897,7 +897,7 @@
|
|||
"MessageApplicationUpdated": "Emby Szerver friss\u00edtve",
|
||||
"UserDownloadingItemWithValues": "{0} is downloading {1}",
|
||||
"ProviderValue": "Provider: {0}",
|
||||
"HeaderRecentActivity": "Legut\u00f3bbi Tev\u00e9kenys\u00e9gek",
|
||||
"HeaderRecentActivity": "Legut\u00f3bbi Esem\u00e9nyek",
|
||||
"HeaderPeople": "Emberek",
|
||||
"HeaderDownloadPeopleMetadataFor": "Download biography and images for:",
|
||||
"OptionComposers": "Composers",
|
||||
|
@ -1404,8 +1404,8 @@
|
|||
"LabelPlayMethodDirectPlay": "Direct Playing",
|
||||
"LabelAudioCodec": "Audi\u00f3: {0}",
|
||||
"LabelVideoCodec": "Vide\u00f3: {0}",
|
||||
"LabelLocalAccessUrl": "Bels\u0151 hozz\u00e1f\u00e9r\u00e9s: {0}",
|
||||
"LabelRemoteAccessUrl": "T\u00e1voli hozz\u00e1f\u00e9r\u00e9s: {0}",
|
||||
"LabelLocalAccessUrl": "Helyi (LAN) hozz\u00e1f\u00e9r\u00e9s: {0}",
|
||||
"LabelRemoteAccessUrl": "T\u00e1voli (WAN) hozz\u00e1f\u00e9r\u00e9s: {0}",
|
||||
"LabelRunningOnPort": "A k\u00f6vetkez\u0151 {0} http porton futtatva.",
|
||||
"LabelRunningOnPorts": "A k\u00f6vetkez\u0151 http: {0}, \u00e9s https: {1} porton futtatva.",
|
||||
"HeaderLatestFromChannel": "Latest from {0}",
|
||||
|
|
|
@ -7,10 +7,10 @@
|
|||
"ThisWizardWillGuideYou": "Questa procedura ti guider\u00e0 durante il processo di installazione. Per iniziare, per favore seleziona la tua lingua preferita",
|
||||
"TellUsAboutYourself": "Parlaci di te",
|
||||
"ButtonQuickStartGuide": "Guida rapida",
|
||||
"LabelYourFirstName": "Nome",
|
||||
"MoreUsersCanBeAddedLater": "Puoi aggiungere altri utenti in un secondo momento all'interno del pannello di configurazione",
|
||||
"UserProfilesIntro": "Emby include il supporto integrato per i profili utente, che permette ad ogni utente di avere le proprie impostazioni di visualizzazione, stato di riproduzione e parental control.",
|
||||
"WizardCompleted": "Questo \u00e8 tutto ci\u00f2 che serve per ora. Emby ha iniziato a raccogliere informazioni sulla tua libreria di file multimediali. Scopri alcune delle nostre app, quindi clicca su <b>Fine<\/b> per visualizzare il <b>Pannello di controllo del server<\/b>",
|
||||
"LabelYourFirstName": "Il tuo nome:",
|
||||
"MoreUsersCanBeAddedLater": "Altri utenti possono essere aggiunti in un secondo momento dal Pannello di Controllo.",
|
||||
"UserProfilesIntro": "Emby include il supporto integrato per i profili utente, che permette ad ogni utente di avere le proprie impostazioni di visualizzazione, stato di riproduzione e controlli parentali.",
|
||||
"WizardCompleted": "Questo \u00e8 tutto ci\u00f2 che serve per ora. Emby ha iniziato a raccogliere informazioni sulla tua libreria di media. Scopri alcune delle nostre app, quindi clicca su <b>Fine<\/b> per visualizzare il <b>Pannello di Controllo del server<\/b>.",
|
||||
"LabelConfigureSettings": "Configura le impostazioni",
|
||||
"HeaderTermsOfService": "Termini di servizio di Emby",
|
||||
"MessagePleaseAcceptTermsOfService": "Per favore accetta i termini di servizio e l'informativa sulla privacy prima di continuare.",
|
||||
|
@ -89,7 +89,7 @@
|
|||
"OptionEnableAccessToAllLibraries": "Abilita l'accesso a tutte le librerie",
|
||||
"DeviceAccessHelp": "Questo vale solo per i dispositivi che possono essere identificati in modo univoco e non impedire l'accesso del browser. Filtraggio di accesso al dispositivo dell'utente impedir\u00e0 loro di usare nuovi dispositivi fino a quando non sono state approvate qui.",
|
||||
"LabelDisplayMissingEpisodesWithinSeasons": "Visualizza gli episodi mancanti nelle stagioni",
|
||||
"LabelDisplayMissingEpisodesWithinSeasonsHelp": "This must also be enabled for TV libraries in Emby Server setup.",
|
||||
"LabelDisplayMissingEpisodesWithinSeasonsHelp": "Questo deve anche essere abilitato per le librerie TV nella configurazione del Server Emby.",
|
||||
"LabelUnairedMissingEpisodesWithinSeasons": "Visualizzare episodi mai andati in onda all'interno stagioni",
|
||||
"ImportMissingEpisodesHelp": "If enabled, information about missing episodes will be imported into your Emby database and displayed within seasons and series. This may cause significantly longer library scans.",
|
||||
"HeaderVideoPlaybackSettings": "Impostazioni per la riproduzione di video",
|
||||
|
@ -102,7 +102,7 @@
|
|||
"OptionSmartSubtitlesHelp": "I sottotitoli che corrispondono alle tue preferenze sulla lingua saranno caricati quando la lingua dell'audio \u00e8 straniera.",
|
||||
"OptionOnlyForcedSubtitles": "Solo i sottotitoli forzati",
|
||||
"OptionAlwaysPlaySubtitles": "Visualizza sempre i sottotitoli",
|
||||
"OptionDefaultSubtitlesHelp": "Subtitles are loaded based on the default and forced flags in the embedded metadata. Language preferences are considered when multiple options are available.",
|
||||
"OptionDefaultSubtitlesHelp": "I sottotitoli vengono letti in base agli attributi predefiniti e forzati dei metadata embedded. Le preferenze di linguaggio sono prese in considerazione quando sono disponibili pi\u00f9 opzioni.",
|
||||
"OptionOnlyForcedSubtitlesHelp": "Solo i sottotitoli contrassegnati come forzati saranno caricati.",
|
||||
"OptionAlwaysPlaySubtitlesHelp": "I sottotitoli corrispondenti alla lingua preferita saranno caricati a prescindere dalla lingua dell'audio.",
|
||||
"OptionNoSubtitlesHelp": "I sottotitoli non verranno caricati di default.",
|
||||
|
@ -135,7 +135,7 @@
|
|||
"TabGenres": "Generi",
|
||||
"TabNetworks": "Reti",
|
||||
"HeaderUsers": "Utenti",
|
||||
"HeaderFilters": "Filters",
|
||||
"HeaderFilters": "Filtri",
|
||||
"ButtonFilter": "Filtro",
|
||||
"OptionFavorite": "Preferiti",
|
||||
"OptionLikes": "Belli",
|
||||
|
@ -146,7 +146,7 @@
|
|||
"OptionWriters": "Sceneggiatori",
|
||||
"OptionProducers": "Produttori",
|
||||
"HeaderResume": "Riprendi",
|
||||
"HeaderContinueWatching": "Continue Watching",
|
||||
"HeaderContinueWatching": "Riprendi la Riproduzione",
|
||||
"HeaderNextUp": "Prossimo",
|
||||
"NoNextUpItemsMessage": "Trovato niente. Inizia a guardare i tuoi programmi!",
|
||||
"HeaderLatestEpisodes": "Ultimi Episodi Aggiunti",
|
||||
|
@ -291,9 +291,9 @@
|
|||
"ButtonSelectDirectory": "Seleziona cartella",
|
||||
"LabelCachePath": "Percorso Cache:",
|
||||
"LabelCachePathHelp": "Specificare un percorso personalizzato per i file della cache del server, ad esempio immagini. Lasciare vuoto per usare il server predefinito.",
|
||||
"LabelRecordingPath": "Default recording path:",
|
||||
"LabelMovieRecordingPath": "Movie recording path (optional):",
|
||||
"LabelSeriesRecordingPath": "Series recording path (optional):",
|
||||
"LabelRecordingPath": "Percorso di registrazione predefinito:",
|
||||
"LabelMovieRecordingPath": "Percorso di registrazione film (opzionale):",
|
||||
"LabelSeriesRecordingPath": "Percorso di registrazione serie (opzionale):",
|
||||
"LabelRecordingPathHelp": "Specify the default location to save recordings. If left empty, the server's program data folder will be used.",
|
||||
"LabelMetadataPath": "Percorso dei file con i metadati:",
|
||||
"LabelMetadataPathHelp": "Specificare un percorso personalizzato per le immagini e i metadati scaricati.",
|
||||
|
@ -328,8 +328,8 @@
|
|||
"ButtonCancelRecording": "Annulla la registrazione",
|
||||
"LabelStartWhenPossible": "Start when possible:",
|
||||
"LabelStopWhenPossible": "Stop when possible:",
|
||||
"MinutesBefore": "minutes before",
|
||||
"MinutesAfter": "minutes after",
|
||||
"MinutesBefore": "minuti prima",
|
||||
"MinutesAfter": "minuti dopo",
|
||||
"HeaderWhatsOnTV": "Cosa c'\u00e8",
|
||||
"TabSettings": "Impostazioni",
|
||||
"ButtonRefreshGuideData": "Aggiorna la guida",
|
||||
|
@ -370,7 +370,7 @@
|
|||
"LabelMaxBackdropsPerItem": "Massimo numero di sfondi per oggetto:",
|
||||
"LabelMaxScreenshotsPerItem": "Massimo numero di foto per oggetto:",
|
||||
"LabelMinBackdropDownloadWidth": "Massima larghezza sfondo:",
|
||||
"LabelMinScreenshotDownloadWidth": "Minima larghezza foto:",
|
||||
"LabelMinScreenshotDownloadWidth": "Larghezza minima screenshot scaricati:",
|
||||
"ButtonAddScheduledTaskTrigger": "Aggiungi operazione",
|
||||
"HeaderAddScheduledTaskTrigger": "Aggiungi operazione",
|
||||
"ButtonAdd": "Aggiungi",
|
||||
|
@ -481,7 +481,7 @@
|
|||
"LabelFailed": "Fallito",
|
||||
"LabelSkipped": "Saltato",
|
||||
"LabelSeries": "Serie:",
|
||||
"LabelSeasonNumber": "Season number:",
|
||||
"LabelSeasonNumber": "Numero stagione:",
|
||||
"LabelEpisodeNumber": "Numero espisodio:",
|
||||
"LabelEndingEpisodeNumber": "Numero ultimo episodio:",
|
||||
"LabelEndingEpisodeNumberHelp": "Richiesto solo se ci sono pi\u00f9 file per espisodio",
|
||||
|
@ -774,7 +774,7 @@
|
|||
"OptionLatestTvRecordings": "Ultime registrazioni",
|
||||
"LabelProtocolInfo": "Info protocollo:",
|
||||
"LabelProtocolInfoHelp": "Il valore che verr\u00e0 utilizzato quando si risponde a richieste GetProtocolInfo dal dispositivo.",
|
||||
"TabNfoSettings": "Nfo Settings",
|
||||
"TabNfoSettings": "Impostazioni nfo",
|
||||
"HeaderKodiMetadataHelp": "Emby includes native support for Nfo metadata files. To enable or disable Nfo metadata, use the Services tab to configure options for your media types.",
|
||||
"LabelKodiMetadataUser": "Sincronizza i dati utente a nfo di per:",
|
||||
"LabelKodiMetadataUserHelp": "Abilita questa opzione per mantenere i dati di orologio sincronizzati tra il Server Emby e i file NFO.",
|
||||
|
@ -1183,7 +1183,7 @@
|
|||
"HeaderVideos": "Video",
|
||||
"LabelHardwareAccelerationType": "Hardware acceleration:",
|
||||
"LabelHardwareAccelerationTypeHelp": "Available on supported systems only.",
|
||||
"ButtonServerDashboard": "Server Dashboard",
|
||||
"ButtonServerDashboard": "Pannello di Controllo del Server",
|
||||
"HeaderAdmin": "Admin",
|
||||
"ButtonSignOut": "Esci",
|
||||
"HeaderCameraUpload": "Caricamenti Fotocamera",
|
||||
|
@ -1285,7 +1285,7 @@
|
|||
"MessageItemsAdded": "Oggetti aggiunti",
|
||||
"HeaderSelectCertificatePath": "Seleziona il percorso del Certificato",
|
||||
"HeaderSupporterBenefit": "An active Emby Premiere subscription provides additional benefits such as access to sync, premium plugins, internet channel content, and more. {0}Learn more{1}.",
|
||||
"HeaderWelcomeToProjectServerDashboard": "Benvenuto nel Pannello di controllo del Server Emby",
|
||||
"HeaderWelcomeToProjectServerDashboard": "Benvenuto nel Pannello di Controllo del Server Emby",
|
||||
"HeaderWelcomeToProjectWebClient": "Benvenuto in Emby",
|
||||
"ButtonTakeTheTour": "Fai una visita",
|
||||
"HeaderWelcomeBack": "Ben tornato!",
|
||||
|
@ -1338,7 +1338,7 @@
|
|||
"HeaderConfirmSeriesCancellation": "Conferma cancellazione serie",
|
||||
"HeaderConfirmRecordingDeletion": "Conferma cancellazione registrazione",
|
||||
"MessageRecordingSaved": "Salvataggio registrazione",
|
||||
"OptionWeekend": "weekend",
|
||||
"OptionWeekend": "Weekend",
|
||||
"OptionWeekday": "Giorni feriali",
|
||||
"MessageConfirmPathSubstitutionDeletion": "Sei sicuro di voler cancellare questa sostituzione percorso?",
|
||||
"LiveTvUpdateAvailable": "(Aggiornamento disponibile)",
|
||||
|
@ -1427,7 +1427,7 @@
|
|||
"HeaderVideoQuality": "Qualit\u00e0 video",
|
||||
"MessageErrorPlayingVideo": "Si \u00e8 verificato un errore nella riproduzione del video.",
|
||||
"MessageEnsureOpenTuner": "Si prega di assicurarsi che ci sia un sintonizzatore disponibile.",
|
||||
"ButtonDashboard": "Pannello",
|
||||
"ButtonDashboard": "Pannello Controllo",
|
||||
"ButtonReports": "Report",
|
||||
"MetadataManager": "Metadata Manager",
|
||||
"HeaderTime": "Tempo",
|
||||
|
@ -1698,17 +1698,17 @@
|
|||
"WebClientTourMobile2": "e controlla facilmente altri dispositivi e app Emby",
|
||||
"WebClientTourMySync": "Sincronizza il tuo personal media per i dispositivi per la visualizzazione offline.",
|
||||
"MessageEnjoyYourStay": "Godetevi il vostro soggiorno",
|
||||
"DashboardTourDashboard": "Il pannello di controllo del server consente di monitorare il vostro server e gli utenti. Potrai sempre sapere chi sta facendo cosa e dove sono.",
|
||||
"DashboardTourHelp": "In-app help offre pulsanti facili da aprire le pagine wiki relative al contenuto sullo schermo.",
|
||||
"DashboardTourUsers": "Facile creazione di account utente per i vostri amici e la famiglia, ognuno con le proprie autorizzazioni, accesso alla libreria, controlli parentali e altro ancora.",
|
||||
"DashboardTourCinemaMode": "Modalit\u00e0 Cinema porta l'esperienza del teatro direttamente nel tuo salotto con la possibilit\u00e0 di giocare trailer e intro personalizzati prima la caratteristica principale.",
|
||||
"DashboardTourChapters": "Abilita capitolo generazione di immagini per i vostri video per una presentazione pi\u00f9 gradevole durante la visualizzazione.",
|
||||
"DashboardTourSubtitles": "Scaricare automaticamente i sottotitoli per i tuoi video in qualsiasi lingua.",
|
||||
"DashboardTourPlugins": "Installare il plugin come canali internet video, live tv, scanner metadati e altro ancora.",
|
||||
"DashboardTourNotifications": "Inviare automaticamente notifiche di eventi server al vostro dispositivo mobile, e-mail e altro ancora.",
|
||||
"DashboardTourScheduledTasks": "Gestire facilmente le operazioni di lunga esecuzione con le operazioni pianificate. Decidere quando corrono, e con quale frequenza.",
|
||||
"DashboardTourMobile": "Il Pannello di Controllo del Server Emby funziona bene su smartphone e tablet. Gestisci il tuo server con il palmo della tua mano, quando vuoi, dove vuoi",
|
||||
"DashboardTourSync": "Sincronizza il tuo personal media per i dispositivi per la visualizzazione offline.",
|
||||
"DashboardTourDashboard": "Il pannello di controllo del server consente di monitorare il server e gli utenti. Potrai sempre sapere chi sta facendo cosa e da dove.",
|
||||
"DashboardTourHelp": "L'aiuto integrato offre semplici pulsanti per aprire le pagine wiki relative al contenuto sullo schermo.",
|
||||
"DashboardTourUsers": "Crea facilmente account utente per i tuoi amici e la famiglia, ognuno con le proprie autorizzazioni, accesso alla libreria, controlli parentali ed altro ancora.",
|
||||
"DashboardTourCinemaMode": "Modalit\u00e0 Cinema porta l'esperienza del teatro direttamente nel tuo salotto con la possibilit\u00e0 di riprodurre trailer ed intro personalizzate prima del contenuto principale.",
|
||||
"DashboardTourChapters": "Abilita la generazione immagini di capitolo per i tuoi video per una presentazione pi\u00f9 gradevole durante la visione.",
|
||||
"DashboardTourSubtitles": "Scarica automaticamente i sottotitoli per i tuoi video in tutte le lingue.",
|
||||
"DashboardTourPlugins": "Installa plug-in come canali video Internet, tv live, scanner di metadati ed altro ancora.",
|
||||
"DashboardTourNotifications": "Invia automaticamente notifiche di eventi server al tuo dispositivo mobile, e-mail o altro.",
|
||||
"DashboardTourScheduledTasks": "Gestisci facilmente le operazioni di lunga durata con le operazioni pianificate. Decidi quando eseguirle e con quale frequenza.",
|
||||
"DashboardTourMobile": "Il pannello di controllo del Server Emby funziona bene anche su smartphone e tablet. Gestisci il tuo server dal palmo della tua mano, quando vuoi, dove vuoi.",
|
||||
"DashboardTourSync": "Sincronizza i tuoi media con i tuoi dispositivi per vederli offline.",
|
||||
"TabExtras": "Extra",
|
||||
"HeaderUploadImage": "Carica immagine",
|
||||
"DeviceLastUsedByUserName": "Ultimo utilizzata da {0}",
|
||||
|
@ -1774,7 +1774,7 @@
|
|||
"ButtonPreferences": "Preferenze",
|
||||
"ButtonViewArtist": "Visualizza artista",
|
||||
"ButtonViewAlbum": "Visualizza album",
|
||||
"ButtonEditImages": "Edit images",
|
||||
"ButtonEditImages": "Modifica Immagini",
|
||||
"ErrorMessagePasswordNotMatchConfirm": "La password e la password di conferma devono corrispondere.",
|
||||
"ErrorMessageUsernameInUse": "L' username \u00e8 gi\u00e0 usato. Per favore scegli un nuovo nome e riprova.",
|
||||
"ErrorMessageEmailInUse": "L'indirizzo email \u00e8 gi\u00e0 usato.Per favore inserisci un nuovo indirizzo email e riprova, o usa la funzione password dimenticata.",
|
||||
|
@ -1889,7 +1889,7 @@
|
|||
"DownloadFFmpeg": "Download FFmpeg",
|
||||
"FFmpegSuggestedDownload": "Suggested download: {0}",
|
||||
"UnzipFFmpegFile": "Unzip the downloaded file to a folder of your choice.",
|
||||
"OptionUseSystemInstalledVersion": "Use system installed version",
|
||||
"OptionUseSystemInstalledVersion": "Usa versione installata nel sistema",
|
||||
"OptionUseMyCustomVersion": "Use a custom version",
|
||||
"FFmpegSavePathNotFound": "We're unable to locate FFmpeg using the path you've entered. FFprobe is also required and must exist in the same folder. These components are normally bundled together in the same download. Please check the path and try again.",
|
||||
"XmlTvPremiere": "By default, Emby will import {0} hours of guide data. Importing unlimited data requires an active Emby Premiere subscription.",
|
||||
|
|
|
@ -89,11 +89,11 @@
|
|||
"OptionEnableAccessToAllLibraries": "\u0411\u0430\u0440\u043b\u044b\u049b \u0442\u0430\u0441\u044b\u0493\u044b\u0448\u0445\u0430\u043d\u0430\u043b\u0430\u0440\u0493\u0430 \u049b\u0430\u0442\u044b\u043d\u0430\u0443\u0434\u044b \u049b\u043e\u0441\u0443",
|
||||
"DeviceAccessHelp": "\u0411\u04b1\u043b \u0442\u0435\u043a \u049b\u0430\u043d\u0430 \u0431\u0456\u0440\u0435\u0433\u0435\u0439 \u0430\u043d\u044b\u049b\u0442\u0430\u043b\u0443\u044b \u043c\u04af\u043c\u043a\u0456\u043d \u049b\u04b1\u0440\u044b\u043b\u0493\u044b\u043b\u0430\u0440 \u04af\u0448\u0456\u043d \u049b\u043e\u043b\u0434\u0430\u043d\u044b\u043b\u0430\u0434\u044b \u0436\u04d9\u043d\u0435 \u0448\u043e\u043b\u0493\u044b\u0448\u043f\u0435\u043d \u049b\u0430\u043d\u0442\u044b\u043d\u0430\u0443\u0493\u0430 \u0442\u044b\u0439\u044b\u043c \u0441\u0430\u043b\u043c\u0430\u0439\u0434\u044b. \u041f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0448\u044b \u049b\u04b1\u0440\u044b\u043b\u0493\u044b\u0441\u044b\u043d\u0430\u043d \u049b\u0430\u0442\u044b\u043d\u0430\u0443\u0434\u044b \u0441\u04af\u0437\u0433\u0456\u043b\u0435\u0443\u0456 \u0436\u0430\u04a3\u0430 \u049b\u04b1\u0440\u044b\u043b\u0493\u044b\u043b\u0430\u0440\u0434\u044b \u043c\u04b1\u043d\u0434\u0430 \u0431\u0435\u043a\u0456\u0442\u0456\u043b\u0433\u0435\u043d\u0448\u0435 \u0434\u0435\u0439\u0456\u043d \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u0443\u0493\u0430 \u0442\u044b\u0439\u044b\u043c \u0441\u0430\u043b\u0430\u0434\u044b.",
|
||||
"LabelDisplayMissingEpisodesWithinSeasons": "\u0416\u043e\u049b \u0431\u04e9\u043b\u0456\u043c\u0434\u0435\u0440\u0434\u0456 \u043c\u0430\u0443\u0441\u044b\u043c \u0456\u0448\u0456\u043d\u0434\u0435 \u0431\u0435\u0439\u043d\u0435\u043b\u0435\u0443",
|
||||
"LabelDisplayMissingEpisodesWithinSeasonsHelp": "This must also be enabled for TV libraries in Emby Server setup.",
|
||||
"LabelDisplayMissingEpisodesWithinSeasonsHelp": "\u0411\u04b1\u043b \u0441\u043e\u043d\u0434\u0430\u0439-\u0430\u049b Emby Server \u043e\u0440\u043d\u0430\u0442\u0443\u044b\u043d\u0434\u0430\u0493\u044b \u0422\u0414 \u0442\u0430\u0441\u044b\u0493\u044b\u0448\u0445\u0430\u043d\u0430\u043b\u0430\u0440\u044b \u04af\u0448\u0456\u043d \u049b\u043e\u0441\u0443\u043b\u044b \u0431\u043e\u043b\u0443\u044b \u043a\u0435\u0440\u0435\u043a.",
|
||||
"LabelUnairedMissingEpisodesWithinSeasons": "\u041a\u04e9\u0440\u0441\u0435\u0442\u0456\u043b\u043c\u0435\u0433\u0435\u043d \u0431\u04e9\u043b\u0456\u043c\u0434\u0435\u0440\u0434\u0456 \u043c\u0430\u0443\u0441\u044b\u043c \u0456\u0448\u0456\u043d\u0434\u0435 \u0431\u0435\u0439\u043d\u0435\u043b\u0435\u0443",
|
||||
"ImportMissingEpisodesHelp": "If enabled, information about missing episodes will be imported into your Emby database and displayed within seasons and series. This may cause significantly longer library scans.",
|
||||
"ImportMissingEpisodesHelp": "\u0415\u0433\u0435\u0440 \u049b\u043e\u0441\u044b\u043b\u0493\u0430\u043d \u0431\u043e\u043b\u0441\u0430, \u0436\u043e\u049b \u044d\u043f\u0438\u0437\u043e\u0434\u0442\u0430\u0440 \u0442\u0443\u0440\u0430\u043b\u044b \u0430\u049b\u043f\u0430\u0440\u0430\u0442 \u0441\u0456\u0437\u0434\u0456\u04a3 Emby \u0434\u0435\u0440\u0435\u043a\u049b\u043e\u0440\u0493\u0430 \u04d9\u043a\u0435\u043b\u0456\u043d\u0435\u0434\u0456 \u0436\u04d9\u043d\u0435 \u043c\u0430\u0443\u0441\u044b\u043c\u0434\u0430\u0440 \u043c\u0435\u043d \u0442\u0435\u043b\u0435\u0445\u0438\u043a\u0430\u044f\u043b\u0430\u0440 \u0430\u044f\u0441\u044b\u043d\u0434\u0430 \u043f\u0430\u0439\u0434\u0430 \u0431\u043e\u043b\u0430\u0434\u044b. \u0422\u0430\u0441\u044b\u0493\u044b\u0448\u0445\u0430\u043d\u0430 \u0441\u043a\u0430\u043d\u0435\u0440\u043b\u0435\u0443\u0434\u0435 \u0431\u04b1\u043b \u0430\u0439\u0442\u0430\u0440\u043b\u044b\u049b\u0442\u0430\u0439 \u04b1\u0437\u0430\u049b \u0443\u0430\u049b\u044b\u0442 \u0430\u043b\u0443\u044b \u043c\u04af\u043c\u043a\u0456\u043d.",
|
||||
"HeaderVideoPlaybackSettings": "\u0411\u0435\u0439\u043d\u0435 \u043e\u0439\u043d\u0430\u0442\u0443 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043b\u0435\u0440\u0456",
|
||||
"OptionDownloadInternetMetadataTvPrograms": "Download internet metadata for programs listed in the guide",
|
||||
"OptionDownloadInternetMetadataTvPrograms": "\u0422\u0435\u043b\u0435\u0433\u0438\u0434\u0442\u0435\u0433\u0456 \u0442\u0456\u0437\u0456\u043c\u0434\u0435\u043b\u0433\u0435\u043d \u0431\u0435\u0440\u0456\u043b\u0456\u043c\u0434\u0435\u0440 \u04af\u0448\u0456\u043d \u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0442\u0435\u043d \u043c\u0435\u0442\u0430\u0434\u0435\u0440\u0435\u043a\u0442\u0435\u0440\u0434\u0456 \u0436\u04af\u043a\u0442\u0435\u043f \u0430\u043b\u0443",
|
||||
"HeaderPlaybackSettings": "\u041e\u0439\u043d\u0430\u0442\u0443 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043b\u0435\u0440\u0456",
|
||||
"LabelAudioLanguagePreference": "\u0414\u044b\u0431\u044b\u0441 \u0442\u0456\u043b\u0456\u043d\u0456\u04a3 \u0442\u0435\u04a3\u0448\u0435\u043b\u0456\u043c\u0456:",
|
||||
"LabelSubtitleLanguagePreference": "\u0421\u0443\u0431\u0442\u0438\u0442\u0440 \u0442\u0456\u043b\u0456\u043d\u0456\u04a3 \u0442\u0435\u04a3\u0448\u0435\u043b\u0456\u043c\u0456:",
|
||||
|
@ -326,10 +326,10 @@
|
|||
"TabFavorites": "\u0422\u0430\u04a3\u0434\u0430\u0443\u043b\u044b\u043b\u0430\u0440",
|
||||
"TabMyLibrary": "\u041c\u0435\u043d\u0456\u04a3 \u0442\u0430\u0441\u044b\u0493\u044b\u0448\u0445\u0430\u043d\u0430\u043c",
|
||||
"ButtonCancelRecording": "\u0416\u0430\u0437\u0431\u0430\u043d\u044b \u0431\u043e\u043b\u0434\u044b\u0440\u043c\u0430\u0443",
|
||||
"LabelStartWhenPossible": "Start when possible:",
|
||||
"LabelStopWhenPossible": "Stop when possible:",
|
||||
"MinutesBefore": "minutes before",
|
||||
"MinutesAfter": "minutes after",
|
||||
"LabelStartWhenPossible": "\u041c\u04af\u043c\u043a\u0456\u043d\u0434\u0456\u043a \u0431\u043e\u043b\u0493\u0430\u043d\u0434\u0430 \u0431\u0430\u0441\u0442\u0430\u0443:",
|
||||
"LabelStopWhenPossible": "\u041c\u04af\u043c\u043a\u0456\u043d\u0434\u0456\u043a \u0431\u043e\u043b\u0493\u0430\u043d\u0434\u0430 \u0442\u043e\u049b\u0442\u0430\u0442\u0443:",
|
||||
"MinutesBefore": "\u043c\u0438\u043d\u04e9\u0442 \u0430\u043b\u0434\u044b\u043d\u0434\u0430",
|
||||
"MinutesAfter": "\u043c\u0438\u043d\u04e9\u0442 \u0441\u043e\u04a3\u044b\u04a3\u0434\u0430",
|
||||
"HeaderWhatsOnTV": "\u042d\u0444\u0438\u0440\u0434\u0435",
|
||||
"TabSettings": "\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043b\u0435\u0440",
|
||||
"ButtonRefreshGuideData": "\u0422\u0435\u043b\u0435\u0433\u0438\u0434 \u0434\u0435\u0440\u0435\u043a\u0442\u0435\u0440\u0456\u043d \u0436\u0430\u04a3\u0493\u044b\u0440\u0442\u0443",
|
||||
|
@ -1177,7 +1177,7 @@
|
|||
"HeaderSetupTVGuide": "\u0422\u0435\u043b\u0435\u0433\u0438\u0434\u0442\u0456 \u043e\u0440\u043d\u0430\u0442\u0443 \u0436\u04d9\u043d\u0435 \u0442\u0435\u04a3\u0448\u0435\u0443",
|
||||
"LabelDataProvider": "\u0414\u0435\u0440\u0435\u043a\u0442\u0435\u0440 \u0436\u0435\u0442\u043a\u0456\u0437\u0443\u0448\u0456\u0441\u0456:",
|
||||
"OptionSendRecordingsToAutoOrganize": "\u0416\u0430\u0437\u0431\u0430\u043b\u0430\u0440 \u0431\u0430\u0441\u049b\u0430 \u043a\u0456\u0442\u0430\u043f\u0445\u0430\u043d\u0430\u043b\u0430\u0440\u0434\u0430\u0493\u044b \u049b\u043e\u043b\u0434\u0430\u043d\u044b\u0441\u0442\u0430 \u0431\u043e\u043b\u0493\u0430\u043d \u0442\u0435\u043b\u0435\u0445\u0438\u043a\u0430\u044f \u049b\u0430\u043b\u0442\u0430\u043b\u0430\u0440\u044b\u043d\u0430 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0442\u044b \u0442\u04af\u0440\u0434\u0435 \u04b1\u0439\u044b\u043c\u0434\u0430\u0441\u0442\u044b\u0440\u044b\u043b\u0430\u0434\u044b",
|
||||
"HeaderDefaultRecordingSettings": "Default Recording Settings",
|
||||
"HeaderDefaultRecordingSettings": "\u0416\u0430\u0437\u0431\u0430\u043b\u0430\u0440\u0434\u044b\u04a3 \u04d9\u0434\u0435\u043f\u043a\u0456 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043b\u0435\u0440\u0456",
|
||||
"OptionEnableRecordingSubfolders": "\u0421\u043f\u043e\u0440\u0442, \u0411\u0430\u043b\u0430\u043b\u0430\u0440\u0493\u0430 \u0436\u04d9\u043d\u0435 \u0442.\u0431. \u0441\u043e\u043d\u0434\u0430\u0439-\u0430\u049b \u0441\u0430\u043d\u0430\u0442\u0442\u0430\u0440 \u04af\u0448\u0456\u043d \u0456\u0448\u043a\u0456 \u049b\u0430\u043b\u0442\u0430\u043b\u0430\u0440 \u0436\u0430\u0441\u0430\u043b\u0430\u0434\u044b",
|
||||
"HeaderSubtitles": "\u0421\u0443\u0431\u0442\u0438\u0442\u0440\u043b\u0435\u0440",
|
||||
"HeaderVideos": "\u0411\u0435\u0439\u043d\u0435\u043b\u0435\u0440",
|
||||
|
@ -1404,8 +1404,8 @@
|
|||
"LabelPlayMethodDirectPlay": "\u0422\u0456\u043a\u0435\u043b\u0435\u0439 \u043e\u0439\u043d\u0430\u0442\u0443\u0434\u0430",
|
||||
"LabelAudioCodec": "\u0414\u044b\u0431\u044b\u0441: {0}",
|
||||
"LabelVideoCodec": "\u0411\u0435\u0439\u043d\u0435: {0}",
|
||||
"LabelLocalAccessUrl": "\u04ae\u0439\u0434\u0435\u0433\u0456 \u049b\u0430\u0442\u044b\u043d\u0430\u0443: {0}",
|
||||
"LabelRemoteAccessUrl": "\u049a\u0430\u0448\u044b\u049b\u0442\u0430\u043d \u049b\u0430\u0442\u044b\u043d\u0430\u0443: {0}",
|
||||
"LabelLocalAccessUrl": "\u04ae\u0439\u0434\u0435\u0433\u0456 (LAN) \u049b\u0430\u0442\u044b\u043d\u0430\u0443: {0}",
|
||||
"LabelRemoteAccessUrl": "\u049a\u0430\u0448\u044b\u049b\u0442\u0430\u043d (WAN) \u049b\u0430\u0442\u044b\u043d\u0430\u0443: {0}",
|
||||
"LabelRunningOnPort": "{0} http-\u043f\u043e\u0440\u0442\u044b\u043d\u0434\u0430 \u0436\u04b1\u043c\u044b\u0441 \u0456\u0441\u0442\u0435\u0439\u0434\u0456.",
|
||||
"LabelRunningOnPorts": "{0} http-\u043f\u043e\u0440\u0442\u044b\u043d\u0434\u0430 \u0436\u04d9\u043d\u0435 {1} https-\u043f\u043e\u0440\u0442\u044b\u043d\u0434\u0430 \u0436\u04b1\u043c\u044b\u0441 \u0456\u0441\u0442\u0435\u0439\u0434\u0456.",
|
||||
"HeaderLatestFromChannel": "\u0415\u04a3 \u043a\u0435\u0439\u0456\u043d\u0433\u0456 {0}",
|
||||
|
@ -1933,8 +1933,8 @@
|
|||
"LatestFromLibrary": "\u0415\u04a3 \u043a\u0435\u0439\u0456\u043d\u0433\u0456 {0}",
|
||||
"LabelMoviePrefix": "\u0424\u0438\u043b\u044c\u043c \u043f\u0440\u0435\u0444\u0438\u043a\u0441\u0456:",
|
||||
"LabelMoviePrefixHelp": "\u0415\u0433\u0435\u0440 \u0444\u0438\u043b\u044c\u043c\u0434\u0435\u0440\u0434\u0456\u04a3 \u0430\u0442\u0430\u0443\u044b\u043d\u0434\u0430 \u043f\u0440\u0435\u0444\u0438\u043a\u0441 \u049b\u043e\u043b\u0434\u0430\u043d\u044b\u043b\u0441\u0430, Emby \u0434\u04b1\u0440\u044b\u0441 \u04e9\u04a3\u0434\u0435\u0439 \u0430\u043b\u0443 \u04af\u0448\u0456\u043d \u0431\u04b1\u043d\u044b \u043c\u04b1\u043d\u0434\u0430 \u0435\u043d\u0433\u0456\u0437\u0456\u04a3\u0456\u0437.",
|
||||
"HeaderRecordingPostProcessing": "Recording Post Processing",
|
||||
"LabelPostProcessorArguments": "Post-processor command line arguments:",
|
||||
"LabelPostProcessorArgumentsHelp": "Use {path} as the path to the recording file.",
|
||||
"LabelPostProcessor": "Post-processing application:"
|
||||
"HeaderRecordingPostProcessing": "\u0416\u0430\u0437\u0431\u0430\u043d\u044b \u043a\u0435\u0439\u0456\u043d\u0433\u0456 \u04e9\u04a3\u0434\u0435\u0443",
|
||||
"LabelPostProcessorArguments": "\u041f\u043e\u0441\u0442-\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 \u043f\u04d9\u0440\u043c\u0435\u043d \u0436\u043e\u043b\u044b\u043d\u044b\u04a3 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u0442\u0435\u0440\u0456:",
|
||||
"LabelPostProcessorArgumentsHelp": "\u0416\u0430\u0437\u044b\u043b\u0430\u0442\u044b\u043d \u0444\u0430\u0439\u043b \u0436\u043e\u043b\u044b \u0435\u0441\u0435\u0431\u0456\u043d\u0434\u0435 {path} \u043f\u0430\u0439\u0434\u0430\u043b\u0430\u043d\u044b\u04a3\u044b\u0437.",
|
||||
"LabelPostProcessor": "\u041a\u0435\u0439\u0456\u043d\u0433\u0456 \u04e9\u04a3\u0434\u0435\u0443 \u049b\u043e\u043b\u0434\u0430\u043d\u0431\u0430\u0441\u044b:"
|
||||
}
|
1940
dashboard-ui/strings/lt-LT.json
Normal file
1940
dashboard-ui/strings/lt-LT.json
Normal file
File diff suppressed because it is too large
Load diff
|
@ -89,11 +89,11 @@
|
|||
"OptionEnableAccessToAllLibraries": "\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a\u043e \u0432\u0441\u0435\u043c \u043c\u0435\u0434\u0438\u0430\u0442\u0435\u043a\u0430\u043c",
|
||||
"DeviceAccessHelp": "\u042d\u0442\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u043c\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u043a \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0440\u0430\u0441\u043f\u043e\u0437\u043d\u0430\u0432\u0430\u0435\u043c\u044b \u043e\u0434\u043d\u043e\u0437\u043d\u0430\u0447\u043d\u043e, \u0438 \u043d\u0435 \u0437\u0430\u043f\u0440\u0435\u0449\u0430\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f \u0441 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430. \u0424\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u043f\u0440\u0435\u043f\u044f\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0438\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043d\u043e\u0432\u044b\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u0434\u043e \u0442\u0435\u0445 \u043f\u043e\u0440, \u043f\u043e\u043a\u0430 \u043e\u043d\u0438 \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u0442 \u0437\u0434\u0435\u0441\u044c \u043e\u0434\u043e\u0431\u0440\u0435\u043d\u0438\u0435.",
|
||||
"LabelDisplayMissingEpisodesWithinSeasons": "\u041e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u044d\u043f\u0438\u0437\u043e\u0434\u044b \u0432 \u043f\u0440\u0435\u0434\u0435\u043b\u0430\u0445 \u0441\u0435\u0437\u043e\u043d\u043e\u0432",
|
||||
"LabelDisplayMissingEpisodesWithinSeasonsHelp": "This must also be enabled for TV libraries in Emby Server setup.",
|
||||
"LabelDisplayMissingEpisodesWithinSeasonsHelp": "\u042d\u0442\u043e \u0442\u0430\u043a\u0436\u0435 \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u043e \u0434\u043b\u044f \u0422\u0412-\u043c\u0435\u0434\u0438\u0430\u0442\u0435\u043a \u043f\u0440\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0435 \u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0435 Emby Server.",
|
||||
"LabelUnairedMissingEpisodesWithinSeasons": "\u041e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c \u043e\u0436\u0438\u0434\u0430\u0435\u043c\u044b\u0435 \u044d\u043f\u0438\u0437\u043e\u0434\u044b \u0432 \u043f\u0440\u0435\u0434\u0435\u043b\u0430\u0445 \u0441\u0435\u0437\u043e\u043d\u043e\u0432",
|
||||
"ImportMissingEpisodesHelp": "If enabled, information about missing episodes will be imported into your Emby database and displayed within seasons and series. This may cause significantly longer library scans.",
|
||||
"ImportMissingEpisodesHelp": "\u041f\u0440\u0438 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0438, \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e\u0431 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0438\u0445 \u044d\u043f\u0438\u0437\u043e\u0434\u0430\u0445 \u0431\u0443\u0434\u0435\u0442 \u0438\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0430 \u0432 \u0432\u0430\u0448\u0443 \u0431\u0430\u0437\u0443 \u0434\u0430\u043d\u043d\u044b\u0445 Emby \u0438 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0430 \u0432 \u043f\u0440\u0435\u0434\u0435\u043b\u0430\u0445 \u0441\u0435\u0437\u043e\u043d\u043e\u0432 \u0438 \u0441\u0435\u0440\u0438\u0430\u043b\u043e\u0432. \u042d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0438\u0432\u0435\u0441\u0442\u0438 \u043a \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0431\u043e\u043b\u0435\u0435 \u0434\u043e\u043b\u0433\u0438\u043c \u0441\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f\u043c \u043c\u0435\u0434\u0438\u0430\u0442\u0435\u043a\u0438.",
|
||||
"HeaderVideoPlaybackSettings": "\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0432\u0438\u0434\u0435\u043e",
|
||||
"OptionDownloadInternetMetadataTvPrograms": "Download internet metadata for programs listed in the guide",
|
||||
"OptionDownloadInternetMetadataTvPrograms": "\u0417\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u0437 \u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0430 \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u0434\u0430\u0447 \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u044b\u0445 \u0432 \u0442\u0435\u043b\u0435\u0433\u0438\u0434\u0435",
|
||||
"HeaderPlaybackSettings": "\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f",
|
||||
"LabelAudioLanguagePreference": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u044f\u0437\u044b\u043a\u0430 \u0430\u0443\u0434\u0438\u043e:",
|
||||
"LabelSubtitleLanguagePreference": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u044f\u0437\u044b\u043a\u0430 \u0441\u0443\u0431\u0442\u0438\u0442\u0440\u043e\u0432:",
|
||||
|
@ -326,10 +326,10 @@
|
|||
"TabFavorites": "\u0418\u0437\u0431\u0440\u0430\u043d\u043d\u043e\u0435",
|
||||
"TabMyLibrary": "\u041c\u043e\u044f \u043c\u0435\u0434\u0438\u0430\u0442\u0435\u043a\u0430",
|
||||
"ButtonCancelRecording": "\u041e\u0442\u043c\u0435\u043d\u0438\u0442\u044c \u0437\u0430\u043f\u0438\u0441\u044c",
|
||||
"LabelStartWhenPossible": "Start when possible:",
|
||||
"LabelStopWhenPossible": "Stop when possible:",
|
||||
"MinutesBefore": "minutes before",
|
||||
"MinutesAfter": "minutes after",
|
||||
"LabelStartWhenPossible": "\u041d\u0430\u0447\u0430\u0442\u044c \u043a\u043e\u0433\u0434\u0430 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e:",
|
||||
"LabelStopWhenPossible": "\u041e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043a\u043e\u0433\u0434\u0430 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e:",
|
||||
"MinutesBefore": "\u043c\u0438\u043d\u0443\u0442(\u044b) \u0434\u043e",
|
||||
"MinutesAfter": "\u043c\u0438\u043d\u0443\u0442(\u044b) \u043f\u043e\u0441\u043b\u0435",
|
||||
"HeaderWhatsOnTV": "\u0412 \u044d\u0444\u0438\u0440\u0435",
|
||||
"TabSettings": "\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b",
|
||||
"ButtonRefreshGuideData": "\u041f\u043e\u0434\u043d\u043e\u0432\u0438\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u0442\u0435\u043b\u0435\u0433\u0438\u0434\u0430",
|
||||
|
@ -1177,7 +1177,7 @@
|
|||
"HeaderSetupTVGuide": "\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0442\u0435\u043b\u0435\u0433\u0438\u0434\u0430",
|
||||
"LabelDataProvider": "\u041f\u043e\u0441\u0442\u0430\u0432\u0449\u0438\u043a \u0434\u0430\u043d\u043d\u044b\u0445:",
|
||||
"OptionSendRecordingsToAutoOrganize": "\u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0443\u043f\u043e\u0440\u044f\u0434\u043e\u0447\u0438\u0432\u0430\u0442\u044c \u0437\u0430\u043f\u0438\u0441\u0438 \u0432\u043d\u0443\u0442\u0440\u044c \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u043f\u0430\u043f\u043e\u043a \u0441\u0435\u0440\u0438\u0430\u043b\u043e\u0432 \u0432 \u0434\u0440\u0443\u0433\u0438\u0445 \u043c\u0435\u0434\u0438\u0430\u0442\u0435\u043a\u0430\u0445.",
|
||||
"HeaderDefaultRecordingSettings": "Default Recording Settings",
|
||||
"HeaderDefaultRecordingSettings": "\u0421\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0437\u0430\u043f\u0438\u0441\u0438",
|
||||
"OptionEnableRecordingSubfolders": "\u0421\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u043f\u043e\u0434\u043f\u0430\u043f\u043a\u0438 \u0434\u043b\u044f \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u0439, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0421\u043f\u043e\u0440\u0442\u0438\u0432\u043d\u044b\u0435, \u0414\u0435\u0442\u0441\u043a\u0438\u0435 \u0438 \u0442.\u043f.",
|
||||
"HeaderSubtitles": "\u0421\u0443\u0431\u0442.",
|
||||
"HeaderVideos": "\u0412\u0438\u0434\u0435\u043e\u0444\u0430\u0439\u043b\u044b",
|
||||
|
@ -1404,8 +1404,8 @@
|
|||
"LabelPlayMethodDirectPlay": "\u0412\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e",
|
||||
"LabelAudioCodec": "\u0410\u0443\u0434\u0438\u043e: {0}",
|
||||
"LabelVideoCodec": "\u0412\u0438\u0434\u0435\u043e: {0}",
|
||||
"LabelLocalAccessUrl": "\u0414\u043e\u043c\u0430\u0448\u043d\u0438\u0439 \u0434\u043e\u0441\u0442\u0443\u043f: {0}",
|
||||
"LabelRemoteAccessUrl": "\u0423\u0434\u0430\u043b\u0451\u043d\u043d\u044b\u0439 \u0434\u043e\u0441\u0442\u0443\u043f: {0}",
|
||||
"LabelLocalAccessUrl": "\u0414\u043e\u043c\u0430\u0448\u043d\u0438\u0439 (LAN) \u0434\u043e\u0441\u0442\u0443\u043f: {0}",
|
||||
"LabelRemoteAccessUrl": "\u0423\u0434\u0430\u043b\u0451\u043d\u043d\u044b\u0439 (WAN) \u0434\u043e\u0441\u0442\u0443\u043f: {0}",
|
||||
"LabelRunningOnPort": "\u0420\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043d\u0430 HTTP-\u043f\u043e\u0440\u0442\u0443 {0}.",
|
||||
"LabelRunningOnPorts": "\u0420\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043d\u0430 HTTP-\u043f\u043e\u0440\u0442\u0443 {0} \u0438 HTTPS-\u043f\u043e\u0440\u0442\u0443 {1}.",
|
||||
"HeaderLatestFromChannel": "\u041d\u043e\u0432\u0435\u0439\u0448\u0435\u0435 \u0438\u0437 {0}",
|
||||
|
@ -1933,8 +1933,8 @@
|
|||
"LatestFromLibrary": "\u041d\u043e\u0432\u0435\u0439\u0448\u0435\u0435: {0}",
|
||||
"LabelMoviePrefix": "\u041f\u0440\u0435\u0444\u0438\u043a\u0441 \u0444\u0438\u043b\u044c\u043c\u0430",
|
||||
"LabelMoviePrefixHelp": "\u0415\u0441\u043b\u0438 \u043f\u0440\u0435\u0444\u0438\u043a\u0441 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0439 \u0444\u0438\u043b\u044c\u043c\u043e\u0432, \u0432\u0432\u0435\u0434\u0438\u0442\u0435 \u0435\u0433\u043e \u0437\u0434\u0435\u0441\u044c, \u0447\u0442\u043e\u0431\u044b \u0431\u044b\u043b\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u0435\u0433\u043e \u0432 Emby.",
|
||||
"HeaderRecordingPostProcessing": "Recording Post Processing",
|
||||
"LabelPostProcessorArguments": "Post-processor command line arguments:",
|
||||
"LabelPostProcessorArgumentsHelp": "Use {path} as the path to the recording file.",
|
||||
"LabelPostProcessor": "Post-processing application:"
|
||||
"HeaderRecordingPostProcessing": "\u041f\u043e\u0441\u0442\u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0437\u0430\u043f\u0438\u0441\u0438",
|
||||
"LabelPostProcessorArguments": "\u0410\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u044b \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438 \u043f\u043e\u0441\u0442\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430:",
|
||||
"LabelPostProcessorArgumentsHelp": "\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 {path} \u043a\u0430\u043a \u043f\u0443\u0442\u044c \u043a \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c\u043e\u043c\u0443 \u0444\u0430\u0439\u043b\u0443.",
|
||||
"LabelPostProcessor": "\u041f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043f\u043e\u0441\u0442\u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438"
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue