1
0
Fork 0
mirror of https://github.com/jellyfin/jellyfin-web synced 2025-03-30 19:56:21 +00:00

Merge branch 'master' into remove-wan-ddns

This commit is contained in:
sparky8251 2019-09-19 20:39:02 +00:00 committed by GitHub
commit a272a6fcd5
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
78 changed files with 1810 additions and 9978 deletions

60
.ci/azure-pipelines.yml Normal file
View file

@ -0,0 +1,60 @@
trigger:
batch: true
branches:
include:
- master
- release-*
tags:
include:
- '*'
jobs:
- job: main_build
displayName: 'Main Build'
dependsOn: lint
condition: succeeded()
pool:
vmImage: 'ubuntu-latest'
steps:
- task: NodeTool@0
displayName: 'Install Node.js'
inputs:
versionSpec: '10.x'
- script: |
yarn install
displayName: 'Install dependencies'
- script: |
yarn pack --filename jellyfin-web.tgz
displayName: 'Build package'
- task: PublishPipelineArtifact@1
displayName: 'Publish package'
condition: succeeded()
inputs:
targetPath: '$(Build.SourcesDirectory)/jellyfin-web.tgz'
artifactName: 'jellyfin-web'
- job: lint
displayName: 'Lint'
pool:
vmImage: 'ubuntu-latest'
steps:
- task: NodeTool@0
displayName: 'Install Node.js'
inputs:
versionSpec: '10.x'
- script: |
yarn install
displayName: 'Install dependencies'
- script: |
yarn run lint
displayName: 'Run ESLint'

View file

@ -1,9 +0,0 @@
---
kind: pipeline
name: eslint
steps:
- name: run
image: nextcloudci/eslint:eslint-1
commands:
- ./run-eslint.sh

View file

@ -1,6 +1,7 @@
.editorconfig
.ci
.gitattributes .gitattributes
.github .github
.drone.yml
.eslintrc.yml .eslintrc.yml
run-eslint.sh run-eslint.sh
webpack.config.js webpack.config.js

View file

@ -26,6 +26,8 @@
- [Oddstr13](https://github.com/oddstr13) - [Oddstr13](https://github.com/oddstr13)
- [petermcneil](https://github.com/petermcneil) - [petermcneil](https://github.com/petermcneil)
- [lewazo](https://github.com/lewazo) - [lewazo](https://github.com/lewazo)
- [Raghu Saxena](https://github.com/ckcr4lyf)
- [Nickbert7](https://github.com/Nickbert7)
# Emby Contributors # Emby Contributors

View file

@ -14,12 +14,13 @@
"webpack-cli": "^3.2.3" "webpack-cli": "^3.2.3"
}, },
"dependencies": { "dependencies": {
"jstree": "^3.3.7" "jstree": "^3.3.7",
"hls.js": "^0.12.4"
}, },
"scripts": { "scripts": {
"dev": "webpack --mode development", "dev": "webpack --mode development",
"build": "webpack --mode production", "build": "webpack --mode production",
"lint": "eslint src", "lint": "eslint \"src\"",
"prepare": "webpack --mode production" "prepare": "webpack --mode production"
} }
} }

View file

@ -1,18 +0,0 @@
#!/bin/sh
set -e
# used this pull request for reference
# https://github.com/nextcloud/spreed/pull/48
ESLINT=$(which eslint || true)
if [ -z "$ESLINT" ]
then
echo "could not find eslint in $PATH"
exit 1
fi
echo checking scripts with $ESLINT
find -name "*.js" -print0 | xargs -0 $ESLINT
# use this line to test changes locally
#find src -name "*.js" -exec sh -c 'npx eslint $1' -- {} \;

File diff suppressed because it is too large Load diff

View file

@ -1,19 +0,0 @@
{
"folders":
[
{
"path": ".",
"folder_exclude_patterns": [
".git",
"node_modules",
"dist",
"lib"
],
"file_exclude_patterns": [
".gitignore",
"hls.js.sublime-project",
"hls.js.sublime-workspace"
]
}
]
}

View file

@ -4,6 +4,11 @@
// Use define from require.js not webpack's define // Use define from require.js not webpack's define
var _define = window.define; var _define = window.define;
// jstree
var jstree = require("jstree"); var jstree = require("jstree");
require("jstree/dist/themes/default/style.css"); require("jstree/dist/themes/default/style.css");
_define("jstree", ["jQuery"], function() { return jstree; }); _define("jstree", ["jQuery"], function() { return jstree; });
// hlsjs
var hlsjs = require("hls.js");
_define("hlsjs", function() { return hlsjs; });

View file

@ -36,6 +36,7 @@
font-weight: inherit; font-weight: inherit;
box-shadow: none; box-shadow: none;
flex-shrink: 0; flex-shrink: 0;
border-radius: 0;
} }
.actionSheetMenuItem:focus { .actionSheetMenuItem:focus {

View file

@ -313,7 +313,7 @@ define(["appSettings", "browser", "events", "htmlMediaHelper"], function (appSet
var deviceId; var deviceId;
var deviceName; var deviceName;
var appName = "Jellyfin Web"; var appName = "Jellyfin Web";
var appVersion = "10.3.6"; var appVersion = "10.4.0";
var visibilityChange; var visibilityChange;
var visibilityState; var visibilityState;

View file

@ -18,13 +18,13 @@ define(['dialog', 'globalize'], function (dialog, globalize) {
items.push({ items.push({
name: options.cancelText || globalize.translate('ButtonCancel'), name: options.cancelText || globalize.translate('ButtonCancel'),
id: 'cancel', id: 'cancel',
type: options.primary === 'cancel' ? 'submit' : 'cancel' type: 'cancel'
}); });
items.push({ items.push({
name: options.confirmText || globalize.translate('ButtonOk'), name: options.confirmText || globalize.translate('ButtonOk'),
id: 'ok', id: 'ok',
type: options.primary === 'cancel' ? 'cancel' : 'submit' type: options.primary === 'delete' ? 'delete' : 'submit'
}); });
options.buttons = items; options.buttons = items;

View file

@ -27,7 +27,7 @@ define(['connectionManager', 'confirm', 'appRouter', 'globalize'], function (con
title: title, title: title,
text: msg, text: msg,
confirmText: globalize.translate('Delete'), confirmText: globalize.translate('Delete'),
primary: 'cancel' primary: 'delete'
}).then(function () { }).then(function () {

View file

@ -119,6 +119,7 @@
<option value="tv">${TV}</option> <option value="tv">${TV}</option>
</select> </select>
<div class="fieldDescription">${DisplayModeHelp}</div> <div class="fieldDescription">${DisplayModeHelp}</div>
<div class="fieldDescription">${LabelPleaseRestart}</div>
</div> </div>
<div class="selectContainer hide selectSkinContainer"> <div class="selectContainer hide selectSkinContainer">

View file

@ -3,7 +3,7 @@
display: inline-flex; display: inline-flex;
align-items: center; align-items: center;
box-sizing: border-box; box-sizing: border-box;
margin: 0 .29em; margin: 0 0.3em;
text-align: center; text-align: center;
font-size: inherit; font-size: inherit;
font-family: inherit; font-family: inherit;
@ -15,11 +15,11 @@
user-select: none; user-select: none;
cursor: pointer; cursor: pointer;
z-index: 0; z-index: 0;
padding: .86em 1em; padding: 0.9em 1em;
vertical-align: middle; vertical-align: middle;
border: 0; border: 0;
vertical-align: middle; vertical-align: middle;
border-radius: .2em; border-radius: 0.2em;
/* These are getting an outline in opera tv browsers, which run chrome 30 */ /* These are getting an outline in opera tv browsers, which run chrome 30 */
outline: none !important; outline: none !important;
position: relative; position: relative;
@ -29,6 +29,13 @@
text-decoration: none; text-decoration: none;
/* Not crazy about this but it normalizes heights between anchors and buttons */ /* Not crazy about this but it normalizes heights between anchors and buttons */
line-height: 1.35; line-height: 1.35;
transform-origin: center;
transition: 0.2s;
}
.emby-button.show-focus:focus {
transform: scale(1.4);
z-index: 1;
} }
.emby-button::-moz-focus-inner { .emby-button::-moz-focus-inner {
@ -54,17 +61,6 @@
text-decoration: underline; text-decoration: underline;
} }
.emby-button-focusscale {
transition: transform 180ms ease-out !important;
-webkit-transform-origin: center center;
transform-origin: center center;
}
.emby-button-focusscale:focus {
transform: scale(1.16);
z-index: 1;
}
.emby-button > i { .emby-button > i {
/* For non-fab buttons that have icons */ /* For non-fab buttons that have icons */
font-size: 1.36em; font-size: 1.36em;
@ -77,7 +73,7 @@
.fab { .fab {
display: inline-flex; display: inline-flex;
border-radius: 50%; border-radius: 50%;
padding: .6em; padding: 0.6em;
box-sizing: border-box; box-sizing: border-box;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
@ -125,14 +121,22 @@
/* Disable webkit tap highlighting */ /* Disable webkit tap highlighting */
-webkit-tap-highlight-color: rgba(0,0,0,0); -webkit-tap-highlight-color: rgba(0,0,0,0);
justify-content: center; justify-content: center;
transform-origin: center;
transition: 0.2s;
}
.paper-icon-button-light.show-focus:focus {
transform: scale(1.6);
z-index: 1;
} }
.paper-icon-button-light::-moz-focus-inner { .paper-icon-button-light::-moz-focus-inner {
border: 0; border: 0;
} }
.paper-icon-button-light[disabled] { .paper-icon-button-light:disabled {
opacity: .3; opacity: 0.3;
cursor: default;
} }
.paper-icon-button-light > i { .paper-icon-button-light > i {
@ -159,17 +163,6 @@
z-index: 1; z-index: 1;
} }
.icon-button-focusscale {
transition: transform 180ms ease-out !important;
-webkit-transform-origin: center center;
transform-origin: center center;
}
.icon-button-focusscale:focus {
transform: scale(1.3);
z-index: 1;
}
.btnFilterWithBubble { .btnFilterWithBubble {
position: relative; position: relative;
} }
@ -180,7 +173,6 @@
background: #444; background: #444;
top: 0; top: 0;
right: 0; right: 0;
/* padding: .5em; */
width: 1.6em; width: 1.6em;
height: 1.6em; height: 1.6em;
z-index: 100000000; z-index: 100000000;

View file

@ -21,30 +21,23 @@ define(['browser', 'dom', 'layoutManager', 'shell', 'appRouter', 'apphost', 'css
} }
EmbyButtonPrototype.createdCallback = function () { EmbyButtonPrototype.createdCallback = function () {
if (this.classList.contains('emby-button')) { if (this.classList.contains('emby-button')) {
return; return;
} }
this.classList.add('emby-button'); this.classList.add('emby-button');
// TODO replace all instances of element-showfocus with this method
if (layoutManager.tv) { if (layoutManager.tv) {
if (this.getAttribute('data-focusscale') !== 'false') { // handles all special css for tv layout
this.classList.add('emby-button-focusscale'); // this method utilizes class chaining
} this.classList.add('show-focus');
this.classList.add('emby-button-tv');
} }
}; };
EmbyButtonPrototype.attachedCallback = function () { EmbyButtonPrototype.attachedCallback = function () {
if (this.tagName === 'A') { if (this.tagName === 'A') {
dom.removeEventListener(this, 'click', onAnchorClick, {});
dom.removeEventListener(this, 'click', onAnchorClick, { dom.addEventListener(this, 'click', onAnchorClick, {});
});
dom.addEventListener(this, 'click', onAnchorClick, {
});
if (this.getAttribute('data-autohide') === 'true') { if (this.getAttribute('data-autohide') === 'true') {
if (appHost.supports('externallinks')) { if (appHost.supports('externallinks')) {
@ -57,9 +50,7 @@ define(['browser', 'dom', 'layoutManager', 'shell', 'appRouter', 'apphost', 'css
}; };
EmbyButtonPrototype.detachedCallback = function () { EmbyButtonPrototype.detachedCallback = function () {
dom.removeEventListener(this, 'click', onAnchorClick, {});
dom.removeEventListener(this, 'click', onAnchorClick, {
});
}; };
EmbyLinkButtonPrototype.createdCallback = EmbyButtonPrototype.createdCallback; EmbyLinkButtonPrototype.createdCallback = EmbyButtonPrototype.createdCallback;
@ -75,6 +66,5 @@ define(['browser', 'dom', 'layoutManager', 'shell', 'appRouter', 'apphost', 'css
extends: 'a' extends: 'a'
}); });
// For extension purposes
return EmbyButtonPrototype; return EmbyButtonPrototype;
}); });

View file

@ -4,11 +4,10 @@ define(['layoutManager', 'css!./emby-button', 'registerElement'], function (layo
var EmbyButtonPrototype = Object.create(HTMLButtonElement.prototype); var EmbyButtonPrototype = Object.create(HTMLButtonElement.prototype);
EmbyButtonPrototype.createdCallback = function () { EmbyButtonPrototype.createdCallback = function () {
this.classList.add('paper-icon-button-light'); this.classList.add('paper-icon-button-light');
if (layoutManager.tv) { if (layoutManager.tv) {
this.classList.add('icon-button-focusscale'); this.classList.add('show-focus');
} }
}; };

View file

@ -73,13 +73,12 @@
} }
.emby-checkbox:checked + span + .checkboxOutline > .checkboxIcon-checked { .emby-checkbox:checked + span + .checkboxOutline > .checkboxIcon-checked {
/* background-color set by theme */ /* background color set by theme */
/*background-color: #52B54B;*/
display: flex !important; display: flex !important;
} }
.emby-checkbox:checked + span + .checkboxOutline > .checkboxIcon-unchecked { .emby-checkbox:checked + span + .checkboxOutline > .checkboxIcon-unchecked {
/* background-color set by theme */ /* background color set by theme */
display: none !important; display: none !important;
} }
@ -94,7 +93,7 @@
.checkboxList > .emby-checkbox-label { .checkboxList > .emby-checkbox-label {
display: flex; display: flex;
margin: .5em 0; margin: 0.5em 0;
} }
.checkboxList-verticalwrap { .checkboxList-verticalwrap {

View file

@ -4,7 +4,6 @@ define(['browser', 'dom', 'css!./emby-checkbox', 'registerElement'], function (b
var EmbyCheckboxPrototype = Object.create(HTMLInputElement.prototype); var EmbyCheckboxPrototype = Object.create(HTMLInputElement.prototype);
function onKeyDown(e) { function onKeyDown(e) {
// Don't submit form on enter // Don't submit form on enter
if (e.keyCode === 13) { if (e.keyCode === 13) {
e.preventDefault(); e.preventDefault();
@ -22,7 +21,6 @@ define(['browser', 'dom', 'css!./emby-checkbox', 'registerElement'], function (b
var enableRefreshHack = browser.tizen || browser.orsay || browser.operaTv || browser.web0s ? true : false; var enableRefreshHack = browser.tizen || browser.orsay || browser.operaTv || browser.web0s ? true : false;
function forceRefresh(loading) { function forceRefresh(loading) {
var elem = this.parentNode; var elem = this.parentNode;
elem.style.webkitAnimationName = 'repaintChrome'; elem.style.webkitAnimationName = 'repaintChrome';
@ -36,7 +34,6 @@ define(['browser', 'dom', 'css!./emby-checkbox', 'registerElement'], function (b
} }
EmbyCheckboxPrototype.attachedCallback = function () { EmbyCheckboxPrototype.attachedCallback = function () {
if (this.getAttribute('data-embycheckbox') === 'true') { if (this.getAttribute('data-embycheckbox') === 'true') {
return; return;
} }
@ -68,7 +65,6 @@ define(['browser', 'dom', 'css!./emby-checkbox', 'registerElement'], function (b
this.addEventListener('keydown', onKeyDown); this.addEventListener('keydown', onKeyDown);
if (enableRefreshHack) { if (enableRefreshHack) {
forceRefresh.call(this, true); forceRefresh.call(this, true);
dom.addEventListener(this, 'click', forceRefresh, { dom.addEventListener(this, 'click', forceRefresh, {
passive: true passive: true
@ -86,7 +82,6 @@ define(['browser', 'dom', 'css!./emby-checkbox', 'registerElement'], function (b
}; };
EmbyCheckboxPrototype.detachedCallback = function () { EmbyCheckboxPrototype.detachedCallback = function () {
this.removeEventListener('keydown', onKeyDown); this.removeEventListener('keydown', onKeyDown);
dom.removeEventListener(this, 'click', forceRefresh, { dom.removeEventListener(this, 'click', forceRefresh, {

View file

@ -70,8 +70,8 @@ _:-ms-input-placeholder {
.mdl-slider::-webkit-slider-thumb { .mdl-slider::-webkit-slider-thumb {
-webkit-appearance: none; -webkit-appearance: none;
width: 1.8em; width: 1.2em;
height: 1.8em; height: 1.2em;
box-sizing: border-box; box-sizing: border-box;
border-radius: 50%; border-radius: 50%;
background: #00a4dc; background: #00a4dc;
@ -80,11 +80,11 @@ _:-ms-input-placeholder {
} }
.mdl-slider-hoverthumb::-webkit-slider-thumb { .mdl-slider-hoverthumb::-webkit-slider-thumb {
transform: scale(.7, .7); transform: none;
} }
.mdl-slider:hover::-webkit-slider-thumb { .mdl-slider:hover::-webkit-slider-thumb {
transform: none; transform: scale(1.6);
} }
.slider-no-webkit-thumb::-webkit-slider-thumb { .slider-no-webkit-thumb::-webkit-slider-thumb {

View file

@ -2,7 +2,7 @@
background: transparent; background: transparent;
box-shadow: none; box-shadow: none;
cursor: pointer; cursor: pointer;
outline: none !important; outline: none;
width: auto; width: auto;
font-family: inherit; font-family: inherit;
font-size: inherit; font-size: inherit;
@ -10,36 +10,25 @@
vertical-align: middle; vertical-align: middle;
flex-shrink: 0; flex-shrink: 0;
margin: 0; margin: 0;
padding: 1em .9em; padding: 1em 0.9em;
position: relative; position: relative;
height: auto; height: auto;
min-width: initial; min-width: initial;
line-height: initial; line-height: initial;
border-radius: 0 !important; border-radius: 0;
overflow: hidden; overflow: hidden;
font-weight: 600; font-weight: 600;
} }
/*.emby-tab-button-active { .emby-tab-button.show-focus:focus {
color: #52B54B; /* these buttons are small so scale larger than usual */
} transform: scale(1.6) !important;
background: 0 !important;
.emby-tab-button-active.emby-button-tv {
color: #fff;
}*/
.emby-tab-button.emby-button-tv:focus {
/*color: #52B54B;*/
transform: scale(1.32);
transform-origin: center center;
} }
.emby-tabs-slider { .emby-tabs-slider {
position: relative; position: relative;
} overflow: hidden;
.emby-tab-button-ripple-effect {
background: rgba(0,0,0,.7) !important;
} }
.tabContent:not(.is-active) { .tabContent:not(.is-active) {

View file

@ -424,7 +424,7 @@
border-color: transparent !important; border-color: transparent !important;
} }
.guide-date-tab-button.emby-button-tv:focus { .guide-date-tab-button.show-focus:focus {
border-radius: .15em !important; border-radius: .15em !important;
transform: none !important; transform: none !important;
} }

View file

@ -7,7 +7,7 @@
<option value="horizontal">${Horizontal}</option> <option value="horizontal">${Horizontal}</option>
<option value="vertical">${Vertical}</option> <option value="vertical">${Vertical}</option>
</select> </select>
<div class="fieldDescription">Changes take effect after signing out or restarting the app.</div> <div class="fieldDescription">${LabelPleaseRestart}</div>
</div> </div>
<div class="selectContainer"> <div class="selectContainer">

View file

@ -1,88 +0,0 @@
define(['dialogHelper', 'layoutManager', 'globalize', 'require', 'events', 'homescreenSettings', 'paper-icon-button-light', 'css!./../formdialog'], function (dialogHelper, layoutManager, globalize, require, events, HomescreenSettings) {
'use strict';
function centerFocus(elem, horiz, on) {
require(['scrollHelper'], function (scrollHelper) {
var fn = on ? 'on' : 'off';
scrollHelper.centerFocus[fn](elem, horiz);
});
}
function show(options) {
return new Promise(function (resolve, reject) {
require(['text!./homescreensettingsdialog.template.html'], function (template) {
var dialogOptions = {
removeOnClose: true,
scrollY: false
};
if (layoutManager.tv) {
dialogOptions.size = 'fullscreen';
} else {
dialogOptions.size = 'medium-tall';
}
var dlg = dialogHelper.createDialog(dialogOptions);
dlg.classList.add('formDialog');
var html = '';
var submitted = false;
html += globalize.translateDocument(template, 'core');
dlg.innerHTML = html;
if (layoutManager.tv) {
centerFocus(dlg.querySelector('.formDialogContent'), false, true);
}
var homescreenSettingsInstance = new HomescreenSettings({
serverId: options.serverId,
userId: options.userId,
element: dlg.querySelector('.settingsContent'),
userSettings: options.userSettings,
enableSaveButton: false,
enableSaveConfirmation: false
});
dialogHelper.open(dlg);
dlg.addEventListener('close', function () {
if (layoutManager.tv) {
centerFocus(dlg.querySelector('.formDialogContent'), false, false);
}
if (submitted) {
resolve();
} else {
reject();
}
});
dlg.querySelector('.btnCancel').addEventListener('click', function (e) {
dialogHelper.close(dlg);
});
dlg.querySelector('.btnSave').addEventListener('click', function (e) {
submitted = true;
homescreenSettingsInstance.submit();
});
events.on(homescreenSettingsInstance, 'saved', function () {
submitted = true;
dialogHelper.close(dlg);
});
});
});
}
return {
show: show
};
});

View file

@ -1,22 +0,0 @@
<div class="formDialogHeader">
<button is="paper-icon-button-light" class="btnCancel autoSize" tabindex="-1"><i class="md-icon">&#xE5C4;</i></button>
<h3 class="formDialogHeaderTitle">
${HeaderDisplaySettings}
</h3>
</div>
<div class="formDialogContent smoothScrollY">
<div class="dialogContentInner dialog-content-centered">
<div class="settingsContent">
</div>
<div class="formDialogFooter">
<button is="emby-button" type="button" class="raised button-submit block formDialogFooterItem btnSave">
<span>${Save}</span>
</button>
</div>
</div>
</div>

View file

@ -328,7 +328,7 @@ define(['connectionManager', 'cardBuilder', 'appSettings', 'dom', 'apphost', 'la
html += cardBuilder.getCardsHtml({ html += cardBuilder.getCardsHtml({
items: userViews, items: userViews,
shape: enableScrollX() ? 'overflowSmallBackdrop' : shape, shape: getThumbShape(),
showTitle: true, showTitle: true,
centerText: true, centerText: true,
overlayText: false, overlayText: false,

View file

@ -203,7 +203,7 @@ define(['dialogHelper', 'connectionManager', 'loading', 'dom', 'layoutManager',
text: globalize.translate('ConfirmDeleteImage'), text: globalize.translate('ConfirmDeleteImage'),
confirmText: globalize.translate('Delete'), confirmText: globalize.translate('Delete'),
primary: 'cancel' primary: 'delete'
}).then(afterConfirm); }).then(afterConfirm);
}); });

View file

@ -221,6 +221,7 @@ define(['datetime', 'itemHelper', 'css!./indicators.css', 'material-icons'], fun
}); });
return { return {
getProgressHtml: getProgressHtml,
getProgressBarHtml: getProgressBarHtml, getProgressBarHtml: getProgressBarHtml,
getPlayedIndicatorHtml: getPlayedIndicator, getPlayedIndicatorHtml: getPlayedIndicator,
getChildCountIndicatorHtml: getChildCountIndicatorHtml, getChildCountIndicatorHtml: getChildCountIndicatorHtml,

View file

@ -26,7 +26,7 @@ define(["dialogHelper", "require", "layoutManager", "globalize", "userSettings",
if (version.Path && user && user.Policy.IsAdministrator) { if (version.Path && user && user.Policy.IsAdministrator) {
html += createAttribute(globalize.translate("MediaInfoPath"), version.Path) + "<br/>"; html += createAttribute(globalize.translate("MediaInfoPath"), version.Path) + "<br/>";
} }
if (version.Size && user && user.Policy.IsAdministrator) { if (version.Size) {
var size = (version.Size / (1024 * 1024)).toFixed(0) + " MB"; var size = (version.Size / (1024 * 1024)).toFixed(0) + " MB";
html += createAttribute(globalize.translate("MediaInfoSize"), size) + "<br/>"; html += createAttribute(globalize.translate("MediaInfoSize"), size) + "<br/>";
} }

View file

@ -134,6 +134,11 @@ define(['apphost', 'globalize', 'connectionManager', 'itemHelper', 'appRouter',
name: globalize.translate('Download'), name: globalize.translate('Download'),
id: 'download' id: 'download'
}); });
commands.push({
name: globalize.translate('CopyStreamURL'),
id: 'copy-stream'
});
} }
var canEdit = itemHelper.canEdit(user, item); var canEdit = itemHelper.canEdit(user, item);
@ -305,6 +310,26 @@ define(['apphost', 'globalize', 'connectionManager', 'itemHelper', 'appRouter',
getResolveFunction(getResolveFunction(resolve, id), id)(); getResolveFunction(getResolveFunction(resolve, id), id)();
}); });
break; break;
case 'copy-stream':
var downloadHref = apiClient.getItemDownloadUrl(itemId);
var textArea = document.createElement("textarea");
textArea.value = downloadHref;
document.body.appendChild(textArea);
textArea.focus();
textArea.select();
try {
document.execCommand('copy');
require(['toast'], function (toast) {
toast(globalize.translate('CopyStreamURLSuccess'));
});
} catch (err) {
console.error("Failed to copy to clipboard");
}
document.body.removeChild(textArea);
getResolveFunction(resolve, id)();
break;
case 'editsubtitles': case 'editsubtitles':
require(['subtitleEditor'], function (subtitleEditor) { require(['subtitleEditor'], function (subtitleEditor) {
subtitleEditor.show(itemId, serverId).then(getResolveFunction(resolve, id, true), getResolveFunction(resolve, id)); subtitleEditor.show(itemId, serverId).then(getResolveFunction(resolve, id, true), getResolveFunction(resolve, id));

View file

@ -39,8 +39,16 @@
} }
.listItem-border { .listItem-border {
border-bottom-width: .1em; display: block;
border-bottom-style: solid; margin: 0;
padding: 0;
border-width: 0 0 0.1em 0;
border-style: solid;
border-radius: 0;
}
.listItem-border.show-focus:focus {
transform: scale(1.0) !important;
} }
.listItemImage, .listItemIcon, .listItemAside { .listItemImage, .listItemIcon, .listItemAside {
@ -131,16 +139,15 @@
.listItemImageButton-icon { .listItemImageButton-icon {
background: rgba(0,0,0,.4); background: rgba(0,0,0,.4);
border: .08em solid currentColor; border: 0.1em solid currentColor;
border-radius: 100em; border-radius: 100em;
display: flex; display: flex;
justify-content: center; justify-content: center;
align-items: center; align-items: center;
padding: .21em; padding: 0.2em;
} }
@media all and (max-width: 64em) { @media all and (max-width: 64em) {
.listItemImage-large { .listItemImage-large {
width: 33.75vw; width: 33.75vw;
height: 22.5vw; height: 22.5vw;
@ -148,7 +155,7 @@
} }
.listItemImageButton { .listItemImageButton {
font-size: 1.02em !important; font-size: 1em !important;
} }
.listItemBody { .listItemBody {
@ -157,7 +164,6 @@
} }
@media all and (max-width: 50em) { @media all and (max-width: 50em) {
.listItemBody { .listItemBody {
padding-right: .5em; padding-right: .5em;
} }
@ -245,14 +251,12 @@
} }
@media all and (max-width: 50em) { @media all and (max-width: 50em) {
.listItem .endsAt, .listItem .criticRating, .listItem-overview { .listItem .endsAt, .listItem .criticRating, .listItem-overview {
display: none !important; display: none !important;
} }
} }
@media all and (min-width: 50em) { @media all and (min-width: 50em) {
.listItem-bottomoverview { .listItem-bottomoverview {
display: none !important; display: none !important;
} }

View file

@ -59,7 +59,7 @@ define(["loading", "dialogHelper", "dom", "components/libraryoptionseditor/libra
title: Globalize.translate("HeaderRemoveMediaLocation"), title: Globalize.translate("HeaderRemoveMediaLocation"),
text: Globalize.translate("MessageConfirmRemoveMediaLocation"), text: Globalize.translate("MessageConfirmRemoveMediaLocation"),
confirmText: Globalize.translate("ButtonDelete"), confirmText: Globalize.translate("ButtonDelete"),
primary: "cancel" primary: "delete"
}).then(function() { }).then(function() {
var refreshAfterChange = currentOptions.refresh; var refreshAfterChange = currentOptions.refresh;
ApiClient.removeMediaPath(virtualFolder.Name, location, refreshAfterChange).then(function() { ApiClient.removeMediaPath(virtualFolder.Name, location, refreshAfterChange).then(function() {

View file

@ -1643,8 +1643,10 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla
self.disableShowingSubtitleOffset = function(player) { self.disableShowingSubtitleOffset = function(player) {
player = player || self._currentPlayer; player = player || self._currentPlayer;
if (player.disableShowingSubtitleOffset) {
player.disableShowingSubtitleOffset(); player.disableShowingSubtitleOffset();
} }
}
self.isShowingSubtitleOffsetEnabled = function(player) { self.isShowingSubtitleOffsetEnabled = function(player) {
player = player || self._currentPlayer; player = player || self._currentPlayer;
@ -1658,13 +1660,17 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla
self.setSubtitleOffset = function (value, player) { self.setSubtitleOffset = function (value, player) {
player = player || self._currentPlayer; player = player || self._currentPlayer;
if (player.setSubtitleOffset) {
player.setSubtitleOffset(value); player.setSubtitleOffset(value);
}
}; };
self.getPlayerSubtitleOffset = function(player) { self.getPlayerSubtitleOffset = function(player) {
player = player || self._currentPlayer; player = player || self._currentPlayer;
if (player.getPlayerSubtitleOffset) {
return player.getSubtitleOffset(); return player.getSubtitleOffset();
} }
}
self.canHandleOffsetOnCurrentSubtitle = function(player) { self.canHandleOffsetOnCurrentSubtitle = function(player) {
var index = self.getSubtitleStreamIndex(player); var index = self.getSubtitleStreamIndex(player);

View file

@ -132,7 +132,7 @@ define(['events', 'globalize', 'playbackManager', 'connectionManager', 'playMeth
if (videoCodec) { if (videoCodec) {
sessionStats.push({ sessionStats.push({
label: 'Video codec:', label: globalize.translate("LabelVideoCodec"),
value: session.TranscodingInfo.IsVideoDirect ? (videoCodec.toUpperCase() + ' (direct)') : videoCodec.toUpperCase() value: session.TranscodingInfo.IsVideoDirect ? (videoCodec.toUpperCase() + ' (direct)') : videoCodec.toUpperCase()
}); });
} }
@ -140,7 +140,7 @@ define(['events', 'globalize', 'playbackManager', 'connectionManager', 'playMeth
if (audioCodec) { if (audioCodec) {
sessionStats.push({ sessionStats.push({
label: 'Audio codec:', label: globalize.translate("LabelAudioCodec"),
value: session.TranscodingInfo.IsAudioDirect ? (audioCodec.toUpperCase() + ' (direct)') : audioCodec.toUpperCase() value: session.TranscodingInfo.IsAudioDirect ? (audioCodec.toUpperCase() + ' (direct)') : audioCodec.toUpperCase()
}); });
} }
@ -157,28 +157,28 @@ define(['events', 'globalize', 'playbackManager', 'connectionManager', 'playMeth
if (totalBitrate) { if (totalBitrate) {
sessionStats.push({ sessionStats.push({
label: 'Bitrate:', label: globalize.translate("LabelBitrate"),
value: getDisplayBitrate(totalBitrate) value: getDisplayBitrate(totalBitrate)
}); });
} }
if (session.TranscodingInfo.CompletionPercentage) { if (session.TranscodingInfo.CompletionPercentage) {
sessionStats.push({ sessionStats.push({
label: 'Transcoding progress:', label: globalize.translate("LabelTranscodingProgress"),
value: session.TranscodingInfo.CompletionPercentage.toFixed(1) + '%' value: session.TranscodingInfo.CompletionPercentage.toFixed(1) + '%'
}); });
} }
if (session.TranscodingInfo.Framerate) { if (session.TranscodingInfo.Framerate) {
sessionStats.push({ sessionStats.push({
label: 'Transcoding framerate:', label: globalize.translate("LabelTranscodingFramerate"),
value: session.TranscodingInfo.Framerate + ' fps' value: session.TranscodingInfo.Framerate + ' fps'
}); });
} }
if (session.TranscodingInfo.TranscodeReasons && session.TranscodingInfo.TranscodeReasons.length) { if (session.TranscodingInfo.TranscodeReasons && session.TranscodingInfo.TranscodeReasons.length) {
sessionStats.push({ sessionStats.push({
label: 'Reason for transcoding:', label: globalize.translate("LabelReasonForTranscoding"),
value: session.TranscodingInfo.TranscodeReasons.map(translateReason).join('<br/>') value: session.TranscodingInfo.TranscodeReasons.map(translateReason).join('<br/>')
}); });
} }
@ -196,24 +196,42 @@ define(['events', 'globalize', 'playbackManager', 'connectionManager', 'playMeth
} }
} }
function getReadableSize(size) {
if (size >= 1073741824) {
return parseFloat((size / 1073741824).toFixed(1)) + ' GiB';
} else if (size >= 1048576) {
return parseFloat((size / 1048576).toFixed(1)) + ' MiB';
} else {
return Math.floor(size / 1024) + ' KiB';
}
}
function getMediaSourceStats(session, player, displayPlayMethod) { function getMediaSourceStats(session, player, displayPlayMethod) {
var sessionStats = []; var sessionStats = [];
var mediaSource = playbackManager.currentMediaSource(player) || {}; var mediaSource = playbackManager.currentMediaSource(player) || {};
var totalBitrate = mediaSource.Bitrate; var totalBitrate = mediaSource.Bitrate;
var mediaFileSize = mediaSource.Size;
if (mediaSource.Container) { if (mediaSource.Container) {
sessionStats.push({ sessionStats.push({
label: 'Container:', label: globalize.translate("LabelProfileContainer"),
value: mediaSource.Container value: mediaSource.Container
}); });
} }
if (mediaFileSize) {
sessionStats.push({
label: globalize.translate("LabelSize"),
value: getReadableSize(mediaFileSize)
});
}
if (totalBitrate) { if (totalBitrate) {
sessionStats.push({ sessionStats.push({
label: 'Bitrate:', label: globalize.translate("LabelBitrate"),
value: getDisplayBitrate(totalBitrate) value: getDisplayBitrate(totalBitrate)
}); });
} }
@ -249,14 +267,14 @@ define(['events', 'globalize', 'playbackManager', 'connectionManager', 'playMeth
if (videoInfos.length) { if (videoInfos.length) {
sessionStats.push({ sessionStats.push({
label: 'Video codec:', label: globalize.translate("LabelVideoCodec"),
value: videoInfos.join(' ') value: videoInfos.join(' ')
}); });
} }
if (videoStream.BitRate) { if (videoStream.BitRate) {
sessionStats.push({ sessionStats.push({
label: 'Video bitrate:', label: globalize.translate("LabelVideoBitrate"),
value: getDisplayBitrate(videoStream.BitRate) value: getDisplayBitrate(videoStream.BitRate)
}); });
} }
@ -273,35 +291,35 @@ define(['events', 'globalize', 'playbackManager', 'connectionManager', 'playMeth
if (audioInfos.length) { if (audioInfos.length) {
sessionStats.push({ sessionStats.push({
label: 'Audio codec:', label: globalize.translate("LabelAudioCodec"),
value: audioInfos.join(' ') value: audioInfos.join(' ')
}); });
} }
if (audioStream.BitRate) { if (audioStream.BitRate) {
sessionStats.push({ sessionStats.push({
label: 'Audio bitrate:', label: globalize.translate("LabelAudioBitrate"),
value: getDisplayBitrate(audioStream.BitRate) value: getDisplayBitrate(audioStream.BitRate)
}); });
} }
if (audioChannels) { if (audioChannels) {
sessionStats.push({ sessionStats.push({
label: 'Audio channels:', label: globalize.translate("LabelAudioChannels"),
value: audioChannels value: audioChannels
}); });
} }
if (audioStream.SampleRate) { if (audioStream.SampleRate) {
sessionStats.push({ sessionStats.push({
label: 'Audio sample rate:', label: globalize.translate("LabelAudioSampleRate"),
value: audioStream.SampleRate + ' Hz' value: audioStream.SampleRate + ' Hz'
}); });
} }
if (audioStream.BitDepth) { if (audioStream.BitDepth) {
sessionStats.push({ sessionStats.push({
label: 'Audio bit depth:', label: globalize.translate("LabelAudioBitDepth"),
value: audioStream.BitDepth value: audioStream.BitDepth
}); });
} }
@ -328,12 +346,12 @@ define(['events', 'globalize', 'playbackManager', 'connectionManager', 'playMeth
}; };
baseCategory.stats.unshift({ baseCategory.stats.unshift({
label: 'Play method:', label: globalize.translate("LabelPlayMethod"),
value: displayPlayMethod value: displayPlayMethod
}); });
baseCategory.stats.unshift({ baseCategory.stats.unshift({
label: 'Player:', label: globalize.translate("LabelPlayer"),
value: player.name value: player.name
}); });

View file

@ -37,7 +37,7 @@ define(['globalize', 'loading', 'connectionManager'], function (globalize, loadi
confirm({ confirm({
text: globalize.translate('MessageConfirmRecordingCancellation'), text: globalize.translate('MessageConfirmRecordingCancellation'),
primary: 'cancel', primary: 'delete',
confirmText: globalize.translate('HeaderCancelRecording'), confirmText: globalize.translate('HeaderCancelRecording'),
cancelText: globalize.translate('HeaderKeepRecording') cancelText: globalize.translate('HeaderKeepRecording')
@ -62,7 +62,7 @@ define(['globalize', 'loading', 'connectionManager'], function (globalize, loadi
confirm({ confirm({
text: globalize.translate('MessageConfirmRecordingCancellation'), text: globalize.translate('MessageConfirmRecordingCancellation'),
primary: 'cancel', primary: 'delete',
confirmText: globalize.translate('HeaderCancelSeries'), confirmText: globalize.translate('HeaderCancelSeries'),
cancelText: globalize.translate('HeaderKeepSeries') cancelText: globalize.translate('HeaderKeepSeries')

View file

@ -74,7 +74,7 @@ define(['dialogHelper', 'require', 'layoutManager', 'globalize', 'userSettings',
title: globalize.translate('ConfirmDeletion'), title: globalize.translate('ConfirmDeletion'),
text: msg, text: msg,
confirmText: globalize.translate('Delete'), confirmText: globalize.translate('Delete'),
primary: 'cancel' primary: 'delete'
}).then(function () { }).then(function () {

View file

@ -71,13 +71,12 @@ html {
background: #f0f0f0 background: #f0f0f0
} }
.paper-icon-button-light:hover { .paper-icon-button-light:hover:not(:disabled) {
color: #00a4dc; color: #00a4dc;
background-color: rgba(0,164,220, .2); background-color: rgba(0,164,220, .2);
transition: 0.2s;
} }
.paper-icon-button-light:focus { .paper-icon-button-light.show-focus:focus {
color: #00a4dc; color: #00a4dc;
} }
@ -102,6 +101,11 @@ html {
background: #0cb0e8 background: #0cb0e8
} }
.button-delete {
background: rgb(247, 0, 0);
color: rgba(255, 255, 255, .87)
}
.checkboxLabel { .checkboxLabel {
color: inherit color: inherit
} }
@ -341,24 +345,25 @@ html {
color: #fff color: #fff
} }
.emby-button-focusscale:focus { .emby-button.show-focus:focus {
background: #00a4dc; background: #00a4dc;
color: #fff color: #fff
} }
.emby-tab-button { .emby-tab-button {
color: #999; color: #999;
color: rgba(0, 0, 0, .5)
} }
.emby-tab-button-active, .emby-tab-button-active {
.emby-tab-button-active.emby-button-tv { color: #fff;
color: #fff }
}
.emby-tab-button.show-focus:focus {
.emby-tab-button.emby-button-tv:focus { color: #fff;
}
.emby-tab-button:hover {
color: #fff; color: #fff;
background: 0 0
} }
.channelPrograms, .channelPrograms,
@ -413,7 +418,7 @@ html {
color: #00a4dc color: #00a4dc
} }
.guide-date-tab-button.emby-button-tv:focus { .guide-date-tab-button.show-focus:focus {
background-color: #00a4dc; background-color: #00a4dc;
color: #fff color: #fff
} }
@ -453,3 +458,7 @@ html {
.card:focus .card-focuscontent { .card:focus .card-focuscontent {
border-color: #00a4dc border-color: #00a4dc
} }
.metadataSidebarIcon {
color: #00a4dc
}

View file

@ -58,13 +58,12 @@ html {
} }
} }
.paper-icon-button-light:hover { .paper-icon-button-light:hover:not(:disabled) {
color: #00a4dc; color: #00a4dc;
background-color: rgba(0,164,220, .2); background-color: rgba(0,164,220, .2);
transition: 0.2s;
} }
.paper-icon-button-light:focus { .paper-icon-button-light.show-focus:focus {
color: #00a4dc; color: #00a4dc;
} }
@ -89,6 +88,11 @@ html {
color: #fff color: #fff
} }
.button-delete {
background: rgb(247, 0, 0);
color: rgba(255, 255, 255, .87)
}
.checkboxLabel { .checkboxLabel {
color: inherit color: inherit
} }
@ -327,27 +331,25 @@ html {
color: #fff color: #fff
} }
.emby-button-focusscale:focus { .emby-button.show-focus:focus {
background: #00a4dc; background: #00a4dc;
color: #fff color: #fff
} }
.emby-tab-button { .emby-tab-button {
color: #999; color: #999;
color: rgba(255, 255, 255, .4)
} }
.emby-tab-button-active { .emby-tab-button-active {
color: #00a4dc color: #00a4dc
} }
.emby-tab-button-active.emby-button-tv { .emby-tab-button.show-focus:focus {
color: #fff color: #00a4dc;
} }
.emby-tab-button.emby-button-tv:focus { .emby-tab-button:hover {
color: #00a4dc; color: #00a4dc;
background: 0 0
} }
.channelPrograms, .channelPrograms,
@ -401,7 +403,7 @@ html {
color: #00a4dc color: #00a4dc
} }
.guide-date-tab-button.emby-button-tv:focus { .guide-date-tab-button.show-focus:focus {
background-color: #00a4dc; background-color: #00a4dc;
color: #fff color: #fff
} }
@ -464,3 +466,7 @@ html {
.timeslotHeaders-desktop::-webkit-scrollbar { .timeslotHeaders-desktop::-webkit-scrollbar {
height: .7em height: .7em
} }
.metadataSidebarIcon {
color: #00a4dc
}

View file

@ -39,13 +39,12 @@ html {
background-color: rgba(0, 0, 0, .86) background-color: rgba(0, 0, 0, .86)
} }
.paper-icon-button-light:hover { .paper-icon-button-light:hover:not(:disabled) {
color: #00a4dc; color: #00a4dc;
background-color: rgba(0,164,220, .2); background-color: rgba(0,164,220, .2);
transition: 0.2s;
} }
.paper-icon-button-light:focus { .paper-icon-button-light.show-focus:focus {
color: #00a4dc; color: #00a4dc;
} }
@ -70,6 +69,11 @@ html {
color: #fff color: #fff
} }
.button-delete {
background: rgb(247, 0, 0);
color: rgba(255, 255, 255, .87)
}
.checkboxLabel { .checkboxLabel {
color: inherit color: inherit
} }
@ -304,28 +308,25 @@ html {
color: #fff color: #fff
} }
.emby-button-focusscale:focus { .emby-button.show-focus:focus {
background: #00a4dc; background: #00a4dc;
color: #fff color: #fff
} }
.emby-tab-button { .emby-tab-button {
color: #999; color: #999;
color: rgba(255, 255, 255, .4)
} }
.emby-tab-button-active { .emby-tab-button-active {
color: #fff
}
.emby-tab-button-active.emby-button-tv {
color: #999;
color: rgba(255, 255, 255, .4)
}
.emby-tab-button.emby-button-tv:focus {
color: #fff; color: #fff;
background: 0 0 }
.emby-tab-button.show-focus:focus {
color: #00a4dc;
}
.emby-tab-button:hover {
color: #00a4dc;
} }
.channelPrograms, .channelPrograms,
@ -379,7 +380,7 @@ html {
color: #00a4dc color: #00a4dc
} }
.guide-date-tab-button.emby-button-tv:focus { .guide-date-tab-button.show-focus:focus {
background-color: #00a4dc; background-color: #00a4dc;
color: #fff color: #fff
} }
@ -442,3 +443,7 @@ html {
.timeslotHeaders-desktop::-webkit-scrollbar { .timeslotHeaders-desktop::-webkit-scrollbar {
height: .7em height: .7em
} }
.metadataSidebarIcon {
color: #00a4dc
}

View file

@ -39,13 +39,12 @@ html {
background-color: rgba(0, 0, 0, .86) background-color: rgba(0, 0, 0, .86)
} }
.paper-icon-button-light:hover { .paper-icon-button-light:hover:not(:disabled) {
color: #52b54b; color: #52b54b;
background-color: rgba(82, 181, 75, .2); background-color: rgba(82, 181, 75, .2);
transition: 0.2s;
} }
.paper-icon-button-light:focus { .paper-icon-button-light.show-focus:focus {
color: #52b54b; color: #52b54b;
} }
@ -70,6 +69,11 @@ html {
color: #fff color: #fff
} }
.button-delete {
background: rgb(247, 0, 0);
color: rgba(255, 255, 255, .87)
}
.checkboxLabel { .checkboxLabel {
color: inherit color: inherit
} }
@ -304,27 +308,25 @@ html {
color: #fff color: #fff
} }
.emby-button-focusscale:focus { .emby-button.show-focus:focus {
background: #52b54b; background: #52b54b;
color: #fff color: #fff
} }
.emby-tab-button { .emby-tab-button {
color: #999; color: #999;
color: rgba(255, 255, 255, .4)
} }
.emby-tab-button-active { .emby-tab-button-active {
color: #52b54b
}
.emby-tab-button-active.emby-button-tv {
color: #fff
}
.emby-tab-button.emby-button-tv:focus {
color: #52b54b; color: #52b54b;
background: 0 0 }
.emby-tab-button.show-focus:focus {
color: #52b54b;
}
.emby-tab-button:hover {
color: #52b54b;
} }
.channelPrograms, .channelPrograms,
@ -378,7 +380,7 @@ html {
color: #52b54b color: #52b54b
} }
.guide-date-tab-button.emby-button-tv:focus { .guide-date-tab-button.show-focus:focus {
background-color: #52b54b; background-color: #52b54b;
color: #fff color: #fff
} }
@ -441,3 +443,7 @@ html {
.timeslotHeaders-desktop::-webkit-scrollbar { .timeslotHeaders-desktop::-webkit-scrollbar {
height: .7em height: .7em
} }
.metadataSidebarIcon {
color: #00a4dc
}

View file

@ -55,13 +55,12 @@ html {
background-color: #f0f0f0 background-color: #f0f0f0
} }
.paper-icon-button-light:hover { .paper-icon-button-light:hover:not(:disabled) {
color: #00a4dc; color: #00a4dc;
background-color: rgba(0,164,220, .2); background-color: rgba(0,164,220, .2);
transition: 0.2s;
} }
.paper-icon-button-light:focus { .paper-icon-button-light.show-focus:focus {
color: #00a4dc; color: #00a4dc;
} }
@ -85,6 +84,11 @@ html {
background: #0cb0e8 background: #0cb0e8
} }
.button-delete {
background: rgb(247, 0, 0);
color: rgba(255, 255, 255, .87)
}
.checkboxLabel { .checkboxLabel {
color: inherit color: inherit
} }
@ -323,27 +327,25 @@ html {
color: #fff color: #fff
} }
.emby-button-focusscale:focus { .emby-button.show-focus:focus {
background: #00a4dc; background: #00a4dc;
color: #fff color: #fff
} }
.emby-tab-button { .emby-tab-button {
color: #999; color: #999;
color: rgba(255, 255, 255, .5)
} }
.emby-tab-button-active { .emby-tab-button-active {
color: #00a4dc
}
.emby-tab-button-active.emby-button-tv {
color: #fff
}
.emby-tab-button.emby-button-tv:focus {
color: #00a4dc; color: #00a4dc;
background: 0 0 }
.emby-tab-button.show-focus:focus {
color: #00a4dc;
}
.emby-tab-button:hover {
color: #00a4dc;
} }
.channelPrograms, .channelPrograms,
@ -397,7 +399,7 @@ html {
color: #00a4dc color: #00a4dc
} }
.guide-date-tab-button.emby-button-tv:focus { .guide-date-tab-button.show-focus:focus {
background-color: #00a4dc; background-color: #00a4dc;
color: #fff color: #fff
} }
@ -437,3 +439,7 @@ html {
.card:focus .card-focuscontent { .card:focus .card-focuscontent {
border-color: #00a4dc border-color: #00a4dc
} }
.metadataSidebarIcon {
color: #00a4dc
}

View file

@ -58,13 +58,12 @@ html {
} }
} }
.paper-icon-button-light:hover { .paper-icon-button-light:hover:not(:disabled) {
color: rgb(12, 232, 214); color: rgb(12, 232, 214);
background-color: rgba(0,164,220, .2); background-color: rgba(0,164,220, .2);
transition: 0.2s;
} }
.paper-icon-button-light:focus { .paper-icon-button-light.show-focus:focus {
color: #ff77f1; color: #ff77f1;
} }
@ -144,6 +143,11 @@ a[data-role=button] {
background: #ff77f1 background: #ff77f1
} }
.button-delete {
background: rgb(247, 0, 0);
color: rgba(255, 255, 255, .87)
}
#btnResetPassword, #btnResetPassword,
.btnForgotPassword, .btnForgotPassword,
.btnCancel, .btnCancel,
@ -420,27 +424,25 @@ a[data-role=button] {
color: #f8f8fe color: #f8f8fe
} }
.emby-button-focusscale:focus { .emby-button.show-focus:focus {
background: #8ae9c1; background: #8ae9c1;
color: #f8f8fe color: #f8f8fe
} }
.emby-tab-button { .emby-tab-button {
color: #999; color: #999;
color: rgba(255, 255, 255, .4)
} }
.emby-tab-button-active { .emby-tab-button-active {
color: #f8f8fe color: #f8f8fe;
} }
.emby-tab-button-active.emby-button-tv { .emby-tab-button.show-focus:focus {
color: #f8f8fe color: #ff77f1;
} }
.emby-tab-button.emby-button-tv:focus { .emby-tab-button:hover {
color: #ff77f1; color: #ff77f1;
background: 0 0
} }
.channelPrograms, .channelPrograms,
@ -494,7 +496,7 @@ a[data-role=button] {
color: #ff77f1 color: #ff77f1
} }
.guide-date-tab-button.emby-button-tv:focus { .guide-date-tab-button.show-focus:focus {
background-color: #48C3C8; background-color: #48C3C8;
color: #fff color: #fff
} }
@ -569,3 +571,7 @@ a[data-role=button] {
background-color: #dbe6ff; background-color: #dbe6ff;
color: #0e0f2d; color: #0e0f2d;
} }
.metadataSidebarIcon {
color: #dbe6ff
}

View file

@ -64,13 +64,12 @@ html {
background: rgba(17, 98, 164, .9) background: rgba(17, 98, 164, .9)
} }
.paper-icon-button-light:hover { .paper-icon-button-light:hover:not(:disabled) {
color: #00a4dc; color: #00a4dc;
background-color: rgba(0,164,220, .2); background-color: rgba(0,164,220, .2);
transition: 0.2s;
} }
.paper-icon-button-light:focus { .paper-icon-button-light.show-focus:focus {
color: #00a4dc; color: #00a4dc;
} }
@ -95,6 +94,11 @@ html {
color: #fff color: #fff
} }
.button-delete {
background: rgb(247, 0, 0);
color: rgba(255, 255, 255, .87)
}
.checkboxLabel { .checkboxLabel {
color: inherit color: inherit
} }
@ -325,24 +329,25 @@ html {
color: #fff color: #fff
} }
.emby-button-focusscale:focus { .emby-button.show-focus:focus {
background: #00a4dc; background: #00a4dc;
color: #fff color: #fff
} }
.emby-tab-button { .emby-tab-button {
color: #999; color: #999;
color: rgba(255, 255, 255, .5)
} }
.emby-tab-button-active, .emby-tab-button-active {
.emby-tab-button-active.emby-button-tv {
color: #fff color: #fff
} }
.emby-tab-button.emby-button-tv:focus { .emby-tab-button.show-focus:focus {
color: #fff;
}
.emby-tab-button:hover {
color: #fff; color: #fff;
background: 0 0
} }
.channelPrograms, .channelPrograms,
@ -397,7 +402,7 @@ html {
color: #00a4dc color: #00a4dc
} }
.guide-date-tab-button.emby-button-tv:focus { .guide-date-tab-button.show-focus:focus {
background-color: #00a4dc; background-color: #00a4dc;
color: #fff color: #fff
} }
@ -456,3 +461,7 @@ html {
-webkit-border-radius: 2px; -webkit-border-radius: 2px;
background: center no-repeat rgba(255, 255, 255, .7) background: center no-repeat rgba(255, 255, 255, .7)
} }
.metadataSidebarIcon {
color: #00a4dc
}

View file

@ -3,10 +3,11 @@ define(["jQuery", "loading", "fnchecked", "emby-checkbox", "emby-textarea", "emb
function loadPage(page, config, languageOptions, systemInfo) { function loadPage(page, config, languageOptions, systemInfo) {
page.querySelector("#txtServerName").value = systemInfo.ServerName; page.querySelector("#txtServerName").value = systemInfo.ServerName;
$("#chkAutoRunWebApp", page).checked(config.AutoRunWebApp);
if (systemInfo.CanLaunchWebBrowser) { if (systemInfo.CanLaunchWebBrowser) {
page.querySelector("#fldRunWebAppAtStartup").classList.remove("hide"); page.querySelector("#fldAutoRunWebApp").classList.remove("hide");
} else { } else {
page.querySelector("#fldRunWebAppAtStartup").classList.add("hide"); page.querySelector("#fldAutoRunWebApp").classList.add("hide");
} }
page.querySelector("#txtCachePath").value = systemInfo.CachePath || ""; page.querySelector("#txtCachePath").value = systemInfo.CachePath || "";
$("#txtMetadataPath", page).val(systemInfo.InternalMetadataPath || ""); $("#txtMetadataPath", page).val(systemInfo.InternalMetadataPath || "");
@ -46,6 +47,7 @@ define(["jQuery", "loading", "fnchecked", "emby-checkbox", "emby-textarea", "emb
config.MetadataPath = $("#txtMetadataPath", form).val(); config.MetadataPath = $("#txtMetadataPath", form).val();
config.MetadataNetworkPath = $("#txtMetadataNetworkPath", form).val(); config.MetadataNetworkPath = $("#txtMetadataNetworkPath", form).val();
var requiresReload = (config.UICulture !== currentLanguage); var requiresReload = (config.UICulture !== currentLanguage);
config.AutoRunWebApp = $("#chkAutoRunWebApp", form).checked();
config.EnableAutomaticRestart = $("#chkEnableAutomaticRestart", form).checked(); config.EnableAutomaticRestart = $("#chkEnableAutomaticRestart", form).checked();
config.EnableAutoUpdate = $("#chkEnableAutomaticServerUpdates", form).checked(); config.EnableAutoUpdate = $("#chkEnableAutomaticServerUpdates", form).checked();
ApiClient.updateServerConfiguration(config).then(function() { ApiClient.updateServerConfiguration(config).then(function() {

View file

@ -1,4 +1,4 @@
define(["datetime", "events", "itemHelper", "serverNotifications", "dom", "globalize", "loading", "connectionManager", "playMethodHelper", "cardBuilder", "imageLoader", "components/activitylog", "scripts/imagehelper", "humanedate", "listViewStyle", "emby-button", "flexStyles", "emby-button", "emby-itemscontainer"], function (datetime, events, itemHelper, serverNotifications, dom, globalize, loading, connectionManager, playMethodHelper, cardBuilder, imageLoader, ActivityLog, imageHelper) { define(["datetime", "events", "itemHelper", "serverNotifications", "dom", "globalize", "loading", "connectionManager", "playMethodHelper", "cardBuilder", "imageLoader", "components/activitylog", "scripts/imagehelper", "indicators", "humanedate", "listViewStyle", "emby-button", "flexStyles", "emby-button", "emby-itemscontainer"], function (datetime, events, itemHelper, serverNotifications, dom, globalize, loading, connectionManager, playMethodHelper, cardBuilder, imageLoader, ActivityLog, imageHelper, indicators) {
"use strict"; "use strict";
function buttonEnabled(elem, enabled) { function buttonEnabled(elem, enabled) {
@ -12,27 +12,23 @@ define(["datetime", "events", "itemHelper", "serverNotifications", "dom", "globa
function showPlaybackInfo(btn, session) { function showPlaybackInfo(btn, session) {
require(["alert"], function (alert) { require(["alert"], function (alert) {
var showTranscodeReasons;
var title; var title;
var text = []; var text = [];
var displayPlayMethod = playMethodHelper.getDisplayPlayMethod(session);
var isDirectStream = "DirectStream" === displayPlayMethod;
var isTranscode = "Transcode" === displayPlayMethod;
if (isDirectStream) { var displayPlayMethod = playMethodHelper.getDisplayPlayMethod(session);
if (displayPlayMethod === "DirectStream") {
title = globalize.translate("DirectStreaming"); title = globalize.translate("DirectStreaming");
text.push(globalize.translate("DirectStreamHelp1")); text.push(globalize.translate("DirectStreamHelp1"));
text.push("<br/>"); text.push("<br/>");
text.push(globalize.translate("DirectStreamHelp2")); text.push(globalize.translate("DirectStreamHelp2"));
} else if (isTranscode) { } else if (displayPlayMethod === "Transcode") {
title = globalize.translate("Transcoding"); title = globalize.translate("Transcoding");
text.push(globalize.translate("MediaIsBeingConverted")); text.push(globalize.translate("MediaIsBeingConverted"));
if (session.TranscodingInfo && session.TranscodingInfo.TranscodeReasons && session.TranscodingInfo.TranscodeReasons.length) { if (session.TranscodingInfo && session.TranscodingInfo.TranscodeReasons && session.TranscodingInfo.TranscodeReasons.length) {
text.push("<br/>"); text.push("<br/>");
text.push(globalize.translate("LabelReasonForTranscoding")); text.push(globalize.translate("LabelReasonForTranscoding"));
session.TranscodingInfo.TranscodeReasons.forEach(function (transcodeReason) { session.TranscodingInfo.TranscodeReasons.forEach(function (transcodeReason) {
text.push(globalize.translate("" + transcodeReason)); text.push(globalize.translate(transcodeReason));
}); });
} }
} }
@ -240,29 +236,24 @@ define(["datetime", "events", "itemHelper", "serverNotifications", "dom", "globa
var nowPlayingItem = session.NowPlayingItem; var nowPlayingItem = session.NowPlayingItem;
var className = "scalableCard card activeSession backdropCard backdropCard-scalable"; var className = "scalableCard card activeSession backdropCard backdropCard-scalable";
if (session.TranscodingInfo && session.TranscodingInfo.CompletionPercentage) {
className += " transcodingSession";
}
html += '<div class="' + className + '" id="' + rowId + '">'; html += '<div class="' + className + '" id="' + rowId + '">';
html += '<div class="cardBox visualCardBox">'; html += '<div class="cardBox visualCardBox">';
html += '<div class="cardScalable visualCardBox-cardScalable">'; html += '<div class="cardScalable visualCardBox-cardScalable">';
html += '<div class="cardPadder cardPadder-backdrop"></div>'; html += '<div class="cardPadder cardPadder-backdrop"></div>';
html += '<div class="cardContent">'; html += '<div class="cardContent">';
var imgUrl = DashboardPage.getNowPlayingImageUrl(nowPlayingItem);
var imgUrl = DashboardPage.getNowPlayingImageUrl(nowPlayingItem);
if (imgUrl) { if (imgUrl) {
html += '<div class="sessionNowPlayingContent sessionNowPlayingContent-withbackground"'; html += '<div class="sessionNowPlayingContent sessionNowPlayingContent-withbackground"';
html += ' data-src="' + imgUrl + '" style="display:inline-block;background-image:url(\'' + imgUrl + "');\""; html += ' data-src="' + imgUrl + '" style="display:inline-block;background-image:url(\'' + imgUrl + "');\"></div>";
} else { } else {
html += '<div class="sessionNowPlayingContent"'; html += '<div class="sessionNowPlayingContent"></div>';
} }
html += "></div>";
html += '<div class="sessionNowPlayingInnerContent">'; html += '<div class="sessionNowPlayingInnerContent">';
html += '<div class="sessionAppInfo">'; html += '<div class="sessionAppInfo">';
var clientImage = DashboardPage.getClientImage(session);
var clientImage = DashboardPage.getClientImage(session);
if (clientImage) { if (clientImage) {
html += clientImage; html += clientImage;
} }
@ -272,7 +263,6 @@ define(["datetime", "events", "itemHelper", "serverNotifications", "dom", "globa
html += '<div class="sessionAppSecondaryText">' + DashboardPage.getAppSecondaryText(session) + "</div>"; html += '<div class="sessionAppSecondaryText">' + DashboardPage.getAppSecondaryText(session) + "</div>";
html += "</div>"; html += "</div>";
html += "</div>"; html += "</div>";
html += '<div class="sessionNowPlayingTime">' + DashboardPage.getSessionNowPlayingTime(session) + "</div>";
if (session.TranscodingInfo && session.TranscodingInfo.Framerate) { if (session.TranscodingInfo && session.TranscodingInfo.Framerate) {
html += '<div class="sessionTranscodingFramerate">' + session.TranscodingInfo.Framerate + " fps</div>"; html += '<div class="sessionTranscodingFramerate">' + session.TranscodingInfo.Framerate + " fps</div>";
@ -280,20 +270,28 @@ define(["datetime", "events", "itemHelper", "serverNotifications", "dom", "globa
html += '<div class="sessionTranscodingFramerate"></div>'; html += '<div class="sessionTranscodingFramerate"></div>';
} }
html += '<div class="sessionNowPlayingDetails">'
var nowPlayingName = DashboardPage.getNowPlayingName(session); var nowPlayingName = DashboardPage.getNowPlayingName(session);
html += '<div class="sessionNowPlayingInfo" data-imgsrc="' + nowPlayingName.image + '">'; html += '<div class="sessionNowPlayingInfo" data-imgsrc="' + nowPlayingName.image + '">';
html += nowPlayingName.html; html += nowPlayingName.html;
html += "</div>"; html += "</div>";
html += '<div class="sessionNowPlayingTime">' + DashboardPage.getSessionNowPlayingTime(session) + "</div>";
html += '</div>'
if (nowPlayingItem && nowPlayingItem.RunTimeTicks) { if (nowPlayingItem && nowPlayingItem.RunTimeTicks) {
html += '<progress class="playbackProgress" min="0" max="100" value="' + 100 * (session.PlayState.PositionTicks || 0) / nowPlayingItem.RunTimeTicks + '"></progress>'; var percent = 100 * (session.PlayState.PositionTicks || 0) / nowPlayingItem.RunTimeTicks;
html += indicators.getProgressHtml(percent, { containerClass: "playbackProgress" });
} else { } else {
html += '<progress class="playbackProgress hide" min="0" max="100"></progress>'; // need to leave the element in just in case the device starts playback
html += indicators.getProgressHtml(0, { containerClass: "playbackProgress hide" });
} }
if (session.TranscodingInfo && session.TranscodingInfo.CompletionPercentage) { if (session.TranscodingInfo && session.TranscodingInfo.CompletionPercentage) {
html += '<progress class="transcodingProgress" min="0" max="100" value="' + session.TranscodingInfo.CompletionPercentage.toFixed(1) + '"></progress>'; var percent = session.TranscodingInfo.CompletionPercentage.toFixed(1);
html += indicators.getProgressHtml(percent, { containerClass: "transcodingProgress" });
} else { } else {
html += '<progress class="transcodingProgress hide" min="0" max="100"></progress>'; // same issue as playbackProgress element above
html += indicators.getProgressHtml(0, { containerClass: "transcodingProgress hide" });
} }
html += "</div>"; html += "</div>";
@ -316,8 +314,8 @@ define(["datetime", "events", "itemHelper", "serverNotifications", "dom", "globa
html += '<div class="flex align-items-center justify-content-center">'; html += '<div class="flex align-items-center justify-content-center">';
var userImage = DashboardPage.getUserImage(session); var userImage = DashboardPage.getUserImage(session);
html += userImage ? '<img style="height:1.71em;border-radius:50px;margin-right:.5em;" src="' + userImage + '" />' : '<div style="height:1.71em;"></div>'; html += userImage ? '<img style="height:1.71em;border-radius:50px;margin-right:.5em;" src="' + userImage + '" />' : '<div style="height:1.71em;"></div>';
html += '<div class="sessionUserName" style="text-transform:uppercase;">'; html += '<div class="sessionUserName">';
html += DashboardPage.getUsersHtml(session) || "&nbsp;"; html += DashboardPage.getUsersHtml(session);
html += "</div>"; html += "</div>";
html += "</div>"; html += "</div>";
html += "</div>"; html += "</div>";
@ -328,7 +326,6 @@ define(["datetime", "events", "itemHelper", "serverNotifications", "dom", "globa
parentElement.insertAdjacentHTML("beforeend", html); parentElement.insertAdjacentHTML("beforeend", html);
var deadSessionElem = parentElement.querySelector(".deadSession"); var deadSessionElem = parentElement.querySelector(".deadSession");
if (deadSessionElem) { if (deadSessionElem) {
deadSessionElem.parentNode.removeChild(deadSessionElem); deadSessionElem.parentNode.removeChild(deadSessionElem);
} }
@ -398,13 +395,12 @@ define(["datetime", "events", "itemHelper", "serverNotifications", "dom", "globa
} }
if (showTranscodingInfo) { if (showTranscodingInfo) {
var line = []; var line = [];
if (session.TranscodingInfo) { if (session.TranscodingInfo) {
if (session.TranscodingInfo.Bitrate) { if (session.TranscodingInfo.Bitrate) {
if (session.TranscodingInfo.Bitrate > 1e6) { if (session.TranscodingInfo.Bitrate > 1e6) {
line.push((session.TranscodingInfo.Bitrate / 1e6).toFixed(1) + " Mbps"); line.push((session.TranscodingInfo.Bitrate / 1e6).toFixed(1) + " Mbps");
} else { } else {
line.push(Math.floor(session.TranscodingInfo.Bitrate / 1e3) + " kbps"); line.push(Math.floor(session.TranscodingInfo.Bitrate / 1e3) + " Kbps");
} }
} }
@ -426,7 +422,7 @@ define(["datetime", "events", "itemHelper", "serverNotifications", "dom", "globa
} }
} }
return html || "&nbsp;"; return html;
}, },
getSessionNowPlayingTime: function (session) { getSessionNowPlayingTime: function (session) {
var nowPlayingItem = session.NowPlayingItem; var nowPlayingItem = session.NowPlayingItem;
@ -436,7 +432,7 @@ define(["datetime", "events", "itemHelper", "serverNotifications", "dom", "globa
if (session.PlayState.PositionTicks) { if (session.PlayState.PositionTicks) {
html += datetime.getDisplayRunningTime(session.PlayState.PositionTicks); html += datetime.getDisplayRunningTime(session.PlayState.PositionTicks);
} else { } else {
html += "--:--:--"; html += "0:00";
} }
html += " / "; html += " / ";
@ -444,10 +440,8 @@ define(["datetime", "events", "itemHelper", "serverNotifications", "dom", "globa
if (nowPlayingItem && nowPlayingItem.RunTimeTicks) { if (nowPlayingItem && nowPlayingItem.RunTimeTicks) {
html += datetime.getDisplayRunningTime(nowPlayingItem.RunTimeTicks); html += datetime.getDisplayRunningTime(nowPlayingItem.RunTimeTicks);
} else { } else {
html += "--:--:--"; html += "0:00";
} }
return html;
} }
return html; return html;
@ -488,8 +482,7 @@ define(["datetime", "events", "itemHelper", "serverNotifications", "dom", "globa
maxWidth: 130, maxWidth: 130,
type: "Logo" type: "Logo"
}); });
} else { } else if (nowPlayingItem.ParentLogoImageTag) {
if (nowPlayingItem.ParentLogoImageTag) {
imgUrl = ApiClient.getScaledImageUrl(nowPlayingItem.ParentLogoItemId, { imgUrl = ApiClient.getScaledImageUrl(nowPlayingItem.ParentLogoItemId, {
tag: nowPlayingItem.ParentLogoImageTag, tag: nowPlayingItem.ParentLogoImageTag,
maxHeight: 24, maxHeight: 24,
@ -497,7 +490,6 @@ define(["datetime", "events", "itemHelper", "serverNotifications", "dom", "globa
type: "Logo" type: "Logo"
}); });
} }
}
if (imgUrl) { if (imgUrl) {
topText = '<img src="' + imgUrl + '" style="max-height:24px;max-width:130px;" />'; topText = '<img src="' + imgUrl + '" style="max-height:24px;max-width:130px;" />';
@ -510,7 +502,6 @@ define(["datetime", "events", "itemHelper", "serverNotifications", "dom", "globa
}, },
getUsersHtml: function (session) { getUsersHtml: function (session) {
var html = []; var html = [];
if (session.UserId) { if (session.UserId) {
html.push(session.UserName); html.push(session.UserName);
} }
@ -534,8 +525,8 @@ define(["datetime", "events", "itemHelper", "serverNotifications", "dom", "globa
}, },
updateSession: function (row, session) { updateSession: function (row, session) {
row.classList.remove("deadSession"); row.classList.remove("deadSession");
var nowPlayingItem = session.NowPlayingItem;
var nowPlayingItem = session.NowPlayingItem;
if (nowPlayingItem) { if (nowPlayingItem) {
row.classList.add("playingSession"); row.classList.add("playingSession");
} else { } else {
@ -555,7 +546,6 @@ define(["datetime", "events", "itemHelper", "serverNotifications", "dom", "globa
} }
var btnSessionPlayPause = row.querySelector(".btnSessionPlayPause"); var btnSessionPlayPause = row.querySelector(".btnSessionPlayPause");
if (session.ServerId && nowPlayingItem && session.SupportsRemoteControl && session.DeviceId !== connectionManager.deviceId()) { if (session.ServerId && nowPlayingItem && session.SupportsRemoteControl && session.DeviceId !== connectionManager.deviceId()) {
btnSessionPlayPause.classList.remove("hide"); btnSessionPlayPause.classList.remove("hide");
row.querySelector(".btnSessionStop").classList.remove("hide"); row.querySelector(".btnSessionStop").classList.remove("hide");
@ -572,7 +562,7 @@ define(["datetime", "events", "itemHelper", "serverNotifications", "dom", "globa
row.querySelector(".sessionNowPlayingStreamInfo").innerHTML = DashboardPage.getSessionNowPlayingStreamInfo(session); row.querySelector(".sessionNowPlayingStreamInfo").innerHTML = DashboardPage.getSessionNowPlayingStreamInfo(session);
row.querySelector(".sessionNowPlayingTime").innerHTML = DashboardPage.getSessionNowPlayingTime(session); row.querySelector(".sessionNowPlayingTime").innerHTML = DashboardPage.getSessionNowPlayingTime(session);
row.querySelector(".sessionUserName").innerHTML = DashboardPage.getUsersHtml(session) || "&nbsp;"; row.querySelector(".sessionUserName").innerHTML = DashboardPage.getUsersHtml(session);
row.querySelector(".sessionAppSecondaryText").innerHTML = DashboardPage.getAppSecondaryText(session); row.querySelector(".sessionAppSecondaryText").innerHTML = DashboardPage.getAppSecondaryText(session);
row.querySelector(".sessionTranscodingFramerate").innerHTML = session.TranscodingInfo && session.TranscodingInfo.Framerate ? session.TranscodingInfo.Framerate + " fps" : ""; row.querySelector(".sessionTranscodingFramerate").innerHTML = session.TranscodingInfo && session.TranscodingInfo.Framerate ? session.TranscodingInfo.Framerate + " fps" : "";
var nowPlayingName = DashboardPage.getNowPlayingName(session); var nowPlayingName = DashboardPage.getNowPlayingName(session);
@ -584,27 +574,19 @@ define(["datetime", "events", "itemHelper", "serverNotifications", "dom", "globa
} }
var playbackProgressElem = row.querySelector(".playbackProgress"); var playbackProgressElem = row.querySelector(".playbackProgress");
if (playbackProgressElem) {
if (nowPlayingItem && nowPlayingItem.RunTimeTicks) { if (nowPlayingItem && nowPlayingItem.RunTimeTicks) {
var position = session.PlayState.PositionTicks || 0; var percent = 100 * (session.PlayState.PositionTicks || 0) / nowPlayingItem.RunTimeTicks;
var value = 100 * position / nowPlayingItem.RunTimeTicks; html += indicators.getProgressHtml(percent, { containerClass: "playbackProgress" });
playbackProgressElem.classList.remove("hide");
playbackProgressElem.value = value;
} else { } else {
playbackProgressElem.classList.add("hide"); html += indicators.getProgressHtml(0, { containerClass: "playbackProgress hide" });
}
} }
var transcodingProgress = row.querySelector(".transcodingProgress"); var transcodingProgress = row.querySelector(".transcodingProgress");
if (session.TranscodingInfo && session.TranscodingInfo.CompletionPercentage) { if (session.TranscodingInfo && session.TranscodingInfo.CompletionPercentage) {
row.classList.add("transcodingSession"); var percent = session.TranscodingInfo.CompletionPercentage.toFixed(1);
transcodingProgress.value = session.TranscodingInfo.CompletionPercentage; html += indicators.getProgressHtml(percent, { containerClass: "transcodingProgress" });
transcodingProgress.classList.remove("hide");
} else { } else {
transcodingProgress.classList.add("hide"); html += indicators.getProgressHtml(0, { containerClass: "transcodingProgress hide" });
row.classList.remove("transcodingSession");
} }
var imgUrl = DashboardPage.getNowPlayingImageUrl(nowPlayingItem) || ""; var imgUrl = DashboardPage.getNowPlayingImageUrl(nowPlayingItem) || "";
@ -692,6 +674,14 @@ define(["datetime", "events", "itemHelper", "serverNotifications", "dom", "globa
}); });
} }
if (item && item.AlbumPrimaryImageTag) {
return ApiClient.getScaledImageUrl(item.AlbumId, {
type: "Primary",
width: 275,
tag: item.AlbumPrimaryImageTag
});
}
return null; return null;
}, },
systemUpdateTaskKey: "SystemUpdateTask", systemUpdateTaskKey: "SystemUpdateTask",
@ -707,7 +697,7 @@ define(["datetime", "events", "itemHelper", "serverNotifications", "dom", "globa
title: globalize.translate("HeaderRestart"), title: globalize.translate("HeaderRestart"),
text: globalize.translate("MessageConfirmRestart"), text: globalize.translate("MessageConfirmRestart"),
confirmText: globalize.translate("ButtonRestart"), confirmText: globalize.translate("ButtonRestart"),
primary: "cancel" primary: "delete"
}).then(function () { }).then(function () {
var page = dom.parentWithClass(btn, "page"); var page = dom.parentWithClass(btn, "page");
buttonEnabled(page.querySelector("#btnRestartServer"), false); buttonEnabled(page.querySelector("#btnRestartServer"), false);
@ -722,7 +712,7 @@ define(["datetime", "events", "itemHelper", "serverNotifications", "dom", "globa
title: globalize.translate("HeaderShutdown"), title: globalize.translate("HeaderShutdown"),
text: globalize.translate("MessageConfirmShutdown"), text: globalize.translate("MessageConfirmShutdown"),
confirmText: globalize.translate("ButtonShutdown"), confirmText: globalize.translate("ButtonShutdown"),
primary: "cancel" primary: "delete"
}).then(function () { }).then(function () {
var page = dom.parentWithClass(btn, "page"); var page = dom.parentWithClass(btn, "page");
buttonEnabled(page.querySelector("#btnRestartServer"), false); buttonEnabled(page.querySelector("#btnRestartServer"), false);
@ -787,7 +777,6 @@ define(["datetime", "events", "itemHelper", "serverNotifications", "dom", "globa
loading.show(); loading.show();
pollForInfo(page, apiClient); pollForInfo(page, apiClient);
DashboardPage.startInterval(apiClient); DashboardPage.startInterval(apiClient);
// TODO we currently don't support packages and thus these events are useless
events.on(serverNotifications, "RestartRequired", onRestartRequired); events.on(serverNotifications, "RestartRequired", onRestartRequired);
events.on(serverNotifications, "ServerShuttingDown", onServerShuttingDown); events.on(serverNotifications, "ServerShuttingDown", onServerShuttingDown);
events.on(serverNotifications, "ServerRestarting", onServerRestarting); events.on(serverNotifications, "ServerRestarting", onServerRestarting);

View file

@ -12,7 +12,7 @@ define(["loading", "dom", "libraryMenu", "globalize", "scripts/imagehelper", "hu
text: msg, text: msg,
title: globalize.translate("HeaderDeleteDevice"), title: globalize.translate("HeaderDeleteDevice"),
confirmText: globalize.translate("ButtonDelete"), confirmText: globalize.translate("ButtonDelete"),
primary: "cancel" primary: "delete"
}).then(function() { }).then(function() {
loading.show(), ApiClient.ajax({ loading.show(), ApiClient.ajax({
type: "DELETE", type: "DELETE",

View file

@ -10,7 +10,7 @@ define(["jQuery", "loading", "globalize", "dom", "libraryMenu"], function($, loa
$("#selectThreadCount", page).val(config.EncodingThreadCount); $("#selectThreadCount", page).val(config.EncodingThreadCount);
$("#txtDownMixAudioBoost", page).val(config.DownMixAudioBoost); $("#txtDownMixAudioBoost", page).val(config.DownMixAudioBoost);
page.querySelector(".txtEncoderPath").value = config.EncoderAppPathDisplay || ""; page.querySelector(".txtEncoderPath").value = config.EncoderAppPathDisplay || "";
$("#txtTranscodingTempPath", page).val(config.TranscodingTempPath || ""); $("#txtTranscodingTempPath", page).val(systemInfo.TranscodingTempPath || "");
$("#txtVaapiDevice", page).val(config.VaapiDevice || ""); $("#txtVaapiDevice", page).val(config.VaapiDevice || "");
page.querySelector("#selectH264Preset").value = config.H264Preset || ""; page.querySelector("#selectH264Preset").value = config.H264Preset || "";
page.querySelector("#txtH264Crf").value = config.H264Crf || ""; page.querySelector("#txtH264Crf").value = config.H264Crf || "";

View file

@ -108,6 +108,15 @@ define(["appRouter", "cardBuilder", "dom", "globalize", "connectionManager", "ap
overlayMoreButton: !0, overlayMoreButton: !0,
action: "instantmix", action: "instantmix",
coverImage: !0 coverImage: !0
}, {
name: "HeaderFavoriteBooks",
types: "Book",
shape: getPosterShape(),
showTitle: true,
showYear: true,
overlayPlayButton: true,
overlayText: false,
centerText: true
}] }]
} }

View file

@ -7,7 +7,7 @@ define(["loading", "libraryMenu", "dom", "globalize", "cardStyle", "emby-button"
confirm({ confirm({
title: globalize.translate("UninstallPluginHeader"), title: globalize.translate("UninstallPluginHeader"),
text: msg, text: msg,
primary: "cancel", primary: "delete",
confirmText: globalize.translate("UninstallPluginHeader") confirmText: globalize.translate("UninstallPluginHeader")
}).then(function() { }).then(function() {
loading.show(); loading.show();

View file

@ -235,7 +235,20 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "cardBuild
var name = itemHelper.getDisplayName(item, { var name = itemHelper.getDisplayName(item, {
includeParentInfo: !1 includeParentInfo: !1
}); });
html && !parentNameLast ? html += '<h3 class="itemName" style="margin: .25em 0 .5em;">' + name + "</h3>" : html = parentNameLast ? '<h1 class="itemName" style="margin: .1em 0 .25em;">' + name + "</h1>" + html : '<h1 class="itemName" style="margin: .1em 0 .5em;">' + name + "</h1>" + html, container.innerHTML = html, html.length ? container.classList.remove("hide") : container.classList.add("hide")
var offset = parentNameLast ? ".25em" : ".5em";
if (html && !parentNameLast) {
html += '<h3 class="itemName" style="margin: .25em 0 .5em;">' + name + '</h3>';
} else {
html = '<h1 class="itemName" style="margin: .1em 0 ' + offset + ';">' + name + "</h1>" + html;
}
if (item.OriginalTitle && item.OriginalTitle != item.Name) {
html += '<h4 class="itemName" style="margin: -' + offset + ' 0 0">' + item.OriginalTitle + '</h4>';
}
container.innerHTML = html;
html.length ? container.classList.remove("hide") : container.classList.add("hide")
} }
function setTrailerButtonVisibility(page, item) { function setTrailerButtonVisibility(page, item) {
@ -361,7 +374,7 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "cardBuild
function renderLogo(page, item, apiClient) { function renderLogo(page, item, apiClient) {
var url = logoImageUrl(item, apiClient, { var url = logoImageUrl(item, apiClient, {
maxWidth: 300 maxWidth: 400
}), }),
detailLogo = page.querySelector(".detailLogo"); detailLogo = page.querySelector(".detailLogo");
url ? (detailLogo.classList.remove("hide"), detailLogo.classList.add("lazy"), detailLogo.setAttribute("data-src", url), imageLoader.lazyImage(detailLogo)) : detailLogo.classList.add("hide") url ? (detailLogo.classList.remove("hide"), detailLogo.classList.add("lazy"), detailLogo.setAttribute("data-src", url), imageLoader.lazyImage(detailLogo)) : detailLogo.classList.add("hide")
@ -380,6 +393,18 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "cardBuild
} }
} }
function renderUserInfo(page, item) {
var lastPlayedElement = page.querySelector(".itemLastPlayed");
if (item.UserData && item.UserData.LastPlayedDate) {
lastPlayedElement.classList.remove("hide");
var datePlayed = datetime.parseISO8601Date(item.UserData.LastPlayedDate);
lastPlayedElement.innerHTML = globalize.translate("DatePlayed") + " " + datetime.toLocaleDateString(datePlayed) + " " + datetime.getDisplayTime(datePlayed);
} else {
lastPlayedElement.classList.add("hide");
}
}
function renderLinks(linksElem, item) { function renderLinks(linksElem, item) {
var html = []; var html = [];
if (item.DateCreated && itemHelper.enableDateAddedDisplay(item)) { if (item.DateCreated && itemHelper.enableDateAddedDisplay(item)) {
@ -404,7 +429,7 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "cardBuild
detectRatio = !1; detectRatio = !1;
imageTags.Primary ? (url = apiClient.getScaledImageUrl(item.Id, { imageTags.Primary ? (url = apiClient.getScaledImageUrl(item.Id, {
type: "Primary", type: "Primary",
maxHeight: 360, maxHeight: 460,
tag: item.ImageTags.Primary tag: item.ImageTags.Primary
}), detectRatio = !0) : item.BackdropImageTags && item.BackdropImageTags.length ? (url = apiClient.getScaledImageUrl(item.Id, { }), detectRatio = !0) : item.BackdropImageTags && item.BackdropImageTags.length ? (url = apiClient.getScaledImageUrl(item.Id, {
type: "Backdrop", type: "Backdrop",
@ -531,22 +556,64 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "cardBuild
} }
function renderDetails(page, item, apiClient, context, isStatic) { function renderDetails(page, item, apiClient, context, isStatic) {
renderSimilarItems(page, item, context), renderMoreFromSeason(page, item, apiClient), renderMoreFromArtist(page, item, apiClient), renderDirector(page, item, apiClient, context, isStatic), renderGenres(page, item, apiClient, context, isStatic), renderChannelGuide(page, apiClient, item); renderSimilarItems(page, item, context);
renderMoreFromSeason(page, item, apiClient);
renderMoreFromArtist(page, item, apiClient);
renderDirector(page, item, apiClient, context, isStatic);
renderGenres(page, item, apiClient, context, isStatic);
renderChannelGuide(page, apiClient, item);
var taglineElement = page.querySelector(".tagline"); var taglineElement = page.querySelector(".tagline");
item.Taglines && item.Taglines.length ? (taglineElement.classList.remove("hide"), taglineElement.innerHTML = item.Taglines[0]) : taglineElement.classList.add("hide"); if (item.Taglines && item.Taglines.length) {
var overview = page.querySelector(".overview"), taglineElement.classList.remove("hide");
externalLinksElem = page.querySelector(".itemExternalLinks"); taglineElement.innerHTML = item.Taglines[0];
"Season" !== item.Type && "MusicAlbum" !== item.Type && "MusicArtist" !== item.Type || (overview.classList.add("detailsHiddenOnMobile"), externalLinksElem.classList.add("detailsHiddenOnMobile")), renderOverview([overview], item); } else {
var i, length, itemMiscInfo = page.querySelectorAll(".itemMiscInfo-primary"); taglineElement.classList.add("hide");
for (i = 0, length = itemMiscInfo.length; i < length; i++) mediaInfo.fillPrimaryMediaInfo(itemMiscInfo[i], item, { }
var overview = page.querySelector(".overview");
var externalLinksElem = page.querySelector(".itemExternalLinks");
if ("Season" !== item.Type && "MusicAlbum" !== item.Type && "MusicArtist" !== item.Type) {
overview.classList.add("detailsHiddenOnMobile");
externalLinksElem.classList.add("detailsHiddenOnMobile");
}
renderOverview([overview], item);
var i, itemMiscInfo;
itemMiscInfo = page.querySelectorAll(".itemMiscInfo-primary");
for (i = 0; i < itemMiscInfo.length; i++) {
mediaInfo.fillPrimaryMediaInfo(itemMiscInfo[i], item, {
interactive: !0, interactive: !0,
episodeTitle: !1, episodeTitle: !1,
subtitles: !1 subtitles: !1
}), itemMiscInfo[i].innerHTML && "SeriesTimer" !== item.Type ? itemMiscInfo[i].classList.remove("hide") : itemMiscInfo[i].classList.add("hide"); });
for (itemMiscInfo = page.querySelectorAll(".itemMiscInfo-secondary"), i = 0, length = itemMiscInfo.length; i < length; i++) mediaInfo.fillSecondaryMediaInfo(itemMiscInfo[i], item, {
if (itemMiscInfo[i].innerHTML && "SeriesTimer" !== item.Type) {
itemMiscInfo[i].classList.remove("hide");
} else {
itemMiscInfo[i].classList.add("hide");
}
}
itemMiscInfo = page.querySelectorAll(".itemMiscInfo-secondary")
for (i = 0; i < itemMiscInfo.length; i++) {
mediaInfo.fillSecondaryMediaInfo(itemMiscInfo[i], item, {
interactive: !0 interactive: !0
}), itemMiscInfo[i].innerHTML ? itemMiscInfo[i].classList.remove("hide") : itemMiscInfo[i].classList.add("hide"); })
reloadUserDataButtons(page, item), renderLinks(externalLinksElem, item), renderTags(page, item), renderSeriesAirTime(page, item, isStatic)
if (itemMiscInfo[i].innerHTML && "SeriesTimer" !== item.Type) {
itemMiscInfo[i].classList.remove("hide");
} else {
itemMiscInfo[i].classList.add("hide");
}
}
reloadUserDataButtons(page, item);
renderLinks(externalLinksElem, item);
renderUserInfo(page, item);
renderTags(page, item);
renderSeriesAirTime(page, item, isStatic)
} }
function enableScrollX() { function enableScrollX() {

View file

@ -3,42 +3,55 @@ define(["jQuery", "apphost", "scripts/taskbutton", "loading", "libraryMenu", "gl
function addVirtualFolder(page) { function addVirtualFolder(page) {
require(["medialibrarycreator"], function (medialibrarycreator) { require(["medialibrarycreator"], function (medialibrarycreator) {
(new medialibrarycreator).show({ new medialibrarycreator().show({
collectionTypeOptions: getCollectionTypeOptions().filter(function (f) { collectionTypeOptions: getCollectionTypeOptions().filter(function (f) {
return !f.hidden; return !f.hidden;
}), }),
refresh: shouldRefreshLibraryAfterChanges(page) refresh: shouldRefreshLibraryAfterChanges(page)
}).then(function (hasChanges) { }).then(function (hasChanges) {
hasChanges && reloadLibrary(page); if (hasChanges) {
}) reloadLibrary(page);
}) }
});
});
} }
function editVirtualFolder(page, virtualFolder) { function editVirtualFolder(page, virtualFolder) {
require(["medialibraryeditor"], function (medialibraryeditor) { require(["medialibraryeditor"], function (medialibraryeditor) {
(new medialibraryeditor).show({ new medialibraryeditor().show({
refresh: shouldRefreshLibraryAfterChanges(page), refresh: shouldRefreshLibraryAfterChanges(page),
library: virtualFolder library: virtualFolder
}).then(function (hasChanges) { }).then(function (hasChanges) {
hasChanges && reloadLibrary(page); if (hasChanges) {
}) reloadLibrary(page);
}) }
});
});
} }
function deleteVirtualFolder(page, virtualFolder) { function deleteVirtualFolder(page, virtualFolder) {
var msg = globalize.translate("MessageAreYouSureYouWishToRemoveMediaFolder"); var msg = globalize.translate("MessageAreYouSureYouWishToRemoveMediaFolder");
if (virtualFolder.Locations.length) { if (virtualFolder.Locations.length) {
msg += "<br/><br/>" + globalize.translate("MessageTheFollowingLocationWillBeRemovedFromLibrary") + "<br/><br/>"; msg += "<br/><br/>" + globalize.translate("MessageTheFollowingLocationWillBeRemovedFromLibrary") + "<br/><br/>";
msg += virtualFolder.Locations.join("<br/>"); msg += virtualFolder.Locations.join("<br/>");
} }
require(["confirm"], function (confirm) { require(["confirm"], function (confirm) {
confirm(msg, globalize.translate("HeaderRemoveMediaFolder")).then(function() { confirm({
text: msg,
title: globalize.translate('HeaderRemoveMediaFolder'),
confirmText: globalize.translate('Delete'),
primary: 'delete'
}).then(function () {
var refreshAfterChange = shouldRefreshLibraryAfterChanges(page); var refreshAfterChange = shouldRefreshLibraryAfterChanges(page);
ApiClient.removeVirtualFolder(virtualFolder.Name, refreshAfterChange).then(function () { ApiClient.removeVirtualFolder(virtualFolder.Name, refreshAfterChange).then(function () {
reloadLibrary(page); reloadLibrary(page);
}) });
}) });
}) });
} }
function refreshVirtualFolder(page, virtualFolder) { function refreshVirtualFolder(page, virtualFolder) {
@ -97,6 +110,7 @@ define(["jQuery", "apphost", "scripts/taskbutton", "loading", "libraryMenu", "gl
id: "refresh", id: "refresh",
ironIcon: "refresh" ironIcon: "refresh"
}); });
require(["actionsheet"], function (actionsheet) { require(["actionsheet"], function (actionsheet) {
actionsheet.show({ actionsheet.show({
items: menuItems, items: menuItems,
@ -106,15 +120,19 @@ define(["jQuery", "apphost", "scripts/taskbutton", "loading", "libraryMenu", "gl
case "edit": case "edit":
editVirtualFolder(page, virtualFolder); editVirtualFolder(page, virtualFolder);
break; break;
case "editimages": case "editimages":
editImages(page, virtualFolder); editImages(page, virtualFolder);
break; break;
case "rename": case "rename":
renameVirtualFolder(page, virtualFolder); renameVirtualFolder(page, virtualFolder);
break; break;
case "delete": case "delete":
deleteVirtualFolder(page, virtualFolder); deleteVirtualFolder(page, virtualFolder);
break; break;
case "refresh": case "refresh":
refreshVirtualFolder(page, virtualFolder); refreshVirtualFolder(page, virtualFolder);
} }
@ -148,8 +166,9 @@ define(["jQuery", "apphost", "scripts/taskbutton", "loading", "libraryMenu", "gl
for (var i = 0; i < virtualFolders.length; i++) { for (var i = 0; i < virtualFolders.length; i++) {
var virtualFolder = virtualFolders[i]; var virtualFolder = virtualFolders[i];
html += getVirtualFolderHtml(page, virtualFolder, i) html += getVirtualFolderHtml(page, virtualFolder, i);
} }
var divVirtualFolders = page.querySelector("#divVirtualFolders"); var divVirtualFolders = page.querySelector("#divVirtualFolders");
divVirtualFolders.innerHTML = html; divVirtualFolders.innerHTML = html;
divVirtualFolders.classList.add("itemsContainer"); divVirtualFolders.classList.add("itemsContainer");
@ -164,7 +183,10 @@ define(["jQuery", "apphost", "scripts/taskbutton", "loading", "libraryMenu", "gl
var card = $(this).parents(".card")[0]; var card = $(this).parents(".card")[0];
var index = parseInt(card.getAttribute("data-index")); var index = parseInt(card.getAttribute("data-index"));
var virtualFolder = virtualFolders[index]; var virtualFolder = virtualFolders[index];
virtualFolder.ItemId && editVirtualFolder(page, virtualFolder);
if (virtualFolder.ItemId) {
editVirtualFolder(page, virtualFolder);
}
}); });
loading.hide(); loading.hide();
} }
@ -177,7 +199,7 @@ define(["jQuery", "apphost", "scripts/taskbutton", "loading", "libraryMenu", "gl
}).then(function () { }).then(function () {
reloadLibrary(page); reloadLibrary(page);
}); });
}) });
} }
function getLink(text, url) { function getLink(text, url) {
@ -214,25 +236,32 @@ define(["jQuery", "apphost", "scripts/taskbutton", "loading", "libraryMenu", "gl
name: globalize.translate("FolderTypeUnset"), name: globalize.translate("FolderTypeUnset"),
value: "mixed", value: "mixed",
message: globalize.translate("MessageUnsetContentHelp") message: globalize.translate("MessageUnsetContentHelp")
}] }];
} }
function getVirtualFolderHtml(page, virtualFolder, index) { function getVirtualFolderHtml(page, virtualFolder, index) {
var html = ""; var html = "";
var style = ""; var style = "";
page.classList.contains("wizardPage") && (style += "min-width:33.3%;");
if (page.classList.contains("wizardPage")) {
style += "min-width:33.3%;";
}
html += '<div class="card backdropCard scalableCard backdropCard-scalable" style="' + style + '" data-index="' + index + '" data-id="' + virtualFolder.ItemId + '">'; html += '<div class="card backdropCard scalableCard backdropCard-scalable" style="' + style + '" data-index="' + index + '" data-id="' + virtualFolder.ItemId + '">';
html += '<div class="cardBox visualCardBox">'; html += '<div class="cardBox visualCardBox">';
html += '<div class="cardScalable visualCardBox-cardScalable">'; html += '<div class="cardScalable visualCardBox-cardScalable">';
html += '<div class="cardPadder cardPadder-backdrop"></div>'; html += '<div class="cardPadder cardPadder-backdrop"></div>';
html += '<div class="cardContent">'; html += '<div class="cardContent">';
var imgUrl = ""; var imgUrl = "";
if (virtualFolder.PrimaryImageItemId) { if (virtualFolder.PrimaryImageItemId) {
imgUrl = ApiClient.getScaledImageUrl(virtualFolder.PrimaryImageItemId, { imgUrl = ApiClient.getScaledImageUrl(virtualFolder.PrimaryImageItemId, {
type: "Primary" type: "Primary"
}); });
} }
var hasCardImageContainer; var hasCardImageContainer;
if (imgUrl) { if (imgUrl) {
html += '<div class="cardImageContainer editLibrary" style="cursor:pointer;background-image:url(\'' + imgUrl + "');\">"; html += '<div class="cardImageContainer editLibrary" style="cursor:pointer;background-image:url(\'' + imgUrl + "');\">";
hasCardImageContainer = true; hasCardImageContainer = true;
@ -241,38 +270,60 @@ define(["jQuery", "apphost", "scripts/taskbutton", "loading", "libraryMenu", "gl
html += '<i class="cardImageIcon-small md-icon">' + (virtualFolder.icon || imageHelper.getLibraryIcon(virtualFolder.CollectionType)) + "</i>"; html += '<i class="cardImageIcon-small md-icon">' + (virtualFolder.icon || imageHelper.getLibraryIcon(virtualFolder.CollectionType)) + "</i>";
hasCardImageContainer = true; hasCardImageContainer = true;
} }
if (hasCardImageContainer) { if (hasCardImageContainer) {
html += '<div class="cardIndicators backdropCardIndicators">'; html += '<div class="cardIndicators backdropCardIndicators">';
html += '<div is="emby-itemrefreshindicator"' + (virtualFolder.RefreshProgress || virtualFolder.RefreshStatus && "Idle" !== virtualFolder.RefreshStatus ? "" : ' class="hide"') + ' data-progress="' + (virtualFolder.RefreshProgress || 0) + '" data-status="' + virtualFolder.RefreshStatus + '"></div>'; html += '<div is="emby-itemrefreshindicator"' + (virtualFolder.RefreshProgress || virtualFolder.RefreshStatus && "Idle" !== virtualFolder.RefreshStatus ? "" : ' class="hide"') + ' data-progress="' + (virtualFolder.RefreshProgress || 0) + '" data-status="' + virtualFolder.RefreshStatus + '"></div>';
html += "</div>"; html += "</div>";
html += "</div>"; html += "</div>";
} }
if (!imgUrl && virtualFolder.showNameWithIcon) { if (!imgUrl && virtualFolder.showNameWithIcon) {
html += '<h3 class="cardImageContainer addLibrary" style="position:absolute;top:0;left:0;right:0;bottom:0;cursor:pointer;flex-direction:column;">'; html += '<h3 class="cardImageContainer addLibrary" style="position:absolute;top:0;left:0;right:0;bottom:0;cursor:pointer;flex-direction:column;">';
html += '<i class="cardImageIcon-small md-icon">' + (virtualFolder.icon || imageHelper.getLibraryIcon(virtualFolder.CollectionType)) + "</i>"; html += '<i class="cardImageIcon-small md-icon">' + (virtualFolder.icon || imageHelper.getLibraryIcon(virtualFolder.CollectionType)) + "</i>";
virtualFolder.showNameWithIcon && (html += '<div style="margin:1em 0;position:width:100%;">', html += virtualFolder.Name, html += "</div>");
if (virtualFolder.showNameWithIcon) {
html += '<div style="margin:1em 0;position:width:100%;">';
html += virtualFolder.Name;
html += "</div>";
}
html += "</h3>"; html += "</h3>";
} }
html += "</div>";
html += "</div>";
html += '<div class="cardFooter visualCardBox-cardFooter">';
// always show menu unless explicitly hidden html += "</div>";
html += "</div>";
html += '<div class="cardFooter visualCardBox-cardFooter">'; // always show menu unless explicitly hidden
if (virtualFolder.showMenu !== false) { if (virtualFolder.showMenu !== false) {
html += '<div style="text-align:right; float:right;padding-top:5px;">'; html += '<div style="text-align:right; float:right;padding-top:5px;">';
html += '<button type="button" is="paper-icon-button-light" class="btnCardMenu autoSize"><i class="md-icon">&#xE5D3;</i></button>'; html += '<button type="button" is="paper-icon-button-light" class="btnCardMenu autoSize"><i class="md-icon">&#xE5D3;</i></button>';
html += "</div>"; html += "</div>";
} }
html += "<div class='cardText'>"; html += "<div class='cardText'>";
virtualFolder.showNameWithIcon ? html += "&nbsp;" : html += virtualFolder.Name;
if (virtualFolder.showNameWithIcon) {
html += "&nbsp;";
} else {
html += virtualFolder.Name;
}
html += "</div>"; html += "</div>";
var typeName = getCollectionTypeOptions().filter(function (t) { var typeName = getCollectionTypeOptions().filter(function (t) {
return t.value == virtualFolder.CollectionType return t.value == virtualFolder.CollectionType;
})[0]; })[0];
typeName = typeName ? typeName.name : globalize.translate("FolderTypeUnset"); typeName = typeName ? typeName.name : globalize.translate("FolderTypeUnset");
html += "<div class='cardText cardText-secondary'>"; html += "<div class='cardText cardText-secondary'>";
virtualFolder.showType === false ? html += "&nbsp;" : html += typeName;
if (virtualFolder.showType === false) {
html += "&nbsp;";
} else {
html += typeName;
}
html += "</div>"; html += "</div>";
if (virtualFolder.showLocations === false) { if (virtualFolder.showLocations === false) {
html += "<div class='cardText cardText-secondary'>"; html += "<div class='cardText cardText-secondary'>";
html += "&nbsp;"; html += "&nbsp;";
@ -286,6 +337,7 @@ define(["jQuery", "apphost", "scripts/taskbutton", "loading", "libraryMenu", "gl
html += globalize.translate("NumLocationsValue", virtualFolder.Locations.length); html += globalize.translate("NumLocationsValue", virtualFolder.Locations.length);
html += "</div>"; html += "</div>";
} }
html += "</div>"; html += "</div>";
html += "</div>"; html += "</div>";
html += "</div>"; html += "</div>";
@ -305,12 +357,12 @@ define(["jQuery", "apphost", "scripts/taskbutton", "loading", "libraryMenu", "gl
}, { }, {
href: "metadatanfo.html", href: "metadatanfo.html",
name: globalize.translate("TabNfoSettings") name: globalize.translate("TabNfoSettings")
}] }];
} }
window.WizardLibraryPage = { window.WizardLibraryPage = {
next: function () { next: function () {
Dashboard.navigate("wizardsettings.html") Dashboard.navigate("wizardsettings.html");
} }
}; };
pageClassOn("pageshow", "mediaLibraryPage", function () { pageClassOn("pageshow", "mediaLibraryPage", function () {

View file

@ -140,31 +140,31 @@ define(["loading", "layoutManager", "userSettings", "events", "libraryBrowser",
libraryBrowser.showSortMenu({ libraryBrowser.showSortMenu({
items: [{ items: [{
name: Globalize.translate("OptionNameSort"), name: Globalize.translate("OptionNameSort"),
id: "SortName" id: "SortName,ProductionYear"
}, { }, {
name: Globalize.translate("OptionImdbRating"), name: Globalize.translate("OptionImdbRating"),
id: "CommunityRating,SortName" id: "CommunityRating,SortName,ProductionYear"
}, { }, {
name: Globalize.translate("OptionCriticRating"), name: Globalize.translate("OptionCriticRating"),
id: "CriticRating,SortName" id: "CriticRating,SortName,ProductionYear"
}, { }, {
name: Globalize.translate("OptionDateAdded"), name: Globalize.translate("OptionDateAdded"),
id: "DateCreated,SortName" id: "DateCreated,SortName,ProductionYear"
}, { }, {
name: Globalize.translate("OptionDatePlayed"), name: Globalize.translate("OptionDatePlayed"),
id: "DatePlayed,SortName" id: "DatePlayed,SortName,ProductionYear"
}, { }, {
name: Globalize.translate("OptionParentalRating"), name: Globalize.translate("OptionParentalRating"),
id: "OfficialRating,SortName" id: "OfficialRating,SortName,ProductionYear"
}, { }, {
name: Globalize.translate("OptionPlayCount"), name: Globalize.translate("OptionPlayCount"),
id: "PlayCount,SortName" id: "PlayCount,SortName,ProductionYear"
}, { }, {
name: Globalize.translate("OptionReleaseDate"), name: Globalize.translate("OptionReleaseDate"),
id: "PremiereDate,SortName" id: "PremiereDate,SortName,ProductionYear"
}, { }, {
name: Globalize.translate("OptionRuntime"), name: Globalize.translate("OptionRuntime"),
id: "Runtime,SortName" id: "Runtime,SortName,ProductionYear"
}], }],
callback: function() { callback: function() {
query.StartIndex = 0, userSettings.saveQuerySettings(savedQueryKey, query), itemsContainer.refreshItems() query.StartIndex = 0, userSettings.saveQuerySettings(savedQueryKey, query), itemsContainer.refreshItems()
@ -189,7 +189,7 @@ define(["loading", "layoutManager", "userSettings", "events", "libraryBrowser",
savedQueryKey = params.topParentId + "-" + options.mode, savedQueryKey = params.topParentId + "-" + options.mode,
savedViewKey = savedQueryKey + "-view", savedViewKey = savedQueryKey + "-view",
query = { query = {
SortBy: "SortName", SortBy: "SortName,ProductionYear",
SortOrder: "Ascending", SortOrder: "Ascending",
IncludeItemTypes: "Movie", IncludeItemTypes: "Movie",
Recursive: !0, Recursive: !0,

View file

@ -13,7 +13,7 @@ define(["jQuery", "loading", "libraryMenu", "fnchecked"], function($, loading, l
} }
function loadAuthProviders(page, user, providers) { function loadAuthProviders(page, user, providers) {
providers.length > 1 && !user.Policy.IsAdministrator ? page.querySelector(".fldSelectLoginProvider").classList.remove("hide") : page.querySelector(".fldSelectLoginProvider").classList.add("hide"); providers.length > 1 ? page.querySelector(".fldSelectLoginProvider").classList.remove("hide") : page.querySelector(".fldSelectLoginProvider").classList.add("hide");
var currentProviderId = user.Policy.AuthenticationProviderId; var currentProviderId = user.Policy.AuthenticationProviderId;
page.querySelector(".selectLoginProvider").innerHTML = providers.map(function(provider) { page.querySelector(".selectLoginProvider").innerHTML = providers.map(function(provider) {
var selected = provider.Id === currentProviderId || providers.length < 2 ? " selected" : ""; var selected = provider.Id === currentProviderId || providers.length < 2 ? " selected" : "";
@ -22,11 +22,7 @@ define(["jQuery", "loading", "libraryMenu", "fnchecked"], function($, loading, l
} }
function loadPasswordResetProviders(page, user, providers) { function loadPasswordResetProviders(page, user, providers) {
if (providers.length > 1 && !user.Policy.IsAdministrator) { providers.length > 1 ? page.querySelector(".fldSelectPasswordResetProvider").classList.remove("hide") : page.querySelector(".fldSelectPasswordResetProvider").classList.add("hide");
page.querySelector(".fldSelectPasswordResetProvider").classList.remove("hide");
} else {
page.querySelector(".fldSelectPasswordResetProvider").classList.add("hide");
}
var currentProviderId = user.Policy.PasswordResetProviderId; var currentProviderId = user.Policy.PasswordResetProviderId;
page.querySelector(".selectPasswordResetProvider").innerHTML = providers.map(function(provider) { page.querySelector(".selectPasswordResetProvider").innerHTML = providers.map(function(provider) {
var selected = (provider.Id === currentProviderId || providers.length < 2) ? " selected" : ""; var selected = (provider.Id === currentProviderId || providers.length < 2) ? " selected" : "";

View file

@ -9,7 +9,7 @@ define(["loading", "dom", "globalize", "humanedate", "paper-icon-button-light",
title: globalize.translate("DeleteUser"), title: globalize.translate("DeleteUser"),
text: msg, text: msg,
confirmText: globalize.translate("ButtonDelete"), confirmText: globalize.translate("ButtonDelete"),
primary: "cancel" primary: "delete"
}).then(function () { }).then(function () {
loading.show(); loading.show();
ApiClient.deleteUser(id).then(function () { ApiClient.deleteUser(id).then(function () {

View file

@ -272,10 +272,9 @@ div[data-role=controlgroup] a.ui-btn-active {
position: relative position: relative
} }
.sessionAppInfo, .sessionAppInfo {
.sessionNowPlayingInfo { padding: 0.5em;
padding: .5em; overflow: hidden;
overflow: hidden
} }
.sessionCardButtons { .sessionCardButtons {
@ -317,105 +316,60 @@ div[data-role=controlgroup] a.ui-btn-active {
max-width: 200px max-width: 200px
} }
.sessionNowPlayingInfo { .sessionNowPlayingDetails {
display: flex;
position: absolute; position: absolute;
left: 0; bottom: 0px;
bottom: 11px; width: 100%;
max-width: 50%; }
-o-text-overflow: ellipsis;
text-overflow: ellipsis .sessionNowPlayingInfo {
flex-grow: 1;
text-overflow: ellipsis;
padding: 0.8em 0.5em;
} }
.sessionAppInfo img { .sessionAppInfo img {
max-width: 32px; max-width: 40px;
max-height: 32px; max-height: 40px;
margin-right: 5px margin-right: 8px;
}
.activeSession .playbackProgress {
position: absolute;
right: 0;
bottom: 0;
left: 0;
height: 7px;
width: 100%;
opacity: .95
}
.activeSession:not(.playingSession) .sessionNowPlayingInfo {
bottom: 0
} }
.sessionNowPlayingTime { .sessionNowPlayingTime {
position: absolute; flex-shrink: 0;
right: 10px; align-self: flex-end;
bottom: 19px text-overflow: ellipsis;
padding: 0.8em 0.5em;
} }
.sessionNowPlayingStreamInfo { .sessionNowPlayingStreamInfo {
white-space: nowrap white-space: nowrap;
} }
.activeSession .playbackProgress,
.activeSession .transcodingProgress { .activeSession .transcodingProgress {
position: absolute;
right: 0; right: 0;
bottom: 0; bottom: 0;
left: 0; left: 0;
height: 5px; height: 6px;
width: 100%; width: 100%;
opacity: .9;
position: absolute
} }
.playbackProgress, .playbackProgress,
.transcodingProgress { .transcodingProgress {
appearance: none; margin: 0px;
-moz-appearance: none; width: 100%;
-webkit-appearance: none; background: transparent !important;
margin: 0 5px 0 0;
height: 14px;
border: 0 solid #222;
-webkit-border-radius: 0;
border-radius: 0;
width: 50px;
background: #000 !important
} }
.playbackProgress::-webkit-progress-bar, .playbackProgress > div {
.transcodingProgress::-webkit-progress-bar { z-index: 1000;
background: #000 background-color: #00a4dc;
} }
.transcodingSession .playbackProgress { .transcodingProgress > div {
bottom: 5px background-color: #dd4919;
}
.transcodingProgress::-moz-progress-bar {
border-radius: .3em;
background-color: #dd4919
}
.transcodingProgress::-webkit-progress-value {
-webkit-border-radius: .3em;
border-radius: .3em;
background-color: #dd4919
}
.transcodingProgress[aria-valuenow]:before {
-webkit-border-radius: .3em;
border-radius: .3em;
background-color: #dd4919
}
.playbackProgress::-moz-progress-bar {
background-color: #00a4dc
}
.playbackProgress::-webkit-progress-value {
background-color: #00a4dc
}
.playbackProgress[aria-valuenow]:before {
background-color: #00a4dc
} }
@media all and (max-width:34.375em) { @media all and (max-width:34.375em) {

View file

@ -47,6 +47,10 @@
background: #00a4dc !important background: #00a4dc !important
} }
.metadataSidebarIcon {
margin-right: .4em
}
@media all and (min-width:50em) { @media all and (min-width:50em) {
.editPageSidebar { .editPageSidebar {
position: fixed; position: fixed;

View file

@ -70,11 +70,10 @@ div[data-role=page] {
.page, .page,
.pageWithAbsoluteTabs .pageTabContent { .pageWithAbsoluteTabs .pageTabContent {
/* provides room for the music controls */ /* provides room for the music controls */
padding-bottom: 5em !important padding-bottom: 5em !important;
} }
@media all and (min-width:50em) { @media all and (min-width:50em) {
.readOnlyContent, .readOnlyContent,
form { form {
max-width: 54em max-width: 54em

View file

@ -26,9 +26,9 @@
</div> </div>
</div> </div>
</div> </div>
<div id="fldRunWebAppAtStartup" class="checkboxContainer checkboxContainer-withDescription hide"> <div id="fldAutoRunWebApp" class="checkboxContainer checkboxContainer-withDescription hide">
<label> <label>
<input is="emby-checkbox" type="checkbox" id="chkRunWebAppAtStartup" /> <input is="emby-checkbox" type="checkbox" id="chkAutoRunWebApp" />
<span>${LaunchWebAppOnStartup}</span> <span>${LaunchWebAppOnStartup}</span>
</label> </label>
<div class="fieldDescription checkboxFieldDescription"> <div class="fieldDescription checkboxFieldDescription">

View file

@ -12,13 +12,13 @@
<div class="selectContainer"> <div class="selectContainer">
<select is="emby-select" id="selectVideoDecoder" label="${LabelHardwareAccelerationType}"> <select is="emby-select" id="selectVideoDecoder" label="${LabelHardwareAccelerationType}">
<option value="">${OptionNone}</option> <option value="">${OptionNone}</option>
<option value="amf">AMD AMF (experimental)</option> <option value="amf">AMD AMF</option>
<option value="qsv">Intel Quick Sync (experimental)</option> <option value="qsv">Intel Quick Sync</option>
<option value="mediacodec">MediaCodec Android (experimental)</option> <option value="mediacodec">MediaCodec Android</option>
<option value="omx">OpenMAX OMX (experimental)</option> <option value="omx">OpenMAX OMX</option>
<option value="nvenc">Nvidia NVENC (experimental)</option> <option value="nvenc">Nvidia NVENC</option>
<option value="vaapi">Video Acceleration API (VA API) (experimental)</option> <option value="vaapi">Video Acceleration API (VAAPI)</option>
<option value="h264_v4l2m2m">Exynos V4L2 MFC Encoder (experimental)</option> <option value="h264_v4l2m2m">Exynos V4L2 MFC</option>
</select> </select>
<div class="fieldDescription">${LabelHardwareAccelerationTypeHelp}</div> <div class="fieldDescription">${LabelHardwareAccelerationTypeHelp}</div>
</div> </div>

View file

@ -30,6 +30,10 @@
</div> </div>
<div class="itemMiscInfo nativeName hide">
</div>
<div class="itemMiscInfo itemMiscInfo-primary" style="margin: .7em 0;font-size:92%;"> <div class="itemMiscInfo itemMiscInfo-primary" style="margin: .7em 0;font-size:92%;">
</div> </div>
@ -191,6 +195,7 @@
</div> </div>
<div class="detailSectionContent"> <div class="detailSectionContent">
<div class="itemLastPlayed hide"></div>
<p class="itemGenres"></p> <p class="itemGenres"></p>
<h3 class="tagline"></h3> <h3 class="tagline"></h3>
@ -202,6 +207,7 @@
<div class="itemTags hide" style="margin: .7em 0;font-size:92%;"> <div class="itemTags hide" style="margin: .7em 0;font-size:92%;">
</div> </div>
<div class="itemExternalLinks hide" style="margin: .7em 0;font-size:92%;"> <div class="itemExternalLinks hide" style="margin: .7em 0;font-size:92%;">
</div> </div>

View file

@ -4,7 +4,7 @@
<div class="readOnlyContent" style="margin: 0 auto;"> <div class="readOnlyContent" style="margin: 0 auto;">
<div class="verticalSection verticalSection-extrabottompadding"> <div class="verticalSection verticalSection-extrabottompadding">
<h2 class="sectionTitle headerUsername" style="padding-left:.25em;"></h2> <h2 class="sectionTitle headerUsername" style="padding-left:.25em;"></h2>
<a is="emby-linkbutton" style="display:block; padding: 0; margin:0;" data-ripple="false" href="#" class="lnkMyProfile listItem-border"> <a is="emby-linkbutton" data-ripple="false" href="#" class="lnkMyProfile listItem-border">
<div class="listItem"> <div class="listItem">
<i class="md-icon listItemIcon listItemIcon-transparent">person</i> <i class="md-icon listItemIcon listItemIcon-transparent">person</i>
<div class="listItemBody"> <div class="listItemBody">
@ -13,7 +13,7 @@
</div> </div>
</a> </a>
<a is="emby-linkbutton" style="display:block; padding: 0; margin:0;" data-ripple="false" href="#" class="lnkDisplayPreferences listItem-border"> <a is="emby-linkbutton" data-ripple="false" href="#" class="lnkDisplayPreferences listItem-border">
<div class="listItem"> <div class="listItem">
<i class="md-icon listItemIcon listItemIcon-transparent">tv</i> <i class="md-icon listItemIcon listItemIcon-transparent">tv</i>
<div class="listItemBody"> <div class="listItemBody">
@ -22,7 +22,7 @@
</div> </div>
</a> </a>
<a is="emby-linkbutton" style="display:block; padding: 0; margin:0;" data-ripple="false" href="#" class="lnkHomePreferences listItem-border"> <a is="emby-linkbutton" data-ripple="false" href="#" class="lnkHomePreferences listItem-border">
<div class="listItem"> <div class="listItem">
<i class="md-icon listItemIcon listItemIcon-transparent">home</i> <i class="md-icon listItemIcon listItemIcon-transparent">home</i>
<div class="listItemBody"> <div class="listItemBody">
@ -31,7 +31,7 @@
</div> </div>
</a> </a>
<a is="emby-linkbutton" style="display:block; padding: 0; margin:0;" data-ripple="false" href="#" class="lnkLanguagePreferences listItem-border"> <a is="emby-linkbutton" data-ripple="false" href="#" class="lnkLanguagePreferences listItem-border">
<div class="listItem"> <div class="listItem">
<i class="md-icon listItemIcon listItemIcon-transparent">play_circle_filled</i> <i class="md-icon listItemIcon listItemIcon-transparent">play_circle_filled</i>
<div class="listItemBody"> <div class="listItemBody">
@ -40,7 +40,7 @@
</div> </div>
</a> </a>
<a is="emby-linkbutton" style="display:block; padding: 0; margin:0;" data-ripple="false" href="#" class="lnkSubtitlePreferences listItem-border"> <a is="emby-linkbutton" data-ripple="false" href="#" class="lnkSubtitlePreferences listItem-border">
<div class="listItem"> <div class="listItem">
<i class="md-icon listItemIcon listItemIcon-transparent">closed_caption</i> <i class="md-icon listItemIcon listItemIcon-transparent">closed_caption</i>
<div class="listItemBody"> <div class="listItemBody">
@ -70,7 +70,7 @@
</div> </div>
<div class="userSection verticalSection verticalSection-extrabottompadding"> <div class="userSection verticalSection verticalSection-extrabottompadding">
<h2 class="sectionTitle" style="padding-left:.25em;">${HeaderUser}</h2> <h2 class="sectionTitle" style="padding-left:.25em;">${HeaderUser}</h2>
<a is="emby-linkbutton" style="display:block; padding: 0; margin:0;" data-ripple="false" href="selectserver.html" class="selectServer hide listItem-border"> <a is="emby-linkbutton" data-ripple="false" href="selectserver.html" class="selectServer hide listItem-border">
<div class="listItem"> <div class="listItem">
<i class="md-icon listItemIcon listItemIcon-transparent">wifi</i> <i class="md-icon listItemIcon listItemIcon-transparent">wifi</i>
<div class="listItemBody"> <div class="listItemBody">
@ -78,7 +78,7 @@
</div> </div>
</div> </div>
</a> </a>
<a is="emby-linkbutton" style="display:block; padding: 0; margin:0;" data-ripple="false" href="#" class="btnLogout listItem-border"> <a is="emby-linkbutton" data-ripple="false" href="#" class="btnLogout listItem-border">
<div class="listItem"> <div class="listItem">
<i class="md-icon listItemIcon listItemIcon-transparent">exit_to_app</i> <i class="md-icon listItemIcon listItemIcon-transparent">exit_to_app</i>
<div class="listItemBody"> <div class="listItemBody">

View file

@ -7,7 +7,7 @@ define(["datetime", "jQuery", "material-icons"], function(datetime, $) {
id: item.Id, id: item.Id,
text: htmlName, text: htmlName,
state: { state: {
opened: item.IsFolder && "open" == folderState, opened: item.IsFolder && folderState == "open",
selected: selected selected: selected
}, },
li_attr: { li_attr: {
@ -15,17 +15,57 @@ define(["datetime", "jQuery", "material-icons"], function(datetime, $) {
collectiontype: item.CollectionType collectiontype: item.CollectionType
} }
}; };
return item.IsFolder ? (node.children = [{ if (item.IsFolder) {
node.children = [{
text: "Loading...", text: "Loading...",
icon: !1 icon: false
}], node.icon = !1) : node.icon = !1, node.state.opened && (node.li_attr.loadedFromServer = !0), selected && (selectedNodeId = item.Id), node }];
node.icon = false;
} else {
node.icon = false;
}
if (node.state.opened) {
node.li_attr.loadedFromServer = true;
}
if (selected) {
selectedNodeId = item.Id;
}
return node;
} }
function getNodeInnerHtml(item) { function getNodeInnerHtml(item) {
var name = item.Name; var name = item.Name;
item.Number && (name = item.Number + " - " + name), null != item.IndexNumber && "Season" != item.Type && (name = item.IndexNumber + " - " + name); if (item.Number) {
name = item.Number + " - " + name;
}
if (item.IndexNumber != null && item.Type != "Season") {
name = item.IndexNumber + " - " + name;
}
var htmlName = "<div class='editorNode'>"; var htmlName = "<div class='editorNode'>";
return item.LockData && (htmlName += '<i class="md-icon">lock</i>'), htmlName += name, htmlName += "</div>" if (item.IsFolder) {
htmlName += '<i class="md-icon metadataSidebarIcon">folder</i>';
}
else if (item.MediaType === "Video") {
htmlName += '<i class="md-icon metadataSidebarIcon">movie</i>';
}
else if (item.MediaType === "Audio") {
htmlName += '<i class="md-icon metadataSidebarIcon">audiotrack</i>';
}
else if (item.Type === "TvChannel") {
htmlName += '<i class="md-icon metadataSidebarIcon">live_tv</i>';
}
else if (item.MediaType === "Photo") {
htmlName += '<i class="md-icon metadataSidebarIcon">photo</i>';
}
else if (item.MediaType === "Book") {
htmlName += '<i class="md-icon metadataSidebarIcon">book</i>';
}
if (item.LockData) {
htmlName += '<i class="md-icon metadataSidebarIcon">lock</i>';
}
htmlName += name;
htmlName += "</div>";
return htmlName;
} }
function loadChildrenOfRootNode(page, scope, callback) { function loadChildrenOfRootNode(page, scope, callback) {
@ -37,189 +77,264 @@ define(["datetime", "jQuery", "material-icons"], function(datetime, $) {
id: "MediaFolders", id: "MediaFolders",
text: Globalize.translate("HeaderMediaFolders"), text: Globalize.translate("HeaderMediaFolders"),
state: { state: {
opened: !0 opened: true
}, },
li_attr: { li_attr: {
itemtype: "mediafolders", itemtype: "mediafolders",
loadedFromServer: !0 loadedFromServer: true
}, },
icon: !1 icon: false
}), result.TotalRecordCount && nodes.push({ });
if (result.TotalRecordCount) {
nodes.push({
id: "livetv", id: "livetv",
text: Globalize.translate("HeaderLiveTV"), text: Globalize.translate("HeaderLiveTV"),
state: { state: {
opened: !1 opened: false
}, },
li_attr: { li_attr: {
itemtype: "livetv" itemtype: "livetv"
}, },
children: [{ children: [{
text: "Loading...", text: "Loading...",
icon: !1 icon: false
}], }],
icon: !1 icon: false
}), callback.call(scope, nodes), nodesToLoad.push("MediaFolders") });
}) }
callback.call(scope, nodes);
nodesToLoad.push("MediaFolders");
});
} }
function loadLiveTvChannels(openItems, callback) { function loadLiveTvChannels(openItems, callback) {
ApiClient.getLiveTvChannels({ ApiClient.getLiveTvChannels({
AddCurrentProgram: !1 AddCurrentProgram: false
}).then(function (result) { }).then(function (result) {
var nodes = result.Items.map(function (i) { var nodes = result.Items.map(function (i) {
return getNode(i, -1 == openItems.indexOf(i.Id) ? "closed" : "open", !1) var state = openItems.indexOf(i.Id) == -1 ? "closed" : "open";
return getNode(i, state, false);
});
callback(nodes);
}); });
callback(nodes)
})
} }
function loadMediaFolders(page, scope, openItems, callback) { function loadMediaFolders(page, scope, openItems, callback) {
ApiClient.getJSON(ApiClient.getUrl("Library/MediaFolders")).then(function (result) { ApiClient.getJSON(ApiClient.getUrl("Library/MediaFolders")).then(function (result) {
var nodes = result.Items.map(function (n) { var nodes = result.Items.map(function (n) {
return getNode(n, -1 == openItems.indexOf(n.Id) ? "closed" : "open", !1) var state = openItems.indexOf(n.Id) == -1 ? "closed" : "open";
return getNode(n, state, false);
}); });
callback.call(scope, nodes); callback.call(scope, nodes);
for (var i = 0, length = nodes.length; i < length; i++) nodes[i].state.opened && nodesToLoad.push(nodes[i].id) for (var i = 0, length = nodes.length; i < length; i++) {
}) if (nodes[i].state.opened) {
nodesToLoad.push(nodes[i].id);
}
}
});
} }
function loadNode(page, scope, node, openItems, selectedId, currentUser, callback) { function loadNode(page, scope, node, openItems, selectedId, currentUser, callback) {
var id = node.id; var id = node.id;
if ("#" == id) return void loadChildrenOfRootNode(page, scope, callback); if (id == "#") {
if ("livetv" == id) return void loadLiveTvChannels(openItems, callback); loadChildrenOfRootNode(page, scope, callback);
if ("MediaFolders" == id) return void loadMediaFolders(page, scope, openItems, callback); return;
}
if (id == "livetv") {
loadLiveTvChannels(id, openItems, callback);
return;
}
if (id == "MediaFolders") {
loadMediaFolders(page, scope, openItems, callback);
return;
}
var query = { var query = {
ParentId: id, ParentId: id,
Fields: "Settings", Fields: "Settings",
IsVirtualUnaired: !1, IsVirtualUnaired: false,
IsMissing: !1, IsMissing: false,
EnableTotalRecordCount: !1, EnableTotalRecordCount: false,
EnableImages: !1, EnableImages: false,
EnableUserData: !1 EnableUserData: false
}, };
itemtype = node.li_attr.itemtype; var itemtype = node.li_attr.itemtype;
"Season" != itemtype && "Series" != itemtype && (query.SortBy = "SortName"), ApiClient.getItems(Dashboard.getCurrentUserId(), query).then(function(result) { if (itemtype != "Season" && itemtype != "Series") {
query.SortBy = "SortName";
}
ApiClient.getItems(Dashboard.getCurrentUserId(), query).then(function (result) {
var nodes = result.Items.map(function (n) { var nodes = result.Items.map(function (n) {
return getNode(n, -1 == openItems.indexOf(n.Id) ? "closed" : "open", n.Id == selectedId) var state = openItems.indexOf(n.Id) == -1 ? "closed" : "open";
return getNode(n, state, n.Id == selectedId);
}); });
callback.call(scope, nodes); callback.call(scope, nodes);
for (var i = 0, length = nodes.length; i < length; i++) nodes[i].state.opened && nodesToLoad.push(nodes[i].id) for (var i = 0, length = nodes.length; i < length; i++) {
}) if (nodes[i].state.opened) {
nodesToLoad.push(nodes[i].id);
}
}
});
} }
function scrollToNode(id) { function scrollToNode(id) {
var elem = $("#" + id)[0]; var elem = $("#" + id)[0];
elem && elem.scrollIntoView() if (elem) {
elem.scrollIntoView();
}
} }
function initializeTree(page, currentUser, openItems, selectedId) { function initializeTree(page, currentUser, openItems, selectedId) {
require(["jstree"], function () { require(["jstree"], function () {
initializeTreeInternal(page, currentUser, openItems, selectedId) initializeTreeInternal(page, currentUser, openItems, selectedId);
}) });
} }
function onNodeSelect(event, data) { function onNodeSelect(event, data) {
var node = data.node, var node = data.node;
eventData = { var eventData = {
id: node.id, id: node.id,
itemType: node.li_attr.itemtype, itemType: node.li_attr.itemtype,
serverItemType: node.li_attr.serveritemtype, serverItemType: node.li_attr.serveritemtype,
collectionType: node.li_attr.collectiontype collectionType: node.li_attr.collectiontype
}; };
"livetv" != eventData.itemType && "mediafolders" != eventData.itemType ? (this.dispatchEvent(new CustomEvent("itemclicked", { if (eventData.itemType != "livetv" && eventData.itemType != "mediafolders") {
{
this.dispatchEvent(new CustomEvent("itemclicked", {
detail: eventData, detail: eventData,
bubbles: !0, bubbles: true,
cancelable: !1 cancelable: false
})), document.querySelector(".editPageSidebar").classList.add("editPageSidebar-withcontent")) : document.querySelector(".editPageSidebar").classList.remove("editPageSidebar-withcontent") }));
}
document.querySelector(".editPageSidebar").classList.add("editPageSidebar-withcontent");
} else {
document.querySelector(".editPageSidebar").classList.remove("editPageSidebar-withcontent");
}
} }
function onNodeOpen(event, data) { function onNodeOpen(event, data) {
var page = $(this).parents(".page")[0], var page = $(this).parents(".page")[0];
node = data.node; var node = data.node;
node.children && node.children && loadNodesToLoad(page, node), node.li_attr && "#" != node.id && !node.li_attr.loadedFromServer && (node.li_attr.loadedFromServer = !0, $.jstree.reference(".libraryTree", page).load_node(node.id, loadNodeCallback)) if (node.children && node.children) {
loadNodesToLoad(page, node);
}
if (node.li_attr && node.id != "#" && !node.li_attr.loadedFromServer) {
node.li_attr.loadedFromServer = true;
$.jstree.reference(".libraryTree", page).load_node(node.id, loadNodeCallback);
}
} }
function onNodeLoad(event, data) { function onNodeLoad(event, data) {
var page = $(this).parents(".page")[0], var page = $(this).parents(".page")[0];
node = data.node; var node = data.node;
node.children && node.children && loadNodesToLoad(page, node), node.li_attr && "#" != node.id && !node.li_attr.loadedFromServer && (node.li_attr.loadedFromServer = !0, $.jstree.reference(".libraryTree", page).load_node(node.id, loadNodeCallback)) if (node.children && node.children) {
loadNodesToLoad(page, node);
}
if (node.li_attr && node.id != "#" && !node.li_attr.loadedFromServer) {
node.li_attr.loadedFromServer = true;
$.jstree.reference(".libraryTree", page).load_node(node.id, loadNodeCallback);
}
} }
function initializeTreeInternal(page, currentUser, openItems, selectedId) { function initializeTreeInternal(page, currentUser, openItems, selectedId) {
nodesToLoad = [], selectedNodeId = null, $.jstree.destroy(), $(".libraryTree", page).jstree({ nodesToLoad = [];
plugins: ["wholerow"], selectedNodeId = null;
$.jstree.destroy();
$(".libraryTree", page).jstree({
"plugins": ["wholerow"],
core: { core: {
// Disable animations because jQuery slim does not support them // Disable animations because jQuery slim does not support them
animation: false, animation: false,
check_callback: true, check_callback: true,
data: function (node, callback) { data: function (node, callback) {
loadNode(page, this, node, openItems, selectedId, currentUser, callback) loadNode(page, this, node, openItems, selectedId, currentUser, callback);
}, },
themes: { themes: {
variant: "large" variant: "large"
} }
} }
}).off("select_node.jstree", onNodeSelect).on("select_node.jstree", onNodeSelect).off("open_node.jstree", onNodeOpen).on("open_node.jstree", onNodeOpen).off("load_node.jstree", onNodeLoad).on("load_node.jstree", onNodeLoad) }).off("select_node.jstree", onNodeSelect).on("select_node.jstree", onNodeSelect).off("open_node.jstree", onNodeOpen).on("open_node.jstree", onNodeOpen).off("load_node.jstree", onNodeLoad).on("load_node.jstree", onNodeLoad);
} }
function loadNodesToLoad(page, node) { function loadNodesToLoad(page, node) {
for (var children = node.children, i = 0, length = children.length; i < length; i++) { var children = node.children;
var child = children[i]; - 1 != nodesToLoad.indexOf(child) && (nodesToLoad = nodesToLoad.filter(function(n) { for (var i = 0, length = children.length; i < length; i++) {
return n != child var child = children[i];
}), $.jstree.reference(".libraryTree", page).load_node(child, loadNodeCallback)) if (nodesToLoad.indexOf(child) != -1) {
nodesToLoad = nodesToLoad.filter(function (n) {
return n != child;
});
$.jstree.reference(".libraryTree", page).load_node(child, loadNodeCallback);
}
} }
} }
function loadNodeCallback(node) { function loadNodeCallback(node) {
selectedNodeId && node.children && -1 != node.children.indexOf(selectedNodeId) && setTimeout(function() { if (selectedNodeId && node.children && node.children.indexOf(selectedNodeId) != -1) {
scrollToNode(selectedNodeId) setTimeout(function () {
}, 500) scrollToNode(selectedNodeId);
}, 500);
}
} }
function updateEditorNode(page, item) { function updateEditorNode(page, item) {
var elem = $("#" + item.Id + ">a", page)[0]; var elem = $("#" + item.Id + ">a", page)[0];
if (null != elem && ($(".editorNode", elem).remove(), $(elem).append(getNodeInnerHtml(item)), item.IsFolder)) { if (elem == null) {
var tree = jQuery.jstree._reference(".libraryTree"), return;
currentNode = tree._get_node(null, !1); }
tree.refresh(currentNode) $(".editorNode", elem).remove();
$(elem).append(getNodeInnerHtml(item));
if (item.IsFolder) {
var tree = jQuery.jstree._reference(".libraryTree");
var currentNode = tree._get_node(null, false);
tree.refresh(currentNode);
} }
} }
function setCurrentItemId(id) { function setCurrentItemId(id) {
itemId = id itemId = id;
} }
function getCurrentItemId() { function getCurrentItemId() {
if (itemId) return itemId; if (itemId) {
var url = window.location.hash || window.location.href; return itemId;
return getParameterByName("id", url)
} }
var selectedNodeId, nodesToLoad = []; var url = window.location.hash || window.location.href;
return getParameterByName("id", url);
}
var nodesToLoad = [];
var selectedNodeId;
$(document).on("itemsaved", ".metadataEditorPage", function (e, item) { $(document).on("itemsaved", ".metadataEditorPage", function (e, item) {
updateEditorNode(this, item) updateEditorNode(this, item);
}).on("pagebeforeshow", ".metadataEditorPage", function () { }).on("pagebeforeshow", ".metadataEditorPage", function () {
require(["css!css/metadataeditor.css"]) require(["css!css/metadataeditor.css"]);
}).on("pagebeforeshow", ".metadataEditorPage", function () { }).on("pagebeforeshow", ".metadataEditorPage", function () {
var page = this; var page = this;
Dashboard.getCurrentUser().then(function (user) { Dashboard.getCurrentUser().then(function (user) {
var id = getCurrentItemId(); var id = getCurrentItemId();
id ? ApiClient.getAncestorItems(id, user.Id).then(function(ancestors) { if (id) {
ApiClient.getAncestorItems(id, user.Id).then(function (ancestors) {
var ids = ancestors.map(function (i) { var ids = ancestors.map(function (i) {
return i.Id return i.Id;
});
initializeTree(page, user, ids, id);
});
} else {
initializeTree(page, user, []);
}
}); });
initializeTree(page, user, ids, id)
}) : initializeTree(page, user, [])
})
}).on("pagebeforehide", ".metadataEditorPage", function () { }).on("pagebeforehide", ".metadataEditorPage", function () {
$(".libraryTree", this).off("select_node.jstree", onNodeSelect).off("open_node.jstree", onNodeOpen).off("load_node.jstree", onNodeLoad) var page = this;
$(".libraryTree", page).off("select_node.jstree", onNodeSelect).off("open_node.jstree", onNodeOpen).off("load_node.jstree", onNodeLoad);
}); });
var itemId; var itemId;
window.MetadataEditor = { window.MetadataEditor = {
getItemPromise: function () { getItemPromise: function () {
var currentItemId = getCurrentItemId(); var currentItemId = getCurrentItemId();
return currentItemId ? ApiClient.getItem(Dashboard.getCurrentUserId(), currentItemId) : ApiClient.getRootFolder(Dashboard.getCurrentUserId()) if (currentItemId) {
return ApiClient.getItem(Dashboard.getCurrentUserId(), currentItemId);
}
return ApiClient.getRootFolder(Dashboard.getCurrentUserId());
}, },
getCurrentItemId: getCurrentItemId, getCurrentItemId: getCurrentItemId,
setCurrentItemId: setCurrentItemId setCurrentItemId: setCurrentItemId
} };
}); });

View file

@ -713,7 +713,6 @@ var AppInfo = {};
pluginManager: componentsPath + "/pluginManager", pluginManager: componentsPath + "/pluginManager",
packageManager: componentsPath + "/packagemanager" packageManager: componentsPath + "/packagemanager"
}; };
paths.hlsjs = bowerPath + "/hlsjs/dist/hls.min";
paths.flvjs = "thirdparty/flvjs/flv.min"; paths.flvjs = "thirdparty/flvjs/flv.min";
paths.shaka = "thirdparty/shaka/shaka-player.compiled"; paths.shaka = "thirdparty/shaka/shaka-player.compiled";
define("chromecastHelper", [componentsPath + "/chromecast/chromecasthelpers"], returnFirstDependency); define("chromecastHelper", [componentsPath + "/chromecast/chromecasthelpers"], returnFirstDependency);
@ -783,7 +782,6 @@ var AppInfo = {};
define("displaySettings", [componentsPath + "/displaysettings/displaysettings"], returnFirstDependency); define("displaySettings", [componentsPath + "/displaysettings/displaysettings"], returnFirstDependency);
define("playbackSettings", [componentsPath + "/playbacksettings/playbacksettings"], returnFirstDependency); define("playbackSettings", [componentsPath + "/playbacksettings/playbacksettings"], returnFirstDependency);
define("homescreenSettings", [componentsPath + "/homescreensettings/homescreensettings"], returnFirstDependency); define("homescreenSettings", [componentsPath + "/homescreensettings/homescreensettings"], returnFirstDependency);
define("homescreenSettingsDialog", [componentsPath + "/homescreensettings/homescreensettingsdialog"], returnFirstDependency);
define("playbackManager", [componentsPath + "/playback/playbackmanager"], getPlaybackManager); define("playbackManager", [componentsPath + "/playback/playbackmanager"], getPlaybackManager);
define("layoutManager", [componentsPath + "/layoutManager", "apphost"], getLayoutManager); define("layoutManager", [componentsPath + "/layoutManager", "apphost"], getLayoutManager);
define("homeSections", [componentsPath + "/homesections/homesections"], returnFirstDependency); define("homeSections", [componentsPath + "/homesections/homesections"], returnFirstDependency);
@ -819,7 +817,7 @@ var AppInfo = {};
} }
}, },
bundles: { bundles: {
bundle: ["jstree"] bundle: ["jstree", "hlsjs"]
}, },
urlArgs: urlArgs, urlArgs: urlArgs,
paths: paths, paths: paths,

View file

@ -516,7 +516,7 @@
"LabelSerialNumber": "الرقم التسلسلي", "LabelSerialNumber": "الرقم التسلسلي",
"LabelSeriesRecordingPath": "مسار تسجيل المسلسلات (خيارية):", "LabelSeriesRecordingPath": "مسار تسجيل المسلسلات (خيارية):",
"LabelServerHost": "المضيف:", "LabelServerHost": "المضيف:",
"LabelServerHostHelp": "192.168.1.100 أو https://myserver.com", "LabelServerHostHelp": "192.168.1.100:8096 أو https://myserver.com",
"LabelServerPort": "المنفذ:", "LabelServerPort": "المنفذ:",
"LabelSkipIfAudioTrackPresent": "تخطّىإن كان المقطع الصوتي الافتراضي يتوافق مع اللغة المنزلة", "LabelSkipIfAudioTrackPresent": "تخطّىإن كان المقطع الصوتي الافتراضي يتوافق مع اللغة المنزلة",
"LabelSkipIfAudioTrackPresentHelp": "لا تختر هذه لكي تؤكد وجود ترجمة لجميع الفيديوهات، بغض النظر عن لغة الصوت.", "LabelSkipIfAudioTrackPresentHelp": "لا تختر هذه لكي تؤكد وجود ترجمة لجميع الفيديوهات، بغض النظر عن لغة الصوت.",

View file

@ -156,7 +156,7 @@
"CriticRating": "Kritiker Bewertung", "CriticRating": "Kritiker Bewertung",
"CustomDlnaProfilesHelp": "Erstelle ein benutzerdefiniertes Profil für ein neues Zielgerät, oder um ein vorhandenes Systemprofil zu überschreiben.", "CustomDlnaProfilesHelp": "Erstelle ein benutzerdefiniertes Profil für ein neues Zielgerät, oder um ein vorhandenes Systemprofil zu überschreiben.",
"DateAdded": "Hinzugefügt am", "DateAdded": "Hinzugefügt am",
"DatePlayed": "Gesehen am", "DatePlayed": "Abgespielt am",
"DeathDateValue": "Gestorben: {0}", "DeathDateValue": "Gestorben: {0}",
"Default": "Standard", "Default": "Standard",
"DefaultErrorMessage": "Es gab einen Fehler beim verarbeiten der Anfrage. Bitte versuche es später erneut.", "DefaultErrorMessage": "Es gab einen Fehler beim verarbeiten der Anfrage. Bitte versuche es später erneut.",
@ -1293,6 +1293,8 @@
"ButtonTrailer": "Trailer", "ButtonTrailer": "Trailer",
"ButtonWebsite": "Webseite", "ButtonWebsite": "Webseite",
"ChangingMetadataImageSettingsNewContent": "Änderungen an Metadaten- und Artwork-Einstellungen betreffen nur der Bibliothek neu hinzugefügte Inhalte. Um diese Änderungen auf existierende Medien anzuwenden müssen die Metadaten manuell aktualisiert werden.", "ChangingMetadataImageSettingsNewContent": "Änderungen an Metadaten- und Artwork-Einstellungen betreffen nur der Bibliothek neu hinzugefügte Inhalte. Um diese Änderungen auf existierende Medien anzuwenden müssen die Metadaten manuell aktualisiert werden.",
"CopyStreamURL": "Kopiere Streaminglink",
"CopyStreamURLSuccess": "Link erfolgreich kopiert.",
"Desktop": "Desktop", "Desktop": "Desktop",
"Download": "Download", "Download": "Download",
"Extras": "Extras", "Extras": "Extras",
@ -1410,6 +1412,7 @@
"Whitelist": "Erlaubt", "Whitelist": "Erlaubt",
"AuthProviderHelp": "Auswählen eines Authentifizierungsanbieter, der zur Authentifizierung des Passworts dieses Benutzes verwendet werden soll", "AuthProviderHelp": "Auswählen eines Authentifizierungsanbieter, der zur Authentifizierung des Passworts dieses Benutzes verwendet werden soll",
"Features": "Features", "Features": "Features",
"HeaderFavoriteBooks": "Lieblingsbücher",
"HeaderFavoriteMovies": "Lieblingsfilme", "HeaderFavoriteMovies": "Lieblingsfilme",
"HeaderFavoriteShows": "Lieblingsserien", "HeaderFavoriteShows": "Lieblingsserien",
"HeaderFavoriteEpisodes": "Lieblingsepisoden", "HeaderFavoriteEpisodes": "Lieblingsepisoden",
@ -1438,5 +1441,9 @@
"PasswordResetProviderHelp": "Wählen Sie einen Password Reset Provider, der verwendet werden soll, wenn dieser Benutzer ein Passwort zurücksetzen möchte", "PasswordResetProviderHelp": "Wählen Sie einen Password Reset Provider, der verwendet werden soll, wenn dieser Benutzer ein Passwort zurücksetzen möchte",
"Box": "Box", "Box": "Box",
"HeaderHome": "Home", "HeaderHome": "Home",
"HeaderHomeSettings": "Home Einstellungen" "HeaderHomeSettings": "Home Einstellungen",
"LabelAudioCodec": "Audiocodec:",
"LabelAudioChannels": "Audiokanäle:",
"HeaderTypeImageFetchers": "{0} Bildquellen",
"CopyStreamURL": "Stream URL kopieren"
} }

View file

@ -385,6 +385,7 @@
"HeaderEpisodes": "Episodes", "HeaderEpisodes": "Episodes",
"HeaderError": "Error", "HeaderError": "Error",
"HeaderExternalIds": "External IDs:", "HeaderExternalIds": "External IDs:",
"HeaderFavoriteBooks": "Favourite Books",
"HeaderFavoriteMovies": "Favourite Movies", "HeaderFavoriteMovies": "Favourite Movies",
"HeaderFavoriteShows": "Favourite Shows", "HeaderFavoriteShows": "Favourite Shows",
"HeaderFavoriteEpisodes": "Favourite Episodes", "HeaderFavoriteEpisodes": "Favourite Episodes",
@ -452,5 +453,7 @@
"HeaderPassword": "Password", "HeaderPassword": "Password",
"HeaderPasswordReset": "Password Reset", "HeaderPasswordReset": "Password Reset",
"HeaderPaths": "Paths", "HeaderPaths": "Paths",
"HeaderPendingInvitations": "Pending Invitations" "HeaderPendingInvitations": "Pending Invitations",
"CopyStreamURL": "Copy Stream URL",
"CopyStreamURLSuccess": "URL copied successfully."
} }

View file

@ -19,7 +19,7 @@
"AllEpisodes": "All episodes", "AllEpisodes": "All episodes",
"AllLanguages": "All languages", "AllLanguages": "All languages",
"AllLibraries": "All libraries", "AllLibraries": "All libraries",
"AllowHWTranscodingHelp": "If enabled, allow the tuner to transcode streams on the fly. This may help reduce transcoding required by Jellyfin Server.", "AllowHWTranscodingHelp": "Allow the tuner to transcode streams on the fly. This may help reduce transcoding required by the server.",
"AllowMediaConversion": "Allow media conversion", "AllowMediaConversion": "Allow media conversion",
"AllowMediaConversionHelp": "Grant or deny access to the convert media feature.", "AllowMediaConversionHelp": "Grant or deny access to the convert media feature.",
"AllowOnTheFlySubtitleExtraction": "Allow subtitle extraction on the fly", "AllowOnTheFlySubtitleExtraction": "Allow subtitle extraction on the fly",
@ -39,7 +39,7 @@
"AspectRatio": "Aspect ratio", "AspectRatio": "Aspect ratio",
"AttributeNew": "New", "AttributeNew": "New",
"Audio": "Audio", "Audio": "Audio",
"AuthProviderHelp": "Select an Authentication Provider to be used to authenticate this user's password", "AuthProviderHelp": "Select an Authentication Provider to be used to authenticate this user's password.",
"Auto": "Auto", "Auto": "Auto",
"AutoBasedOnLanguageSetting": "Auto (based on language setting)", "AutoBasedOnLanguageSetting": "Auto (based on language setting)",
"Backdrop": "Backdrop", "Backdrop": "Backdrop",
@ -55,7 +55,7 @@
"BoxRear": "Box (rear)", "BoxRear": "Box (rear)",
"Browse": "Browse", "Browse": "Browse",
"BrowsePluginCatalogMessage": "Browse our plugin catalog to view available plugins.", "BrowsePluginCatalogMessage": "Browse our plugin catalog to view available plugins.",
"BurnSubtitlesHelp": "Determines if the server should burn in subtitles when converting video depending on the subtitles format. Avoiding burning in subtitles will improve server performance. Select Auto to burn image based formats (e.g. VOBSUB, PGS, SUB/IDX, etc.) as well as certain ASS/SSA subtitles.", "BurnSubtitlesHelp": "Determines if the server should burn in subtitles when converting video depending on the subtitle format. Avoiding burning in subtitles will improve server performance. Select Auto to burn image based formats (VOBSUB, PGS, SUB/IDX, etc) and certain ASS/SSA subtitles.",
"ButtonAdd": "Add", "ButtonAdd": "Add",
"ButtonAddMediaLibrary": "Add Media Library", "ButtonAddMediaLibrary": "Add Media Library",
"ButtonAddScheduledTaskTrigger": "Add Trigger", "ButtonAddScheduledTaskTrigger": "Add Trigger",
@ -160,6 +160,8 @@
"Connect": "Connect", "Connect": "Connect",
"ContinueWatching": "Continue watching", "ContinueWatching": "Continue watching",
"Continuing": "Continuing", "Continuing": "Continuing",
"CopyStreamURL": "Copy Stream URL",
"CopyStreamURLSuccess": "URL copied successfully.",
"CriticRating": "Critic rating", "CriticRating": "Critic rating",
"CustomDlnaProfilesHelp": "Create a custom profile to target a new device or override a system profile.", "CustomDlnaProfilesHelp": "Create a custom profile to target a new device or override a system profile.",
"DateAdded": "Date added", "DateAdded": "Date added",
@ -182,7 +184,7 @@
"DetectingDevices": "Detecting devices", "DetectingDevices": "Detecting devices",
"DeviceAccessHelp": "This only applies to devices that can be uniquely identified and will not prevent browser access. Filtering user device access will prevent them from using new devices until they've been approved here.", "DeviceAccessHelp": "This only applies to devices that can be uniquely identified and will not prevent browser access. Filtering user device access will prevent them from using new devices until they've been approved here.",
"DirectPlaying": "Direct playing", "DirectPlaying": "Direct playing",
"DirectStreamHelp1": "The media is compatible with the device regarding resolution and media type (H.264, AC3, etc.), but is in an incompatible file container (.mkv, .avi, .wmv, etc.). The video will be re-packaged on the fly before streaming it to the device.", "DirectStreamHelp1": "The media is compatible with the device regarding resolution and media type (H.264, AC3, etc), but is in an incompatible file container (mkv, avi, wmv, etc). The video will be re-packaged on the fly before streaming it to the device.",
"DirectStreamHelp2": "Direct Streaming a file uses very little processing power without any loss in video quality.", "DirectStreamHelp2": "Direct Streaming a file uses very little processing power without any loss in video quality.",
"DirectStreaming": "Direct streaming", "DirectStreaming": "Direct streaming",
"Director": "Director", "Director": "Director",
@ -196,7 +198,7 @@
"DisplayInMyMedia": "Display on home screen", "DisplayInMyMedia": "Display on home screen",
"DisplayInOtherHomeScreenSections": "Display in home screen sections such as latest media and continue watching", "DisplayInOtherHomeScreenSections": "Display in home screen sections such as latest media and continue watching",
"DisplayMissingEpisodesWithinSeasons": "Display missing episodes within seasons", "DisplayMissingEpisodesWithinSeasons": "Display missing episodes within seasons",
"DisplayMissingEpisodesWithinSeasonsHelp": "This must also be enabled for TV libraries in Jellyfin Server setup.", "DisplayMissingEpisodesWithinSeasonsHelp": "This must also be enabled for TV libraries in the server configuration.",
"DisplayModeHelp": "Select the type of screen you're running Jellyfin on.", "DisplayModeHelp": "Select the type of screen you're running Jellyfin on.",
"DoNotRecord": "Do not record", "DoNotRecord": "Do not record",
"Down": "Down", "Down": "Down",
@ -209,24 +211,24 @@
"EditImages": "Edit images", "EditImages": "Edit images",
"EditMetadata": "Edit metadata", "EditMetadata": "Edit metadata",
"EditSubtitles": "Edit subtitles", "EditSubtitles": "Edit subtitles",
"EnableBackdrops": "Enable backdrops", "EnableBackdrops": "Backdrops",
"EnableBackdropsHelp": "If enabled, backdrops will be displayed in the background of some pages while browsing the library.", "EnableBackdropsHelp": "Display backdrops in the background of some pages while browsing the library.",
"EnableCinemaMode": "Enable cinema mode", "EnableCinemaMode": "Cinema mode",
"EnableColorCodedBackgrounds": "Enable color coded backgrounds", "EnableColorCodedBackgrounds": "Color coded backgrounds",
"EnableDisplayMirroring": "Enable display mirroring", "EnableDisplayMirroring": "Display mirroring",
"EnableExternalVideoPlayers": "Enable external video players", "EnableExternalVideoPlayers": "External video players",
"EnableExternalVideoPlayersHelp": "An external player menu will be shown when starting video playback.", "EnableExternalVideoPlayersHelp": "An external player menu will be shown when starting video playback.",
"EnableHardwareEncoding": "Enable hardware encoding", "EnableHardwareEncoding": "Enable hardware encoding",
"EnableNextVideoInfoOverlay": "Enable next video info during playback", "EnableNextVideoInfoOverlay": "Show next video info during playback",
"EnableNextVideoInfoOverlayHelp": "At the end of a video, display info about the next video coming up in the current playlist.", "EnableNextVideoInfoOverlayHelp": "At the end of a video, display info about the next video coming up in the current playlist.",
"EnablePhotos": "Enable photos", "EnablePhotos": "Display photos",
"EnablePhotosHelp": "Photos will be detected and displayed alongside other media files.", "EnablePhotosHelp": "Images will be detected and displayed alongside other media files.",
"EnableStreamLooping": "Auto-loop live streams", "EnableStreamLooping": "Auto-loop live streams",
"EnableStreamLoopingHelp": "Enable this if live streams only contain a few seconds of data and need to be continuously requested. Enabling this when not needed may cause problems.", "EnableStreamLoopingHelp": "Enable this if live streams only contain a few seconds of data and need to be continuously requested. Enabling this when not needed may cause problems.",
"EnableThemeSongs": "Enable theme songs", "EnableThemeSongs": "Theme songs",
"EnableThemeSongsHelp": "If enabled, theme songs will be played in the background while browsing the library.", "EnableThemeSongsHelp": "Play theme songs in the background while browsing the library.",
"EnableThemeVideos": "Enable theme videos", "EnableThemeVideos": "Theme videos",
"EnableThemeVideosHelp": "If enabled, theme videos will be played in the background while browsing the library.", "EnableThemeVideosHelp": "Play theme videos in the background while browsing the library.",
"Ended": "Ended", "Ended": "Ended",
"EndsAtValue": "Ends at {0}", "EndsAtValue": "Ends at {0}",
"Episodes": "Episodes", "Episodes": "Episodes",
@ -242,7 +244,7 @@
"EveryNDays": "Every {0} days", "EveryNDays": "Every {0} days",
"ExitFullscreen": "Exit full screen", "ExitFullscreen": "Exit full screen",
"ExtraLarge": "Extra large", "ExtraLarge": "Extra large",
"ExtractChapterImagesHelp": "Extracting chapter images will allow clients to display graphical scene selection menus. The process can be slow, cpu-intensive and may require several gigabytes of space. It runs when videos are discovered, and also as a nightly scheduled task. The schedule is configurable in the scheduled tasks area. It is not recommended to run this task during peak usage hours.", "ExtractChapterImagesHelp": "Extracting chapter images will allow clients to display graphical scene selection menus. The process can be slow, resource intensive, and may require several gigabytes of space. It runs when videos are discovered, and also as a nightly scheduled task. The schedule is configurable in the scheduled tasks area. It is not recommended to run this task during peak usage hours.",
"Extras": "Extras", "Extras": "Extras",
"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.", "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.",
"FastForward": "Fast-forward", "FastForward": "Fast-forward",
@ -257,9 +259,9 @@
"FolderTypeBooks": "Books", "FolderTypeBooks": "Books",
"FolderTypeMovies": "Movies", "FolderTypeMovies": "Movies",
"FolderTypeMusic": "Music", "FolderTypeMusic": "Music",
"FolderTypeMusicVideos": "Music videos", "FolderTypeMusicVideos": "Music Videos",
"FolderTypeTvShows": "TV Shows", "FolderTypeTvShows": "Shows",
"FolderTypeUnset": "Mixed content", "FolderTypeUnset": "Mixed Content",
"Folders": "Folders", "Folders": "Folders",
"ForAdditionalLiveTvOptions": "For additional Live TV providers, click on the Services tab to see the available options.", "ForAdditionalLiveTvOptions": "For additional Live TV providers, click on the Services tab to see the available options.",
"FormatValue": "Format: {0}", "FormatValue": "Format: {0}",
@ -351,6 +353,7 @@
"HeaderEpisodes": "Episodes", "HeaderEpisodes": "Episodes",
"HeaderError": "Error", "HeaderError": "Error",
"HeaderExternalIds": "External IDs:", "HeaderExternalIds": "External IDs:",
"HeaderFavoriteBooks": "Favorite Books",
"HeaderFavoriteMovies": "Favorite Movies", "HeaderFavoriteMovies": "Favorite Movies",
"HeaderFavoriteShows": "Favorite Shows", "HeaderFavoriteShows": "Favorite Shows",
"HeaderFavoriteEpisodes": "Favorite Episodes", "HeaderFavoriteEpisodes": "Favorite Episodes",
@ -541,7 +544,7 @@
"LabelAll": "All", "LabelAll": "All",
"LabelAllowHWTranscoding": "Allow hardware transcoding", "LabelAllowHWTranscoding": "Allow hardware transcoding",
"LabelAllowServerAutoRestart": "Allow the server to restart automatically to apply updates", "LabelAllowServerAutoRestart": "Allow the server to restart automatically to apply updates",
"LabelAllowServerAutoRestartHelp": "The server will only restart during idle periods, when no users are active.", "LabelAllowServerAutoRestartHelp": "The server will only restart during idle periods when no users are active.",
"LabelAllowedRemoteAddresses": "Remote IP address filter:", "LabelAllowedRemoteAddresses": "Remote IP address filter:",
"LabelAllowedRemoteAddressesMode": "Remote IP address filter mode:", "LabelAllowedRemoteAddressesMode": "Remote IP address filter mode:",
"LabelAppName": "App name", "LabelAppName": "App name",
@ -549,15 +552,21 @@
"LabelArtists": "Artists:", "LabelArtists": "Artists:",
"LabelArtistsHelp": "Separate multiple using ;", "LabelArtistsHelp": "Separate multiple using ;",
"LabelAudio": "Audio:", "LabelAudio": "Audio:",
"LabelAudioBitDepth": "Audio bit depth:",
"LabelAudioBitrate": "Audio bitrate:",
"LabelAudioChannels": "Audio channels:",
"LabelAudioCodec": "Audio codec:",
"LabelAudioLanguagePreference": "Preferred audio language:", "LabelAudioLanguagePreference": "Preferred audio language:",
"LabelAudioSampleRate": "Audio sample rate:",
"LabelAuthProvider": "Authentication Provider:", "LabelAuthProvider": "Authentication Provider:",
"LabelAutomaticallyRefreshInternetMetadataEvery": "Automatically refresh metadata from the internet:", "LabelAutomaticallyRefreshInternetMetadataEvery": "Automatically refresh metadata from the internet:",
"LabelBindToLocalNetworkAddress": "Bind to local network address:", "LabelBindToLocalNetworkAddress": "Bind to local network address:",
"LabelBindToLocalNetworkAddressHelp": "Optional. Override the local IP address to bind the http server to. If left empty, the server will bind to all availabile addresses. Changing this value requires restarting Jellyfin Server.", "LabelBindToLocalNetworkAddressHelp": "Optional. Override the local IP address to bind the http server to. If left empty, the server will bind to all availabile addresses. Changing this value requires restarting Jellyfin Server.",
"LabelBirthDate": "Birth date:", "LabelBirthDate": "Birth date:",
"LabelBirthYear": "Birth year:", "LabelBirthYear": "Birth year:",
"LabelBitrate": "Bitrate:",
"LabelBlastMessageInterval": "Alive message interval (seconds)", "LabelBlastMessageInterval": "Alive message interval (seconds)",
"LabelBlastMessageIntervalHelp": "Determines the duration in seconds between server alive messages.", "LabelBlastMessageIntervalHelp": "Determines the duration in seconds between blast alive messages.",
"LabelBlockContentWithTags": "Block items with tags:", "LabelBlockContentWithTags": "Block items with tags:",
"LabelBurnSubtitles": "Burn subtitles:", "LabelBurnSubtitles": "Burn subtitles:",
"LabelCache": "Cache:", "LabelCache": "Cache:",
@ -601,7 +610,7 @@
"LabelDisplayOrder": "Display order:", "LabelDisplayOrder": "Display order:",
"LabelDisplaySpecialsWithinSeasons": "Display specials within seasons they aired in", "LabelDisplaySpecialsWithinSeasons": "Display specials within seasons they aired in",
"LabelDownMixAudioScale": "Audio boost when downmixing:", "LabelDownMixAudioScale": "Audio boost when downmixing:",
"LabelDownMixAudioScaleHelp": "Boost audio when downmixing. Set to 1 to preserve original volume value.", "LabelDownMixAudioScaleHelp": "Boost audio when downmixing. A value of one will preserve the original volume.",
"LabelDownloadLanguages": "Download languages:", "LabelDownloadLanguages": "Download languages:",
"LabelDropImageHere": "Drop image here, or click to browse.", "LabelDropImageHere": "Drop image here, or click to browse.",
"LabelDropShadow": "Drop shadow:", "LabelDropShadow": "Drop shadow:",
@ -619,7 +628,7 @@
"LabelEnableDlnaDebugLoggingHelp": "Create large log files and should only be used as needed for troubleshooting purposes.", "LabelEnableDlnaDebugLoggingHelp": "Create large log files and should only be used as needed for troubleshooting purposes.",
"LabelEnableDlnaPlayTo": "Enable DLNA Play To", "LabelEnableDlnaPlayTo": "Enable DLNA Play To",
"LabelEnableDlnaPlayToHelp": "Detect devices within your network and offer the ability to remote control them.", "LabelEnableDlnaPlayToHelp": "Detect devices within your network and offer the ability to remote control them.",
"LabelEnableDlnaServer": "Enable Dlna server", "LabelEnableDlnaServer": "Enable DLNA server",
"LabelEnableDlnaServerHelp": "Allows UPnP devices on your network to browse and play content.", "LabelEnableDlnaServerHelp": "Allows UPnP devices on your network to browse and play content.",
"LabelEnableHardwareDecodingFor": "Enable hardware decoding for:", "LabelEnableHardwareDecodingFor": "Enable hardware decoding for:",
"LabelEnableRealtimeMonitor": "Enable real time monitoring", "LabelEnableRealtimeMonitor": "Enable real time monitoring",
@ -633,22 +642,22 @@
"LabelBaseUrl": "Base URL:", "LabelBaseUrl": "Base URL:",
"LabelBaseUrlHelp": "You can add a custom subdirectory here to access the server from a more unique URL.", "LabelBaseUrlHelp": "You can add a custom subdirectory here to access the server from a more unique URL.",
"LabelExtractChaptersDuringLibraryScan": "Extract chapter images during the library scan", "LabelExtractChaptersDuringLibraryScan": "Extract chapter images during the library scan",
"LabelExtractChaptersDuringLibraryScanHelp": "If enabled, chapter images will be extracted when videos are imported during the library scan. If disabled they will be extracted during the chapter images scheduled task, allowing the regular library scan to complete faster.", "LabelExtractChaptersDuringLibraryScanHelp": "Generate chapter images when videos are imported during the library scan. Otherwise, they will be extracted during the chapter images scheduled task, allowing the regular library scan to complete faster.",
"LabelFailed": "Failed", "LabelFailed": "Failed",
"LabelFileOrUrl": "File or url:", "LabelFileOrUrl": "File or URL:",
"LabelFinish": "Finish", "LabelFinish": "Finish",
"LabelFolder": "Folder:", "LabelFolder": "Folder:",
"LabelFont": "Font:", "LabelFont": "Font:",
"LabelForgotPasswordUsernameHelp": "Enter your username, if you remember it.", "LabelForgotPasswordUsernameHelp": "Enter your username, if you remember it.",
"LabelFormat": "Format:", "LabelFormat": "Format:",
"LabelFriendlyName": "Friendly name:", "LabelFriendlyName": "Friendly name:",
"LabelServerNameHelp": "This name will be used to identify this server. If left blank, the computer name will be used.", "LabelServerNameHelp": "This name will be used to identify the server and will default to the server's computer name.",
"LabelGroupMoviesIntoCollections": "Group movies into collections", "LabelGroupMoviesIntoCollections": "Group movies into collections",
"LabelGroupMoviesIntoCollectionsHelp": "When displaying movie lists, movies belonging to a collection will be displayed as one grouped item.", "LabelGroupMoviesIntoCollectionsHelp": "When displaying movie lists, movies belonging to a collection will be displayed as one grouped item.",
"LabelH264Crf": "H264 encoding CRF:", "LabelH264Crf": "H264 encoding CRF:",
"LabelH264EncodingPreset": "H264 encoding preset:", "LabelH264EncodingPreset": "H264 encoding preset:",
"LabelHardwareAccelerationType": "Hardware acceleration:", "LabelHardwareAccelerationType": "Hardware acceleration:",
"LabelHardwareAccelerationTypeHelp": "Only available on supported systems.", "LabelHardwareAccelerationTypeHelp": "This is an experimental feature only available on supported systems.",
"LabelHomeNetworkQuality": "Home network quality:", "LabelHomeNetworkQuality": "Home network quality:",
"LabelHomeScreenSectionValue": "Home screen section {0}:", "LabelHomeScreenSectionValue": "Home screen section {0}:",
"LabelHttpsPort": "Local HTTPS port number:", "LabelHttpsPort": "Local HTTPS port number:",
@ -662,20 +671,20 @@
"LabelImageType": "Image type:", "LabelImageType": "Image type:",
"LabelImportOnlyFavoriteChannels": "Restrict to channels marked as favorite", "LabelImportOnlyFavoriteChannels": "Restrict to channels marked as favorite",
"LabelInNetworkSignInWithEasyPassword": "Enable in-network sign in with my easy pin code", "LabelInNetworkSignInWithEasyPassword": "Enable in-network sign in with my easy pin code",
"LabelInNetworkSignInWithEasyPasswordHelp": "If enabled, you'll be able to use your easy pin code to sign in to Jellyfin apps from inside your home network. Your regular password will only be needed away from home. If the pin code is left blank, you won't need a password within your home network.", "LabelInNetworkSignInWithEasyPasswordHelp": "Use the easy pin code to sign in to clients within your local network. Your regular password will only be needed away from home. If the pin code is left blank, you won't need a password within your home network.",
"LabelInternetQuality": "Internet quality:", "LabelInternetQuality": "Internet quality:",
"LabelKeepUpTo": "Keep up to:", "LabelKeepUpTo": "Keep up to:",
"LabelKidsCategories": "Children's categories:", "LabelKidsCategories": "Children's categories:",
"LabelKodiMetadataDateFormat": "Release date format:", "LabelKodiMetadataDateFormat": "Release date format:",
"LabelKodiMetadataDateFormatHelp": "All dates within nfo's will be read and written to using this format.", "LabelKodiMetadataDateFormatHelp": "All dates within NFO files will be parsed using this format.",
"LabelKodiMetadataEnableExtraThumbs": "Copy extrafanart into extrathumbs", "LabelKodiMetadataEnableExtraThumbs": "Copy extrafanart to extrathumbs field",
"LabelKodiMetadataEnableExtraThumbsHelp": "When downloading images they can be saved into both extrafanart and extrathumbs for maximum Kodi skin compatibility.", "LabelKodiMetadataEnableExtraThumbsHelp": "When downloading images they can be saved into both extrafanart and extrathumbs for maximum Kodi skin compatibility.",
"LabelKodiMetadataEnablePathSubstitution": "Enable path substitution", "LabelKodiMetadataEnablePathSubstitution": "Enable path substitution",
"LabelKodiMetadataEnablePathSubstitutionHelp": "Enables path substitution of image paths using the server's path substitution settings.", "LabelKodiMetadataEnablePathSubstitutionHelp": "Enables path substitution of image paths using the server's path substitution settings.",
"LabelKodiMetadataSaveImagePaths": "Save image paths within nfo files", "LabelKodiMetadataSaveImagePaths": "Save image paths within nfo files",
"LabelKodiMetadataSaveImagePathsHelp": "This is recommended if you have image file names that don't conform to Kodi guidelines.", "LabelKodiMetadataSaveImagePathsHelp": "This is recommended if you have image file names that don't conform to Kodi guidelines.",
"LabelKodiMetadataUser": "Save user watch data to nfo's for:", "LabelKodiMetadataUser": "Save user watch data to NFO files for:",
"LabelKodiMetadataUserHelp": "Enable this to save watch data to NFO files for other applications to utilize.", "LabelKodiMetadataUserHelp": "Save watch data to NFO files for other applications to utilize.",
"LabelLanNetworks": "LAN networks:", "LabelLanNetworks": "LAN networks:",
"LabelLanguage": "Language:", "LabelLanguage": "Language:",
"LabelLineup": "Lineup:", "LabelLineup": "Lineup:",
@ -686,7 +695,7 @@
"LabelLoginDisclaimerHelp": "A message that will be displayed at the bottom of the login page.", "LabelLoginDisclaimerHelp": "A message that will be displayed at the bottom of the login page.",
"LabelLogs": "Logs:", "LabelLogs": "Logs:",
"LabelManufacturer": "Manufacturer", "LabelManufacturer": "Manufacturer",
"LabelManufacturerUrl": "Manufacturer url", "LabelManufacturerUrl": "Manufacturer URL",
"LabelMatchType": "Match type:", "LabelMatchType": "Match type:",
"LabelMaxBackdropsPerItem": "Maximum number of backdrops per item:", "LabelMaxBackdropsPerItem": "Maximum number of backdrops per item:",
"LabelMaxChromecastBitrate": "Chromecast streaming quality:", "LabelMaxChromecastBitrate": "Chromecast streaming quality:",
@ -717,11 +726,11 @@
"LabelModelDescription": "Model description", "LabelModelDescription": "Model description",
"LabelModelName": "Model name", "LabelModelName": "Model name",
"LabelModelNumber": "Model number", "LabelModelNumber": "Model number",
"LabelModelUrl": "Model url", "LabelModelUrl": "Model URL",
"LabelMonitorUsers": "Monitor activity from:", "LabelMonitorUsers": "Monitor activity from:",
"LabelMovieCategories": "Movie categories:", "LabelMovieCategories": "Movie categories:",
"LabelMoviePrefix": "Movie prefix:", "LabelMoviePrefix": "Movie prefix:",
"LabelMoviePrefixHelp": "If a prefix is applied to movie titles, enter it here so that Jellyfin can handle it properly.", "LabelMoviePrefixHelp": "If a prefix is applied to movie titles, enter it here so the server can handle it properly.",
"LabelMovieRecordingPath": "Movie recording path (optional):", "LabelMovieRecordingPath": "Movie recording path (optional):",
"LabelMusicStreamingTranscodingBitrate": "Music transcoding bitrate:", "LabelMusicStreamingTranscodingBitrate": "Music transcoding bitrate:",
"LabelMusicStreamingTranscodingBitrateHelp": "Specify a max bitrate when streaming music", "LabelMusicStreamingTranscodingBitrateHelp": "Specify a max bitrate when streaming music",
@ -751,7 +760,10 @@
"LabelPersonRoleHelp": "Example: Ice cream truck driver", "LabelPersonRoleHelp": "Example: Ice cream truck driver",
"LabelPlaceOfBirth": "Place of birth:", "LabelPlaceOfBirth": "Place of birth:",
"LabelPlayDefaultAudioTrack": "Play default audio track regardless of language", "LabelPlayDefaultAudioTrack": "Play default audio track regardless of language",
"LabelPlayer": "Player:",
"LabelPlaylist": "Playlist:", "LabelPlaylist": "Playlist:",
"LabelPlayMethod": "Play method:",
"LabelPleaseRestart": "Changes will take effect after manually reloading the web client.",
"LabelPostProcessor": "Post-processing application:", "LabelPostProcessor": "Post-processing application:",
"LabelPostProcessorArguments": "Post-processor command line arguments:", "LabelPostProcessorArguments": "Post-processor command line arguments:",
"LabelPostProcessorArgumentsHelp": "Use {path} as the path to the recording file.", "LabelPostProcessorArgumentsHelp": "Use {path} as the path to the recording file.",
@ -796,10 +808,11 @@
"LabelSerialNumber": "Serial number", "LabelSerialNumber": "Serial number",
"LabelSeriesRecordingPath": "Series recording path (optional):", "LabelSeriesRecordingPath": "Series recording path (optional):",
"LabelServerHost": "Host:", "LabelServerHost": "Host:",
"LabelServerHostHelp": "192.168.1.100 or https://myserver.com", "LabelServerHostHelp": "192.168.1.100:8096 or https://myserver.com",
"LabelServerName": "Server name:", "LabelServerName": "Server name:",
"LabelServerPort": "Port:", "LabelServerPort": "Port:",
"LabelSimultaneousConnectionLimit": "Simultaneous stream limit:", "LabelSimultaneousConnectionLimit": "Simultaneous stream limit:",
"LabelSize": "Size:",
"LabelSkin": "Skin:", "LabelSkin": "Skin:",
"LabelSkipBackLength": "Skip back length:", "LabelSkipBackLength": "Skip back length:",
"LabelSkipForwardLength": "Skip forward length:", "LabelSkipForwardLength": "Skip forward length:",
@ -839,10 +852,12 @@
"LabelTranscodingAudioCodec": "Audio codec:", "LabelTranscodingAudioCodec": "Audio codec:",
"LabelTranscodingContainer": "Container:", "LabelTranscodingContainer": "Container:",
"LabelTranscodePath": "Transcode path:", "LabelTranscodePath": "Transcode path:",
"LabelTranscodingTempPathHelp": "This folder contains working files used by the transcoder. Specify a custom path, or leave empty to use the default within the server's data folder.", "LabelTranscodingTempPathHelp": "Specify a custom path for the transcode files served to clients. Leave blank to use the server default.",
"LabelTranscodes": "Transcodes:", "LabelTranscodes": "Transcodes:",
"LabelTranscodingFramerate": "Transcoding framerate:",
"LabelTranscodingProgress": "Transcoding progress:",
"LabelTranscodingThreadCount": "Transcoding thread count:", "LabelTranscodingThreadCount": "Transcoding thread count:",
"LabelTranscodingThreadCountHelp": "Select the maximum number of threads to use when transcoding. Reducing the thread count will lower cpu usage but may not convert fast enough for a smooth playback experience.", "LabelTranscodingThreadCountHelp": "Select the maximum number of threads to use when transcoding. Reducing the thread count will lower CPU usage but may not convert fast enough for a smooth playback experience.",
"LabelTranscodingVideoCodec": "Video codec:", "LabelTranscodingVideoCodec": "Video codec:",
"LabelTriggerType": "Trigger Type:", "LabelTriggerType": "Trigger Type:",
"LabelTunerIpAddress": "Tuner IP Address:", "LabelTunerIpAddress": "Tuner IP Address:",
@ -868,10 +883,12 @@
"DashboardOperatingSystem": "Operating System: {0}", "DashboardOperatingSystem": "Operating System: {0}",
"DashboardArchitecture": "Architecture: {0}", "DashboardArchitecture": "Architecture: {0}",
"LabelVideo": "Video:", "LabelVideo": "Video:",
"LabelVideoBitrate": "Video bitrate:",
"LabelVideoCodec": "Video codec:",
"LabelWeb": "Web: ", "LabelWeb": "Web: ",
"LabelXDlnaCap": "X-Dlna cap:", "LabelXDlnaCap": "X-DLNA cap:",
"LabelXDlnaCapHelp": "Determines the content of the X_DLNACAP element in the urn:schemas-dlna-org:device-1-0 namespace.", "LabelXDlnaCapHelp": "Determines the content of the X_DLNACAP element in the urn:schemas-dlna-org:device-1-0 namespace.",
"LabelXDlnaDoc": "X-Dlna doc:", "LabelXDlnaDoc": "X-DLNA doc:",
"LabelXDlnaDocHelp": "Determines the content of the X_DLNADOC element in the urn:schemas-dlna-org:device-1-0 namespace.", "LabelXDlnaDocHelp": "Determines the content of the X_DLNADOC element in the urn:schemas-dlna-org:device-1-0 namespace.",
"LabelYear": "Year:", "LabelYear": "Year:",
"LabelYourFirstName": "Your first name:", "LabelYourFirstName": "Your first name:",
@ -986,7 +1003,7 @@
"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.", "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.",
"MinutesAfter": "minutes after", "MinutesAfter": "minutes after",
"MinutesBefore": "minutes before", "MinutesBefore": "minutes before",
"Mobile": "Mobile / Tablet", "Mobile": "Mobile",
"Monday": "Monday", "Monday": "Monday",
"MoreFromValue": "More from {0}", "MoreFromValue": "More from {0}",
"MoreUsersCanBeAddedLater": "More users can be added later from within the dashboard.", "MoreUsersCanBeAddedLater": "More users can be added later from within the dashboard.",
@ -1024,7 +1041,7 @@
"OneChannel": "One channel", "OneChannel": "One channel",
"OnlyForcedSubtitles": "Only forced subtitles", "OnlyForcedSubtitles": "Only forced subtitles",
"OnlyForcedSubtitlesHelp": "Only subtitles marked as forced will be loaded.", "OnlyForcedSubtitlesHelp": "Only subtitles marked as forced will be loaded.",
"OnlyImageFormats": "Only image formats (VOBSUB, PGS, SUB, etc.)", "OnlyImageFormats": "Only image formats (VOBSUB, PGS, SUB, etc)",
"Option3D": "3D", "Option3D": "3D",
"OptionAdminUsers": "Administrators", "OptionAdminUsers": "Administrators",
"OptionAlbum": "Album", "OptionAlbum": "Album",
@ -1075,7 +1092,7 @@
"OptionDisableUserHelp": "If disabled the server will not allow any connections from this user. Existing connections will be abruptly terminated.", "OptionDisableUserHelp": "If disabled the server will not allow any connections from this user. Existing connections will be abruptly terminated.",
"OptionDislikes": "Dislikes", "OptionDislikes": "Dislikes",
"OptionDisplayFolderView": "Display a folder view to show plain media folders", "OptionDisplayFolderView": "Display a folder view to show plain media folders",
"OptionDisplayFolderViewHelp": "If enabled, Jellyfin apps will display a Folders category alongside your media library. This is useful if you'd like to have plain folder views.", "OptionDisplayFolderViewHelp": "Display folders alongside your other media libraries. This can be useful if you'd like to have a plain folder view.",
"OptionDownloadArtImage": "Art", "OptionDownloadArtImage": "Art",
"OptionDownloadBackImage": "Back", "OptionDownloadBackImage": "Back",
"OptionDownloadBannerImage": "Banner", "OptionDownloadBannerImage": "Banner",
@ -1094,7 +1111,7 @@
"OptionEnableAccessToAllLibraries": "Enable access to all libraries", "OptionEnableAccessToAllLibraries": "Enable access to all libraries",
"OptionEnableAutomaticServerUpdates": "Enable automatic server updates", "OptionEnableAutomaticServerUpdates": "Enable automatic server updates",
"OptionEnableExternalContentInSuggestions": "Enable external content in suggestions", "OptionEnableExternalContentInSuggestions": "Enable external content in suggestions",
"OptionEnableExternalContentInSuggestionsHelp": "Allow internet trailers and live tv programs to be included within suggested content.", "OptionEnableExternalContentInSuggestionsHelp": "Allow internet trailers and live TV programs to be included within suggested content.",
"OptionEnableForAllTuners": "Enable for all tuner devices", "OptionEnableForAllTuners": "Enable for all tuner devices",
"OptionEnableM2tsMode": "Enable M2ts mode", "OptionEnableM2tsMode": "Enable M2ts mode",
"OptionEnableM2tsModeHelp": "Enable m2ts mode when encoding to mpegts.", "OptionEnableM2tsModeHelp": "Enable m2ts mode when encoding to mpegts.",
@ -1113,8 +1130,8 @@
"OptionHasTrailer": "Trailer", "OptionHasTrailer": "Trailer",
"OptionHideUser": "Hide this user from login screens", "OptionHideUser": "Hide this user from login screens",
"OptionHideUserFromLoginHelp": "Useful for private or hidden administrator accounts. The user will need to sign in manually by entering their username and password.", "OptionHideUserFromLoginHelp": "Useful for private or hidden administrator accounts. The user will need to sign in manually by entering their username and password.",
"OptionHlsSegmentedSubtitles": "Hls segmented subtitles", "OptionHlsSegmentedSubtitles": "HLS segmented subtitles",
"OptionHomeVideos": "Home videos & photos", "OptionHomeVideos": "Photos",
"OptionIgnoreTranscodeByteRangeRequests": "Ignore transcode byte range requests", "OptionIgnoreTranscodeByteRangeRequests": "Ignore transcode byte range requests",
"OptionIgnoreTranscodeByteRangeRequestsHelp": "If enabled, these requests will be honored but will ignore the byte range header.", "OptionIgnoreTranscodeByteRangeRequestsHelp": "If enabled, these requests will be honored but will ignore the byte range header.",
"OptionImdbRating": "IMDb Rating", "OptionImdbRating": "IMDb Rating",
@ -1123,7 +1140,7 @@
"OptionLikes": "Likes", "OptionLikes": "Likes",
"OptionList": "List", "OptionList": "List",
"OptionLoginAttemptsBeforeLockout": "Determines how many incorrect login attempts can be made before lockout occurs.", "OptionLoginAttemptsBeforeLockout": "Determines how many incorrect login attempts can be made before lockout occurs.",
"OptionLoginAttemptsBeforeLockoutHelp": "A value of zero means inheriting the default of three attempts for normal users and five for admin. Setting this to -1 will disable the feature.", "OptionLoginAttemptsBeforeLockoutHelp": "A value of zero means inheriting the default of three attempts for normal users and five for administrators. Setting this to -1 will disable the feature.",
"OptionMax": "Max", "OptionMax": "Max",
"OptionMissingEpisode": "Missing Episodes", "OptionMissingEpisode": "Missing Episodes",
"OptionMonday": "Monday", "OptionMonday": "Monday",
@ -1308,7 +1325,7 @@
"StopRecording": "Stop recording", "StopRecording": "Stop recording",
"Studios": "Studios", "Studios": "Studios",
"SubtitleAppearanceSettingsAlsoPassedToCastDevices": "These settings also apply to any Chromecast playback started by this device.", "SubtitleAppearanceSettingsAlsoPassedToCastDevices": "These settings also apply to any Chromecast playback started by this device.",
"SubtitleAppearanceSettingsDisclaimer": "These settings will not apply to graphical subtitles (PGS, DVD, etc), or subtitles that have their own styles embedded (ASS/SSA).", "SubtitleAppearanceSettingsDisclaimer": "These settings will not apply to graphical subtitles (PGS, DVD, etc) or ASS/SSA subtitles that embed their own styles.",
"SubtitleDownloadersHelp": "Enable and rank your preferred subtitle downloaders in order of priority.", "SubtitleDownloadersHelp": "Enable and rank your preferred subtitle downloaders in order of priority.",
"SubtitleOffset": "Subtitle Offset", "SubtitleOffset": "Subtitle Offset",
"Subtitles": "Subtitles", "Subtitles": "Subtitles",

View file

@ -765,7 +765,7 @@
"LabelSerialNumber": "Número de serie", "LabelSerialNumber": "Número de serie",
"LabelSeriesRecordingPath": "Ruta para grabaciones de Series (Opcional):", "LabelSeriesRecordingPath": "Ruta para grabaciones de Series (Opcional):",
"LabelServerHost": "Servidor:", "LabelServerHost": "Servidor:",
"LabelServerHostHelp": "192.168.1.100 O https://miservidor.com", "LabelServerHostHelp": "192.168.1.100:8096 o https://miservidor.com",
"LabelServerPort": "Puerto:", "LabelServerPort": "Puerto:",
"LabelSimultaneousConnectionLimit": "Limite de transmisiones simultaneas:", "LabelSimultaneousConnectionLimit": "Limite de transmisiones simultaneas:",
"LabelSkin": "Piel:", "LabelSkin": "Piel:",

View file

@ -1409,7 +1409,7 @@
"MediaInfoStreamTypeData": "Données", "MediaInfoStreamTypeData": "Données",
"MediaInfoStreamTypeSubtitle": "Sous-titres", "MediaInfoStreamTypeSubtitle": "Sous-titres",
"MediaInfoStreamTypeVideo": "Video", "MediaInfoStreamTypeVideo": "Video",
"AuthProviderHelp": "Sélectionnez le fournisseur d'authentification à utiliser pour identifier cet utilisateur par mot de passe", "AuthProviderHelp": "Sélectionner un fournisseur d'authentification pour authentifier le mot de passe de cet utilisateur",
"PasswordResetProviderHelp": "Choisissez un Fournisseur de réinitialisation de mot de passe à utiliser lorsqu'un utilisateur demande la réinitialisation de son mot de passe", "PasswordResetProviderHelp": "Choisissez un Fournisseur de réinitialisation de mot de passe à utiliser lorsqu'un utilisateur demande la réinitialisation de son mot de passe",
"HeaderHome": "Accueil", "HeaderHome": "Accueil",
"HeaderHomeSettings": "Paramètre d'Accueil", "HeaderHomeSettings": "Paramètre d'Accueil",

View file

@ -93,18 +93,18 @@
"Dislike": "Nem tettszik", "Dislike": "Nem tettszik",
"Display": "Megjelenítés", "Display": "Megjelenítés",
"DisplayMissingEpisodesWithinSeasons": "Hiányzó évad epizódok megjelenítése", "DisplayMissingEpisodesWithinSeasons": "Hiányzó évad epizódok megjelenítése",
"DisplayMissingEpisodesWithinSeasonsHelp": "Ezt engedélyezni kell a Jellyfin Szerver beállításban lévő TV könyvtárak esetében is.", "DisplayMissingEpisodesWithinSeasonsHelp": "Ezt engedélyezni kell a szerver beállításában lévő TV könyvtárak esetében is.",
"Down": "Le", "Down": "Le",
"Download": "Letöltés", "Download": "Letöltés",
"Edit": "Szerkesztés", "Edit": "Szerkesztés",
"EditImages": "Képek szerkesztése", "EditImages": "Képek szerkesztése",
"EditMetadata": "Metaadat szerkesztés", "EditMetadata": "Metaadat szerkesztés",
"EditSubtitles": "Feliratok szerkesztése", "EditSubtitles": "Feliratok szerkesztése",
"EnableBackdrops": "Háttérképek engedélyezve", "EnableBackdrops": "Háttérképek",
"EnableBackdropsHelp": "Ha engedélyezve van, akkor a háttérképek a könyvtár böngészése közben néhány oldal hátterében jelennek meg.", "EnableBackdropsHelp": "A háttérképek a könyvtár böngészése közben néhány oldal hátterében jelennek meg.",
"EnableHardwareEncoding": "Hardveres kódolás engedélyezése", "EnableHardwareEncoding": "Hardveres kódolás engedélyezése",
"EnableThemeSongs": "Főcím dalok engedélyezése", "EnableThemeSongs": "Főcím dalok",
"EnableThemeSongsHelp": "Ha engedélyezve van, a főcím dalok a háttérben játszódnak le a könyvtár böngészése közben.", "EnableThemeSongsHelp": "Főcím dalok lejátszása háttérben a könyvtár böngészése közben.",
"EndsAtValue": "Várható befejezés {0}", "EndsAtValue": "Várható befejezés {0}",
"Episodes": "Epizódok", "Episodes": "Epizódok",
"ExitFullscreen": "Kilépés a teljes képernyőből", "ExitFullscreen": "Kilépés a teljes képernyőből",
@ -117,9 +117,9 @@
"FolderTypeBooks": "Könyvek", "FolderTypeBooks": "Könyvek",
"FolderTypeMovies": "Filmek", "FolderTypeMovies": "Filmek",
"FolderTypeMusic": "Zenék", "FolderTypeMusic": "Zenék",
"FolderTypeMusicVideos": "Zenei videók", "FolderTypeMusicVideos": "Zenei Videók",
"FolderTypeTvShows": "TV Műsorok", "FolderTypeTvShows": "Műsorok",
"FolderTypeUnset": "Vegyes tartalom", "FolderTypeUnset": "Vegyes Tartalom",
"Folders": "Könyvtárak", "Folders": "Könyvtárak",
"Friday": "Péntek", "Friday": "Péntek",
"Fullscreen": "Teljes képernyő", "Fullscreen": "Teljes képernyő",
@ -678,15 +678,15 @@
"DownloadsValue": "{0} letöltés", "DownloadsValue": "{0} letöltés",
"DrmChannelsNotImported": "A csatornák DRM-el nem kerülnek importálásra.", "DrmChannelsNotImported": "A csatornák DRM-el nem kerülnek importálásra.",
"DropShadow": "Árnyék", "DropShadow": "Árnyék",
"EasyPasswordHelp": "Az egyszerű PIN kódot az offline hozzáféréshez használják a támogatott Jellyfin alkalmazásokban, valamint hálózaton belüli bejelentkezéshez is használható.", "EasyPasswordHelp": "Az egyszerű PIN kódot az offline hozzáféréshez használják a támogatott kliens alkalmazásokban, valamint hálózaton belüli bejelentkezéshez is használható.",
"EnableCinemaMode": "Cinema Mode engedélyezése", "EnableCinemaMode": "Cinema Mode",
"EnableColorCodedBackgrounds": "Színes kódolt háttérképek engedélyezése", "EnableColorCodedBackgrounds": "Színkódolt háttérképek",
"EnableDisplayMirroring": "Kijelző tükrözés engedélyezése", "EnableDisplayMirroring": "Kijelző tükrözés",
"EnableExternalVideoPlayers": "Külső videolejátszók engedélyezése", "EnableExternalVideoPlayers": "Külső videolejátszók",
"EnableExternalVideoPlayersHelp": "A külső lejátszó menü a videó indításakor jelenik meg.", "EnableExternalVideoPlayersHelp": "A külső lejátszó menü a videó indításakor jelenik meg.",
"EnableNextVideoInfoOverlay": "A következő videó adatainak megjelenítése lejátszás közben", "EnableNextVideoInfoOverlay": "A következő videó adatainak megjelenítése lejátszás közben",
"EnableNextVideoInfoOverlayHelp": "A videó végén megjeleníti az aktuális lejátszási listában lévő következő videó adatait.", "EnableNextVideoInfoOverlayHelp": "A videó végén megjeleníti az aktuális lejátszási listában lévő következő videó adatait.",
"EnablePhotos": "Fotók engedélyezése", "EnablePhotos": "Fotók megjelenítése",
"EnablePhotosHelp": "A fényképeket a médiafájlok mellett észleli és megjeleníti.", "EnablePhotosHelp": "A fényképeket a médiafájlok mellett észleli és megjeleníti.",
"Ended": "Befejeződött", "Ended": "Befejeződött",
"ErrorAddingMediaPathToVirtualFolder": "Hiba történt a média elérésekor. Kérlek győződjön meg róla, hogy az elérési út érvényes és a Jellyfin szerver hozzáfér az adott helyhez.", "ErrorAddingMediaPathToVirtualFolder": "Hiba történt a média elérésekor. Kérlek győződjön meg róla, hogy az elérési út érvényes és a Jellyfin szerver hozzáfér az adott helyhez.",
@ -801,8 +801,8 @@
"Shows": "Műsorok", "Shows": "Műsorok",
"Songs": "Dalok", "Songs": "Dalok",
"ValueSpecialEpisodeName": "Special - {0}", "ValueSpecialEpisodeName": "Special - {0}",
"EnableThemeVideos": "Videók témájának engedélyezése", "EnableThemeVideos": "Videók témák",
"EnableThemeVideosHelp": "Ha engedélyezve van, a videó témája a háttérben játszódik le a könyvtár böngészése közben.", "EnableThemeVideosHelp": "Videó témájának lejátszása háttérben a könyvtár böngészése közben.",
"HeaderBlockItemsWithNoRating": "Blokkolja azokat az elemeket amelyek tiltott, vagy nem felismerhető minősítésűek:", "HeaderBlockItemsWithNoRating": "Blokkolja azokat az elemeket amelyek tiltott, vagy nem felismerhető minősítésűek:",
"HeaderSchedule": "Ütemezés", "HeaderSchedule": "Ütemezés",
"HeaderSeriesStatus": "Sorozat állapot", "HeaderSeriesStatus": "Sorozat állapot",
@ -863,8 +863,8 @@
"LabelCertificatePasswordHelp": "Ha a tanúsítványhoz jelszó szükséges, írd ide.", "LabelCertificatePasswordHelp": "Ha a tanúsítványhoz jelszó szükséges, írd ide.",
"LabelChannels": "Csatornák:", "LabelChannels": "Csatornák:",
"LabelCustomCertificatePath": "Egyéni SSL tanúsítvány elérési útvonala:", "LabelCustomCertificatePath": "Egyéni SSL tanúsítvány elérési útvonala:",
"LabelCustomCss": "Egyéni css:", "LabelCustomCss": "Egyedi CSS:",
"LabelCustomCssHelp": "Egyéni css módosítások a webes felülethez.", "LabelCustomCssHelp": "Egyedi CSS stílusok alkalmazása a webes felülethez.",
"LabelCustomizeOptionsPerMediaType": "A média típusának testreszabása:", "LabelCustomizeOptionsPerMediaType": "A média típusának testreszabása:",
"LabelDeathDate": "Halálának dátuma:", "LabelDeathDate": "Halálának dátuma:",
"LabelDefaultScreen": "Alapértelmezett képernyő:", "LabelDefaultScreen": "Alapértelmezett képernyő:",
@ -1370,5 +1370,17 @@
"LabelLocalHttpServerPortNumberHelp": "A TCP port száma, melyen a Jellyfin HTTP szerver figyel.", "LabelLocalHttpServerPortNumberHelp": "A TCP port száma, melyen a Jellyfin HTTP szerver figyel.",
"UserAgentHelp": "Adj meg egy egyedi http user-agent fejlécet, amennyiben szükséges.", "UserAgentHelp": "Adj meg egy egyedi http user-agent fejlécet, amennyiben szükséges.",
"XmlDocumentAttributeListHelp": "Ezek a tulajdonságok minden xml válaszüzenet gyökér elemére alkalmazásra kerülnek.", "XmlDocumentAttributeListHelp": "Ezek a tulajdonságok minden xml válaszüzenet gyökér elemére alkalmazásra kerülnek.",
"Thumb": "Thumb" "Thumb": "Thumb",
"MediaInfoStreamTypeData": "Adat",
"MediaInfoStreamTypeEmbeddedImage": "Beágyazott kép",
"LabelBitrate": "Bitráta:",
"LabelAudioSampleRate": "Audió mintavételi ráta:",
"LabelAudioCodec": "Audió kódek:",
"LabelAudioChannels": "Audió csatorna:",
"LabelAudioBitrate": "Audió bitráta:",
"LabelAudioBitDepth": "Audió bitmélység:",
"HeaderFavoriteBooks": "Kedvenc Könyvek",
"CopyStreamURLSuccess": "URL másolása sikeres.",
"CopyStreamURL": "Stream URL másolása",
"PlaybackData": "Lejátszási adatok"
} }

View file

@ -4,7 +4,7 @@
"Actor": "Attore", "Actor": "Attore",
"Add": "Aggiungi", "Add": "Aggiungi",
"AddItemToCollectionHelp": "Aggiungi elementi alle collezioni ricercandoli e utilizzando il pulsante destro del mouse o toccare i menu per aggiungerli a una raccolta.", "AddItemToCollectionHelp": "Aggiungi elementi alle collezioni ricercandoli e utilizzando il pulsante destro del mouse o toccare i menu per aggiungerli a una raccolta.",
"AddToCollection": "Aggiungi ad una collezione", "AddToCollection": "Aggiunto alla collezione",
"AddToPlayQueue": "Aggiungi alla coda di riproduzione", "AddToPlayQueue": "Aggiungi alla coda di riproduzione",
"AddToPlaylist": "Aggiungi alla playlist", "AddToPlaylist": "Aggiungi alla playlist",
"AddedOnValue": "Aggiunto {0}", "AddedOnValue": "Aggiunto {0}",
@ -1320,8 +1320,8 @@
"AuthProviderHelp": "Selezionare un Authentication Provider da utilizzare per autenticare la password dell'utente", "AuthProviderHelp": "Selezionare un Authentication Provider da utilizzare per autenticare la password dell'utente",
"HeaderFavoriteMovies": "Film Preferiti", "HeaderFavoriteMovies": "Film Preferiti",
"HeaderFavoriteShows": "Serie TV Preferite", "HeaderFavoriteShows": "Serie TV Preferite",
"HeaderFavoriteEpisodes": "Episodi Favoriti", "HeaderFavoriteEpisodes": "Episodi Preferiti",
"HeaderFavoriteAlbums": "Album Favoriti", "HeaderFavoriteAlbums": "Album preferiti",
"HeaderFavoriteArtists": "Artisti Preferiti", "HeaderFavoriteArtists": "Artisti Preferiti",
"HeaderFavoriteSongs": "Brani Preferiti", "HeaderFavoriteSongs": "Brani Preferiti",
"HeaderFavoriteVideos": "Video Preferiti", "HeaderFavoriteVideos": "Video Preferiti",

View file

@ -19,11 +19,11 @@
"AllEpisodes": "Barlyq bólimder", "AllEpisodes": "Barlyq bólimder",
"AllLanguages": "Barlyq tilder", "AllLanguages": "Barlyq tilder",
"AllLibraries": "Barlyq tasyǵyshhanalar", "AllLibraries": "Barlyq tasyǵyshhanalar",
"AllowHWTranscodingHelp": "Qosylǵanda, aǵyndardy naqty ýaqytta qaıta kodtaýǵa túnerge múmkindik beredi. Bul Jellyfin Server arqyly qaıta kodtaý talabyn azaıtýǵa kómektesýi múmkin.", "AllowHWTranscodingHelp": "Aǵyndardy naqty ýaqytta qaıta kodtaýǵa túnerge múmkindik beredi. Bul server arqyly qaıta kodtaý talabyn azaıtýǵa kómektesýi múmkin.",
"AllowMediaConversion": "Tasyǵyshderekterdi túrlendirýge ruqsat etý", "AllowMediaConversion": "Tasyǵyshderekterdi túrlendirýge ruqsat etý",
"AllowMediaConversionHelp": "Tasyǵyshderekterdi túrlendirý ereksheligine qatynaý úshin jol berý nemese tıym salý.", "AllowMediaConversionHelp": "Tasyǵyshderekterdi túrlendirý ereksheligine qatynaý úshin jol berý nemese tıym salý.",
"AllowOnTheFlySubtitleExtraction": "Naqty ýaqytta sýbtıtrlerdi shyǵarýǵa ruqsat etý", "AllowOnTheFlySubtitleExtraction": "Naqty ýaqytta sýbtıtrlerdi shyǵarýǵa ruqsat etý",
"AllowOnTheFlySubtitleExtractionHelp": "Beıne qaıta kodtaýyna tıym salýǵa kómektesý úshin endirilgen sýbtıtrler beıneden shyǵarylyp, Jellyfin qoldanbalaryna kádimgi mátinge pishiminde jetkizilý múmkin. Keıbir júıelerde buǵan uzaq ýaqyt ketýi jáne shyǵarý úrdisi barysynda beıne oınatý toqtatylýy múmkin. Tutynǵysh qurylǵyda olarǵa qoldaý kórsetilmegen kezde, beıne qaıta kodtalý arqyly endirilgen sýbtıtrler jazylýy úshin ony óshirińiz.", "AllowOnTheFlySubtitleExtractionHelp": "Beıne qaıta kodtaýyna tıym salýǵa kómektesý úshin endirilgen sýbtıtrler beıneden shyǵarylyp, klıentterge kádimgi mátinben jetkizilý múmkin. Keıbir júıelerde buǵan uzaq ýaqyt ketýi jáne shyǵarý úrdisi barysynda beıne oınatý toqtatylýy múmkin. Tutynǵysh qurylǵyda olarǵa qoldaý kórsetilmegen kezde, beıne qaıta kodtalý arqyly endirilgen sýbtıtrler jazylýy úshin ony óshirińiz.",
"AllowRemoteAccess": "Osy Jellyfin Serverine syrtqy qosylymdar úshin ruqsat etý.", "AllowRemoteAccess": "Osy Jellyfin Serverine syrtqy qosylymdar úshin ruqsat etý.",
"AllowRemoteAccessHelp": "Eger jalaýsha alastalǵan bolsa, baryq syrtqy baılanystar qursaýlanady.", "AllowRemoteAccessHelp": "Eger jalaýsha alastalǵan bolsa, baryq syrtqy baılanystar qursaýlanady.",
"AllowedRemoteAddressesHelp": "Qashyqtan qosylýǵa ruqsat etiletin jeliler úshin útirlermen bólingen IP-mekenjaılarynyń tizbesi nemese IP/netmask jazbalar Eger bos qaldyrylsa, barlyq qashyqtaǵy mekenjaılarǵa ruqsat etiledi.", "AllowedRemoteAddressesHelp": "Qashyqtan qosylýǵa ruqsat etiletin jeliler úshin útirlermen bólingen IP-mekenjaılarynyń tizbesi nemese IP/netmask jazbalar Eger bos qaldyrylsa, barlyq qashyqtaǵy mekenjaılarǵa ruqsat etiledi.",
@ -56,7 +56,7 @@
"BoxRear": "Qorap arty", "BoxRear": "Qorap arty",
"Browse": "Sharlaý", "Browse": "Sharlaý",
"BrowsePluginCatalogMessage": "Qoljetimdi plagındermen tanysý úshin plagın tizimdemesin sholyńyz.", "BrowsePluginCatalogMessage": "Qoljetimdi plagındermen tanysý úshin plagın tizimdemesin sholyńyz.",
"BurnSubtitlesHelp": "Sýbtıtrler pishimine baılanysty beıneni túrlendirgen kezde server sýbtıtrlerdi jazyýyn anyqtaıdy. Sýbtıtrler jazýdy qashqaqtaý serverdiń ónimdiligin jaqsartady. Sýretke negizdelgen pishimderdi (mysaly, VOBSUB, PGS, SUB/IDX j.t.b.), sondaı-aq keıbir ASS/SSA sýbtıtrlerin jazý úshin Avtomattyny tańdańyz", "BurnSubtitlesHelp": "Sýbtıtrler pishimine baılanysty beıneni túrlendirgen kezde server sýbtıtrlerdi jazyýyn anyqtaıdy. Sýbtıtrler jazýdy qashqaqtaý serverdiń ónimdiligin jaqsartady. Sýretke negizdelgen pishimderdi (VOBSUB, PGS, SUB/IDX j.t.b.) jáne keıbir ASS/SSA sýbtıtrlerin jazý úshin Avtomattyny tańdańyz.",
"ButtonAdd": "Ústeý", "ButtonAdd": "Ústeý",
"ButtonAddMediaLibrary": "Tasyǵyshhanany ústeý", "ButtonAddMediaLibrary": "Tasyǵyshhanany ústeý",
"ButtonAddScheduledTaskTrigger": "Trıggerdi ústeý", "ButtonAddScheduledTaskTrigger": "Trıggerdi ústeý",
@ -187,7 +187,7 @@
"DetectingDevices": "Qurylǵylardy tabýda", "DetectingDevices": "Qurylǵylardy tabýda",
"DeviceAccessHelp": "Bul tek qana biregeı anyqtalýy múmkin qurylǵylar úshin qoldanylady jáne sholǵyshpen qantynaýǵa tyıym salmaıdy. Paıdalanýshy qurylǵysynan qatynaýdy súzgileýi jańa qurylǵylardy munda bekitilgenshe deıin paıdalanýǵa tyıym salady.", "DeviceAccessHelp": "Bul tek qana biregeı anyqtalýy múmkin qurylǵylar úshin qoldanylady jáne sholǵyshpen qantynaýǵa tyıym salmaıdy. Paıdalanýshy qurylǵysynan qatynaýdy súzgileýi jańa qurylǵylardy munda bekitilgenshe deıin paıdalanýǵa tyıym salady.",
"DirectPlaying": "Tikeleı oınatýda", "DirectPlaying": "Tikeleı oınatýda",
"DirectStreamHelp1": "Ajyratymdylyq pen tasyǵyshderekter túrine (H.264, AC3, t.b.) qatysty tasyǵyshderekter qurylǵyǵa sáıkes keledi, biraq syıyspaıtyn faıl konteınerinde (.mkv, .avi, .wmv jáne t.b.) bolyp tur. Qurylǵyǵa taratpas buryn, beıne naqty ýaqytta qaıta jınaqtalady.", "DirectStreamHelp1": "Ajyratymdylyq pen tasyǵyshderekter túrine (H.264, AC3, t.b.) qatysty tasyǵyshderekter qurylǵyǵa sáıkes keledi, biraq syıyspaıtyn faıl konteınerinde (mkv, avi, wmv jáne t.b.) bolyp tur. Qurylǵyǵa taratpas buryn, beıne naqty ýaqytta qaıta jınaqtalady.",
"DirectStreamHelp2": "Faıldy tikeleı taratý beıne sapasyn joǵaltpaı óte az esepteý qýatyn paıdalanady.", "DirectStreamHelp2": "Faıldy tikeleı taratý beıne sapasyn joǵaltpaı óte az esepteý qýatyn paıdalanady.",
"DirectStreaming": "Tikeleı tasymaldanýda", "DirectStreaming": "Tikeleı tasymaldanýda",
"Director": "Rejısór", "Director": "Rejısór",
@ -201,7 +201,7 @@
"DisplayInMyMedia": "Basqy ekranda beınelenedi", "DisplayInMyMedia": "Basqy ekranda beınelenedi",
"DisplayInOtherHomeScreenSections": "Basqy ekran bólimderinde beıneleý (mys. Eń sońǵy tasyǵyshderekter jáne Kórýdi jalǵastyrý)", "DisplayInOtherHomeScreenSections": "Basqy ekran bólimderinde beıneleý (mys. Eń sońǵy tasyǵyshderekter jáne Kórýdi jalǵastyrý)",
"DisplayMissingEpisodesWithinSeasons": "Joq bólimderdi maýsym ishinde beıneleý", "DisplayMissingEpisodesWithinSeasons": "Joq bólimderdi maýsym ishinde beıneleý",
"DisplayMissingEpisodesWithinSeasonsHelp": "Bul sondaı-aq Jellyfin Server ornatýyndaǵy TD tasyǵyshhanalary úshin qosýly bolýy kerek.", "DisplayMissingEpisodesWithinSeasonsHelp": "Bul sondaı-aq server konfıgýrasýasyndaǵy TD tasyǵyshhanalary úshin qosýlýy qajet.",
"DisplayModeHelp": "Jellyfin iske qosylǵanda ekran túrin tańdańyz.", "DisplayModeHelp": "Jellyfin iske qosylǵanda ekran túrin tańdańyz.",
"DoNotRecord": "Jazýǵa bolmaıdy", "DoNotRecord": "Jazýǵa bolmaıdy",
"Down": "Tómenge", "Down": "Tómenge",
@ -209,29 +209,29 @@
"DownloadsValue": "{0} júkteý", "DownloadsValue": "{0} júkteý",
"DrmChannelsNotImported": "DRM bar arnalar shetten ákelinbeıdi.", "DrmChannelsNotImported": "DRM bar arnalar shetten ákelinbeıdi.",
"DropShadow": "Kóleńkeli", "DropShadow": "Kóleńkeli",
"EasyPasswordHelp": "Ońaıtylǵan PIN-kodyńyz qoldaýdaǵy Jellyfin qoldanbalarynan derbes qatynaý úshin paıdalanylady, jáne jeli ishinde ońaıtylyp kirý úshin paıdalanylýy múmkin.", "EasyPasswordHelp": "Ońaıtylǵan PIN-kodyńyz qoldaýdaǵy klıenterden derbes qatynaý úshin paıdalanylady, jáne jeli ishinde ońaıtylyp kirý úshin paıdalanylýy múmkin.",
"Edit": "Óńdeý", "Edit": "Óńdeý",
"EditImages": "Sýretterdi óńdeý", "EditImages": "Sýretterdi óńdeý",
"EditMetadata": "Metaderekterdi óńdeý", "EditMetadata": "Metaderekterdi óńdeý",
"EditSubtitles": "Sýbtıtrlerdi óńdeý", "EditSubtitles": "Sýbtıtrlerdi óńdeý",
"EnableBackdrops": "Artqy sýretterdi qosý", "EnableBackdrops": "Artqy sýretter",
"EnableBackdropsHelp": "Qosylǵanda, artqy sýretter tasyǵyshhanany sholý kezinde keıbir betterde óńde beınelenedi.", "EnableBackdropsHelp": "Artqy sýretter tasyǵyshhanany sholý kezinde keıbir betterde óńde beınelenedi.",
"EnableCinemaMode": "Kınoteatr rejimin qosý", "EnableCinemaMode": "Kınoteatr rejimi",
"EnableColorCodedBackgrounds": "Túspen belgilengen óńderdi qosý", "EnableColorCodedBackgrounds": "Túspen belgilengen óńder",
"EnableDisplayMirroring": "Beıneleýdiń telnusqasyn qosý", "EnableDisplayMirroring": "Beıneleýdiń telnusqasy",
"EnableExternalVideoPlayers": "Syrtqy oınatqyshtardy qosý", "EnableExternalVideoPlayers": "Syrtqy oınatqyshtar",
"EnableExternalVideoPlayersHelp": "Syrtqy oınatqysh máziri beıne oınatýdy bastaǵan kezde kórsetiledi.", "EnableExternalVideoPlayersHelp": "Syrtqy oınatqysh máziri beıne oınatýdy bastaǵan kezde kórsetiledi.",
"EnableHardwareEncoding": "Apparatyq kodtaýýdy qosý", "EnableHardwareEncoding": "Apparatyq kodtaýýdy qosý",
"EnableNextVideoInfoOverlay": "Oınatý kezinde kelesi beıne týraly aqparatty qosý", "EnableNextVideoInfoOverlay": "Oınatý kezinde kelesi beıne týraly aqparatty kórsetý",
"EnableNextVideoInfoOverlayHelp": "Beıne sońynda aǵymdaǵy oınatý tizimindegi kelesi beıne týraly aqparatty kórsetý.", "EnableNextVideoInfoOverlayHelp": "Beıne sońynda aǵymdaǵy oınatý tizimindegi kelesi beıne týraly aqparatty kórsetý.",
"EnablePhotos": "Fotosýretterdi qosý", "EnablePhotos": "Fotosýretter",
"EnablePhotosHelp": "Fotosýretter basqa tasyǵysh faıldarymen qatar anyqtalady jáne beınelenedi.", "EnablePhotosHelp": "Sýretter basqa tasyǵysh faıldarymen qatar anyqtalady jáne beınelenedi.",
"EnableStreamLooping": "Taratýlardy avtomatty tuıyqtaý", "EnableStreamLooping": "Taratýlardy avtomatty tuıyqtaý",
"EnableStreamLoopingHelp": "Eger taratý derekterinde tek qana azyn-aýlaq sekýnd bar bolsa jáne ony úzdiksiz suratyp alý qajet bolsa, ony qosyńyz. Bul qajet bolmaǵan jaǵdaıda qosylsa, qıyndyqtar týdyrýy múmkin.", "EnableStreamLoopingHelp": "Eger taratý derekterinde tek qana azyn-aýlaq sekýnd bar bolsa jáne ony úzdiksiz suratyp alý qajet bolsa, ony qosyńyz. Bul qajet bolmaǵan jaǵdaıda qosylsa, qıyndyqtar týdyrýy múmkin.",
"EnableThemeSongs": "Taqyryptyq áýenderdi qosý", "EnableThemeSongs": "Taqyryptyq áýender",
"EnableThemeSongsHelp": "Qosylǵanda, tasyǵyshhanany sholý kezinde taqyryptyq áýender óńde oınatylady.", "EnableThemeSongsHelp": "Taqyryptyq áýender tasyǵyshhanany sholý kezinde óńde oınatylady.",
"EnableThemeVideos": "Taqyryptyq beınelerdi qosý", "EnableThemeVideos": "Taqyryptyq beıneler",
"EnableThemeVideosHelp": "Qosylǵanda, tasyǵyshhanany sholý kezinde taqyryptyq beıneler óńde oınatylady.", "EnableThemeVideosHelp": "Taqyryptyq beıneler tasyǵyshhanany sholý kezinde óńde oınatylady.",
"Ended": "Aıaqtaldy", "Ended": "Aıaqtaldy",
"EndsAtValue": "Sońy: {0}", "EndsAtValue": "Sońy: {0}",
"Episodes": "Bólimder", "Episodes": "Bólimder",
@ -247,7 +247,7 @@
"EveryNDays": "{0} kún saıyn", "EveryNDays": "{0} kún saıyn",
"ExitFullscreen": "Tolyq ekrandan shyǵý", "ExitFullscreen": "Tolyq ekrandan shyǵý",
"ExtraLarge": "Óte iri", "ExtraLarge": "Óte iri",
"ExtractChapterImagesHelp": "Sahna sýretterin shyǵaryp alý Jellyfin-qoldanbalaryna sahna bólekteýge arnalǵan syzbalyq mázirlerdi beıneleý úshin ruqsat etedi. Bul proses baıaý, OP kerek qylatyn jáne biraz gıgabaıt keńistikti qajet etetin bolýy múmkin. Ol beınefaıldary tabylǵanda, jáne túngi ýaqytyna josparlaǵan tapsyrma retinde jumys isteıdi. Oryndaý kestesi Josparlaýshy aımaǵynda teńsheledi. Bul tapsyrmany qarbalas saǵattarynda jumys istetkizý usynylmaıdy.", "ExtractChapterImagesHelp": "Sahna sýretterin shyǵaryp alý klıentterine sahna bólekteýge arnalǵan syzbalyq mázirlerdi beıneleý úshin ruqsat etedi. Bul proses baıaý, qor kózin kóp talap etetin jáne biraz gıgabaıt keńistikti qajet etetin bolýy múmkin. Ol beınefaıldary tabylǵanda, jáne túngi ýaqytyna josparlaǵan tapsyrma retinde jumys isteıdi. Oryndaý kestesi Josparlaýshy aımaǵynda teńsheledi. Bul tapsyrmany qarbalas saǵattarynda jumys istetkizý usynylmaıdy.",
"Extras": "Qosymshalar", "Extras": "Qosymshalar",
"FFmpegSavePathNotFound": "Bizge siz engizgen FFmpeg jolyn paıdalanyp tabý múmkin bolmady. Sondaı-aq FFprobe talap etiledi jáne sol qaltada bolýy jón. Bul quramdastar ádette sol júkteýmen birge jetkiziledi. Joldy tekserip, qaıtalap kórińiz.", "FFmpegSavePathNotFound": "Bizge siz engizgen FFmpeg jolyn paıdalanyp tabý múmkin bolmady. Sondaı-aq FFprobe talap etiledi jáne sol qaltada bolýy jón. Bul quramdastar ádette sol júkteýmen birge jetkiziledi. Joldy tekserip, qaıtalap kórińiz.",
"FastForward": "Jyldam alǵa", "FastForward": "Jyldam alǵa",
@ -539,7 +539,7 @@
"LabelAll": "Barlyq", "LabelAll": "Barlyq",
"LabelAllowHWTranscoding": "Apparattyq qaıta kodtaýǵa ruqsat etý", "LabelAllowHWTranscoding": "Apparattyq qaıta kodtaýǵa ruqsat etý",
"LabelAllowServerAutoRestart": "Jańartýlardy qoldaný úshin serverge qaıta iske qosylýdy ruqsat etý", "LabelAllowServerAutoRestart": "Jańartýlardy qoldaný úshin serverge qaıta iske qosylýdy ruqsat etý",
"LabelAllowServerAutoRestartHelp": "Tek qana eshqandaı paıdalýnshylar belsendi emes, áreketsiz mezgilderde server qaıta iske qosylady.", "LabelAllowServerAutoRestartHelp": "Tek qana eshqandaı paıdalýnshylar belsendi emes áreketsiz mezgilderde server qaıta iske qosylady.",
"LabelAllowedRemoteAddresses": "Qashyqtaǵy IP-mekenjaı súzgisi:", "LabelAllowedRemoteAddresses": "Qashyqtaǵy IP-mekenjaı súzgisi:",
"LabelAllowedRemoteAddressesMode": "Qashyqtaǵy IP-mekenjaı súzgisiniń rejimi:", "LabelAllowedRemoteAddressesMode": "Qashyqtaǵy IP-mekenjaı súzgisiniń rejimi:",
"LabelAppName": "Qoldanba aty", "LabelAppName": "Qoldanba aty",
@ -554,7 +554,7 @@
"LabelBirthDate": "Týǵan kúni:", "LabelBirthDate": "Týǵan kúni:",
"LabelBirthYear": "Týǵan jyly:", "LabelBirthYear": "Týǵan jyly:",
"LabelBlastMessageInterval": "Belsendilikti tekserý habarlar aralyǵy, s", "LabelBlastMessageInterval": "Belsendilikti tekserý habarlar aralyǵy, s",
"LabelBlastMessageIntervalHelp": "Server belsendiligin tekserý habarlardyń ara uzaqtyǵyn sekýndtar arqyly anyqtaıdy.", "LabelBlastMessageIntervalHelp": "Belsendilikti tekserý habarlaryn jaýdyrý ara uzaqtyǵyn sekýndtar arqyly anyqtaıdy.",
"LabelBlockContentWithTags": "Myna tegteri bar mazmundy qursaýlaý:", "LabelBlockContentWithTags": "Myna tegteri bar mazmundy qursaýlaý:",
"LabelBurnSubtitles": "Sýbtıtrlerdi jazý:", "LabelBurnSubtitles": "Sýbtıtrlerdi jazý:",
"LabelCache": "Kesh:", "LabelCache": "Kesh:",
@ -575,7 +575,7 @@
"LabelCustomCertificatePath": "Teńsheýli SSL-kýálik joly:", "LabelCustomCertificatePath": "Teńsheýli SSL-kýálik joly:",
"LabelCustomCertificatePathHelp": "Teńsheletin domende TLS qoldaýyn qosý úshin sertıfıkaty jáne jeke kilti bar PKCS #12 faılyna jol.", "LabelCustomCertificatePathHelp": "Teńsheletin domende TLS qoldaýyn qosý úshin sertıfıkaty jáne jeke kilti bar PKCS #12 faılyna jol.",
"LabelCustomCss": "Teńsheýli CSS:", "LabelCustomCss": "Teńsheýli CSS:",
"LabelCustomCssHelp": "Ózińizdiń teńsheýli CSS-kodyn ýeb-tildesýde qoldanyńyz.", "LabelCustomCssHelp": "Ózińizdiń teńsheýli mánerleýdi ýeb-tildesýde qoldanyńyz.",
"LabelCustomDeviceDisplayName": "Beınelený aty:", "LabelCustomDeviceDisplayName": "Beınelený aty:",
"LabelCustomDeviceDisplayNameHelp": "Beınelenetin teńshelgen atyn usynyńyz nemese qurylǵy arqyly baıandalǵan atyn paıdalaný úshin bos qaldyryńyz.", "LabelCustomDeviceDisplayNameHelp": "Beınelenetin teńshelgen atyn usynyńyz nemese qurylǵy arqyly baıandalǵan atyn paıdalaný úshin bos qaldyryńyz.",
"LabelCustomRating": "Teńshelgen sanat:", "LabelCustomRating": "Teńshelgen sanat:",
@ -602,7 +602,7 @@
"LabelDisplayOrder": "Beıneleý reti:", "LabelDisplayOrder": "Beıneleý reti:",
"LabelDisplaySpecialsWithinSeasons": "Arnaıy bólimderdi efırde bolǵan maýsym ishinde beıneleý", "LabelDisplaySpecialsWithinSeasons": "Arnaıy bólimderdi efırde bolǵan maýsym ishinde beıneleý",
"LabelDownMixAudioScale": "Kemitilip mıksherlengende dybys ótemi:", "LabelDownMixAudioScale": "Kemitilip mıksherlengende dybys ótemi:",
"LabelDownMixAudioScaleHelp": "Dybysty kemitilip mıksherlengende ótemdeý. Bastapqy deńgeı mánin ózgertpeý úshin 1 sanyn ornatyńyz..", "LabelDownMixAudioScaleHelp": "Dybysty kemitilip mıksherlengende ótemdeý. 1 máni bastapqy deńgeıdi saqtaıdy.",
"LabelDownloadLanguages": "Júktep alynatyn tilder:", "LabelDownloadLanguages": "Júktep alynatyn tilder:",
"LabelDropImageHere": "Sýretti munda súıretińiz nemese sharlaý úshin nuqyńyz.", "LabelDropImageHere": "Sýretti munda súıretińiz nemese sharlaý úshin nuqyńyz.",
"LabelDropShadow": "Jıekter:", "LabelDropShadow": "Jıekter:",
@ -618,9 +618,9 @@
"LabelEnableDlnaDebugLogging": "DLNA kúıkeltirý jazbalaryn jurnalda qosý", "LabelEnableDlnaDebugLogging": "DLNA kúıkeltirý jazbalaryn jurnalda qosý",
"LabelEnableDlnaDebugLoggingHelp": "Óte aýqymdy jurnal faıldary jasalady jáne tek qana aqaýlyqtardy joıý úshin qajet bolǵan retinde paıdalanylady.", "LabelEnableDlnaDebugLoggingHelp": "Óte aýqymdy jurnal faıldary jasalady jáne tek qana aqaýlyqtardy joıý úshin qajet bolǵan retinde paıdalanylady.",
"LabelEnableDlnaPlayTo": "DLNA qurylǵysynda oınatýdy qosý", "LabelEnableDlnaPlayTo": "DLNA qurylǵysynda oınatýdy qosý",
"LabelEnableDlnaPlayToHelp": "Jellyfin jelidegi qurylǵylardy tabýy múmkin jáne bulardy qashyqtan basqarý qabiletin usynady.", "LabelEnableDlnaPlayToHelp": "Jelidegi qurylǵylardy tabady jáne bulardy qashyqtan basqarý qabiletin usynady.",
"LabelEnableDlnaServer": "DLNA-serverin qosý", "LabelEnableDlnaServer": "DLNA-serverin qosý",
"LabelEnableDlnaServerHelp": "Jelidegi UPnP qurylǵylarǵa Jellyfin mazmunyn sholý men oınatý úshin ruqsat etý.", "LabelEnableDlnaServerHelp": "Jelidegi UPnP qurylǵylarǵa mazmun sholý men oınatý úshin ruqsat etý.",
"LabelEnableHardwareDecodingFor": "Apparatyq kodtaýdy mynaǵan qosý:", "LabelEnableHardwareDecodingFor": "Apparatyq kodtaýdy mynaǵan qosý:",
"LabelEnableRealtimeMonitor": "Naqty ýaqyttaǵy baqylaýdy qosý", "LabelEnableRealtimeMonitor": "Naqty ýaqyttaǵy baqylaýdy qosý",
"LabelEnableRealtimeMonitorHelp": "Qoldaýdaǵy faıldyq júıelerinde faıldar ózgeristeri dereý óńdeledi.", "LabelEnableRealtimeMonitorHelp": "Qoldaýdaǵy faıldyq júıelerinde faıldar ózgeristeri dereý óńdeledi.",
@ -631,7 +631,7 @@
"LabelEvent": "Oqıǵa:", "LabelEvent": "Oqıǵa:",
"LabelEveryXMinutes": "Ár:", "LabelEveryXMinutes": "Ár:",
"LabelExtractChaptersDuringLibraryScan": "Sahna sýretterin tasyǵyshhanany skanerleý mezgilinde shyǵaryp alý", "LabelExtractChaptersDuringLibraryScan": "Sahna sýretterin tasyǵyshhanany skanerleý mezgilinde shyǵaryp alý",
"LabelExtractChaptersDuringLibraryScanHelp": "Qosylǵanda, sahna sýretteri tasyǵyshhanany skanerleý mezgilinde, beıneler sheten ákelingende, bólinip alynady. Ajyratylǵanda, bular sahna sýretterine josparlaǵan tapsyrmasy mezgilinde, turaqty tasyǵyshhanany skanerleýin jyldamyraq aıaqtalýy ushin ruqsat etip, bólinip alynady.", "LabelExtractChaptersDuringLibraryScanHelp": "Tasyǵyshhanany skanerleý kezinde beıneler shetten ákelingen jaǵdaıda, sahna sýretteri jasalady. Keri jaǵdaıda, bular sahna sýretterine josparlaǵan tapsyrmasy mezgilinde, turaqty tasyǵyshhanany skanerleýin jyldamyraq aıaqtalýy ushin ruqsat etip, bólinip alynady.",
"LabelFailed": "Sátsiz", "LabelFailed": "Sátsiz",
"LabelFileOrUrl": "Faıl nemese URL:", "LabelFileOrUrl": "Faıl nemese URL:",
"LabelFinish": "Aıaqtaý", "LabelFinish": "Aıaqtaý",
@ -639,16 +639,16 @@
"LabelForgotPasswordUsernameHelp": "Eske salsańyz, paıdalanýshy atyńyzdy engizińiz.", "LabelForgotPasswordUsernameHelp": "Eske salsańyz, paıdalanýshy atyńyzdy engizińiz.",
"LabelFormat": "Pishim:", "LabelFormat": "Pishim:",
"LabelFriendlyName": "Túsinikti ataý:", "LabelFriendlyName": "Túsinikti ataý:",
"LabelServerNameHelp": "Bul ataý osy serverdi anyqtaý úshin paıdalanylady. Eger óris bos qaldyrylsa, kompúter aty paıdalanylady.", "LabelServerNameHelp": "Bul ataý serverdi anyqtaý úshin paıdalanylady jáne serverdiń kompúter ataýyna ádepki bolady.",
"LabelGroupMoviesIntoCollections": "Jıyntyqtar ishindegi fılmderdi toptastyrý", "LabelGroupMoviesIntoCollections": "Jıyntyqtar ishindegi fılmderdi toptastyrý",
"LabelGroupMoviesIntoCollectionsHelp": "Fılm tizimderin beınelegen kezde jıyntyqqa kiretin fılmder toptalǵan biryńǵaı tarmaq bolyp kórsetiledi.", "LabelGroupMoviesIntoCollectionsHelp": "Fılm tizimderin beınelegen kezde jıyntyqqa kiretin fılmder toptalǵan biryńǵaı tarmaq bolyp kórsetiledi.",
"LabelH264Crf": "H264 kodtaý CRF máni:", "LabelH264Crf": "H264 kodtaý CRF máni:",
"LabelH264EncodingPreset": "H264 kodtaý daıyndamasy:", "LabelH264EncodingPreset": "H264 kodtaý daıyndamasy:",
"LabelHardwareAccelerationType": "Apparatyq jedeldetý:", "LabelHardwareAccelerationType": "Apparatyq jedeldetý:",
"LabelHardwareAccelerationTypeHelp": "Tek qana qoldaýdaǵyıelerde qoljetimdi.", "LabelHardwareAccelerationTypeHelp": "Bul tájirıbelik múmkindik tek qoldaý kórsetiletinıelerde qoljetimdi.",
"LabelHomeNetworkQuality": ılik jeli sapasy:", "LabelHomeNetworkQuality": ılik jeli sapasy:",
"LabelHomeScreenSectionValue": "Basqy bet {0}-bólim:", "LabelHomeScreenSectionValue": "Basqy bet {0}-bólim:",
"LabelHttpsPort": "Jergilikti https-port nómiri:", "LabelHttpsPort": "Jergilikti HTTPS-port nómiri:",
"LabelHttpsPortHelp": "Jellyfin HTTPS-serveri baılastyrylýǵa tıisti TCP-port nómiri.", "LabelHttpsPortHelp": "Jellyfin HTTPS-serveri baılastyrylýǵa tıisti TCP-port nómiri.",
"LabelIconMaxHeight": "Belgisheniń eń joǵary bıigi:", "LabelIconMaxHeight": "Belgisheniń eń joǵary bıigi:",
"LabelIconMaxHeightHelp": "upnp:icon arqyly kórsetetin belgisheleriniń eń joǵary ajyratylymdyǵy.", "LabelIconMaxHeightHelp": "upnp:icon arqyly kórsetetin belgisheleriniń eń joǵary ajyratylymdyǵy.",
@ -659,37 +659,37 @@
"LabelImageType": "Sýret túri:", "LabelImageType": "Sýret túri:",
"LabelImportOnlyFavoriteChannels": "Tańdaýly retinde belgilengen arnalarmen shekteý", "LabelImportOnlyFavoriteChannels": "Tańdaýly retinde belgilengen arnalarmen shekteý",
"LabelInNetworkSignInWithEasyPassword": "Ońaıtylǵan PIN-kod arqyly jeli ishinde ońaıtylyp kirýdi qosý", "LabelInNetworkSignInWithEasyPassword": "Ońaıtylǵan PIN-kod arqyly jeli ishinde ońaıtylyp kirýdi qosý",
"LabelInNetworkSignInWithEasyPasswordHelp": "Qosylǵanda, úı jelisi ishinen Jellyfin qoldanbalaryna kirý úshin ońaıtylǵan PIN-kodyńyzdy paıdalanýyńyz múmkin. Sizdiń qalypty parólińiz tek qana úı syrtynda qajet bolady. Eger PIN-kod bos qaldyrylsa, úılik jelisinde parólińiz qajet bolmaıdy.", "LabelInNetworkSignInWithEasyPasswordHelp": "Jergilikti jelidegi klıentterge kirý úshin ońaıtylǵan PIN-kodyn qoldanyńyz. Sizdiń qalypty parólińiz tek qana úı syrtynda qajet bolady. Eger PIN-kody bos bolsa, sizge úılik jelisinde paról qajet emes.",
"LabelInternetQuality": "Internettegi sapasy:", "LabelInternetQuality": "Internettegi sapasy:",
"LabelKeepUpTo": "Osyǵan deıin saqtap qalý:", "LabelKeepUpTo": "Osyǵan deıin saqtap qalý:",
"LabelKidsCategories": "Balalyq sanattary:", "LabelKidsCategories": "Balalyq sanattary:",
"LabelKodiMetadataDateFormat": "Shyǵarý kúniniń pishimi:", "LabelKodiMetadataDateFormat": "Shyǵarý kúniniń pishimi:",
"LabelKodiMetadataDateFormatHelp": "Osy pishimdi paıdalanyp nfo ishindegi barlyq kúnderi oqylady jáne jazylady.", "LabelKodiMetadataDateFormatHelp": "NFO-faıldaryndaǵy barlyq kúnder osy pishimniń kómegimen taldanady.",
"LabelKodiMetadataEnableExtraThumbs": "Ádepki extrafanart derekterin extrathumbs ishine kóshirý", "LabelKodiMetadataEnableExtraThumbs": "extrafanart derekterin extrathumbs órisine kóshirý",
"LabelKodiMetadataEnableExtraThumbsHelp": "Sýretterdi júktegen kezde, olar Kodi qabyǵymen eń joǵary sıysymdyǵy úshin extrafanart jáne extrathumbs ekeýinde saqtalady.", "LabelKodiMetadataEnableExtraThumbsHelp": "Sýretterdi júktegen kezde, olar Kodi qabyǵymen eń joǵary sıysymdyǵy úshin extrafanart jáne extrathumbs ekeýinde saqtalady.",
"LabelKodiMetadataEnablePathSubstitution": "Jol almastyrýdy qosý", "LabelKodiMetadataEnablePathSubstitution": "Jol almastyrýdy qosý",
"LabelKodiMetadataEnablePathSubstitutionHelp": "Serverdiń jol almastyrý teńsheýin paıdalanyp sýretterdiń jol almastyrýyn qosady.", "LabelKodiMetadataEnablePathSubstitutionHelp": "Serverdiń jol almastyrý teńsheýin paıdalanyp sýretterdiń jol almastyrýyn qosady.",
"LabelKodiMetadataSaveImagePaths": "Sýret joldaryn NFO-faıldarynda saqtaý", "LabelKodiMetadataSaveImagePaths": "Sýret joldaryn NFO-faıldarynda saqtaý",
"LabelKodiMetadataSaveImagePathsHelp": "Eger sýretterdiń Kodi nusqaýlyq ustanymdaryna saı kelmegen ataýlary bolsa, bul usynylady.", "LabelKodiMetadataSaveImagePathsHelp": "Eger sýretterdiń Kodi nusqaýlyq ustanymdaryna saı kelmegen ataýlary bolsa, bul usynylady.",
"LabelKodiMetadataUser": "NFO-faıldarda myna paıdalanýshynyń qaralǵan derekterin saqtaý:", "LabelKodiMetadataUser": "NFO-faıldarda myna paıdalanýshynyń qaralǵan derekterin saqtaý:",
"LabelKodiMetadataUserHelp": "Basqa qoldanbalarda paıdalaný úshin NFO-faıldarda qaralǵan derekterin saqtaýydy qosyńyz.", "LabelKodiMetadataUserHelp": "Qaralý derekterin basqa qoldanbalar úshin NFO-faıldarda saqtaý.",
"LabelLanNetworks": ıdegi jeliler:", "LabelLanNetworks": ıdegi jeliler:",
"LabelLanguage": "Til:", "LabelLanguage": "Til:",
"LabelLineup": "Tizbek:", "LabelLineup": "Tizbek:",
"LabelLocalHttpServerPortNumber": "Jergilikti http-port nómiri:", "LabelLocalHttpServerPortNumber": "Jergilikti HTTP-port nómiri:",
"LabelLocalHttpServerPortNumberHelp": "Jellyfin HTTP-serveri baılastyrylýǵa tıisti TCP-port nómiri.", "LabelLocalHttpServerPortNumberHelp": "Jellyfin HTTP-serveri baılastyrylýǵa tıisti TCP-port nómiri.",
"LabelLockItemToPreventChanges": "Osy tarmaqty keleshek ózgertýlerden qursaýlaý", "LabelLockItemToPreventChanges": "Osy tarmaqty keleshek ózgertýlerden qursaýlaý",
"LabelLoginDisclaimer": "Kirgendegi eskertý:", "LabelLoginDisclaimer": "Kirgendegi eskertý:",
"LabelLoginDisclaimerHelp": "Bul kirý betiniń tómeninde beınelenedi.", "LabelLoginDisclaimerHelp": "Kirý beti tómengi jaǵynda beınelenetin habar.",
"LabelLogs": "Jurnaldar:", "LabelLogs": "Jurnaldar:",
"LabelManufacturer": "Óndirýshi", "LabelManufacturer": "Óndirýshi",
"LabelManufacturerUrl": "Óndirýshi url", "LabelManufacturerUrl": "Óndirýshi URL mekenjaıy",
"LabelMatchType": "Sáıkes túri:", "LabelMatchType": "Sáıkes túri:",
"LabelMaxBackdropsPerItem": "Tarmaq boıynsha artqy sýretterdiń eń kóp sany:", "LabelMaxBackdropsPerItem": "Tarmaq boıynsha artqy sýretterdiń eń kóp sany:",
"LabelMaxChromecastBitrate": "Chromecast tasymaldaný sapasy:", "LabelMaxChromecastBitrate": "Chromecast tasymaldaný sapasy:",
"LabelMaxParentalRating": "Eń joǵary uıǵaryndy jastas sanaty:", "LabelMaxParentalRating": "Eń joǵary uıǵaryndy jastas sanaty:",
"LabelMaxResumePercentage": "Jalǵastyrý úshin eń kóp paıyzy:", "LabelMaxResumePercentage": "Jalǵastyrý úshin eń kóp paıyzy:",
"LabelMaxResumePercentageHelp": "Bul kezden keıin toqtatylsa týyndylar tolyq oınatylǵan dep boljaldy", "LabelMaxResumePercentageHelp": "Bul kezden keıin toqtatylsa týyndylar tolyq oınatylǵan dep boljaldy.",
"LabelMaxScreenshotsPerItem": "Tarmaq boıynsha eń kóp skrınshot sany:", "LabelMaxScreenshotsPerItem": "Tarmaq boıynsha eń kóp skrınshot sany:",
"LabelMaxStreamingBitrate": "Eń joǵary tasymaldaný sapasy:", "LabelMaxStreamingBitrate": "Eń joǵary tasymaldaný sapasy:",
"LabelMaxStreamingBitrateHelp": "Tasymaldaný kezinde eń joǵary qarqyndy anyqtańyz.", "LabelMaxStreamingBitrateHelp": "Tasymaldaný kezinde eń joǵary qarqyndy anyqtańyz.",
@ -707,18 +707,18 @@
"LabelMethod": "Ádis:", "LabelMethod": "Ádis:",
"LabelMinBackdropDownloadWidth": "Artqy sýrettiń júktep alynatyn eń az eni:", "LabelMinBackdropDownloadWidth": "Artqy sýrettiń júktep alynatyn eń az eni:",
"LabelMinResumeDuration": "Jalǵastyrý úshin eń az uzaqtyǵy:", "LabelMinResumeDuration": "Jalǵastyrý úshin eń az uzaqtyǵy:",
"LabelMinResumeDurationHelp": "Oınatý orny saqtalatyn jáne jalǵastyrýǵa múmkindik beretin sekýndtar arqyly eń qysqa beıne uzyndyǵy", "LabelMinResumeDurationHelp": "Oınatý orny saqtalatyn jáne jalǵastyrýǵa múmkindik beretin sekýndtar arqyly eń qysqa beıne uzyndyǵy.",
"LabelMinResumePercentage": "Jalǵastyrý úshin eń az paıyzy:", "LabelMinResumePercentage": "Jalǵastyrý úshin eń az paıyzy:",
"LabelMinResumePercentageHelp": "Bul kezden buryn toqtatylsa týyndylar oınatylmaǵan dep boljaldy", "LabelMinResumePercentageHelp": "Bul kezden buryn toqtatylsa týyndylar oınatylmaǵan dep boljaldy.",
"LabelMinScreenshotDownloadWidth": "Júktep alý úshin eń az skrınshot eni:", "LabelMinScreenshotDownloadWidth": "Júktep alý úshin eń az skrınshot eni:",
"LabelModelDescription": "Model sıpattamasy", "LabelModelDescription": "Model sıpattamasy",
"LabelModelName": "Model aty", "LabelModelName": "Model aty",
"LabelModelNumber": "Model nómiri", "LabelModelNumber": "Model nómiri",
"LabelModelUrl": "Model url", "LabelModelUrl": "Model URL mekenjaıy",
"LabelMonitorUsers": "Mynanyń áreketterin baqylaý:", "LabelMonitorUsers": "Mynanyń áreketterin baqylaý:",
"LabelMovieCategories": "Fılmdik sanattar:", "LabelMovieCategories": "Fılmdik sanattar:",
"LabelMoviePrefix": "Fılm prefıksi:", "LabelMoviePrefix": "Fılm prefıksi:",
"LabelMoviePrefixHelp": "Eger fılmderdiń ataýynda prefıks qoldanylsa, Jellyfin durys óńdeı alý úshin buny munda engizińiz.", "LabelMoviePrefixHelp": "Eger fılmderdiń ataýynda prefıks qoldanylsa, server durys óńdeı alý úshin buny munda engizińiz.",
"LabelMovieRecordingPath": "Fılm jazbalardyń joly (mindetti emes):", "LabelMovieRecordingPath": "Fılm jazbalardyń joly (mindetti emes):",
"LabelMusicStreamingTranscodingBitrate": "Mýzykany qaıta kodtaý qarqyny:", "LabelMusicStreamingTranscodingBitrate": "Mýzykany qaıta kodtaý qarqyny:",
"LabelMusicStreamingTranscodingBitrateHelp": "Mýzyka tasymaldaný kezinde eń joǵary qarqyndy anyqtańyz", "LabelMusicStreamingTranscodingBitrateHelp": "Mýzyka tasymaldaný kezinde eń joǵary qarqyndy anyqtańyz",
@ -764,10 +764,10 @@
"LabelProtocol": "Protokol:", "LabelProtocol": "Protokol:",
"LabelProtocolInfo": "Protoqol týraly:", "LabelProtocolInfo": "Protoqol týraly:",
"LabelProtocolInfoHelp": "Bul mán qurylǵynyń GetProtocolInfo suranystaryna jaýap bergende paıdalanylady.", "LabelProtocolInfoHelp": "Bul mán qurylǵynyń GetProtocolInfo suranystaryna jaýap bergende paıdalanylady.",
"LabelPublicHttpPort": "Jarıa http-port nómiri:", "LabelPublicHttpPort": "Jarıa HTTP-port nómiri:",
"LabelPublicHttpPortHelp": "Jergilikti http-portyna salystyrylýy tıis jarıa port nómiri.", "LabelPublicHttpPortHelp": "Jergilikti HTTP-portyna salystyrylýy tıis jarıa port nómiri.",
"LabelPublicHttpsPort": "Jarıa https-port nómiri:", "LabelPublicHttpsPort": "Jarıa HTTPS-port nómiri:",
"LabelPublicHttpsPortHelp": "Jergilikti https-portyna salystyrylýy tıis jarıa port nómiri.", "LabelPublicHttpsPortHelp": "Jergilikti HTTPS-portyna salystyrylýy tıis jarıa port nómiri.",
"LabelReadHowYouCanContribute": "Qalaı úles qosý týraly bilý.", "LabelReadHowYouCanContribute": "Qalaı úles qosý týraly bilý.",
"LabelReasonForTranscoding": "Qaıta kodtaý sebebi:", "LabelReasonForTranscoding": "Qaıta kodtaý sebebi:",
"LabelRecord": "Jazý:", "LabelRecord": "Jazý:",
@ -792,7 +792,7 @@
"LabelSerialNumber": "Serıalyq nómiri", "LabelSerialNumber": "Serıalyq nómiri",
"LabelSeriesRecordingPath": "Telehıkaıa jazbalardyń joly (mindetti emes):", "LabelSeriesRecordingPath": "Telehıkaıa jazbalardyń joly (mindetti emes):",
"LabelServerHost": "Host:", "LabelServerHost": "Host:",
"LabelServerHostHelp": "192.168.1.100 nemese https://myserver.com", "LabelServerHostHelp": "192.168.1.100:8096 nemese https://myserver.com",
"LabelServerPort": "Port:", "LabelServerPort": "Port:",
"LabelSimultaneousConnectionLimit": "Bir mezgildegi aǵyndardyń shegi:", "LabelSimultaneousConnectionLimit": "Bir mezgildegi aǵyndardyń shegi:",
"LabelSkin": "Muqaba:", "LabelSkin": "Muqaba:",
@ -833,7 +833,7 @@
"LabelTrackNumber": "Jolshyq nómiri:", "LabelTrackNumber": "Jolshyq nómiri:",
"LabelTranscodingAudioCodec": "Dybystyq kodek:", "LabelTranscodingAudioCodec": "Dybystyq kodek:",
"LabelTranscodingContainer": "Konteıner:", "LabelTranscodingContainer": "Konteıner:",
"LabelTranscodingTempPathHelp": "Bul qalta quramynda qaıta kodtaý quraly paıdalanatyn jumys faıldary bar. Teńshelgen joldy anyqtańyz, nemese serverdiń derekter qaltasy ishindegi ádepkisin paıdalaný úshin bos qaldyryńyz.", "LabelTranscodingTempPathHelp": "Klıentterge qyzmet etetin qaıta kodtaý faıldar úshin teńshelgen jolyn kórsetińiz. Server ádepkisin paıdalaný úshin bos qaldyryńyz.",
"LabelTranscodingThreadCount": "Qaıta qodtaý tizbekterdiń sany:", "LabelTranscodingThreadCount": "Qaıta qodtaý tizbekterdiń sany:",
"LabelTranscodingThreadCountHelp": "Qaıta kodtaý kezinde paıdalanatyn eń kóp tizbek sanyn tańdańyz. Tizbek sanyn azaıtý OP paıdalanýyn tómendetedi, biraq jatyq oınatý áseri úshin tez túrlendirýge jetkilikti bolmaýy múmkin.", "LabelTranscodingThreadCountHelp": "Qaıta kodtaý kezinde paıdalanatyn eń kóp tizbek sanyn tańdańyz. Tizbek sanyn azaıtý OP paıdalanýyn tómendetedi, biraq jatyq oınatý áseri úshin tez túrlendirýge jetkilikti bolmaýy múmkin.",
"LabelTranscodingVideoCodec": "Beınelik kodek:", "LabelTranscodingVideoCodec": "Beınelik kodek:",
@ -852,7 +852,7 @@
"LabelUserAgent": "Paıdalanýshy agenti:", "LabelUserAgent": "Paıdalanýshy agenti:",
"LabelUserLibrary": "Paıdalanýshy tasyǵyshhanasy:", "LabelUserLibrary": "Paıdalanýshy tasyǵyshhanasy:",
"LabelUserLibraryHelp": "Qurylǵyda qaı paıdalanýshy tasyǵyshhanasyn beıneleýin bólekteńiz. Ádepki parametr murasyna ıelený úshin bos qaldyryńyz.", "LabelUserLibraryHelp": "Qurylǵyda qaı paıdalanýshy tasyǵyshhanasyn beıneleýin bólekteńiz. Ádepki parametr murasyna ıelený úshin bos qaldyryńyz.",
"LabelUserRemoteClientBitrateLimitHelp": "Bul serverdi oınatý parametrlerinde ornatylǵan ádepki ǵalamdyq mándi qaıta anyqtaıdy.", "LabelUserRemoteClientBitrateLimitHelp": "Serverdiń oınatý parametrlerinde ornatylǵan ádepki ǵalamdyq mándi qaıta anyqtaıdy.",
"LabelUsername": "Paıdalanýshy aty:", "LabelUsername": "Paıdalanýshy aty:",
"LabelVaapiDevice": "VA-API qurylǵysy:", "LabelVaapiDevice": "VA-API qurylǵysy:",
"LabelVaapiDeviceHelp": "Bul apparattyq jedeldetý úshin qoldanylatyn kórsetý túıini bolyp tabylady.", "LabelVaapiDeviceHelp": "Bul apparattyq jedeldetý úshin qoldanylatyn kórsetý túıini bolyp tabylady.",
@ -861,9 +861,9 @@
"LabelVersionInstalled": "{0} ornatylǵan", "LabelVersionInstalled": "{0} ornatylǵan",
"LabelVersionNumber": "Nýsqasy: {0}", "LabelVersionNumber": "Nýsqasy: {0}",
"LabelVideo": "Beıne:", "LabelVideo": "Beıne:",
"LabelXDlnaCap": "X-Dlna sıpattary:", "LabelXDlnaCap": "X-DLNA sıpattary:",
"LabelXDlnaCapHelp": "urn:schemas-dlna-org:device-1-0 ataýlar keńistigindegi X_DLNACAP elementi mazmunyn anyqtaıdy.", "LabelXDlnaCapHelp": "urn:schemas-dlna-org:device-1-0 ataýlar keńistigindegi X_DLNACAP elementi mazmunyn anyqtaıdy.",
"LabelXDlnaDoc": "X-Dlna tásimi:", "LabelXDlnaDoc": "X-DLNA tásimi:",
"LabelXDlnaDocHelp": "urn:schemas-dlna-org:device-1-0 ataýlar keńistigindegi X_DLNADOC elementi mazmunyn anyqtaıdy.", "LabelXDlnaDocHelp": "urn:schemas-dlna-org:device-1-0 ataýlar keńistigindegi X_DLNADOC elementi mazmunyn anyqtaıdy.",
"LabelYear": "Jyl:", "LabelYear": "Jyl:",
"LabelYourFirstName": "Atyńyz:", "LabelYourFirstName": "Atyńyz:",
@ -875,7 +875,7 @@
"Large": "Iri", "Large": "Iri",
"LatestFromLibrary": "Eń keıingi {0}", "LatestFromLibrary": "Eń keıingi {0}",
"LearnHowYouCanContribute": "Qalaı úles qosýynyńyz múmkin týraly úırenińiz.", "LearnHowYouCanContribute": "Qalaı úles qosýynyńyz múmkin týraly úırenińiz.",
"LibraryAccessHelp": "Bul paıdalanýshymen ortaqtasý úshin tasyǵysh qaltalardy bólekteńiz. Metaderek retteýshini paıdalanyp ákimshiler barlyq qaltalardy óńdeýi múmkin.", "LibraryAccessHelp": "Bul paıdalanýshymen ortaqtasý úshin tasyǵyshhanalardy bólekteńiz. Metaderek retteýshini paıdalanyp ákimshiler barlyq qaltalardy óńdeýi múmkin.",
"Like": "Unaıdy", "Like": "Unaıdy",
"LinksValue": "Siltemeler: {0}", "LinksValue": "Siltemeler: {0}",
"List": "Tizim", "List": "Tizim",
@ -935,14 +935,14 @@
"MessageDeleteTaskTrigger": "Shynymen osy tapsyrma trıggerin joıý qajet pe?", "MessageDeleteTaskTrigger": "Shynymen osy tapsyrma trıggerin joıý qajet pe?",
"MessageDirectoryPickerBSDInstruction": "BSD ortasynda, Jellyfin qol jetkizý maqsatynda, sizdiń FreeNAS Jail ishindegi jınaqtaýyshty teńsheý qajet bolýy múmkin.", "MessageDirectoryPickerBSDInstruction": "BSD ortasynda, Jellyfin qol jetkizý maqsatynda, sizdiń FreeNAS Jail ishindegi jınaqtaýyshty teńsheý qajet bolýy múmkin.",
"MessageDirectoryPickerInstruction": "Jeli túımeshigi basylǵanda qurylǵylaryńyz orny tabylmasa, jelilik joldar qolmen engizilýi múmkin. Mysaly, {0} nemese {1}.", "MessageDirectoryPickerInstruction": "Jeli túımeshigi basylǵanda qurylǵylaryńyz orny tabylmasa, jelilik joldar qolmen engizilýi múmkin. Mysaly, {0} nemese {1}.",
"MessageDirectoryPickerLinuxInstruction": "Arch Linux, CentOS, Debian, Fedora, OpenSuse nemese Ubuntu júıelerindegi Linux úshin, Jellyfin júıelik paıdalanýshyǵa kem degende saqtaý jerlerińizge oqýǵa qatynas úshin ruqsat etýge tıissiz.", "MessageDirectoryPickerLinuxInstruction": "Arch Linux, CentOS, Debian, Fedora, OpenSuse nemese Ubuntu júıelerindegi Linux úshin, Jqyzmet kórsetý paıdalanýshyǵa kem degende saqtaý jerlerińizge oqýǵa qatynas úshin ruqsat etýge tıissiz.",
"MessageDownloadQueued": "Júktep alý kezekte.", "MessageDownloadQueued": "Júktep alý kezekte.",
"MessageEnablingOptionLongerScans": "Osy opsıa qoıylsa, tasyǵyshhana skanerleýleri edáýir uzyn bolýy múmkin.", "MessageEnablingOptionLongerScans": "Osy opsıa qoıylsa, tasyǵyshhana skanerleýleri edáýir uzyn bolýy múmkin.",
"MessageFileReadError": "Faıl oqý kezinde qate oryn aldy. Áreketti keıin qaıtalańyz.", "MessageFileReadError": "Faıl oqý kezinde qate oryn aldy. Áreketti keıin qaıtalańyz.",
"MessageForgotPasswordFileCreated": "Kelesi faıl serverińizde jasaldy jáne qalaı kirisý týraly nusqaýlar ishinde bar:", "MessageForgotPasswordFileCreated": "Kelesi faıl serverińizde jasaldy jáne qalaı kirisý týraly nusqaýlar ishinde bar:",
"MessageForgotPasswordInNetworkRequired": "Paróldi ysyrý prosesi úshin áreketti úılik jelińizdiń ishinde qaıtalańyz.", "MessageForgotPasswordInNetworkRequired": "Paróldi ysyrý prosesi úshin áreketti úılik jelińizdiń ishinde qaıtalańyz.",
"MessageInstallPluginFromApp": "Bul plagın qandaı qoldanbaǵa taǵaıyndalsa, sonyń ishinen ornatylýy tıisti.", "MessageInstallPluginFromApp": "Bul plagın qandaı qoldanbaǵa taǵaıyndalsa, sonyń ishinen ornatylýy tıisti.",
"MessageInvalidForgotPasswordPin": "Jaramsyz nemese merzimi aıaqtalǵan PIN engizildi. Áreketti qaıtalańyz.", "MessageInvalidForgotPasswordPin": "Jaramsyz nemese merzimi aıaqtalǵan PIN-kod engizildi. Áreketti qaıtalańyz.",
"MessageInvalidUser": "Jaramsyz paıdalanýshy aty nemese paról. Áreketti qaıtalańyz.", "MessageInvalidUser": "Jaramsyz paıdalanýshy aty nemese paról. Áreketti qaıtalańyz.",
"MessageItemSaved": "Tarmaq saqtaldy.", "MessageItemSaved": "Tarmaq saqtaldy.",
"MessageItemsAdded": "Tarmaqtar ústelgen.", "MessageItemsAdded": "Tarmaqtar ústelgen.",
@ -954,8 +954,8 @@
"MessageNoPluginsInstalled": "Ornatylǵan plagınder joq.", "MessageNoPluginsInstalled": "Ornatylǵan plagınder joq.",
"MessageNoTrailersFound": "Treılerler tabylmady. Internet-treılerler tasyǵyshhanasyn ústep fılm áserin jaqsartý úshin Treıler arnasyn ornatyńyz.", "MessageNoTrailersFound": "Treılerler tabylmady. Internet-treılerler tasyǵyshhanasyn ústep fılm áserin jaqsartý úshin Treıler arnasyn ornatyńyz.",
"MessageNothingHere": "Osynda eshteme joq.", "MessageNothingHere": "Osynda eshteme joq.",
"MessagePasswordResetForUsers": "Kelesi paıdalanýshylar ózderiniń parólderin ysyrddy. Endi ysyrýdyi oryndaý úshin paıdalanylǵan PIN kodtarymem kire alady.", "MessagePasswordResetForUsers": "Kelesi paıdalanýshylar ózderiniń parólderin ysyrddy. Endi ysyrýdyi oryndaý úshin paıdalanylǵan PIN-kodtarymem kire alady.",
"MessagePlayAccessRestricted": "Osy mazmundyń oınatýy aǵymda shektelgen. Qosymsha aqparat alý úshin Jellyfin Server ákimshisine baılanysyńyz.", "MessagePlayAccessRestricted": "Osy mazmundyń oınatýy aǵymda shektelgen. Qosymsha aqparat alý úshin server ákimshisine baılanysyńyz.",
"MessagePleaseEnsureInternetMetadata": "Internetten metaderekti júktep alýy qosylǵanyna kóz jetkizińiz.", "MessagePleaseEnsureInternetMetadata": "Internetten metaderekti júktep alýy qosylǵanyna kóz jetkizińiz.",
"MessagePleaseWait": "Kúte turyńyz. Bul mınót alýy múmkin.", "MessagePleaseWait": "Kúte turyńyz. Bul mınót alýy múmkin.",
"MessagePluginConfigurationRequiresLocalAccess": "Osy plagındi teńsheý úshin jergilikti serverińizge tikeleı kirińiz.", "MessagePluginConfigurationRequiresLocalAccess": "Osy plagındi teńsheý úshin jergilikti serverińizge tikeleı kirińiz.",
@ -963,7 +963,7 @@
"MessageReenableUser": "Qaıta qosý úshin tómende qarańyz", "MessageReenableUser": "Qaıta qosý úshin tómende qarańyz",
"MessageServerConfigurationUpdated": "Server konfıgýrasıasy jańartyldy", "MessageServerConfigurationUpdated": "Server konfıgýrasıasy jańartyldy",
"MessageSettingsSaved": "Parametrler saqtaldy.", "MessageSettingsSaved": "Parametrler saqtaldy.",
"MessageTheFollowingLocationWillBeRemovedFromLibrary": "Jellyfin tasyǵyshhanańyzdan kelesi tasyǵysh ornalasýlary alastalady:", "MessageTheFollowingLocationWillBeRemovedFromLibrary": "Tasyǵyshhanańyzdan kelesi tasyǵysh ornalasýlary alastalady:",
"MessageUnableToConnectToServer": "Tańdalǵan serverge qosylýymyz dál qazir múmkin emes. Bul iske qosylǵanyna kóz jetkizińiz jáne áreketti keıin qaıtalańyz.", "MessageUnableToConnectToServer": "Tańdalǵan serverge qosylýymyz dál qazir múmkin emes. Bul iske qosylǵanyna kóz jetkizińiz jáne áreketti keıin qaıtalańyz.",
"MessageUnsetContentHelp": "Mazmun kádimgi qaltalar retinde beınelenedi. Eń jaqsy nátıjeler alý úshin, ishki qaltalardyń mazmún túrlerin ornatyp Metaderek retteýshini paıdalanyńyz.", "MessageUnsetContentHelp": "Mazmun kádimgi qaltalar retinde beınelenedi. Eń jaqsy nátıjeler alý úshin, ishki qaltalardyń mazmún túrlerin ornatyp Metaderek retteýshini paıdalanyńyz.",
"MessageYouHaveVersionInstalled": "Aǵymda {0} nusqasy ornatylǵan.", "MessageYouHaveVersionInstalled": "Aǵymda {0} nusqasy ornatylǵan.",
@ -972,10 +972,10 @@
"MetadataSettingChangeHelp": "Metaderekter parametrlerin ózgertý bolashaqtaǵy ústelgen jańa mazmunǵa áser etedi. Bar mazmundy jańartý úshin, tolyq málimetter ekranyn ashyńyz da jańartý túımeshigin basyńyz, nemese metaderekter retteýishini paıdalanyp qorymymen jańartýdy oryndańyz.", "MetadataSettingChangeHelp": "Metaderekter parametrlerin ózgertý bolashaqtaǵy ústelgen jańa mazmunǵa áser etedi. Bar mazmundy jańartý úshin, tolyq málimetter ekranyn ashyńyz da jańartý túımeshigin basyńyz, nemese metaderekter retteýishini paıdalanyp qorymymen jańartýdy oryndańyz.",
"MinutesAfter": "mınýt sońyńda", "MinutesAfter": "mınýt sońyńda",
"MinutesBefore": "mınýt aldynda", "MinutesBefore": "mınýt aldynda",
"Mobile": "Uıaly / Planshettik", "Mobile": "Utqyr",
"Monday": "dúısenbi", "Monday": "dúısenbi",
"MoreFromValue": "{0} arqyly kóbirek", "MoreFromValue": "{0} arqyly kóbirek",
"MoreUsersCanBeAddedLater": "Kóbirek paıdalanýshylardy keıin Taqta arqyly ústeýińiz múmkin.", "MoreUsersCanBeAddedLater": "Kóbirek paıdalanýshylardy keıin Taqta ishinde ústeýińiz múmkin.",
"MoveLeft": "Solǵa jyljytý", "MoveLeft": "Solǵa jyljytý",
"MoveRight": "Ońǵa jyljytý", "MoveRight": "Ońǵa jyljytý",
"MovieLibraryHelp": "{0}Fılminiń atyn ózgertý Jellyfin-nusqaýlyǵyn{1} sholý.", "MovieLibraryHelp": "{0}Fılminiń atyn ózgertý Jellyfin-nusqaýlyǵyn{1} sholý.",
@ -1006,7 +1006,7 @@
"OneChannel": "Bir arnadan", "OneChannel": "Bir arnadan",
"OnlyForcedSubtitles": "Tek qana májbúrli sýbtıtrler", "OnlyForcedSubtitles": "Tek qana májbúrli sýbtıtrler",
"OnlyForcedSubtitlesHelp": "Tek qana májbúrli dep belgilengen sýbtıtrler júkteledi.", "OnlyForcedSubtitlesHelp": "Tek qana májbúrli dep belgilengen sýbtıtrler júkteledi.",
"OnlyImageFormats": "Tek keskin pishimderi (VOBSUB, PGS, SUB/IDX jáne t.b. )", "OnlyImageFormats": "Tek keskin pishimder (VOBSUB, PGS, SUB j.t.b.)",
"Open": "Ashý", "Open": "Ashý",
"OptionActor": "Aktór", "OptionActor": "Aktór",
"OptionActors": "Aktórler", "OptionActors": "Aktórler",
@ -1057,7 +1057,7 @@
"OptionDisableUserHelp": "Eger tyıym salynsa, server bul paıdalanýshydan eshqandaı baılanystarǵa ruqsat etpeıdi. Bar qosylymdar kenet úziledi.", "OptionDisableUserHelp": "Eger tyıym salynsa, server bul paıdalanýshydan eshqandaı baılanystarǵa ruqsat etpeıdi. Bar qosylymdar kenet úziledi.",
"OptionDislikes": "Unatpaýlar", "OptionDislikes": "Unatpaýlar",
"OptionDisplayFolderView": "Kádimgi tasyǵysh qaltalaryn kórsetý úshin Qalta aspektin beıneleý", "OptionDisplayFolderView": "Kádimgi tasyǵysh qaltalaryn kórsetý úshin Qalta aspektin beıneleý",
"OptionDisplayFolderViewHelp": "Qosylǵanda, Jellyfin-qoldanbalarda Qaltalar sanaty tasyǵyshhanańyz janynda beınelenedi. Eger kádimgi qalta kórinisterin unatsańyz, bul paıdaly bolady.", "OptionDisplayFolderViewHelp": "Basqa tasyǵyshhanalaryńyzben birge Qaltalar kórsetiledi. Bul qarapaıym qalta kórinisin alǵyńyz kelse paıdaly bolýy múmkin.",
"OptionDownloadArtImage": "Oıý sýret", "OptionDownloadArtImage": "Oıý sýret",
"OptionDownloadBackImage": "Artqy muqaba", "OptionDownloadBackImage": "Artqy muqaba",
"OptionDownloadBannerImage": "Baner", "OptionDownloadBannerImage": "Baner",
@ -1076,7 +1076,7 @@
"OptionEnableAccessToAllLibraries": "Barlyq tasyǵyshhanalarǵa qatynaýdy qosý", "OptionEnableAccessToAllLibraries": "Barlyq tasyǵyshhanalarǵa qatynaýdy qosý",
"OptionEnableAutomaticServerUpdates": "Serverdiń avtomatty jańartylýyn qosý", "OptionEnableAutomaticServerUpdates": "Serverdiń avtomatty jańartylýyn qosý",
"OptionEnableExternalContentInSuggestions": "Uynystarǵa syrtqy mazmundy qosý", "OptionEnableExternalContentInSuggestions": "Uynystarǵa syrtqy mazmundy qosý",
"OptionEnableExternalContentInSuggestionsHelp": "Internet-treılerler men efırlik TD kórsetimderge usynǵan mazmunǵa kirý úshin ruqsat etedi.", "OptionEnableExternalContentInSuggestionsHelp": "Internet-treılerler men efırlik kórsetimderge usynǵan mazmunǵa kirý úshin ruqsat etedi.",
"OptionEnableForAllTuners": "Barlyq túner qurylǵylary úshin qosý", "OptionEnableForAllTuners": "Barlyq túner qurylǵylary úshin qosý",
"OptionEnableM2tsMode": "M2ts rejimin qosý", "OptionEnableM2tsMode": "M2ts rejimin qosý",
"OptionEnableM2tsModeHelp": "Mpegts úshin kodtaý kezinde m2ts rejimin qosý.", "OptionEnableM2tsModeHelp": "Mpegts úshin kodtaý kezinde m2ts rejimin qosý.",
@ -1096,7 +1096,7 @@
"OptionHideUser": "Bul paıdalanýshyny kirý ekrandarynan jasyrý", "OptionHideUser": "Bul paıdalanýshyny kirý ekrandarynan jasyrý",
"OptionHideUserFromLoginHelp": "Jeke nemese jasyryn ákimshi tirkelgileri úshin paıdaly. Paıdalanýshy aty men paróldi engizý arqyly paıdalanýshyǵa qolmen kirý qajet bolady.", "OptionHideUserFromLoginHelp": "Jeke nemese jasyryn ákimshi tirkelgileri úshin paıdaly. Paıdalanýshy aty men paróldi engizý arqyly paıdalanýshyǵa qolmen kirý qajet bolady.",
"OptionHlsSegmentedSubtitles": "HLS bólshektelgen sýbtıtrler", "OptionHlsSegmentedSubtitles": "HLS bólshektelgen sýbtıtrler",
"OptionHomeVideos": "Úı beıneleri men fotosýretter", "OptionHomeVideos": "Fotosýretter",
"OptionIgnoreTranscodeByteRangeRequests": "Qaıta kodtaý baıt aýqymy suranystaryn elemeý", "OptionIgnoreTranscodeByteRangeRequests": "Qaıta kodtaý baıt aýqymy suranystaryn elemeý",
"OptionIgnoreTranscodeByteRangeRequestsHelp": "Qosylǵanda, osy suranystarmen sanasý bolady, biraq baıt aýqymynyń bas derektemesi elep eskerilmeıdi.", "OptionIgnoreTranscodeByteRangeRequestsHelp": "Qosylǵanda, osy suranystarmen sanasý bolady, biraq baıt aýqymynyń bas derektemesi elep eskerilmeıdi.",
"OptionImdbRating": "IMDb baǵalaýy", "OptionImdbRating": "IMDb baǵalaýy",
@ -1281,7 +1281,7 @@
"Studios": "Stýdıalar", "Studios": "Stýdıalar",
"Subscriptions": "Jazylymdar", "Subscriptions": "Jazylymdar",
"SubtitleAppearanceSettingsAlsoPassedToCastDevices": "Bul parametrler osy qurylǵy arqyly iske qosylǵan kezkelgen Chromecast oınatýyna qoldanylady.", "SubtitleAppearanceSettingsAlsoPassedToCastDevices": "Bul parametrler osy qurylǵy arqyly iske qosylǵan kezkelgen Chromecast oınatýyna qoldanylady.",
"SubtitleAppearanceSettingsDisclaimer": "Bul parametrler grafıkalyq sýbtıtrlerge (PGS, DVD j.t.b.) nemese óz máneri bar endirilgen sýbtıtrlerge (ASS/SSA) qoldanylmaıdy.", "SubtitleAppearanceSettingsDisclaimer": "Bul parametrler grafıkalyq sýbtıtrlerge (PGS, DVD j.t.b.) nemese óz máneri bar endirilgen ASS/SSA sýbtıtrlerine qoldanylmaıdy.",
"SubtitleDownloadersHelp": "Teńshelgen sýbtıtrler júkteýshilerin qosyńyz jáne basymdylyq reti boıynsha dáreje berińiz.", "SubtitleDownloadersHelp": "Teńshelgen sýbtıtrler júkteýshilerin qosyńyz jáne basymdylyq reti boıynsha dáreje berińiz.",
"Subtitles": "Sýbtıtrler", "Subtitles": "Sýbtıtrler",
"Suggestions": "Usynystar", "Suggestions": "Usynystar",
@ -1418,11 +1418,11 @@
"ChangingMetadataImageSettingsNewContent": "Metaderekterdi nemese sýretterdi júkteý parametrlerin ózgertýi tek tasyǵyshhanaǵa ústelgen jańa mazmunǵa qoldanylady. Ózgeristerdi qoldanystaǵy ataýlarǵa qoldaný úshin olardyń metaderekterin qolmen jańǵyrtý qajet.", "ChangingMetadataImageSettingsNewContent": "Metaderekterdi nemese sýretterdi júkteý parametrlerin ózgertýi tek tasyǵyshhanaǵa ústelgen jańa mazmunǵa qoldanylady. Ózgeristerdi qoldanystaǵy ataýlarǵa qoldaný úshin olardyń metaderekterin qolmen jańǵyrtý qajet.",
"HeaderAudioLanguages": "Dybys tilderi", "HeaderAudioLanguages": "Dybys tilderi",
"LabelDynamicExternalId": "{0} Id:", "LabelDynamicExternalId": "{0} Id:",
"LeaveBlankToNotSetAPassword": "Mindetti emes - bos qaldyrsańyz, paról paıdalanylmaıdy", "LeaveBlankToNotSetAPassword": "Paróldi ornatpaý úshin bul óristi bos qaldyrýǵa bolady.",
"MessageImageFileTypeAllowed": "Tek qana JPEG jáne PNG faıldary qoldaýda.", "MessageImageFileTypeAllowed": "Tek qana JPEG jáne PNG faıldary qoldaýda.",
"MessageImageTypeNotSelected": "Sýret túrin ashylmaly mázirden tandańyz.", "MessageImageTypeNotSelected": "Sýret túrin ashylmaly mázirden tandańyz.",
"OptionResElement": "res elementi", "OptionResElement": "res elementi",
"AuthProviderHelp": "Osy paıdalanýshynyń parólin rastaý úshin paıdalanylatyn túpnusqalyq rastama jetkizýshisin bólekteńiz", "AuthProviderHelp": "Osy paıdalanýshynyń parólin rastaý úshin paıdalanylatyn túpnusqalyq rastama jetkizýshisin bólekteńiz.",
"HeaderFavoriteMovies": "Tańdaýly fılmder", "HeaderFavoriteMovies": "Tańdaýly fılmder",
"HeaderFavoriteShows": "Tańdaýly kórsetimder", "HeaderFavoriteShows": "Tańdaýly kórsetimder",
"HeaderFavoriteEpisodes": "Tańdaýly bólimder", "HeaderFavoriteEpisodes": "Tańdaýly bólimder",
@ -1444,8 +1444,8 @@
"DashboardOperatingSystem": "Operasıalyq júıe: {0}", "DashboardOperatingSystem": "Operasıalyq júıe: {0}",
"DashboardArchitecture": "Arhıtektýrasy: {0}", "DashboardArchitecture": "Arhıtektýrasy: {0}",
"LabelWeb": "Ýeb: ", "LabelWeb": "Ýeb: ",
"LaunchWebAppOnStartup": "Jellyfin serveri iske qosylǵan kezde ýeb-sholǵyshta Jellyfin veb-qoldanbasyn iske qosý", "LaunchWebAppOnStartup": "Serverdi iske qosqan kezde ýeb-ınterfeısti iske qosý",
"LaunchWebAppOnStartupHelp": "Jellyfin serveri bastapqyda iske qosylǵan kezde, ol ýeb-qoldanbany ádepki ýeb-sholǵyshta ashady. Bul serverdi qaıta iske qosý fýnksıasyn qoldanǵanda oryn almaıdy.", "LaunchWebAppOnStartupHelp": "Server bastapqyda iske qosylǵan kezde, ýeb-klıent ádepki sholǵyshta ashylady. Bul serverdi qaıta iske qosý fýnksıasyn qoldanǵanda oryn almaıdy.",
"MediaInfoSoftware": "Baǵdarlamalyq jasaqtama", "MediaInfoSoftware": "Baǵdarlamalyq jasaqtama",
"MediaInfoStreamTypeAudio": "Dybys", "MediaInfoStreamTypeAudio": "Dybys",
"MediaInfoStreamTypeData": "Derekter", "MediaInfoStreamTypeData": "Derekter",
@ -1464,7 +1464,7 @@
"OptionIsSD": "SD", "OptionIsSD": "SD",
"OptionList": "Tizim", "OptionList": "Tizim",
"OptionLoginAttemptsBeforeLockout": "Qulyptalǵansha deıin qansha durys emes kirý áreketi jasalýy múmkin ekendigin anyqtaıdy.", "OptionLoginAttemptsBeforeLockout": "Qulyptalǵansha deıin qansha durys emes kirý áreketi jasalýy múmkin ekendigin anyqtaıdy.",
"OptionLoginAttemptsBeforeLockoutHelp": "0 ádepkini ıelenýdi bildiredi, 3 ákimshi emes úshin, jáne 5 ákimshi úshin, -1 qulyptaýdy óshiredi", "OptionLoginAttemptsBeforeLockoutHelp": "0 máni qarapaıym paıdalanýshylar úshin úsh jáne ákimshiler úshin bes árekettiń ádepki mánin bildiredi. Osyny -1 etip ornatý múmkindikti ajyratady.",
"OptionPoster": "Póster", "OptionPoster": "Póster",
"OptionPosterCard": "Poster-karta", "OptionPosterCard": "Poster-karta",
"OptionThumb": "Nobaı", "OptionThumb": "Nobaı",
@ -1472,5 +1472,26 @@
"PasswordResetProviderHelp": "Bul paıdalanýshy paróldi ysyrý saýalyn jibergen kezde paıdalanylatyn paróldi ysyrý jetkizýshisin tańdańyz", "PasswordResetProviderHelp": "Bul paıdalanýshy paróldi ysyrý saýalyn jibergen kezde paıdalanylatyn paróldi ysyrý jetkizýshisin tańdańyz",
"PlaybackData": "Oınatý derekteri", "PlaybackData": "Oınatý derekteri",
"SubtitleOffset": "Sýbtıtrler yǵysýy", "SubtitleOffset": "Sýbtıtrler yǵysýy",
"TabNetworking": "Jelilik jumys" "TabNetworking": "Jelilik jumys",
"HeaderFavoriteBooks": "Tańdaýly kitaptar",
"LabelBaseUrlHelp": "Serverge neǵurlym erekshe URL mekenjaıynan kirý úshin osynda jeke ishki katalogty qosýǵa bolady.",
"MoreMediaInfo": "Tasyǵyshderekter týraly",
"LabelVideoCodec": "Beınelik kodek:",
"LabelVideoBitrate": "Beıne qarqyny:",
"LabelTranscodingProgress": "Qaıta kodtaýdyń barysy:",
"LabelTranscodingFramerate": "Qaıta kodtaýdyń kadr jıiligi:",
"LabelSize": "Ólshemi:",
"LabelPleaseRestart": "Ózgerister ýeb-klıentti qolmen qaıta júktegennen keıin kúshine enedi.",
"LabelPlayMethod": "Oınatý tásli:",
"LabelPlayer": "Oınatqysh:",
"LabelFolder": "Qalta:",
"LabelBaseUrl": "Negizgi URL:",
"LabelBitrate": "Qarqyn:",
"LabelAudioSampleRate": "Dybystyq úlgi jıiligi:",
"LabelAudioCodec": "Dybystyq kodek:",
"LabelAudioChannels": "Dybys arnalary:",
"LabelAudioBitrate": "Dybys qarqyny:",
"LabelAudioBitDepth": "Dybystyń bıttik tereńdigi:",
"CopyStreamURLSuccess": "URL sátti kóshirildi.",
"CopyStreamURL": "Aǵyn URL mekenjaıyn kóshirý"
} }

File diff suppressed because it is too large Load diff

View file

@ -19,11 +19,11 @@
"AllEpisodes": "Все эпизоды", "AllEpisodes": "Все эпизоды",
"AllLanguages": "Все языки", "AllLanguages": "Все языки",
"AllLibraries": "Все медиатеки", "AllLibraries": "Все медиатеки",
"AllowHWTranscodingHelp": "При включении, тюнеру разрешается динамически перекодировать транслируемые потоки. Это может помочь уменьшить перекодировку, требуемую в Jellyfin Server.", "AllowHWTranscodingHelp": "Тюнеру разрешается динамически перекодировать транслируемые потоки. Это может помочь уменьшить перекодировку, требуемую сервером.",
"AllowMediaConversion": "Разрешить преобразование медиаданных", "AllowMediaConversion": "Разрешить преобразование медиаданных",
"AllowMediaConversionHelp": "Предоставить или запретить доступ к компоненте преобразования медиаданных.", "AllowMediaConversionHelp": "Предоставить или запретить доступ к компоненте преобразования медиаданных.",
"AllowOnTheFlySubtitleExtraction": "Разрешить динамическое извлечение субтитров", "AllowOnTheFlySubtitleExtraction": "Разрешить динамическое извлечение субтитров",
"AllowOnTheFlySubtitleExtractionHelp": "Внедрённые субтитры возможно извлекать из видео и доставлять Jellyfin-приложениям в виде обычного текста, в целях предотвращения перекодировки видео. На некоторых системах это может занять продолжительное время и вызывать задержки воспроизведения видео в процессе извлечения. Отключите это, для прошивки внедрённых субтитров во время перекодировки видео, при отсутствии встроенной поддержки их в клиентском устройстве.", "AllowOnTheFlySubtitleExtractionHelp": "Внедрённые субтитры возможно извлекать из видео и доставлять клиентам в виде обычного текста, в целях предотвращения перекодировки видео. На некоторых системах это может занять продолжительное время и вызывать задержки воспроизведения видео в процессе извлечения. Отключите это, для прошивки внедрённых субтитров во время перекодировки видео, при отсутствии встроенной поддержки их в клиентском устройстве.",
"AllowRemoteAccess": "Разрешение удалённого доступа к данному серверу Jellyfin Server.", "AllowRemoteAccess": "Разрешение удалённого доступа к данному серверу Jellyfin Server.",
"AllowRemoteAccessHelp": "Если флажок снят, то все удалённые подключения будут заблокированы.", "AllowRemoteAccessHelp": "Если флажок снят, то все удалённые подключения будут заблокированы.",
"AllowedRemoteAddressesHelp": "Список разделённых запятыми IP-адресов или записей IP/netmask для сетей, которым разрешено удалённое соединение. Если не заполнять, то будут использованы все внешние адреса.", "AllowedRemoteAddressesHelp": "Список разделённых запятыми IP-адресов или записей IP/netmask для сетей, которым разрешено удалённое соединение. Если не заполнять, то будут использованы все внешние адреса.",
@ -54,7 +54,7 @@
"BoxRear": "Спинка коробки", "BoxRear": "Спинка коробки",
"Browse": "Навигация", "Browse": "Навигация",
"BrowsePluginCatalogMessage": "Просмотрите каталог плагинов, чтобы ознакомиться с имеющимися плагинами.", "BrowsePluginCatalogMessage": "Просмотрите каталог плагинов, чтобы ознакомиться с имеющимися плагинами.",
"BurnSubtitlesHelp": "Определяется, должен ли сервер внедрять субтитры при преобразовании видео в зависимости от формата субтитров. Избегание внедрения субтитров улучшит производительность сервера. Выберите «Авто» для записи основанных на графике форматов (например, VOBSUB, PGS, SUB/IDX и т.п.), а также некоторых субтитров ASS/SSA", "BurnSubtitlesHelp": "Определяется, должен ли сервер внедрять субтитры при преобразовании видео в зависимости от формата субтитров. Избегание внедрения субтитров улучшит производительность сервера. Выберите «Авто» для записи основанных на графике форматов (VOBSUB, PGS, SUB/IDX и т.п.) и некоторых субтитров ASS/SSA.",
"ButtonAdd": "Добавить", "ButtonAdd": "Добавить",
"ButtonAddMediaLibrary": "Добавить медиатеку", "ButtonAddMediaLibrary": "Добавить медиатеку",
"ButtonAddScheduledTaskTrigger": "Добавить триггер", "ButtonAddScheduledTaskTrigger": "Добавить триггер",
@ -180,7 +180,7 @@
"DetectingDevices": "Обнаруживются устройства", "DetectingDevices": "Обнаруживются устройства",
"DeviceAccessHelp": "Это относится только к устройствам, которые могут быть однозначно распознаны и не препятствует доступу через браузер. Фильтрация доступа пользовательского устройства запретит использование новых устройств до тех пор, пока они не будут одобрены.", "DeviceAccessHelp": "Это относится только к устройствам, которые могут быть однозначно распознаны и не препятствует доступу через браузер. Фильтрация доступа пользовательского устройства запретит использование новых устройств до тех пор, пока они не будут одобрены.",
"DirectPlaying": "Воспроизводится напрямую", "DirectPlaying": "Воспроизводится напрямую",
"DirectStreamHelp1": "Медиаданные совместимы с устройством в отношении разрешения и типа медиаданных (H.264, AC3, и т.д.), но в несовместимом файловом контейнере (.mkv, .avi, .wmv и т.д.). Видео будет повторно упаковано динамически перед его трансляцией на устройство.", "DirectStreamHelp1": "Медиаданные совместимы с устройством в отношении разрешения и типа медиаданных (H.264, AC3, и т.д.), но в несовместимом файловом контейнере (mkv, avi, wmv и т.д.). Видео будет повторно упаковано динамически перед его трансляцией на устройство.",
"DirectStreamHelp2": "При прямой трансляции файла расходуется очень мало вычислительной мощности без потери качества видео.", "DirectStreamHelp2": "При прямой трансляции файла расходуется очень мало вычислительной мощности без потери качества видео.",
"DirectStreaming": "Транслируется напрямую", "DirectStreaming": "Транслируется напрямую",
"Director": "Режиссёр", "Director": "Режиссёр",
@ -194,7 +194,7 @@
"DisplayInMyMedia": "Показывать на главном экране", "DisplayInMyMedia": "Показывать на главном экране",
"DisplayInOtherHomeScreenSections": "Показывать в разделах главного экрана (нпр., новейшие медиаданные, продолжение просмотра и т.п.)", "DisplayInOtherHomeScreenSections": "Показывать в разделах главного экрана (нпр., новейшие медиаданные, продолжение просмотра и т.п.)",
"DisplayMissingEpisodesWithinSeasons": "Отображать отсутствующие эпизоды в пределах сезонов", "DisplayMissingEpisodesWithinSeasons": "Отображать отсутствующие эпизоды в пределах сезонов",
"DisplayMissingEpisodesWithinSeasonsHelp": "Это также должно быть включено для ТВ-медиатек при установке и настройке Jellyfin Server.", "DisplayMissingEpisodesWithinSeasonsHelp": "Это также должно быть включено для ТВ-медиатек в конфигурации сервера.",
"DisplayModeHelp": "Выберите тип экрана, где запущен Jellyfin.", "DisplayModeHelp": "Выберите тип экрана, где запущен Jellyfin.",
"DoNotRecord": "Не записывать", "DoNotRecord": "Не записывать",
"Down": "Вниз", "Down": "Вниз",
@ -202,29 +202,29 @@
"DownloadsValue": "Загрузки: {0}", "DownloadsValue": "Загрузки: {0}",
"DrmChannelsNotImported": "Каналы с DRM не будут импортироваться.", "DrmChannelsNotImported": "Каналы с DRM не будут импортироваться.",
"DropShadow": "Теневая", "DropShadow": "Теневая",
"EasyPasswordHelp": "Простой PIN-код используется для автономного доступа с поддерживаемых Jellyfin-приложений, и может также использоваться для удобного внутрисетевого входа.", "EasyPasswordHelp": "Простой PIN-код используется для автономного доступа на поддерживаемых клиентах и может также использоваться для удобного внутрисетевого входа.",
"Edit": "Правка", "Edit": "Правка",
"EditImages": "Править рисунки", "EditImages": "Править рисунки",
"EditMetadata": "Править метаданные", "EditMetadata": "Править метаданные",
"EditSubtitles": "Править субтитры", "EditSubtitles": "Править субтитры",
"EnableBackdrops": "Включить задники", "EnableBackdrops": "Задники",
"EnableBackdropsHelp": "При включении, задники будут отображаться фоном некоторых страниц при просмотре медиатеки.", "EnableBackdropsHelp": "Задники будут отображаются фоном на некоторых страницах при просмотре медиатеки.",
"EnableCinemaMode": "Включить режим кинозала", "EnableCinemaMode": "Режим кинозала",
"EnableColorCodedBackgrounds": "Включить цветовой фон", "EnableColorCodedBackgrounds": "Обозначеннные цветом фоны",
"EnableDisplayMirroring": "Включить дублирование отображения", "EnableDisplayMirroring": "Дублирование отображения",
"EnableExternalVideoPlayers": "Включить внешние проигрыватели видео", "EnableExternalVideoPlayers": "Внешние проигрыватели видео",
"EnableExternalVideoPlayersHelp": "Меню внешнего проигрывателя будет показано при запуске воспроизведения видео.", "EnableExternalVideoPlayersHelp": "Меню внешнего проигрывателя будет показано при запуске воспроизведения видео.",
"EnableHardwareEncoding": "Включить аппаратное кодирование", "EnableHardwareEncoding": "Включить аппаратное кодирование",
"EnableNextVideoInfoOverlay": "Включать во время воспроизведения сведения о последующем видео", "EnableNextVideoInfoOverlay": "Показывать сведения о следующем видео во время воспроизведения",
"EnableNextVideoInfoOverlayHelp": "В конце видео отображать информацию о последующем видео в текущем плей-листе.", "EnableNextVideoInfoOverlayHelp": "В конце видео отображать информацию о последующем видео в текущем плей-листе.",
"EnablePhotos": "Включить фотографии", "EnablePhotos": "Отображать фотографии",
"EnablePhotosHelp": "Фото будут обнаруживаться и отображаться наряду с другими медиафайлами.", "EnablePhotosHelp": "Рисунки будут обнаруживаться и отображаться наряду с другими медиафайлами.",
"EnableStreamLooping": "Автоциклирование трансляций", "EnableStreamLooping": "Автоциклирование трансляций",
"EnableStreamLoopingHelp": "Включайте, если трансляции содержат данные только на несколько секунд и необходимо непрерывно их запрашивать. Включение этого без необходимости может породить проблемы.", "EnableStreamLoopingHelp": "Включайте, если трансляции содержат данные только на несколько секунд и необходимо непрерывно их запрашивать. Включение этого без необходимости может породить проблемы.",
"EnableThemeSongs": "Включить тематические композиции", "EnableThemeSongs": "Тематические композиции",
"EnableThemeSongsHelp": "При включении, тематические композиции будут воспроизводиться фоном при просмотре медиатеки.", "EnableThemeSongsHelp": "Воспроизведение тематических композиций в фоновом режиме при навигации по медиатеке.",
"EnableThemeVideos": "Включить тематические видео", "EnableThemeVideos": "Тематические видео",
"EnableThemeVideosHelp": "При включении, тематические видео будут воспроизводиться фоном при просмотре медиатеки.", "EnableThemeVideosHelp": "Воспроизведение тематических видео в фоновом режиме при навигации по медиатеке.",
"Ended": "Прекращённое", "Ended": "Прекращённое",
"EndsAtValue": "Конец в {0}", "EndsAtValue": "Конец в {0}",
"Episodes": "Эпизоды", "Episodes": "Эпизоды",
@ -240,7 +240,7 @@
"EveryNDays": "Каждые {0} дней", "EveryNDays": "Каждые {0} дней",
"ExitFullscreen": "Выход с полного экрана", "ExitFullscreen": "Выход с полного экрана",
"ExtraLarge": "Очень крупный", "ExtraLarge": "Очень крупный",
"ExtractChapterImagesHelp": "Извлечение рисунков сцен предоставляет возможности Jellyfin-приложениям для отображения графических меню выбора сцены. Данный процесс может быть медленным, нагружает ЦП и может понадобиться несколько гигабайт пространства. Он работает при обнаружении видеофайлов, а также, как задача, назначенная на ночь. Расписание возможно перенастроить в области Назначенных задач. Не рекомендуется запускать данную задачу в часы пик.", "ExtractChapterImagesHelp": "Извлечение рисунков сцен предоставляет возможности клиентам для отображения графических меню выбора сцены. Данный процесс может быть медленным, потребляет ресурсы, и могут понадобиться несколько гигабайт пространства. Он работает при обнаружении видеофайлов, а также, как задача, назначенная на ночь. Расписание возможно перенастроить в области Назначенных задач. Не рекомендуется запускать данную задачу в часы пик.",
"Extras": "Допматериалы", "Extras": "Допматериалы",
"FFmpegSavePathNotFound": "Мы не смогли обнаружить FFmpeg по введённому вами пути. FFprobe также необходим и должен быть в той же самой папке. Эти компоненты обычно поставляются вместе в одном загрузочном пакете. Проверьте путь и повторите попытку.", "FFmpegSavePathNotFound": "Мы не смогли обнаружить FFmpeg по введённому вами пути. FFprobe также необходим и должен быть в той же самой папке. Эти компоненты обычно поставляются вместе в одном загрузочном пакете. Проверьте путь и повторите попытку.",
"FastForward": "Быстро вперёд", "FastForward": "Быстро вперёд",
@ -528,7 +528,7 @@
"LabelAll": "Все", "LabelAll": "Все",
"LabelAllowHWTranscoding": "Разрешить аппаратную перекодировку", "LabelAllowHWTranscoding": "Разрешить аппаратную перекодировку",
"LabelAllowServerAutoRestart": "Разрешить автоматический перезапуск сервера для применения обновлений", "LabelAllowServerAutoRestart": "Разрешить автоматический перезапуск сервера для применения обновлений",
"LabelAllowServerAutoRestartHelp": "Сервер будет перезапускаться только в периоды простоя, когда никакие пользователи не активны.", "LabelAllowServerAutoRestartHelp": "Сервер будет перезапускаться только в периоды простоя, когда нет активности пользователей.",
"LabelAllowedRemoteAddresses": "Фильтр внешних IP-адресов:", "LabelAllowedRemoteAddresses": "Фильтр внешних IP-адресов:",
"LabelAllowedRemoteAddressesMode": "Режим фильтра внешних IP-адресов:", "LabelAllowedRemoteAddressesMode": "Режим фильтра внешних IP-адресов:",
"LabelAppName": "Название приложения", "LabelAppName": "Название приложения",
@ -543,7 +543,7 @@
"LabelBirthDate": "Дата рождения:", "LabelBirthDate": "Дата рождения:",
"LabelBirthYear": "Год рождения:", "LabelBirthYear": "Год рождения:",
"LabelBlastMessageInterval": "Интервал сообщений проверки активности, с", "LabelBlastMessageInterval": "Интервал сообщений проверки активности, с",
"LabelBlastMessageIntervalHelp": "Определяет длительность в секундах между сообщениями проверки активности сервера.", "LabelBlastMessageIntervalHelp": "Определяет длительность в секундах между бомбардированием сообщениями проверки активности.",
"LabelBlockContentWithTags": "Блокирование элементов с тегами:", "LabelBlockContentWithTags": "Блокирование элементов с тегами:",
"LabelBurnSubtitles": "Внедрение субтитров:", "LabelBurnSubtitles": "Внедрение субтитров:",
"LabelCache": "Кэш:", "LabelCache": "Кэш:",
@ -562,7 +562,7 @@
"LabelCustomCertificatePath": "Путь к пользовательскому SSL-сертификату:", "LabelCustomCertificatePath": "Путь к пользовательскому SSL-сертификату:",
"LabelCustomCertificatePathHelp": "Путь к файлу PKCS #12, содержащему сертификат и \tзакрытый ключ для включения поддержки TLS на произвольном домене.", "LabelCustomCertificatePathHelp": "Путь к файлу PKCS #12, содержащему сертификат и \tзакрытый ключ для включения поддержки TLS на произвольном домене.",
"LabelCustomCss": "Настраиваемые CSS:", "LabelCustomCss": "Настраиваемые CSS:",
"LabelCustomCssHelp": "Применяйте свои собственные настраиваемые стили CSS к веб-интерфейсу.", "LabelCustomCssHelp": "Применяйте свою собственную настраиваемую стилизацию к веб-интерфейсу.",
"LabelCustomDeviceDisplayName": "Отображаемое название:", "LabelCustomDeviceDisplayName": "Отображаемое название:",
"LabelCustomDeviceDisplayNameHelp": "Приведите произвольное имя для отображения или не заполняйте, чтобы использовать имя, выданное устройством.", "LabelCustomDeviceDisplayNameHelp": "Приведите произвольное имя для отображения или не заполняйте, чтобы использовать имя, выданное устройством.",
"LabelCustomRating": "Произвольная возрастная категория:", "LabelCustomRating": "Произвольная возрастная категория:",
@ -587,7 +587,7 @@
"LabelDisplayOrder": "Порядок отображения:", "LabelDisplayOrder": "Порядок отображения:",
"LabelDisplaySpecialsWithinSeasons": "Отображать специальные эпизоды в пределах тех сезонов, когда они выходили в эфир", "LabelDisplaySpecialsWithinSeasons": "Отображать специальные эпизоды в пределах тех сезонов, когда они выходили в эфир",
"LabelDownMixAudioScale": "Коэффициент усиления при понижающем микшировании:", "LabelDownMixAudioScale": "Коэффициент усиления при понижающем микшировании:",
"LabelDownMixAudioScaleHelp": "Коэффициент компенсирующего усиления звука при понижающем до стерео микшировании. Задайте 1, чтобы не менять исходные значения уровня.", "LabelDownMixAudioScaleHelp": "Коэффициент компенсирующего усиления звука при понижающем до стерео микшировании. Значение 1 сохраняет исходный уровень.",
"LabelDownloadLanguages": "Загружаемые языки:", "LabelDownloadLanguages": "Загружаемые языки:",
"LabelDropImageHere": "Перетащите рисунок сюда или щёлкните для навигации.", "LabelDropImageHere": "Перетащите рисунок сюда или щёлкните для навигации.",
"LabelDropShadow": "Окантовка:", "LabelDropShadow": "Окантовка:",
@ -601,11 +601,11 @@
"LabelEnableDlnaClientDiscoveryInterval": "Интервал обнаружения клиентов", "LabelEnableDlnaClientDiscoveryInterval": "Интервал обнаружения клиентов",
"LabelEnableDlnaClientDiscoveryIntervalHelp": "Определяется длительность в секундах между SSDP-запросами от Jellyfin.", "LabelEnableDlnaClientDiscoveryIntervalHelp": "Определяется длительность в секундах между SSDP-запросами от Jellyfin.",
"LabelEnableDlnaDebugLogging": "Включить журналирование отладки DLNA", "LabelEnableDlnaDebugLogging": "Включить журналирование отладки DLNA",
"LabelEnableDlnaDebugLoggingHelp": "Это приведет к увеличению обьема файлов Журнала, рекомендуется использовать только для поиска неполадок.", "LabelEnableDlnaDebugLoggingHelp": "Создаются большие файлы Журнала, рекомендуется использовать только для поиска неполадок.",
"LabelEnableDlnaPlayTo": "Включить DLNA-функцию Воспроизвести На", "LabelEnableDlnaPlayTo": "Включить DLNA-функцию Воспроизвести На",
"LabelEnableDlnaPlayToHelp": "В Jellyfin имеется способность обнаруживать устройства внутри своей сети, а также предоставляется возможность удалённо управлять ими.", "LabelEnableDlnaPlayToHelp": "Обнаруживаются устройства внутри своей сети, а также предоставляется возможность удалённо управлять ими.",
"LabelEnableDlnaServer": "Включить DLNA-сервер", "LabelEnableDlnaServer": "Включить DLNA-сервер",
"LabelEnableDlnaServerHelp": "UPnP-устройствам в домашней сети предоставляются возможности для навигации по содержанию Jellyfin и его воспроизведения.", "LabelEnableDlnaServerHelp": "Для UPnP-устройств домашней сети возможна навигация по содержанию и его воспроизведение.",
"LabelEnableHardwareDecodingFor": "Включить аппаратное декодирование для:", "LabelEnableHardwareDecodingFor": "Включить аппаратное декодирование для:",
"LabelEnableRealtimeMonitor": "Включить отслеживание в реальном времени", "LabelEnableRealtimeMonitor": "Включить отслеживание в реальном времени",
"LabelEnableRealtimeMonitorHelp": "В поддерживаемых файловых системах правки файлов будут обрабатываться незамедлительно.", "LabelEnableRealtimeMonitorHelp": "В поддерживаемых файловых системах правки файлов будут обрабатываться незамедлительно.",
@ -616,7 +616,7 @@
"LabelEvent": "Событие:", "LabelEvent": "Событие:",
"LabelEveryXMinutes": "Каждые:", "LabelEveryXMinutes": "Каждые:",
"LabelExtractChaptersDuringLibraryScan": "Извлекать рисунки сцен в процессе сканирования медиатеки", "LabelExtractChaptersDuringLibraryScan": "Извлекать рисунки сцен в процессе сканирования медиатеки",
"LabelExtractChaptersDuringLibraryScanHelp": "При включении, рисунки сцен будут извлечены, когда видео импортируется в процессе сканирования медиатеки. При отключении, они будут извлечены в процессе назначенной задачи «Рисунки сцен», позволяя регулярному сканированию медиатеки завершаться быстрее.", "LabelExtractChaptersDuringLibraryScanHelp": "Генерируются рисунки сцен при импорте видео в процессе сканирования медиатеки. В противном случае, они будут извлечены в процессе назначенной задачи «Рисунки сцен», позволяя регулярному сканированию медиатеки завершаться быстрее.",
"LabelFailed": "Неудачно", "LabelFailed": "Неудачно",
"LabelFileOrUrl": "Файл или URL:", "LabelFileOrUrl": "Файл или URL:",
"LabelFinish": "Завершить", "LabelFinish": "Завершить",
@ -624,13 +624,13 @@
"LabelForgotPasswordUsernameHelp": "Введите имя пользователя, если помните его.", "LabelForgotPasswordUsernameHelp": "Введите имя пользователя, если помните его.",
"LabelFormat": "Формат:", "LabelFormat": "Формат:",
"LabelFriendlyName": "Понятное имя:", "LabelFriendlyName": "Понятное имя:",
"LabelServerNameHelp": "Данное имя используется для распознавания данного сервера. Если не заполнять, то будет использовано имя компьютера.", "LabelServerNameHelp": "Это имя используется для распознавания сервера и будет по умолчанию именем компьютера.",
"LabelGroupMoviesIntoCollections": "Группировать фильмы внутрь коллекций", "LabelGroupMoviesIntoCollections": "Группировать фильмы внутрь коллекций",
"LabelGroupMoviesIntoCollectionsHelp": "При отображении списка фильмов, элементы, принадлежащие к одной коллекции будут отображаться как единый сгруппированный элемент.", "LabelGroupMoviesIntoCollectionsHelp": "При отображении списка фильмов, элементы, принадлежащие к одной коллекции будут отображаться как единый сгруппированный элемент.",
"LabelH264Crf": "Значение CRF H264-кодирования:", "LabelH264Crf": "Значение CRF H264-кодирования:",
"LabelH264EncodingPreset": "Предустановка H264-кодирования:", "LabelH264EncodingPreset": "Предустановка H264-кодирования:",
"LabelHardwareAccelerationType": "Аппаратное ускорение:", "LabelHardwareAccelerationType": "Аппаратное ускорение:",
"LabelHardwareAccelerationTypeHelp": "Имеется только на поддерживаемых системах.", "LabelHardwareAccelerationTypeHelp": "Это экспериментальная функция, имеющаяся только на поддерживаемых системах.",
"LabelHomeNetworkQuality": "Качество в домашней сети:", "LabelHomeNetworkQuality": "Качество в домашней сети:",
"LabelHomeScreenSectionValue": "Главная страница - раздел {0}:", "LabelHomeScreenSectionValue": "Главная страница - раздел {0}:",
"LabelHttpsPort": "Номер локального HTTPS-порта:", "LabelHttpsPort": "Номер локального HTTPS-порта:",
@ -644,20 +644,20 @@
"LabelImageType": "Тип рисунка:", "LabelImageType": "Тип рисунка:",
"LabelImportOnlyFavoriteChannels": "Ограничиваться каналами обозначенными как избранное", "LabelImportOnlyFavoriteChannels": "Ограничиваться каналами обозначенными как избранное",
"LabelInNetworkSignInWithEasyPassword": "Включить внутрисетевой вход со своим простым PIN-кодом", "LabelInNetworkSignInWithEasyPassword": "Включить внутрисетевой вход со своим простым PIN-кодом",
"LabelInNetworkSignInWithEasyPasswordHelp": "При включении, возможно использовать простой PIN-код для входа в Jellyfin-приложения изнутри своей домашней сети. Ваш обычный пароль будет необходим только вне дома. Если PIN-код не заполнен, то внутри своей домашней сети не потребуется пароль.", "LabelInNetworkSignInWithEasyPasswordHelp": "Используется простой PIN-код для входа в клиенты внутри своей локальной сети. Ваш обычный пароль будет необходим только вне дома. Если PIN-код не заполнен, то внутри своей домашней сети не потребуется пароль.",
"LabelInternetQuality": "Качество в Интернете:", "LabelInternetQuality": "Качество в Интернете:",
"LabelKeepUpTo": "Хранить до:", "LabelKeepUpTo": "Хранить до:",
"LabelKidsCategories": "Детские категории:", "LabelKidsCategories": "Детские категории:",
"LabelKodiMetadataDateFormat": "Формат даты выпуска:", "LabelKodiMetadataDateFormat": "Формат даты выпуска:",
"LabelKodiMetadataDateFormatHelp": "Все даты в пределах NFO-файлов будут считываться и записываться по данному формату.", "LabelKodiMetadataDateFormatHelp": "Все даты в пределах NFO-файлов будут разбираться по данному формату.",
"LabelKodiMetadataEnableExtraThumbs": "Копировать extrafanart внутрь extrathumbs", "LabelKodiMetadataEnableExtraThumbs": "Копировать extrafanart в поле extrathumbs",
"LabelKodiMetadataEnableExtraThumbsHelp": "При загрузке рисунков, их возможно сохранять внутрь extrafanart и extrathumbs для максимальной совместимости с оболочкой Kodi.", "LabelKodiMetadataEnableExtraThumbsHelp": "При загрузке рисунков, их возможно сохранять внутрь extrafanart и extrathumbs для максимальной совместимости с оболочкой Kodi.",
"LabelKodiMetadataEnablePathSubstitution": "Включить подстановки путей", "LabelKodiMetadataEnablePathSubstitution": "Включить подстановки путей",
"LabelKodiMetadataEnablePathSubstitutionHelp": "Включаются подстановки путей к рисункам с помощью параметров подстановки путей сервера.", "LabelKodiMetadataEnablePathSubstitutionHelp": "Включаются подстановки путей к рисункам с помощью параметров подстановки путей сервера.",
"LabelKodiMetadataSaveImagePaths": "Сохранять пути рисунков в пределах NFO-файлов", "LabelKodiMetadataSaveImagePaths": "Сохранять пути рисунков в пределах NFO-файлов",
"LabelKodiMetadataSaveImagePathsHelp": "Рекомендуется, если имена файлов рисунков не соответствуют руководящим принципам Kodi.", "LabelKodiMetadataSaveImagePathsHelp": "Рекомендуется, если имена файлов рисунков не соответствуют руководящим принципам Kodi.",
"LabelKodiMetadataUser": "Сохранение в NFO-файле данных о просмотре пользователем:", "LabelKodiMetadataUser": "Сохранение в NFO-файле данных о просмотре пользователем:",
"LabelKodiMetadataUserHelp": "Включите, чтобы сохранять данные о просмотрах в NFO-файлах для использования в других приложениях.", "LabelKodiMetadataUserHelp": "Сохраняет данные о просмотрах в NFO-файлах для использования в других приложениях.",
"LabelLanNetworks": "Домашние сети:", "LabelLanNetworks": "Домашние сети:",
"LabelLanguage": "Язык:", "LabelLanguage": "Язык:",
"LabelLineup": "Список сопоставления:", "LabelLineup": "Список сопоставления:",
@ -665,7 +665,7 @@
"LabelLocalHttpServerPortNumberHelp": "TCP-порт, ко которому следует создать привязку HTTP-сервера Jellyfin.", "LabelLocalHttpServerPortNumberHelp": "TCP-порт, ко которому следует создать привязку HTTP-сервера Jellyfin.",
"LabelLockItemToPreventChanges": "Зафиксировать данный элемент, чтобы запретить будущие правки", "LabelLockItemToPreventChanges": "Зафиксировать данный элемент, чтобы запретить будущие правки",
"LabelLoginDisclaimer": "Предупреждение при входе:", "LabelLoginDisclaimer": "Предупреждение при входе:",
"LabelLoginDisclaimerHelp": "Это будет отображаться в нижней части страницы входа в систему.", "LabelLoginDisclaimerHelp": "Сообщение будет отображаться в нижней части страницы входа в систему.",
"LabelLogs": "Журналы:", "LabelLogs": "Журналы:",
"LabelManufacturer": "Производитель", "LabelManufacturer": "Производитель",
"LabelManufacturerUrl": "URL производителя", "LabelManufacturerUrl": "URL производителя",
@ -674,7 +674,7 @@
"LabelMaxChromecastBitrate": "Качество трансляции Chromecast:", "LabelMaxChromecastBitrate": "Качество трансляции Chromecast:",
"LabelMaxParentalRating": "Макс. допустимая возрастная категория:", "LabelMaxParentalRating": "Макс. допустимая возрастная категория:",
"LabelMaxResumePercentage": "Макс. доля для возобновления, %:", "LabelMaxResumePercentage": "Макс. доля для возобновления, %:",
"LabelMaxResumePercentageHelp": "Произведения предполагаются воспроизведёнными полностью, при остановке после данного момента", "LabelMaxResumePercentageHelp": "Произведения предполагаются воспроизведёнными полностью, при остановке с данного момента.",
"LabelMaxScreenshotsPerItem": "Макс. число снимков экрана на элемент:", "LabelMaxScreenshotsPerItem": "Макс. число снимков экрана на элемент:",
"LabelMaxStreamingBitrate": "Макс. качество трансляции:", "LabelMaxStreamingBitrate": "Макс. качество трансляции:",
"LabelMaxStreamingBitrateHelp": "Укажите макс. потоковую скорость трансляции.", "LabelMaxStreamingBitrateHelp": "Укажите макс. потоковую скорость трансляции.",
@ -692,9 +692,9 @@
"LabelMethod": "Метод:", "LabelMethod": "Метод:",
"LabelMinBackdropDownloadWidth": "Мин. ширина загружаемого задника:", "LabelMinBackdropDownloadWidth": "Мин. ширина загружаемого задника:",
"LabelMinResumeDuration": "Мин. длительность для возобновления:", "LabelMinResumeDuration": "Мин. длительность для возобновления:",
"LabelMinResumeDurationHelp": "Наименьшая длительность видео в секундах, при которой сохраняется позиция воспроизведения и позволяется возобновление", "LabelMinResumeDurationHelp": "Наименьшая длительность видео в секундах, при которой сохраняется позиция воспроизведения и позволяется возобновление.",
"LabelMinResumePercentage": "Мин. доля для возобновления, %:", "LabelMinResumePercentage": "Мин. доля для возобновления, %:",
"LabelMinResumePercentageHelp": "Произведения предполагаются не воспроизведёнными, при остановке до данного момента", "LabelMinResumePercentageHelp": "Произведения предполагаются не воспроизведёнными, при остановке до данного момента.",
"LabelMinScreenshotDownloadWidth": "Мин. ширина загружаемого снимка экрана:", "LabelMinScreenshotDownloadWidth": "Мин. ширина загружаемого снимка экрана:",
"LabelModelDescription": "Описание модели", "LabelModelDescription": "Описание модели",
"LabelModelName": "Наименование модели", "LabelModelName": "Наименование модели",
@ -703,7 +703,7 @@
"LabelMonitorUsers": "Отслеживание деятельности от:", "LabelMonitorUsers": "Отслеживание деятельности от:",
"LabelMovieCategories": "Фильмовые категории:", "LabelMovieCategories": "Фильмовые категории:",
"LabelMoviePrefix": "Префикс фильма:", "LabelMoviePrefix": "Префикс фильма:",
"LabelMoviePrefixHelp": "При применении к названиям фильмов префикса, введите его здесь, чтобы он правильно обрабатывался в Jellyfin.", "LabelMoviePrefixHelp": "При применении к названиям фильмов префикса, введите его здесь, чтобы он правильно обрабатывался на сервере.",
"LabelMovieRecordingPath": "Путь к записываемым фильмам (необязательно):", "LabelMovieRecordingPath": "Путь к записываемым фильмам (необязательно):",
"LabelMusicStreamingTranscodingBitrate": "Поток. скорость перекодировки музыки:", "LabelMusicStreamingTranscodingBitrate": "Поток. скорость перекодировки музыки:",
"LabelMusicStreamingTranscodingBitrateHelp": "Укажите максимальную потоковую скорость при трансляции музыки", "LabelMusicStreamingTranscodingBitrateHelp": "Укажите максимальную потоковую скорость при трансляции музыки",
@ -777,7 +777,7 @@
"LabelSerialNumber": "Серийный номер", "LabelSerialNumber": "Серийный номер",
"LabelSeriesRecordingPath": "Путь к записываемым сериалам (необязательно):", "LabelSeriesRecordingPath": "Путь к записываемым сериалам (необязательно):",
"LabelServerHost": "Узел:", "LabelServerHost": "Узел:",
"LabelServerHostHelp": "192.168.1.100 или https://myserver.com", "LabelServerHostHelp": "192.168.1.100:8096 или https://myserver.com",
"LabelServerPort": "Порт:", "LabelServerPort": "Порт:",
"LabelSimultaneousConnectionLimit": "Лимит одновременных потоков:", "LabelSimultaneousConnectionLimit": "Лимит одновременных потоков:",
"LabelSkin": "Оболочка:", "LabelSkin": "Оболочка:",
@ -818,7 +818,7 @@
"LabelTrackNumber": "Номер дорожки:", "LabelTrackNumber": "Номер дорожки:",
"LabelTranscodingAudioCodec": "Аудио профиль:", "LabelTranscodingAudioCodec": "Аудио профиль:",
"LabelTranscodingContainer": "Контейнер:", "LabelTranscodingContainer": "Контейнер:",
"LabelTranscodingTempPathHelp": "В данной папке содержатся рабочие файлы, используемые при перекодировке. Укажите произвольный путь, или не заполняйте, чтобы использовать стандартный в пределах серверной папки data.", "LabelTranscodingTempPathHelp": "Укажите произвольный путь для файлов перекодировки, служащие для клиентов. Оставьте пустым, чтобы использовать умолчания сервера.",
"LabelTranscodingThreadCount": "Количество перекодирующих подпотоков:", "LabelTranscodingThreadCount": "Количество перекодирующих подпотоков:",
"LabelTranscodingThreadCountHelp": "Выберите максимальное число подпотоков для использования при перекодировке. Сокращение числа подпотоков понижает нагрузку на ЦП, но преобразование может оказаться недостаточно быстрым для впечатления плавного воспроизведения.", "LabelTranscodingThreadCountHelp": "Выберите максимальное число подпотоков для использования при перекодировке. Сокращение числа подпотоков понижает нагрузку на ЦП, но преобразование может оказаться недостаточно быстрым для впечатления плавного воспроизведения.",
"LabelTranscodingVideoCodec": "Видео кодек:", "LabelTranscodingVideoCodec": "Видео кодек:",
@ -833,7 +833,7 @@
"LabelUserAgent": "Агент пользователя:", "LabelUserAgent": "Агент пользователя:",
"LabelUserLibrary": "Медиатека пользователя:", "LabelUserLibrary": "Медиатека пользователя:",
"LabelUserLibraryHelp": "Выберите, чью медиатеку отображать на устройстве. Не заполняйте, чтобы наследовать параметр по умолчанию.", "LabelUserLibraryHelp": "Выберите, чью медиатеку отображать на устройстве. Не заполняйте, чтобы наследовать параметр по умолчанию.",
"LabelUserRemoteClientBitrateLimitHelp": "Это переопределит глобальные значения по умолчанию, установленные в параметрах воспроизведения сервера.", "LabelUserRemoteClientBitrateLimitHelp": "Переопределияются глобальные значения по умолчанию, установленные в параметрах воспроизведения сервера.",
"LabelUsername": "Имя пользователя:", "LabelUsername": "Имя пользователя:",
"LabelVaapiDevice": "Устройство VA-API:", "LabelVaapiDevice": "Устройство VA-API:",
"LabelVaapiDeviceHelp": "Это является узлом отрисовки, который используется для аппаратного ускорения.", "LabelVaapiDeviceHelp": "Это является узлом отрисовки, который используется для аппаратного ускорения.",
@ -856,7 +856,7 @@
"Large": "Крупный", "Large": "Крупный",
"LatestFromLibrary": "Новейшее: {0}", "LatestFromLibrary": "Новейшее: {0}",
"LearnHowYouCanContribute": "Изучите, как вы можете внести свой вклад.", "LearnHowYouCanContribute": "Изучите, как вы можете внести свой вклад.",
"LibraryAccessHelp": "Выделите медиапапки, чтобы дать доступ этому пользователю. Администраторы могут изменять все папки с помощью «Диспетчера метаданных».", "LibraryAccessHelp": "Выделите медиатеки, чтобы дать доступ этому пользователю. Администраторы могут изменять все папки с помощью «Диспетчера метаданных».",
"Like": "Нравится", "Like": "Нравится",
"LinksValue": "Ссылки: {0}", "LinksValue": "Ссылки: {0}",
"List": "Список", "List": "Список",
@ -912,7 +912,7 @@
"MessageDeleteTaskTrigger": "Вы действительно хотите удалить данный триггер задачи?", "MessageDeleteTaskTrigger": "Вы действительно хотите удалить данный триггер задачи?",
"MessageDirectoryPickerBSDInstruction": "Касаемо BSD, возможно, потребуется конфигурировать хранилище в вашем FreeNAS Jail для того, чтобы разрешить Jellyfin получить к нему доступ.", "MessageDirectoryPickerBSDInstruction": "Касаемо BSD, возможно, потребуется конфигурировать хранилище в вашем FreeNAS Jail для того, чтобы разрешить Jellyfin получить к нему доступ.",
"MessageDirectoryPickerInstruction": "Сетевые пути возможно ввести вручную, в том случае, если при нажатии кнопки «Сеть» происходит сбой обнаружения устройств. Например: {0} или {1}.", "MessageDirectoryPickerInstruction": "Сетевые пути возможно ввести вручную, в том случае, если при нажатии кнопки «Сеть» происходит сбой обнаружения устройств. Например: {0} или {1}.",
"MessageDirectoryPickerLinuxInstruction": "Для Linux на Arch Linux, CentOS, Debian, Fedora, OpenSuse или Ubuntu, вы должны предоставить системному пользователю Jellyfin, по крайней мере, доступ для чтения к расположениям хранилища.", "MessageDirectoryPickerLinuxInstruction": "Для Linux на Arch Linux, CentOS, Debian, Fedora, OpenSuse или Ubuntu, вы должны предоставить пользователю службы, по крайней мере, доступ для чтения к расположениям хранилища.",
"MessageDownloadQueued": "Загрузка в очереди.", "MessageDownloadQueued": "Загрузка в очереди.",
"MessageEnablingOptionLongerScans": "Включение этой опции может привести к значительному увеличению времени сканирования медиатеки.", "MessageEnablingOptionLongerScans": "Включение этой опции может привести к значительному увеличению времени сканирования медиатеки.",
"MessageFileReadError": "Произошла ошибка при считывании файла. Повторите попытку позже.", "MessageFileReadError": "Произошла ошибка при считывании файла. Повторите попытку позже.",
@ -923,21 +923,21 @@
"MessageInvalidUser": "Недопустимое имя пользователя или пароль. Повторите попытку.", "MessageInvalidUser": "Недопустимое имя пользователя или пароль. Повторите попытку.",
"MessageItemSaved": "Элемент сохранён.", "MessageItemSaved": "Элемент сохранён.",
"MessageItemsAdded": "Элементы добавлены.", "MessageItemsAdded": "Элементы добавлены.",
"MessageLeaveEmptyToInherit": "Не заполняйте, чтобы наследовать параметры от родительского элемента, или глобальное значение по умолчанию.", "MessageLeaveEmptyToInherit": "Оставьте пустым, для наследования параметров от родительского элемента или глобального значения по умолчанию.",
"MessageNoAvailablePlugins": "Плагинов не имеется.", "MessageNoAvailablePlugins": "Плагинов не имеется.",
"MessageNoMovieSuggestionsAvailable": "В настоящее время предложений фильмов не имеются. Начните смотреть и оценивать свои фильмы, а затем вернитесь, чтобы просмотреть рекомендации.", "MessageNoMovieSuggestionsAvailable": "В настоящее время предложений фильмов не имеются. Начните смотреть и оценивать свои фильмы, а затем вернитесь, чтобы просмотреть рекомендации.",
"MessageNoPluginsInstalled": "Нет установленных плагинов.", "MessageNoPluginsInstalled": "Нет установленных плагинов.",
"MessageNoTrailersFound": "Трейлеры не найдены. Установите канал трейлеров, чтобы повысить своё впечатление от фильма путём добавления собрания интернет-трейлеров.", "MessageNoTrailersFound": "Трейлеры не найдены. Установите канал трейлеров, чтобы повысить своё впечатление от фильма путём добавления собрания интернет-трейлеров.",
"MessageNothingHere": "Здесь ничего нет.", "MessageNothingHere": "Здесь ничего нет.",
"MessagePasswordResetForUsers": "Следующие пользователи сбросили свои пароли. Теперь они могут войти с помощью PIN-кодов, которые использовались для сброса.", "MessagePasswordResetForUsers": "Следующие пользователи сбросили свои пароли. Теперь они могут войти с помощью PIN-кодов, которые использовались для сброса.",
"MessagePlayAccessRestricted": "Воспроизведение данного содержания в настоящее время ограничено. За дополнительными сведениями. обратитесь к вашему администратору Jellyfin Server.", "MessagePlayAccessRestricted": "Воспроизведение данного содержания в настоящее время ограничено. За дополнительными сведениями обратитесь к администратору сервера.",
"MessagePleaseEnsureInternetMetadata": "Убедитесь, что включена загрузка метаданных из Интернета.", "MessagePleaseEnsureInternetMetadata": "Убедитесь, что включена загрузка метаданных из Интернета.",
"MessagePleaseWait": "Подождите. Это может занять минуту.", "MessagePleaseWait": "Подождите. Это может занять минуту.",
"MessagePluginConfigurationRequiresLocalAccess": "Чтобы конфигурировать данный плагин войдите непосредственно в свой локальный сервер.", "MessagePluginConfigurationRequiresLocalAccess": "Чтобы конфигурировать данный плагин войдите непосредственно в свой локальный сервер.",
"MessagePluginInstallDisclaimer": "Плагины, созданные членами сообщества Jellyfin являются отличным способом повышения эффективности Jellyfin с помощью дополнительных функций и компонентов. Перед установкой примите во внимание влияние, которое они могут оказать на Jellyfin Server, например, длительные сканирования медиатеки, дополнительную фоновую обработку и снижение системной стабильности.", "MessagePluginInstallDisclaimer": "Плагины, созданные членами сообщества Jellyfin являются отличным способом повышения эффективности Jellyfin с помощью дополнительных функций и компонентов. Перед установкой примите во внимание влияние, которое они могут оказать на Jellyfin Server, например, длительные сканирования медиатеки, дополнительную фоновую обработку и снижение системной стабильности.",
"MessageReenableUser": "См. ниже для разблокировки", "MessageReenableUser": "См. ниже для разблокировки",
"MessageSettingsSaved": "Параметры сохранены.", "MessageSettingsSaved": "Параметры сохранены.",
"MessageTheFollowingLocationWillBeRemovedFromLibrary": "Из вашей медиатеки Jellyfin будут изъяты следующие расположения медиаданных :", "MessageTheFollowingLocationWillBeRemovedFromLibrary": "Из вашей медиатеки будут изъяты следующие расположения медиаданных:",
"MessageUnableToConnectToServer": "Мы не можем подсоединиться к выбранному серверу в данный момент. Убедитесь, что он запущен и повторите попытку.", "MessageUnableToConnectToServer": "Мы не можем подсоединиться к выбранному серверу в данный момент. Убедитесь, что он запущен и повторите попытку.",
"MessageUnsetContentHelp": "Содержание отображается как обычные папки. Для наилучших результатов используйте диспетчер метаданных, чтобы задать тип содержания подпапок.", "MessageUnsetContentHelp": "Содержание отображается как обычные папки. Для наилучших результатов используйте диспетчер метаданных, чтобы задать тип содержания подпапок.",
"MessageYouHaveVersionInstalled": "В настоящее время установлена версия {0}.", "MessageYouHaveVersionInstalled": "В настоящее время установлена версия {0}.",
@ -946,10 +946,10 @@
"MetadataSettingChangeHelp": "Изменение параметров метаданных повлияет на новое содержание, которое будет добавляться в дальнейшем. Чтобы обновить существующие содержание, откройте экран с подробностями и нажмите кнопку Обновить, или выполните массовое обновление, с помощью Диспетчера метаданных.", "MetadataSettingChangeHelp": "Изменение параметров метаданных повлияет на новое содержание, которое будет добавляться в дальнейшем. Чтобы обновить существующие содержание, откройте экран с подробностями и нажмите кнопку Обновить, или выполните массовое обновление, с помощью Диспетчера метаданных.",
"MinutesAfter": "минут(у/ы) после", "MinutesAfter": "минут(у/ы) после",
"MinutesBefore": "минут(у/ы) до", "MinutesBefore": "минут(у/ы) до",
"Mobile": "Мобильный / Планшетный", "Mobile": "Мобильный",
"Monday": "понедельник", "Monday": "понедельник",
"MoreFromValue": "Ещё в {0}", "MoreFromValue": "Ещё в {0}",
"MoreUsersCanBeAddedLater": "Потом можно добавить ещё пользователей в «Панели».", "MoreUsersCanBeAddedLater": "Потом можно добавить ещё пользователей изнутри «Панели».",
"MoveLeft": "Двигать влево", "MoveLeft": "Двигать влево",
"MoveRight": "Двигать вправо", "MoveRight": "Двигать вправо",
"MovieLibraryHelp": "Просмотрите {0}Руководство Jellyfin по именованию фильмов{1}.", "MovieLibraryHelp": "Просмотрите {0}Руководство Jellyfin по именованию фильмов{1}.",
@ -980,7 +980,7 @@
"OneChannel": "Один канал", "OneChannel": "Один канал",
"OnlyForcedSubtitles": "Только форсированные субтитры", "OnlyForcedSubtitles": "Только форсированные субтитры",
"OnlyForcedSubtitlesHelp": "Загружены будут только форсированные субтитры.", "OnlyForcedSubtitlesHelp": "Загружены будут только форсированные субтитры.",
"OnlyImageFormats": "Только графические форматы (VOBSUB, PGS, SUB/IDX и т.д.)", "OnlyImageFormats": "Только графические форматы (VOBSUB, PGS, SUB и т.д.)",
"OptionAdminUsers": "Администраторы", "OptionAdminUsers": "Администраторы",
"OptionAlbum": "Альбом", "OptionAlbum": "Альбом",
"OptionAlbumArtist": "Исп. альбома", "OptionAlbumArtist": "Исп. альбома",
@ -1028,7 +1028,7 @@
"OptionDisableUserHelp": "При блокировании, этому пользователю не разрешаются любые подключения к серверу. Имеющиеся соединения будут разорваны.", "OptionDisableUserHelp": "При блокировании, этому пользователю не разрешаются любые подключения к серверу. Имеющиеся соединения будут разорваны.",
"OptionDislikes": "Не нравящиеся", "OptionDislikes": "Не нравящиеся",
"OptionDisplayFolderView": "Отображать аспект Папки для просмотра обычных медиапапок", "OptionDisplayFolderView": "Отображать аспект Папки для просмотра обычных медиапапок",
"OptionDisplayFolderViewHelp": "При включении, в Jellyfin-приложениях будет отображаться аспект Папки наряду с вашей медиатекой. Это полезно, если вам нравится вид обычных папок.", "OptionDisplayFolderViewHelp": "Отображение аспекта \"Папки\" рядом с другими вашими медиатеками. Это может быть полезно, если вы хотите вид обычных папок.",
"OptionDownloadArtImage": "Виньетка", "OptionDownloadArtImage": "Виньетка",
"OptionDownloadBackImage": "Задник", "OptionDownloadBackImage": "Задник",
"OptionDownloadBannerImage": "Баннер", "OptionDownloadBannerImage": "Баннер",
@ -1067,7 +1067,7 @@
"OptionHideUser": "Скрыть этого пользователя с экрана входа", "OptionHideUser": "Скрыть этого пользователя с экрана входа",
"OptionHideUserFromLoginHelp": "Целесообразно для личных или скрытых администраторских учётных записей. Пользователю будет нужно входить в систему вручную, вводя своё имя пользователя и пароль.", "OptionHideUserFromLoginHelp": "Целесообразно для личных или скрытых администраторских учётных записей. Пользователю будет нужно входить в систему вручную, вводя своё имя пользователя и пароль.",
"OptionHlsSegmentedSubtitles": "Сегмент. субтитры HLS", "OptionHlsSegmentedSubtitles": "Сегмент. субтитры HLS",
"OptionHomeVideos": "Дом. видео и фото", "OptionHomeVideos": "Фотографии",
"OptionIgnoreTranscodeByteRangeRequests": "Игнорировать запросы диапазона байтов перекодировки", "OptionIgnoreTranscodeByteRangeRequests": "Игнорировать запросы диапазона байтов перекодировки",
"OptionIgnoreTranscodeByteRangeRequestsHelp": "При включении, эти запросы будут учтены, но заголовок диапазона байтов будет проигнорирован.", "OptionIgnoreTranscodeByteRangeRequestsHelp": "При включении, эти запросы будут учтены, но заголовок диапазона байтов будет проигнорирован.",
"OptionImdbRating": "Оценка IMDb", "OptionImdbRating": "Оценка IMDb",
@ -1249,7 +1249,7 @@
"StopRecording": "Остановить запись", "StopRecording": "Остановить запись",
"Studios": "Студии", "Studios": "Студии",
"SubtitleAppearanceSettingsAlsoPassedToCastDevices": "Эти параметры также применимы к любому Chromecast-воспроизведению запущенному данным устройством.", "SubtitleAppearanceSettingsAlsoPassedToCastDevices": "Эти параметры также применимы к любому Chromecast-воспроизведению запущенному данным устройством.",
"SubtitleAppearanceSettingsDisclaimer": "Данные параметры не применимы к графическим субтитрам (PGS, DVD и т.д.) или к субтитрам, которые имеют внедрённые свои собственные стили (ASS/SSA).", "SubtitleAppearanceSettingsDisclaimer": "Данные параметры не применяются к графическим субтитрам (PGS, DVD и т.д.) или субтитрам ASS/SSA, внедряющим свои собственные стили.",
"SubtitleDownloadersHelp": "Включите и ранжируйте предпочитаемые загрузчики субтитров в порядке приоритета.", "SubtitleDownloadersHelp": "Включите и ранжируйте предпочитаемые загрузчики субтитров в порядке приоритета.",
"Subtitles": "Субтитры", "Subtitles": "Субтитры",
"Suggestions": "Предлагаемое", "Suggestions": "Предлагаемое",
@ -1383,11 +1383,11 @@
"ChangingMetadataImageSettingsNewContent": "Изменения в настройках загрузки метаданных или иллюстраций применяются только к новому содержанию, добавляемому в медиатеку. Чтобы применить изменения к наличным произведениям, необходимо обновить их метаданные вручную.", "ChangingMetadataImageSettingsNewContent": "Изменения в настройках загрузки метаданных или иллюстраций применяются только к новому содержанию, добавляемому в медиатеку. Чтобы применить изменения к наличным произведениям, необходимо обновить их метаданные вручную.",
"HeaderAudioLanguages": "Языки аудио", "HeaderAudioLanguages": "Языки аудио",
"LabelDynamicExternalId": "{0} Ид:", "LabelDynamicExternalId": "{0} Ид:",
"LeaveBlankToNotSetAPassword": "Необязательно - оставьте пустым, чтобы не назначать пароль", "LeaveBlankToNotSetAPassword": "Оставьте пустым, чтобы не назначать пароль.",
"MessageImageFileTypeAllowed": "Поддерживаются только файлы JPEG и PNG.", "MessageImageFileTypeAllowed": "Поддерживаются только файлы JPEG и PNG.",
"MessageImageTypeNotSelected": "Выберите тип рисунка из выпадающего меню.", "MessageImageTypeNotSelected": "Выберите тип рисунка из выпадающего меню.",
"OptionResElement": "res-элемент", "OptionResElement": "res-элемент",
"AuthProviderHelp": "Выберите поставщика аутентификации, который будет использоваться для аутентификации пароля этого пользователя", "AuthProviderHelp": "Выберите поставщика аутентификации, который будет использоваться для аутентификации пароля этого пользователя.",
"HeaderFavoriteMovies": "Избранные фильмы", "HeaderFavoriteMovies": "Избранные фильмы",
"HeaderFavoriteShows": "Избранные передачи", "HeaderFavoriteShows": "Избранные передачи",
"HeaderFavoriteEpisodes": "Избранные эпизоды", "HeaderFavoriteEpisodes": "Избранные эпизоды",
@ -1409,8 +1409,8 @@
"DashboardOperatingSystem": "Операционная система: {0}", "DashboardOperatingSystem": "Операционная система: {0}",
"DashboardArchitecture": "Архитектура: {0}", "DashboardArchitecture": "Архитектура: {0}",
"LabelWeb": "Веб: ", "LabelWeb": "Веб: ",
"LaunchWebAppOnStartup": "Запустить веб-приложение Jellyfin в моем веб-браузере при запуске Jellyfin Server", "LaunchWebAppOnStartup": "Запустить веб-интерфейс при запуске Jellyfin Server",
"LaunchWebAppOnStartupHelp": "Это откроет веб-приложение в веб-браузере по умолчанию при начальном запуске Jellyfin Server. Это не произойдет при использовании функции перезапуска сервера.", "LaunchWebAppOnStartupHelp": "Открывается веб-клиент в браузере по умолчанию при начальном запуске сервера. Это не произойдет при использовании функции перезапуска сервера.",
"MediaInfoSoftware": "ПО", "MediaInfoSoftware": "ПО",
"MediaInfoStreamTypeAudio": "Аудио", "MediaInfoStreamTypeAudio": "Аудио",
"MediaInfoStreamTypeData": "Данные", "MediaInfoStreamTypeData": "Данные",
@ -1429,7 +1429,7 @@
"OptionIsSD": "SD", "OptionIsSD": "SD",
"OptionList": "Список", "OptionList": "Список",
"OptionLoginAttemptsBeforeLockout": "Определяет, сколько неудачных попыток входа можно сделать до блокировки.", "OptionLoginAttemptsBeforeLockout": "Определяет, сколько неудачных попыток входа можно сделать до блокировки.",
"OptionLoginAttemptsBeforeLockoutHelp": "0 означает наследование по умолчанию, 3 для не-администратора и 5 для администратора, -1 отключает блокировку", "OptionLoginAttemptsBeforeLockoutHelp": "При значении 0 наследуются по умолчанию три попытки для обычных пользователей и пять для администратора. При установке этого значения в -1 функция отключается.",
"OptionPoster": "Постер", "OptionPoster": "Постер",
"OptionPosterCard": "Постер-карта", "OptionPosterCard": "Постер-карта",
"OptionThumb": "Бегунок", "OptionThumb": "Бегунок",
@ -1437,5 +1437,26 @@
"PasswordResetProviderHelp": "Выберите поставщика сброса пароля, который будет использоваться, когда этот пользователь запрашивает сброс пароля", "PasswordResetProviderHelp": "Выберите поставщика сброса пароля, который будет использоваться, когда этот пользователь запрашивает сброс пароля",
"PlaybackData": "Данные воспроизведения", "PlaybackData": "Данные воспроизведения",
"SubtitleOffset": "Сдвиг субтитров", "SubtitleOffset": "Сдвиг субтитров",
"TabNetworking": "Работа в сети" "TabNetworking": "Работа в сети",
"LabelBaseUrlHelp": "Здесь вы можете добавить пользовательский подкаталог для доступа к серверу с более уникального URL.",
"LabelPlayer": "Игрок:",
"MoreMediaInfo": "О медиаданных",
"LabelVideoCodec": "Видео кодек:",
"LabelVideoBitrate": "Потоковая скорость аудио:",
"LabelTranscodingProgress": "Прогресс перекодировки:",
"LabelTranscodingFramerate": "Частота кадров перекодировки:",
"LabelSize": "Размер:",
"LabelPlayMethod": "Метод воспроизведения:",
"LabelFolder": "Папка:",
"LabelBaseUrl": "Базовый URL:",
"LabelBitrate": "Поток. ск-ть:",
"LabelAudioSampleRate": "Ч-та дискр-ии аудио:",
"LabelAudioCodec": "Аудио кодек:",
"LabelAudioChannels": "Аудио каналы:",
"LabelAudioBitrate": "Потоковая скорость аудио:",
"LabelAudioBitDepth": "Битовая глубина аудио:",
"HeaderFavoriteBooks": "Избранные книги",
"CopyStreamURL": "Копировать URL потока",
"LabelPleaseRestart": "Изменения вступят в силу после перезагрузки веб-клиента вручную.",
"CopyStreamURLSuccess": "URL скопирован успешно."
} }

View file

@ -162,7 +162,7 @@
"DetectingDevices": "Söker efter enheter", "DetectingDevices": "Söker efter enheter",
"DeviceAccessHelp": "Detta tillämpas endast för enheter som kan bli unikt identifierade och som inte förhindrar åtkomst till browsern. Filtering av användarenheter kommer att blockera dom från att använda nya enheter tills dom har blivit godkända här.", "DeviceAccessHelp": "Detta tillämpas endast för enheter som kan bli unikt identifierade och som inte förhindrar åtkomst till browsern. Filtering av användarenheter kommer att blockera dom från att använda nya enheter tills dom har blivit godkända här.",
"DirectPlaying": "Direktuppspelning", "DirectPlaying": "Direktuppspelning",
"DirectStreamHelp1": "Innehållet är kompatibelt med enheten vad gäller upplösning och mediatyp (H.264, AC3, etc.) men det är en inkompatibel filkontainer (.mkv, .avi, .wmv etc.). Video-filen kommer att packas om live innan strömningen startar till enheten.", "DirectStreamHelp1": "Innehållet är kompatibelt med enheten vad gäller upplösning och mediatyp (H.264, AC3, etc) men det är en inkompatibel filkontainer (mkv, avi, wmv etc). Video-filen kommer att packas om live innan strömningen startar till enheten.",
"DirectStreamHelp2": "Direktströmning av en fil använder väldigt lite resurser av CPU'n utan att bildkvaliten försämras.", "DirectStreamHelp2": "Direktströmning av en fil använder väldigt lite resurser av CPU'n utan att bildkvaliten försämras.",
"DirectStreaming": "Direktströmning", "DirectStreaming": "Direktströmning",
"Director": "Regissör", "Director": "Regissör",
@ -176,7 +176,7 @@
"DisplayInMyMedia": "Visa på hemskärmen", "DisplayInMyMedia": "Visa på hemskärmen",
"DisplayInOtherHomeScreenSections": "Visa sektioner på hemskärmen som till exempel senast media och fortsätt kolla på", "DisplayInOtherHomeScreenSections": "Visa sektioner på hemskärmen som till exempel senast media och fortsätt kolla på",
"DisplayMissingEpisodesWithinSeasons": "Visa saknade avsnitt i säsonger", "DisplayMissingEpisodesWithinSeasons": "Visa saknade avsnitt i säsonger",
"DisplayMissingEpisodesWithinSeasonsHelp": "Detta måste också vara aktiverat för TV-bibliotek på Jellyfin-servern.", "DisplayMissingEpisodesWithinSeasonsHelp": "Detta måste också vara aktiverat för TV-bibliotek i serverkonfigurationen.",
"DisplayModeHelp": "Välj vilken typ av skärm som du kör Jellyfin på.", "DisplayModeHelp": "Välj vilken typ av skärm som du kör Jellyfin på.",
"DoNotRecord": "Spela inte in", "DoNotRecord": "Spela inte in",
"Down": "Ner", "Down": "Ner",
@ -184,27 +184,27 @@
"DownloadsValue": "Nedladdningar: {0}", "DownloadsValue": "Nedladdningar: {0}",
"DrmChannelsNotImported": "Kanaler med DRM kommer inte att importeras", "DrmChannelsNotImported": "Kanaler med DRM kommer inte att importeras",
"DropShadow": "Visa skugga", "DropShadow": "Visa skugga",
"EasyPasswordHelp": "Din enkla pin-kod används för att logga in offline på Jellyfin-appar som stödjer det, och kan också användas för enkel inloggning från ditt nätverk.", "EasyPasswordHelp": "Din enkla pin-kod används för att logga in offline på klienter som stödjer det, och kan också användas för enkel inloggning från ditt nätverk.",
"Edit": "Ändra", "Edit": "Ändra",
"EditImages": "Ändra bilder", "EditImages": "Ändra bilder",
"EditMetadata": "Redigera metadata", "EditMetadata": "Redigera metadata",
"EditSubtitles": "Ändra undertexter", "EditSubtitles": "Ändra undertexter",
"EnableBackdrops": "Aktivera fondbilder", "EnableBackdrops": "Aktivera fondbilder",
"EnableBackdropsHelp": "Om aktiverat visas fondbilder i bakgrunden av vissa sidor vid bläddring i biblioteket.", "EnableBackdropsHelp": "Visar fondbilder i bakgrunden av vissa sidor vid bläddring i biblioteket.",
"EnableCinemaMode": "Aktivera bioläge", "EnableCinemaMode": "Bioläge",
"EnableColorCodedBackgrounds": "Aktivera färgkodade bakgrundsbilder", "EnableColorCodedBackgrounds": "Färgkodade bakgrundsbilder",
"EnableDisplayMirroring": "Aktivera skärmspegling", "EnableDisplayMirroring": "Skärmspegling",
"EnableExternalVideoPlayers": "Aktivera externa videospelare", "EnableExternalVideoPlayers": "Externa videospelare",
"EnableExternalVideoPlayersHelp": "En extern uppspelningsmeny kommer att visas när man startar en videouppspelning.", "EnableExternalVideoPlayersHelp": "En extern uppspelningsmeny kommer att visas när man startar en videouppspelning.",
"EnableHardwareEncoding": "Aktivera hårdvaruomkodning", "EnableHardwareEncoding": "Aktivera hårdvaruomkodning",
"EnableNextVideoInfoOverlay": "Visa info om nästa video under uppspelning", "EnableNextVideoInfoOverlay": "Visa info om nästa video under uppspelning",
"EnableNextVideoInfoOverlayHelp": "Vid slutet av en video, visa information om nästföljande video i spellistan.", "EnableNextVideoInfoOverlayHelp": "Vid slutet av en video, visa information om nästföljande video i spellistan.",
"EnablePhotos": "Aktivera foton", "EnablePhotos": "Visa foton",
"EnablePhotosHelp": "Foton kommer upptäckas och visas tillsammans med andra mediefiler.", "EnablePhotosHelp": "Bilder kommer upptäckas och visas tillsammans med andra mediefiler.",
"EnableThemeSongs": "Aktivera ledmotiv", "EnableThemeSongs": "Aktivera ledmotiv",
"EnableThemeSongsHelp": "Om aktiverat spelas ledmotiv upp vid bläddring i biblioteket.", "EnableThemeSongsHelp": "Spela ledmotiv i bakgrunden vid bläddring i biblioteket.",
"EnableThemeVideos": "Aktivera tema-videos", "EnableThemeVideos": "Aktivera tema-videos",
"EnableThemeVideosHelp": "Visar tema-videos i bakgrunden när man bläddrar i biblioteket.", "EnableThemeVideosHelp": "Spela tema-videos i bakgrunden vid bläddring i biblioteket.",
"Ended": "Avslutad", "Ended": "Avslutad",
"EndsAtValue": "Slutar vid: {0}", "EndsAtValue": "Slutar vid: {0}",
"Episodes": "Avsnitt", "Episodes": "Avsnitt",
@ -218,7 +218,7 @@
"EveryNDays": "Var {0}:e dag", "EveryNDays": "Var {0}:e dag",
"ExitFullscreen": "Avsluta fullskärm", "ExitFullscreen": "Avsluta fullskärm",
"ExtraLarge": "Extra stor", "ExtraLarge": "Extra stor",
"ExtractChapterImagesHelp": "Att extrahera kapitelrutor möjliggör för vissa klienter att visa grafiska menyer för kapitelval. Aktiviteten kan vara långsam, cpu-intensiv och kan kräva flera gigabyte hårddiskutrymme på din Jellyfin Server. Aktiviteten körs när nya videofiler upptäcks och är även schemalagd under nattetid, men det går att ändra under schemalagda aktiviteter. Det är inte rekommenderat att köra den här aktiviteten vid tider med hög belastning.", "ExtractChapterImagesHelp": "Att extrahera kapitelrutor möjliggör för klienter att visa grafiska menyer för kapitelval. Aktiviteten kan vara långsam, resurs-intensiv och kan kräva flera gigabyte i utrymme. Aktiviteten körs när nya videofiler upptäcks, och är även schemalagd under nattetid. Schemat går att konfigurera under schemalagda aktiviteter. Det är inte rekommenderat att köra den här aktiviteten vid tider med hög belastning.",
"FFmpegSavePathNotFound": "Det gick inte att hitta FFmpeg med den angivna sökvägen. FFprobe måste även finnas i samma mapp. Dessa komponenter inkluderas normalt i samma nedladdning. Var god undersök sökvägen och försök igen.", "FFmpegSavePathNotFound": "Det gick inte att hitta FFmpeg med den angivna sökvägen. FFprobe måste även finnas i samma mapp. Dessa komponenter inkluderas normalt i samma nedladdning. Var god undersök sökvägen och försök igen.",
"Favorite": "Favorit", "Favorite": "Favorit",
"Favorites": "Favoriter", "Favorites": "Favoriter",
@ -232,8 +232,8 @@
"FolderTypeMovies": "Filmer", "FolderTypeMovies": "Filmer",
"FolderTypeMusic": "Musik", "FolderTypeMusic": "Musik",
"FolderTypeMusicVideos": "Musikvideor", "FolderTypeMusicVideos": "Musikvideor",
"FolderTypeTvShows": "TV-serier", "FolderTypeTvShows": "Serier",
"FolderTypeUnset": "Blandat innehåll", "FolderTypeUnset": "Blandat Innehåll",
"Folders": "Mappar", "Folders": "Mappar",
"Friday": "Fredag", "Friday": "Fredag",
"Fullscreen": "Fullskärm", "Fullscreen": "Fullskärm",
@ -1278,16 +1278,16 @@
"HeaderFavoriteMovies": "Favoritfilmer", "HeaderFavoriteMovies": "Favoritfilmer",
"HeaderAudioLanguages": "Ljudspråk", "HeaderAudioLanguages": "Ljudspråk",
"HeaderAppearsOn": "Medverkar i", "HeaderAppearsOn": "Medverkar i",
"HeaderApp": "Appar", "HeaderApp": "App",
"HeaderAdmin": "Administratör", "HeaderAdmin": "Administratör",
"Guide": "Hjälp", "Guide": "Guide",
"GenreValue": "Genre: {0}", "GenreValue": "Genre: {0}",
"General": "Allmänt", "General": "Allmänt",
"ForAdditionalLiveTvOptions": "Klicka på \"Tjänster\" fliken för ytterligare Live TV leverantörer.", "ForAdditionalLiveTvOptions": "Klicka på \"Tjänster\" fliken för ytterligare Live TV leverantörer.",
"FastForward": "Snabbspola", "FastForward": "Snabbspola",
"Extras": "Mer", "Extras": "Mer",
"ErrorAddingXmlTvFile": "Det uppstod ett problem vid läsningen av XmlTV filen. Kontrollera att filen är tillgänglig och försök igen.", "ErrorAddingXmlTvFile": "Det uppstod ett problem vid läsningen av XmlTV filen. Kontrollera att filen är tillgänglig och försök igen.",
"ErrorAddingListingsToSchedulesDirect": "Det uppstod ett problem när din lista skulle läggas till på ditt Schedules Direct konto. Schedules Direct tillåter bara ett begränsat antal listor per konto. Du kanske behöver logga in på Schedules Direct hemsidan och ta bort dina andra listor innan du kan fortsätta.", "ErrorAddingListingsToSchedulesDirect": "Det uppstod ett problem när din lista skulle läggas till på ditt Schedules Direct konto. Schedules Direct tillåter bara ett begränsat antal listor per konto. Du kanske behöver logga in på Schedules Direct hemsidan och ta bort andras listningar från ditt konto innan du fortsätter.",
"EnableStreamLoopingHelp": "Aktivera enbart detta om direktsändningen enbart innehåller några sekunders data och behöver bli kontinuerligt uppdaterad. Att aktivera denna funktion i onödan kan skapa problem.", "EnableStreamLoopingHelp": "Aktivera enbart detta om direktsändningen enbart innehåller några sekunders data och behöver bli kontinuerligt uppdaterad. Att aktivera denna funktion i onödan kan skapa problem.",
"EnableStreamLooping": "Loopa direktsändningar", "EnableStreamLooping": "Loopa direktsändningar",
"Descending": "Fallande", "Descending": "Fallande",
@ -1300,7 +1300,7 @@
"ButtonTrailer": "Trailer", "ButtonTrailer": "Trailer",
"ButtonStart": "Börja", "ButtonStart": "Börja",
"ButtonInfo": "Information", "ButtonInfo": "Information",
"ButtonGuide": "Hjälp", "ButtonGuide": "Guide",
"Blacklist": "Svartlista", "Blacklist": "Svartlista",
"Auto": "Automatisk", "Auto": "Automatisk",
"AuthProviderHelp": "Välj en autentiserings leverantör som ska användas för att autentisera denna användarens lösenord", "AuthProviderHelp": "Välj en autentiserings leverantör som ska användas för att autentisera denna användarens lösenord",
@ -1308,5 +1308,18 @@
"AllowedRemoteAddressesHelp": "Kommaavgränsad lista av IP-adresser eller IP/nätmask poster för nätverk som kommer bli tillåtna att ansluta avlägset. Om fältet lämnas tomt så kommer alla avlägsna adresser tillåtas.", "AllowedRemoteAddressesHelp": "Kommaavgränsad lista av IP-adresser eller IP/nätmask poster för nätverk som kommer bli tillåtna att ansluta avlägset. Om fältet lämnas tomt så kommer alla avlägsna adresser tillåtas.",
"AllowMediaConversionHelp": "Tillåt eller neka tillgång till media konvertings funktionen.", "AllowMediaConversionHelp": "Tillåt eller neka tillgång till media konvertings funktionen.",
"AllowMediaConversion": "Tillåt media konvertering", "AllowMediaConversion": "Tillåt media konvertering",
"Alerts": "Notiser" "Alerts": "Notiser",
"HeaderMedia": "Media",
"HeaderHomeSettings": "Hem Inställningar",
"HeaderHome": "Hem",
"HeaderFavoriteVideos": "Favoritvideor",
"HeaderFavoriteSongs": "Favoritlåtar",
"HeaderFavoriteArtists": "Favoritartister",
"HeaderFavoriteAlbums": "Favoritalbum",
"HeaderFavoriteEpisodes": "Favoritavsnitt",
"HeaderFavoriteShows": "Favoritserier",
"HeaderFavoriteBooks": "Favoritböcker",
"FormatValue": "Format: {0}",
"CopyStreamURLSuccess": "URL har kopierats.",
"CopyStreamURL": "Kopiera Stream URL"
} }

View file

@ -137,7 +137,7 @@
"ChannelNameOnly": "只在频道 {0}", "ChannelNameOnly": "只在频道 {0}",
"Channels": "频道", "Channels": "频道",
"CinemaModeConfigurationHelp": "影院模式直接为您的客厅带来剧场级体验,同时还可以播放预告片和自定义介绍。", "CinemaModeConfigurationHelp": "影院模式直接为您的客厅带来剧场级体验,同时还可以播放预告片和自定义介绍。",
"Collections": "收藏", "Collections": "合集",
"CommunityRating": "公众评分", "CommunityRating": "公众评分",
"Composer": "作曲家", "Composer": "作曲家",
"ConfirmDeleteImage": "删除图片?", "ConfirmDeleteImage": "删除图片?",
@ -264,7 +264,7 @@
"HeaderAddUser": "添加用户", "HeaderAddUser": "添加用户",
"HeaderAdditionalParts": "附加部分", "HeaderAdditionalParts": "附加部分",
"HeaderAdmin": "管理", "HeaderAdmin": "管理",
"HeaderAlbumArtists": "专辑艺术家", "HeaderAlbumArtists": "专辑家",
"HeaderAlbums": "专辑", "HeaderAlbums": "专辑",
"HeaderAlert": "警报", "HeaderAlert": "警报",
"HeaderAllowMediaDeletionFrom": "允许从中删除媒体", "HeaderAllowMediaDeletionFrom": "允许从中删除媒体",
@ -365,7 +365,7 @@
"HeaderMyMediaSmall": "我的媒体 (小)", "HeaderMyMediaSmall": "我的媒体 (小)",
"HeaderNewApiKey": "新 API 密钥", "HeaderNewApiKey": "新 API 密钥",
"HeaderNewDevices": "新设备", "HeaderNewDevices": "新设备",
"HeaderNextUp": "下一个", "HeaderNextUp": "接下来",
"HeaderOnNow": "现在", "HeaderOnNow": "现在",
"HeaderOtherItems": "其他项目", "HeaderOtherItems": "其他项目",
"HeaderParentalRatings": "家长分级", "HeaderParentalRatings": "家长分级",
@ -1349,8 +1349,8 @@
"DirectStreamHelp1": "该媒体文件的分辨率和编码H.264、AC3 等)与您的设备兼容,但容器格式(.mkv、.avi、.wmv 等)不受支持。因此,视频在串流至您的设备之前将会被即时封装为另一种格式。", "DirectStreamHelp1": "该媒体文件的分辨率和编码H.264、AC3 等)与您的设备兼容,但容器格式(.mkv、.avi、.wmv 等)不受支持。因此,视频在串流至您的设备之前将会被即时封装为另一种格式。",
"HeaderAppearsOn": "出现于", "HeaderAppearsOn": "出现于",
"HeaderCancelSeries": "取消系列", "HeaderCancelSeries": "取消系列",
"HeaderFavoriteEpisodes": "最喜欢的剧集", "HeaderFavoriteEpisodes": "最的剧集",
"HeaderFavoriteArtists": "最喜欢的演员", "HeaderFavoriteArtists": "最爱的艺术家",
"HeaderKeepRecording": "继续录制", "HeaderKeepRecording": "继续录制",
"HeaderKeepSeries": "保持系列", "HeaderKeepSeries": "保持系列",
"HeaderMusicQuality": "音质", "HeaderMusicQuality": "音质",
@ -1442,5 +1442,20 @@
"SmallCaps": "小型大写字母", "SmallCaps": "小型大写字母",
"SubtitleOffset": "字幕偏移", "SubtitleOffset": "字幕偏移",
"MessageNoServersAvailable": "未能自动发现服务器。", "MessageNoServersAvailable": "未能自动发现服务器。",
"TabNetworking": "联网" "TabNetworking": "联网",
"HeaderFavoriteBooks": "最爱的书籍",
"LabelVideoCodec": "视频编码:",
"LabelVideoBitrate": "视频码率:",
"LabelTranscodingProgress": "转码进度:",
"LabelTranscodingFramerate": "转码帧率:",
"LabelSize": "大小:",
"LabelPleaseRestart": "改动将在手动重启客户端后生效。",
"LabelPlayMethod": "播放方式:",
"LabelFolder": "文件夹:",
"LabelBitrate": "比特率:",
"LabelAudioSampleRate": "采样率:",
"LabelAudioCodec": "编码:",
"LabelAudioChannels": "声道:",
"LabelAudioBitrate": "比特率:",
"LabelAudioBitDepth": "采样位宽:"
} }

View file

@ -7,7 +7,7 @@ module.exports = {
output: { output: {
filename: 'bundle.js', filename: 'bundle.js',
path: path.resolve(__dirname, 'dist'), path: path.resolve(__dirname, 'dist'),
libraryTarget: 'amd' libraryTarget: 'amd-require'
}, },
externals: [{ externals: [{

View file

@ -1121,6 +1121,11 @@ esutils@^2.0.2:
resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64"
integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==
eventemitter3@3.1.0:
version "3.1.0"
resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.0.tgz#090b4d6cdbd645ed10bf750d4b5407942d7ba163"
integrity sha512-ivIvhpq/Y0uSjcHDcOIccjmYjGLcP09MFGE7ysAwkAvkXfpZlC985pH2/ui64DKazbTW/4kN3yqozUxlXzI6cA==
events@^3.0.0: events@^3.0.0:
version "3.0.0" version "3.0.0"
resolved "https://registry.yarnpkg.com/events/-/events-3.0.0.tgz#9a0a0dfaf62893d92b875b8f2698ca4114973e88" resolved "https://registry.yarnpkg.com/events/-/events-3.0.0.tgz#9a0a0dfaf62893d92b875b8f2698ca4114973e88"
@ -1526,6 +1531,14 @@ hash.js@^1.0.0, hash.js@^1.0.3:
inherits "^2.0.3" inherits "^2.0.3"
minimalistic-assert "^1.0.1" minimalistic-assert "^1.0.1"
hls.js@^0.12.4:
version "0.12.4"
resolved "https://registry.yarnpkg.com/hls.js/-/hls.js-0.12.4.tgz#c155b7b2825a11117c111b781973c0ffa759006b"
integrity sha512-e8OPxQ60dBVsdkv4atdxR21KzC1mgwspM41qpozpj3Uv1Fz4CaeQy3FWoaV2O+QKKbNRvV5hW+/LipCWdrwnMQ==
dependencies:
eventemitter3 "3.1.0"
url-toolkit "^2.1.6"
hmac-drbg@^1.0.0: hmac-drbg@^1.0.0:
version "1.0.1" version "1.0.1"
resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1"
@ -3359,6 +3372,11 @@ urix@^0.1.0:
resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72"
integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=
url-toolkit@^2.1.6:
version "2.1.6"
resolved "https://registry.yarnpkg.com/url-toolkit/-/url-toolkit-2.1.6.tgz#6d03246499e519aad224c44044a4ae20544154f2"
integrity sha512-UaZ2+50am4HwrV2crR/JAf63Q4VvPYphe63WGeoJxeu8gmOm0qxPt+KsukfakPNrX9aymGNEkkaoICwn+OuvBw==
url@^0.11.0: url@^0.11.0:
version "0.11.0" version "0.11.0"
resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1"