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

Merge remote-tracking branch 'upstream/master' into global-globalize

This commit is contained in:
ferferga 2020-03-29 19:39:49 +02:00
commit 2d64cd0052
86 changed files with 2094 additions and 1817 deletions

View file

@ -3,6 +3,12 @@ env:
browser: true
amd: true
parserOptions:
ecmaVersion: 6
sourceType: module
ecmaFeatures:
impliedStrict: true
globals:
# New browser globals
DataView: readonly

View file

@ -18,16 +18,42 @@ const stream = require('webpack-stream');
const inject = require('gulp-inject');
const postcss = require('gulp-postcss');
const sass = require('gulp-sass');
const gulpif = require('gulp-if');
const lazypipe = require('lazypipe');
sass.compiler = require('node-sass')
sass.compiler = require('node-sass');
let config;
if (mode.production()) {
var config = require('./webpack.prod.js');
config = require('./webpack.prod.js');
} else {
var config = require('./webpack.dev.js');
config = require('./webpack.dev.js');
}
const options = {
javascript: {
query: ['src/**/*.js', '!src/bundle.js', '!src/standalone.js', '!src/scripts/apploader.js']
},
apploader: {
query: ['src/standalone.js', 'src/scripts/apploader.js']
},
css: {
query: ['src/**/*.css', 'src/**/*.scss']
},
html: {
query: ['src/**/*.html', '!src/index.html']
},
images: {
query: ['src/**/*.png', 'src/**/*.jpg', 'src/**/*.gif', 'src/**/*.svg']
},
copy: {
query: ['src/**/*.json', 'src/**/*.ico']
},
injectBundle: {
query: 'src/index.html'
}
};
function serve() {
browserSync.init({
server: {
@ -36,51 +62,99 @@ function serve() {
port: 8080
});
watch(['src/**/*.js', '!src/bundle.js'], javascript);
watch('src/bundle.js', webpack);
watch('src/**/*.css', css);
watch(['src/**/*.html', '!src/index.html'], html);
watch(['src/**/*.png', 'src/**/*.jpg', 'src/**/*.gif', 'src/**/*.svg'], images);
watch(['src/**/*.json', 'src/**/*.ico'], copy);
watch('src/index.html', injectBundle);
watch(['src/standalone.js', 'src/scripts/apploader.js'], standalone);
}
let events = ['add', 'change'];
function standalone() {
return src(['src/standalone.js', 'src/scripts/apploader.js'], { base: './src/' })
.pipe(concat('scripts/apploader.js'))
.pipe(dest('dist/'));
watch(options.javascript.query).on('all', function (event, path) {
if (events.includes(event)) {
javascript(path);
}
});
watch(options.apploader.query, apploader(true));
watch('src/bundle.js', webpack);
watch(options.css.query).on('all', function (event, path) {
if (events.includes(event)) {
css(path);
}
});
watch(options.html.query).on('all', function (event, path) {
if (events.includes(event)) {
html(path);
}
});
watch(options.images.query).on('all', function (event, path) {
if (events.includes(event)) {
images(path);
}
});
watch(options.copy.query).on('all', function (event, path) {
if (events.includes(event)) {
copy(path);
}
});
watch(options.injectBundle.query, injectBundle);
}
function clean() {
return del(['dist/']);
}
function javascript() {
return src(['src/**/*.js', '!src/bundle.js'], { base: './src/' })
.pipe(mode.development(sourcemaps.init({ loadMaps: true })))
.pipe(babel({
let pipelineJavascript = lazypipe()
.pipe(function () {
return mode.development(sourcemaps.init({ loadMaps: true }));
})
.pipe(function () {
return babel({
presets: [
['@babel/preset-env']
]
}))
.pipe(terser({
});
})
.pipe(function () {
return terser({
keep_fnames: true,
mangle: false
}))
.pipe(mode.development(sourcemaps.write('.')))
});
})
.pipe(function () {
return mode.development(sourcemaps.write('.'));
});
function javascript(query) {
return src(typeof query !== 'function' ? query : options.javascript.query, { base: './src/' })
.pipe(pipelineJavascript())
.pipe(dest('dist/'))
.pipe(browserSync.stream());
}
function apploader(standalone) {
function task() {
return src(options.apploader.query, { base: './src/' })
.pipe(gulpif(standalone, concat('scripts/apploader.js')))
.pipe(pipelineJavascript())
.pipe(dest('dist/'))
.pipe(browserSync.stream());
};
task.displayName = 'apploader';
return task;
}
function webpack() {
return stream(config)
.pipe(dest('dist/'))
.pipe(browserSync.stream());
}
function css() {
return src(['src/**/*.css', 'src/**/*.scss'], { base: './src/' })
function css(query) {
return src(typeof query !== 'function' ? query : options.css.query, { base: './src/' })
.pipe(mode.development(sourcemaps.init({ loadMaps: true })))
.pipe(sass().on('error', sass.logError))
.pipe(postcss())
@ -89,28 +163,28 @@ function css() {
.pipe(browserSync.stream());
}
function html() {
return src(['src/**/*.html', '!src/index.html'], { base: './src/' })
function html(query) {
return src(typeof query !== 'function' ? query : options.html.query, { base: './src/' })
.pipe(mode.production(htmlmin({ collapseWhitespace: true })))
.pipe(dest('dist/'))
.pipe(browserSync.stream());
}
function images() {
return src(['src/**/*.png', 'src/**/*.jpg', 'src/**/*.gif', 'src/**/*.svg'], { base: './src/' })
function images(query) {
return src(typeof query !== 'function' ? query : options.images.query, { base: './src/' })
.pipe(mode.production(imagemin()))
.pipe(dest('dist/'))
.pipe(browserSync.stream());
}
function copy() {
return src(['src/**/*.json', 'src/**/*.ico'], { base: './src/' })
function copy(query) {
return src(typeof query !== 'function' ? query : options.copy.query, { base: './src/' })
.pipe(dest('dist/'))
.pipe(browserSync.stream());
}
function injectBundle() {
return src('src/index.html', { base: './src/' })
return src(options.injectBundle.query, { base: './src/' })
.pipe(inject(
src(['src/scripts/apploader.js'], { read: false }, { base: './src/' }), { relative: true }
))
@ -118,6 +192,10 @@ function injectBundle() {
.pipe(browserSync.stream());
}
exports.default = series(clean, parallel(javascript, webpack, css, html, images, copy), injectBundle)
exports.standalone = series(exports.default, standalone)
exports.serve = series(exports.standalone, serve)
function build(standalone) {
return series(clean, parallel(javascript, apploader(standalone), webpack, css, html, images, copy), injectBundle);
}
exports.default = build(false);
exports.standalone = build(true);
exports.serve = series(exports.standalone, serve);

View file

@ -7,6 +7,7 @@
"devDependencies": {
"@babel/core": "^7.8.6",
"@babel/polyfill": "^7.8.7",
"@babel/plugin-transform-modules-amd": "^7.8.3",
"@babel/preset-env": "^7.8.6",
"autoprefixer": "^9.7.4",
"babel-loader": "^8.0.6",
@ -23,6 +24,7 @@
"gulp-cli": "^2.2.0",
"gulp-concat": "^2.6.1",
"gulp-htmlmin": "^5.0.1",
"gulp-if": "^3.0.0",
"gulp-imagemin": "^7.1.0",
"gulp-inject": "^5.0.5",
"gulp-mode": "^1.0.2",
@ -31,6 +33,7 @@
"gulp-sourcemaps": "^2.6.5",
"gulp-terser": "^1.2.0",
"html-webpack-plugin": "^3.2.0",
"lazypipe": "^1.0.2",
"node-sass": "^4.13.1",
"postcss-loader": "^3.0.0",
"postcss-preset-env": "^6.7.0",
@ -57,10 +60,10 @@
"jquery": "^3.4.1",
"jstree": "^3.3.7",
"libass-wasm": "https://github.com/jellyfin/JavascriptSubtitlesOctopus",
"libjass": "^0.11.0",
"material-design-icons-iconfont": "^5.0.1",
"native-promise-only": "^0.8.0-a",
"page": "^1.11.5",
"query-string": "^6.11.1",
"resize-observer-polyfill": "^1.5.1",
"shaka-player": "^2.5.9",
"sortablejs": "^1.10.2",
@ -69,9 +72,17 @@
"whatwg-fetch": "^3.0.0"
},
"babel": {
"presets": [
"@babel/preset-env"
]
"presets": ["@babel/preset-env"],
"overrides": [{
"test": [
"src/components/cardbuilder/cardBuilder.js",
"src/components/filedownloader.js",
"src/components/filesystem.js",
"src/components/input/keyboardnavigation.js",
"src/components/sanatizefilename.js"
],
"plugins": ["@babel/plugin-transform-modules-amd"]
}]
},
"browserslist": [
"last 2 Firefox versions",

View file

@ -63,6 +63,10 @@ progress[aria-valuenow]::before {
}
.adminDrawerLogo {
display: none;
}
.layout-mobile .adminDrawerLogo {
padding: 1.5em 1em 1.2em;
border-bottom: 1px solid #e0e0e0;
margin-bottom: 1em;
@ -161,7 +165,7 @@ div[data-role=controlgroup] a.ui-btn-active {
@media all and (min-width: 40em) {
.content-primary {
padding-top: 7em;
padding-top: 4.6em;
}
.withTabs .content-primary {

View file

@ -21,7 +21,7 @@
}
.libraryPage {
padding-top: 7em !important;
padding-top: 7em;
}
.itemDetailPage {
@ -115,7 +115,7 @@
display: -webkit-inline-box;
display: -webkit-inline-flex;
display: inline-flex;
margin: 0.3em 0 0 0.5em;
margin: 0 0 0 0.5em;
height: 1.7em;
-webkit-box-align: center;
-webkit-align-items: center;
@ -128,6 +128,10 @@
margin-top: 0;
}
.layout-mobile .pageTitleWithDefaultLogo {
background-image: url(../img/icon-transparent.png);
}
.headerLeft,
.skinHeader {
display: -webkit-box;
@ -242,7 +246,6 @@
}
@media all and (min-width: 40em) {
.dashboardDocument .adminDrawerLogo,
.dashboardDocument .mainDrawerButton {
display: none !important;
}
@ -268,12 +271,6 @@
}
}
@media all and (max-width: 60em) {
.libraryDocument .mainDrawerButton {
display: none;
}
}
@media all and (max-width: 84em) {
.withSectionTabs .headerTop {
padding-bottom: 0.55em;
@ -316,7 +313,7 @@
}
.dashboardDocument .mainDrawer-scrollContainer {
margin-top: 6em !important;
margin-top: 4.6em !important;
}
}
@ -1122,3 +1119,50 @@ div:not(.sectionTitleContainer-cards) > .sectionTitle-cards {
.itemsViewSettingsContainer > .button-flat {
margin: 0;
}
.layout-mobile #myPreferencesMenuPage {
padding-top: 3.75em;
}
.itemDetailsGroup {
margin-bottom: 1.5em;
}
.trackSelections {
max-width: 44em;
}
.detailsGroupItem,
.trackSelections .selectContainer {
display: flex;
max-width: 44em;
margin: 0 0 0.5em !important;
}
.trackSelections .selectContainer {
margin: 0 0 0.3em !important;
}
.detailsGroupItem .label,
.trackSelections .selectContainer .selectLabel {
cursor: default;
flex-grow: 0;
flex-shrink: 0;
flex-basis: 6.25em;
margin: 0 0.6em 0 0;
}
.trackSelections .selectContainer .selectLabel {
margin: 0 0.2em 0 0;
}
.trackSelections .selectContainer .detailTrackSelect {
font-size: inherit;
padding: 0;
overflow: hidden;
}
.trackSelections .selectContainer .selectArrowContainer .selectArrow {
margin-top: 0;
font-size: 1.4em;
}

View file

@ -16,6 +16,12 @@ _define("fetch", function() {
return fetch
});
// query-string
var query = require("query-string");
_define("queryString", function() {
return query;
});
// flvjs
var flvjs = require("flv.js/dist/flv").default;
_define("flvjs", function() {
@ -75,14 +81,7 @@ _define("sortable", function() {
// webcomponents
var webcomponents = require("webcomponents.js/webcomponents-lite");
_define("webcomponents", function() {
return webcomponents
});
// libjass
var libjass = require("libjass");
require("libjass/libjass.css");
_define("libjass", function() {
return libjass;
return webcomponents;
});
// libass-wasm
@ -97,11 +96,10 @@ _define("material-icons", function() {
return material_icons;
});
// Noto Sans
var jellyfin_noto = require("jellyfin-noto");
// noto font
var noto = require("jellyfin-noto");
_define("jellyfin-noto", function () {
return jellyfin_noto;
return noto;
});
// page.js

View file

@ -511,9 +511,16 @@ define(['loading', 'globalize', 'events', 'viewManager', 'layoutManager', 'skinM
return baseRoute;
}
var popstateOccurred = false;
window.addEventListener('popstate', function () {
popstateOccurred = true;
});
function getHandler(route) {
return function (ctx, next) {
ctx.isBack = popstateOccurred;
handleRoute(ctx, next, route);
popstateOccurred = false;
};
}

View file

@ -280,11 +280,11 @@ define(["appSettings", "browser", "events", "htmlMediaHelper", "globalize"], fun
//features.push("multiserver");
features.push("screensaver");
if (!browser.orsay && !browser.tizen && !browser.msie && (browser.firefox || browser.ps4 || browser.edge || supportsCue())) {
if (!browser.orsay && !browser.msie && (browser.firefox || browser.ps4 || browser.edge || supportsCue())) {
features.push("subtitleappearancesettings");
}
if (!browser.orsay && !browser.tizen) {
if (!browser.orsay) {
features.push("subtitleburnsettings");
}

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,34 @@
define([], function() {
'use strict';
if (window.appMode === "cordova" || window.appMode === "android") {
return {
load: function () {
window.chrome = window.chrome || {};
return Promise.resolve();
}
};
} else {
var ccLoaded = false;
return {
load: function () {
if (ccLoaded) {
return Promise.resolve();
}
return new Promise(function (resolve, reject) {
var fileref = document.createElement("script");
fileref.setAttribute("type", "text/javascript");
fileref.onload = function () {
ccLoaded = true;
resolve();
};
fileref.setAttribute("src", "https://www.gstatic.com/cv/js/sender/v1/cast_sender.js");
document.querySelector("head").appendChild(fileref);
});
}
};
}
});

View file

@ -1,8 +1,32 @@
define(['dialog', 'globalize'], function (dialog, globalize) {
define(["browser", "dialog", "globalize"], function(browser, dialog, globalize) {
'use strict';
return function (text, title) {
function replaceAll(str, find, replace) {
return str.split(find).join(replace);
}
if (browser.tv && window.confirm) {
// Use the native confirm dialog
return function (options) {
if (typeof options === 'string') {
options = {
title: '',
text: options
};
}
var text = replaceAll(options.text || '', '<br/>', '\n');
var result = confirm(text);
if (result) {
return Promise.resolve();
} else {
return Promise.reject();
}
};
} else {
// Use our own dialog
return function (text, title) {
var options;
if (typeof text === 'string') {
options = {
@ -37,4 +61,5 @@ define(['dialog', 'globalize'], function (dialog, globalize) {
return Promise.reject();
});
};
}
});

View file

@ -1,27 +0,0 @@
define([], function () {
'use strict';
function replaceAll(str, find, replace) {
return str.split(find).join(replace);
}
return function (options) {
if (typeof options === 'string') {
options = {
title: '',
text: options
};
}
var text = replaceAll(options.text || '', '<br/>', '\n');
var result = confirm(text);
if (result) {
return Promise.resolve();
} else {
return Promise.reject();
}
};
});

View file

@ -169,6 +169,15 @@ define(['appRouter', 'focusManager', 'browser', 'layoutManager', 'inputManager',
}, {
passive: true
});
dom.addEventListener((dlg.dialogContainer || backdrop), 'contextmenu', function (e) {
if (e.target === dlg.dialogContainer) {
// Close the application dialog menu
close(dlg);
// Prevent the default browser context menu from appearing
e.preventDefault();
}
});
}
function isHistoryEnabled(dlg) {

View file

@ -74,17 +74,17 @@ define([], function () {
}
function addEventListenerWithOptions(target, type, handler, options) {
var optionsOrCapture = options;
var optionsOrCapture = options || {};
if (!supportsCaptureOption) {
optionsOrCapture = options.capture;
optionsOrCapture = optionsOrCapture.capture;
}
target.addEventListener(type, handler, optionsOrCapture);
}
function removeEventListenerWithOptions(target, type, handler, options) {
var optionsOrCapture = options;
var optionsOrCapture = options || {};
if (!supportsCaptureOption) {
optionsOrCapture = options.capture;
optionsOrCapture = optionsOrCapture.capture;
}
target.removeEventListener(type, handler, optionsOrCapture);
}

View file

@ -1,8 +1,6 @@
define(['multi-download'], function (multiDownload) {
'use strict';
import multiDownload from "multi-download"
return {
download: function (items) {
export function download(items) {
if (window.NativeShell) {
items.map(function (item) {
@ -13,6 +11,4 @@ define(['multi-download'], function (multiDownload) {
return item.url;
}));
}
}
};
});
}

View file

@ -1,18 +1,13 @@
define([], function () {
'use strict';
return {
fileExists: function (path) {
export function fileExists(path) {
if (window.NativeShell && window.NativeShell.FileSystem) {
return window.NativeShell.FileSystem.fileExists(path);
}
return Promise.reject();
},
directoryExists: function (path) {
}
export function directoryExists(path) {
if (window.NativeShell && window.NativeShell.FileSystem) {
return window.NativeShell.FileSystem.directoryExists(path);
}
return Promise.reject();
}
};
});
}

View file

@ -80,7 +80,6 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa
if (track) {
var format = (track.Codec || '').toLowerCase();
if (format === 'ssa' || format === 'ass') {
// libjass is needed here
return false;
}
}
@ -1047,7 +1046,7 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa
lastCustomTrackMs = 0;
}
function renderWithSubtitlesOctopus(videoElement, track, item) {
function renderSsaAss(videoElement, track, item) {
var attachments = self._currentPlayOptions.mediaSource.MediaAttachments || [];
var options = {
video: videoElement,
@ -1066,82 +1065,6 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa
});
}
function renderWithLibjass(videoElement, track, item) {
var rendererSettings = {};
if (browser.ps4) {
// Text outlines are not rendering very well
rendererSettings.enableSvg = false;
} else if (browser.edge || browser.msie) {
// svg not rendering at all
rendererSettings.enableSvg = false;
}
// probably safer to just disable everywhere
rendererSettings.enableSvg = false;
require(['libjass', 'ResizeObserver'], function (libjass, ResizeObserver) {
libjass.ASS.fromUrl(getTextTrackUrl(track, item)).then(function (ass) {
var clock = new libjass.renderers.ManualClock();
currentClock = clock;
// Create a DefaultRenderer using the video element and the ASS object
var renderer = new libjass.renderers.WebRenderer(ass, clock, videoElement.parentNode, rendererSettings);
currentAssRenderer = renderer;
renderer.addEventListener("ready", function () {
try {
renderer.resize(videoElement.offsetWidth, videoElement.offsetHeight, 0, 0);
if (!self._resizeObserver) {
self._resizeObserver = new ResizeObserver(onVideoResize, {});
self._resizeObserver.observe(videoElement);
}
//clock.pause();
} catch (ex) {
//alert(ex);
}
});
}, function () {
htmlMediaHelper.onErrorInternal(self, 'mediadecodeerror');
});
});
}
function renderSsaAss(videoElement, track, item) {
if (supportsCanvas() && supportsWebWorkers()) {
console.debug('rendering subtitles with SubtitlesOctopus');
renderWithSubtitlesOctopus(videoElement, track, item);
} else {
console.debug('rendering subtitles with libjass');
renderWithLibjass(videoElement, track, item);
}
}
function onVideoResize() {
if (browser.iOS) {
// the new sizes will be delayed for about 500ms with wkwebview
setTimeout(resetVideoRendererSize, 500);
} else {
resetVideoRendererSize();
}
}
function resetVideoRendererSize() {
var renderer = currentAssRenderer;
if (renderer) {
var videoElement = self._mediaElement;
var width = videoElement.offsetWidth;
var height = videoElement.offsetHeight;
console.debug('videoElement resized: ' + width + 'x' + height);
renderer.resize(width, height, 0, 0);
}
}
function requiresCustomSubtitlesElement() {
// after a system update, ps4 isn't showing anything when creating a track element dynamically
@ -1231,7 +1154,6 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa
if (!itemHelper.isLocalItem(item) || track.IsExternal) {
var format = (track.Codec || '').toLowerCase();
if (format === 'ssa' || format === 'ass') {
// libjass is needed here
renderSsaAss(videoElement, track, item);
return;
}

View file

@ -1,11 +1,10 @@
define(["inputManager", "layoutManager"], function (inputManager, layoutManager) {
"use strict";
import inputManager from "inputManager";
import layoutManager from "layoutManager";
/**
/**
* Key name mapping.
*/
// Add more to support old browsers
var KeyNames = {
const KeyNames = {
13: "Enter",
19: "Pause",
27: "Escape",
@ -32,57 +31,57 @@ define(["inputManager", "layoutManager"], function (inputManager, layoutManager)
10233: "MediaTrackNext",
// MediaPlayPause (Tizen)
10252: "MediaPlayPause"
};
};
/**
/**
* Keys used for keyboard navigation.
*/
var NavigationKeys = ["ArrowLeft", "ArrowRight", "ArrowUp", "ArrowDown"];
const NavigationKeys = ["ArrowLeft", "ArrowRight", "ArrowUp", "ArrowDown"];
var hasFieldKey = false;
try {
let hasFieldKey = false;
try {
hasFieldKey = "key" in new KeyboardEvent("keydown");
} catch (e) {
} catch (e) {
console.error("error checking 'key' field");
}
}
if (!hasFieldKey) {
if (!hasFieldKey) {
// Add [a..z]
for (var i = 65; i <= 90; i++) {
for (let i = 65; i <= 90; i++) {
KeyNames[i] = String.fromCharCode(i).toLowerCase();
}
}
}
/**
/**
* Returns key name from event.
*
* @param {KeyboardEvent} keyboard event
* @param {KeyboardEvent} event keyboard event
* @return {string} key name
*/
function getKeyName(event) {
export function getKeyName(event) {
return KeyNames[event.keyCode] || event.key;
}
}
/**
/**
* Returns _true_ if key is used for navigation.
*
* @param {string} key name
* @return {boolean} _true_ if key is used for navigation
*/
function isNavigationKey(key) {
export function isNavigationKey(key) {
return NavigationKeys.indexOf(key) != -1;
}
}
function enable() {
export function enable() {
document.addEventListener("keydown", function (e) {
var key = getKeyName(e);
const key = getKeyName(e);
// Ignore navigation keys for non-TV
if (!layoutManager.tv && isNavigationKey(key)) {
return;
}
var capture = true;
let capture = true;
switch (key) {
case "ArrowLeft":
@ -144,22 +143,15 @@ define(["inputManager", "layoutManager"], function (inputManager, layoutManager)
e.preventDefault();
}
});
}
}
// Gamepad initialisation. No script is required if no gamepads are present at init time, saving a bit of resources.
// Whenever the gamepad is connected, we hand all the control of the gamepad to gamepadtokey.js by removing the event handler
function attachGamepadScript(e) {
// Gamepad initialisation. No script is required if no gamepads are present at init time, saving a bit of resources.
// Whenever the gamepad is connected, we hand all the control of the gamepad to gamepadtokey.js by removing the event handler
function attachGamepadScript(e) {
console.log("Gamepad connected! Attaching gamepadtokey.js script");
window.removeEventListener("gamepadconnected", attachGamepadScript);
require(["components/input/gamepadtokey"]);
}
}
// No need to check for gamepads manually at load time, the eventhandler will be fired for that
window.addEventListener("gamepadconnected", attachGamepadScript);
return {
enable: enable,
getKeyName: getKeyName,
isNavigationKey: isNavigationKey
};
});
// No need to check for gamepads manually at load time, the eventhandler will be fired for that
window.addEventListener("gamepadconnected", attachGamepadScript);

View file

@ -396,6 +396,12 @@ define(["globalize", "dom", "emby-checkbox", "emby-select", "emby-input"], funct
parent.querySelector(".chkEnableEmbeddedTitlesContainer").classList.remove("hide");
}
if (contentType === "tvshows") {
parent.querySelector(".chkEnableEmbeddedEpisodeInfosContainer").classList.remove("hide");
} else {
parent.querySelector(".chkEnableEmbeddedEpisodeInfosContainer").classList.add("hide");
}
return populateMetadataSettings(parent, contentType);
}
@ -493,6 +499,7 @@ define(["globalize", "dom", "emby-checkbox", "emby-select", "emby-input"], funct
SeasonZeroDisplayName: parent.querySelector("#txtSeasonZeroName").value,
AutomaticRefreshIntervalDays: parseInt(parent.querySelector("#selectAutoRefreshInterval").value),
EnableEmbeddedTitles: parent.querySelector("#chkEnableEmbeddedTitles").checked,
EnableEmbeddedEpisodeInfos: parent.querySelector("#chkEnableEmbeddedEpisodeInfos").checked,
SkipSubtitlesIfEmbeddedSubtitlesPresent: parent.querySelector("#chkSkipIfGraphicalSubsPresent").checked,
SkipSubtitlesIfAudioTrackMatches: parent.querySelector("#chkSkipIfAudioTrackPresent").checked,
SaveSubtitlesWithMedia: parent.querySelector("#chkSaveSubtitlesLocally").checked,
@ -545,6 +552,7 @@ define(["globalize", "dom", "emby-checkbox", "emby-select", "emby-input"], funct
parent.querySelector("#chkImportMissingEpisodes").checked = options.ImportMissingEpisodes;
parent.querySelector(".chkAutomaticallyGroupSeries").checked = options.EnableAutomaticSeriesGrouping;
parent.querySelector("#chkEnableEmbeddedTitles").checked = options.EnableEmbeddedTitles;
parent.querySelector("#chkEnableEmbeddedEpisodeInfos").checked = options.EnableEmbeddedEpisodeInfos;
parent.querySelector("#chkSkipIfGraphicalSubsPresent").checked = options.SkipSubtitlesIfEmbeddedSubtitlesPresent;
parent.querySelector("#chkSaveSubtitlesLocally").checked = options.SaveSubtitlesWithMedia;
parent.querySelector("#chkSkipIfAudioTrackPresent").checked = options.SkipSubtitlesIfAudioTrackMatches;

View file

@ -28,6 +28,13 @@
</label>
<div class="fieldDescription checkboxFieldDescription">${PreferEmbeddedTitlesOverFileNamesHelp}</div>
</div>
<div class="checkboxContainer checkboxContainer-withDescription chkEnableEmbeddedEpisodeInfosContainer hide advanced">
<label>
<input is="emby-checkbox" type="checkbox" id="chkEnableEmbeddedEpisodeInfos" />
<span>${PreferEmbeddedEpisodeInfosOverFileNames}</span>
</label>
<div class="fieldDescription checkboxFieldDescription">${PreferEmbeddedEpisodeInfosOverFileNamesHelp}</div>
</div>
<div class="checkboxContainer checkboxContainer-withDescription advanced">
<label>

View file

@ -238,13 +238,6 @@
background-color: transparent !important;
}
.listItemMediaInfo {
/* Don't display if flex not supported */
display: none;
align-items: center;
margin-right: 1em;
}
.listGroupHeader-first {
margin-top: 0;
}

View file

@ -3162,7 +3162,8 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla
// User clicked stop or content ended
var state = self.getPlayerState(player);
var streamInfo = getPlayerData(player).streamInfo;
var data = getPlayerData(player);
var streamInfo = data.streamInfo;
var nextItem = self._playNextAfterEnded ? self._playQueueManager.getNextItemInfo() : null;
@ -3210,6 +3211,9 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla
showPlaybackInfoErrorMessage(self, displayErrorCode, nextItem);
} else if (nextItem) {
self.nextTrack();
} else {
// Nothing more to play - clear data
data.streamInfo = null;
}
}

View file

@ -1,28 +0,0 @@
define([], function () {
'use strict';
function replaceAll(str, find, replace) {
return str.split(find).join(replace);
}
return function (options) {
if (typeof options === 'string') {
options = {
label: '',
text: options
};
}
var label = replaceAll(options.label || '', '<br/>', '\n');
var result = prompt(label, options.text || '');
if (result) {
return Promise.resolve(result);
} else {
return Promise.reject(result);
}
};
});

View file

@ -1,6 +1,10 @@
define(['dialogHelper', 'layoutManager', 'scrollHelper', 'globalize', 'dom', 'require', 'material-icons', 'emby-button', 'paper-icon-button-light', 'emby-input', 'formDialogStyle'], function (dialogHelper, layoutManager, scrollHelper, globalize, dom, require) {
define(["browser", 'dialogHelper', 'layoutManager', 'scrollHelper', 'globalize', 'dom', 'require', 'material-icons', 'emby-button', 'paper-icon-button-light', 'emby-input', 'formDialogStyle'], function(browser, dialogHelper, layoutManager, scrollHelper, globalize, dom, require) {
'use strict';
function replaceAll(str, find, replace) {
return str.split(find).join(replace);
}
function setInputProperties(dlg, options) {
var txtInput = dlg.querySelector('#txtInput');
@ -13,7 +17,6 @@ define(['dialogHelper', 'layoutManager', 'scrollHelper', 'globalize', 'dom', 're
}
function showDialog(options, template) {
var dialogOptions = {
removeOnClose: true,
scrollY: false
@ -71,26 +74,40 @@ define(['dialogHelper', 'layoutManager', 'scrollHelper', 'globalize', 'dom', 're
dlg.style.minWidth = (Math.min(400, dom.getWindowSize().innerWidth - 50)) + 'px';
return dialogHelper.open(dlg).then(function () {
if (layoutManager.tv) {
scrollHelper.centerFocus.off(dlg.querySelector('.formDialogContent'), false);
}
var value = submitValue;
if (value) {
return value;
if (submitValue) {
return submitValue;
} else {
return Promise.reject();
}
});
}
if ((browser.tv || browser.xboxOne) && window.confirm) {
return function (options) {
if (typeof options === 'string') {
options = {
label: '',
text: options
};
}
var label = replaceAll(options.label || '', '<br/>', '\n');
var result = prompt(label, options.text || '');
if (result) {
return Promise.resolve(result);
} else {
return Promise.reject(result);
}
};
} else {
return function (options) {
return new Promise(function (resolve, reject) {
require(['text!./prompt.template.html'], function (template) {
if (typeof options === 'string') {
options = {
title: '',
@ -101,4 +118,5 @@ define(['dialogHelper', 'layoutManager', 'scrollHelper', 'globalize', 'dom', 're
});
});
};
}
});

View file

@ -1,33 +1,30 @@
// From https://github.com/parshap/node-sanitize-filename
define([], function () {
'use strict';
const illegalRe = /[\/\?<>\\:\*\|":]/g;
// eslint-disable-next-line no-control-regex
const controlRe = /[\x00-\x1f\x80-\x9f]/g;
const reservedRe = /^\.+$/;
const windowsReservedRe = /^(con|prn|aux|nul|com[0-9]|lpt[0-9])(\..*)?$/i;
const windowsTrailingRe = /[\. ]+$/;
var illegalRe = /[\/\?<>\\:\*\|":]/g;
// eslint-disable-next-line no-control-regex
var controlRe = /[\x00-\x1f\x80-\x9f]/g;
var reservedRe = /^\.+$/;
var windowsReservedRe = /^(con|prn|aux|nul|com[0-9]|lpt[0-9])(\..*)?$/i;
var windowsTrailingRe = /[\. ]+$/;
function isHighSurrogate(codePoint) {
function isHighSurrogate(codePoint) {
return codePoint >= 0xd800 && codePoint <= 0xdbff;
}
}
function isLowSurrogate(codePoint) {
function isLowSurrogate(codePoint) {
return codePoint >= 0xdc00 && codePoint <= 0xdfff;
}
}
function getByteLength(string) {
function getByteLength(string) {
if (typeof string !== "string") {
throw new Error("Input must be string");
}
var charLength = string.length;
var byteLength = 0;
var codePoint = null;
var prevCodePoint = null;
for (var i = 0; i < charLength; i++) {
const charLength = string.length;
let byteLength = 0;
let codePoint = null;
let prevCodePoint = null;
for (let i = 0; i < charLength; i++) {
codePoint = string.charCodeAt(i);
// handle 4-byte non-BMP chars
// low surrogate
@ -49,19 +46,19 @@ define([], function () {
}
return byteLength;
}
}
function truncate(string, byteLength) {
function truncate(string, byteLength) {
if (typeof string !== "string") {
throw new Error("Input must be string");
}
var charLength = string.length;
var curByteLength = 0;
var codePoint;
var segment;
const charLength = string.length;
let curByteLength = 0;
let codePoint;
let segment;
for (var i = 0; i < charLength; i += 1) {
for (let i = 0; i < charLength; i += 1) {
codePoint = string.charCodeAt(i);
segment = string[i];
@ -80,17 +77,14 @@ define([], function () {
}
return string;
}
}
return {
sanitize: function (input, replacement) {
var sanitized = input
export function sanitize(input, replacement) {
const sanitized = input
.replace(illegalRe, replacement)
.replace(controlRe, replacement)
.replace(reservedRe, replacement)
.replace(windowsReservedRe, replacement)
.replace(windowsTrailingRe, replacement);
return truncate(sanitized, 255);
}
};
});
}

View file

@ -10,12 +10,6 @@ define([], function () {
}
},
canExec: false,
exec: function (options) {
// options.path
// options.arguments
return Promise.reject();
},
enableFullscreen: function () {
if (window.NativeShell) {
window.NativeShell.enableFullscreen();

View file

@ -1,4 +1,4 @@
define(['playbackManager', 'text!./subtitlesync.template.html', 'css!./subtitlesync'], function (playbackManager, template, css) {
define(['playbackManager', 'layoutManager', 'text!./subtitlesync.template.html', 'css!./subtitlesync'], function (playbackManager, layoutManager, template, css) {
"use strict";
var player;
@ -10,6 +10,7 @@ define(['playbackManager', 'text!./subtitlesync.template.html', 'css!./subtitles
function init(instance) {
var parent = document.createElement('div');
document.body.appendChild(parent);
parent.innerHTML = template;
subtitleSyncSlider = parent.querySelector(".subtitleSyncSlider");
@ -17,6 +18,14 @@ define(['playbackManager', 'text!./subtitlesync.template.html', 'css!./subtitles
subtitleSyncCloseButton = parent.querySelector(".subtitleSync-closeButton");
subtitleSyncContainer = parent.querySelector(".subtitleSyncContainer");
if (layoutManager.tv) {
subtitleSyncSlider.classList.add("focusable");
// HACK: Delay to give time for registered element attach (Firefox)
setTimeout(function () {
subtitleSyncSlider.enableKeyboardDragging();
}, 0);
}
subtitleSyncContainer.classList.add("hide");
subtitleSyncTextField.updateOffset = function(offset) {
@ -87,8 +96,6 @@ define(['playbackManager', 'text!./subtitlesync.template.html', 'css!./subtitles
SubtitleSync.prototype.toggle("forceToHide");
});
document.body.appendChild(parent);
instance.element = parent;
}

View file

@ -264,17 +264,13 @@ define(["jQuery", "loading", "emby-checkbox", "listViewStyle", "emby-input", "em
self.init = function () {
options = options || {};
if (options.showCancelButton) {
page.querySelector(".btnCancel").classList.remove("hide");
} else {
page.querySelector(".btnCancel").classList.add("hide");
}
// Only hide the buttons if explicitly set to false; default to showing if undefined or null
// FIXME: rename this option to clarify logic
var hideCancelButton = options.showCancelButton === false;
page.querySelector(".btnCancel").classList.toggle("hide", hideCancelButton);
if (options.showSubmitButton) {
page.querySelector(".btnSubmitListings").classList.remove("hide");
} else {
page.querySelector(".btnSubmitListings").classList.add("hide");
}
var hideSubmitButton = options.showSubmitButton === false;
page.querySelector(".btnSubmitListings").classList.toggle("hide", hideSubmitButton);
$(".formLogin", page).on("submit", function () {
submitLoginForm();

View file

@ -163,17 +163,13 @@ define(["jQuery", "loading", "emby-checkbox", "emby-input", "listViewStyle", "pa
self.init = function () {
options = options || {};
if (false !== options.showCancelButton) {
page.querySelector(".btnCancel").classList.remove("hide");
} else {
page.querySelector(".btnCancel").classList.add("hide");
}
// Only hide the buttons if explicitly set to false; default to showing if undefined or null
// FIXME: rename this option to clarify logic
var hideCancelButton = options.showCancelButton === false;
page.querySelector(".btnCancel").classList.toggle("hide", hideCancelButton);
if (false !== options.showSubmitButton) {
page.querySelector(".btnSubmitListings").classList.remove("hide");
} else {
page.querySelector(".btnSubmitListings").classList.add("hide");
}
var hideSubmitButton = options.showSubmitButton === false;
page.querySelector(".btnSubmitListings").classList.toggle("hide", hideSubmitButton);
$("form", page).on("submit", function () {
submitListingsForm();

View file

@ -703,26 +703,9 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "userSetti
}
}
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) {
var html = [];
if (item.DateCreated && itemHelper.enableDateAddedDisplay(item)) {
var dateCreated = datetime.parseISO8601Date(item.DateCreated);
html.push(globalize.translate("AddedOnValue", datetime.toLocaleDateString(dateCreated) + " " + datetime.getDisplayTime(dateCreated)));
}
var links = [];
if (!layoutManager.tv && item.HomePageUrl) {
@ -736,7 +719,7 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "userSetti
}
if (links.length) {
html.push(globalize.translate("LinksValue", links.join(", ")));
html.push(links.join(", "));
}
linksElem.innerHTML = html.join(", ");
@ -1032,13 +1015,17 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "userSetti
context: context
}) + '">' + p.Name + "</a>";
}).join(", ");
var elem = page.querySelector(".genres");
elem.innerHTML = globalize.translate(genres.length > 1 ? "GenresValue" : "GenreValue", html);
var genresLabel = page.querySelector(".genresLabel");
genresLabel.innerHTML = globalize.translate(genres.length > 1 ? "Genres" : "Genre");
var genresValue = page.querySelector(".genres");
genresValue.innerHTML = html;
var genresGroup = page.querySelector(".genresGroup");
if (genres.length) {
elem.classList.remove("hide");
genresGroup.classList.remove("hide");
} else {
elem.classList.add("hide");
genresGroup.classList.add("hide");
}
}
@ -1056,13 +1043,17 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "userSetti
context: context
}) + '">' + p.Name + "</a>";
}).join(", ");
var elem = page.querySelector(".directors");
elem.innerHTML = globalize.translate(directors.length > 1 ? "DirectorsValue" : "DirectorValue", html);
var directorsLabel = page.querySelector(".directorsLabel");
directorsLabel.innerHTML = globalize.translate(directors.length > 1 ? "Directors" : "Director");
var directorsValue = page.querySelector(".directors");
directorsValue.innerHTML = html;
var directorsGroup = page.querySelector(".directorsGroup");
if (directors.length) {
elem.classList.remove("hide");
directorsGroup.classList.remove("hide");
} else {
elem.classList.add("hide");
directorsGroup.classList.add("hide");
}
}
@ -1120,7 +1111,6 @@ define(["loading", "appRouter", "layoutManager", "connectionManager", "userSetti
reloadUserDataButtons(page, item);
renderLinks(externalLinksElem, item);
renderUserInfo(page, item);
renderTags(page, item);
renderSeriesAirTime(page, item, isStatic);
}

View file

@ -671,7 +671,8 @@ define(["playbackManager", "dom", "inputManager", "datetime", "itemHelper", "med
}
function onTimeUpdate(e) {
if (isEnabled) {
// Test for 'currentItem' is required for Firefox since its player spams 'timeupdate' events even being at breakpoint
if (isEnabled && currentItem) {
var now = new Date().getTime();
if (!(now - lastUpdateTime < 700)) {

View file

@ -1,4 +1,4 @@
define(["apphost", "connectionManager", "listViewStyle", "emby-button"], function(appHost, connectionManager) {
define(["apphost", "connectionManager", "layoutManager", "listViewStyle", "emby-button"], function(appHost, connectionManager, layoutManager) {
"use strict";
return function(view, params) {
@ -10,6 +10,10 @@ define(["apphost", "connectionManager", "listViewStyle", "emby-button"], functio
Dashboard.selectServer();
});
view.querySelector(".clientSettings").addEventListener("click", function () {
window.NativeShell.openClientSettings();
});
view.addEventListener("viewshow", function() {
// this page can also be used by admins to change user preferences from the user edit page
var userId = params.userId || Dashboard.getCurrentUserId();
@ -21,6 +25,12 @@ define(["apphost", "connectionManager", "listViewStyle", "emby-button"], functio
page.querySelector(".lnkPlaybackPreferences").setAttribute("href", "mypreferencesplayback.html?userId=" + userId);
page.querySelector(".lnkSubtitlePreferences").setAttribute("href", "mypreferencessubtitles.html?userId=" + userId);
if (window.NativeShell && window.NativeShell.AppHost.supports("clientsettings")) {
page.querySelector(".clientSettings").classList.remove("hide");
} else {
page.querySelector(".clientSettings").classList.add("hide");
}
if (appHost.supports("multiserver")) {
page.querySelector(".selectServer").classList.remove("hide");
} else {
@ -33,6 +43,12 @@ define(["apphost", "connectionManager", "listViewStyle", "emby-button"], functio
page.querySelector(".adminSection").classList.add("hide");
}
if (layoutManager.mobile) {
page.querySelector(".headerUsername").classList.add("hide");
page.querySelector(".adminSection").classList.add("hide");
page.querySelector(".userSection").classList.add("hide");
}
ApiClient.getUser(userId).then(function(user) {
page.querySelector(".headerUsername").innerHTML = user.Name;
if (!user.Policy.IsAdministrator) {

View file

@ -55,7 +55,7 @@
height: 1.83em;
margin: 0;
overflow: hidden;
border: 2px solid currentcolor;
border: 0.14em solid currentcolor;
border-radius: 0.14em;
z-index: 2;
display: flex;

View file

@ -5,7 +5,8 @@ define(['browser', 'dom', 'css!./emby-checkbox', 'registerElement'], function (b
function onKeyDown(e) {
// Don't submit form on enter
if (e.keyCode === 13) {
// Real (non-emulator) Tizen does nothing on Space
if (e.keyCode === 13 || e.keyCode === 32) {
e.preventDefault();
this.checked = !this.checked;

View file

@ -4,7 +4,6 @@
display: inline-block;
box-sizing: border-box;
margin: 0;
padding-left: 24px;
}
.radio-label-block {
@ -31,67 +30,82 @@
border: none;
}
.mdl-radio__outer-circle {
position: absolute;
top: 4px;
left: 0;
display: inline-block;
box-sizing: border-box;
width: 16px;
height: 16px;
margin: 0;
cursor: pointer;
border: 2px solid currentcolor;
.mdl-radio__circles {
position: relative;
margin-right: 0.54em;
width: 1.08em;
height: 1.08em;
border-radius: 50%;
z-index: 2;
cursor: pointer;
}
.mdl-radio__button:checked + .mdl-radio__label + .mdl-radio__outer-circle {
border: 2px solid #00a4dc;
.mdl-radio__circles svg {
width: 100%;
height: 100%;
position: absolute;
top: 0;
left: 0;
z-index: 1;
overflow: visible;
}
.mdl-radio__button:disabled + .mdl-radio__label + .mdl-radio__outer-circle {
border: 2px solid rgba(0, 0, 0, 0.26);
.mdl-radio__button:disabled + .mdl-radio__circles {
cursor: auto;
}
.mdl-radio__button:disabled + .mdl-radio__circles .mdl-radio__outer-circle {
color: rgba(0, 0, 0, 0.26);
}
.mdl-radio.show-focus .mdl-radio__button:focus + .mdl-radio__circles .mdl-radio__outer-circle {
color: #00a4dc;
}
.mdl-radio__inner-circle {
position: absolute;
z-index: 1;
margin: 0;
top: 8px;
left: 4px;
box-sizing: border-box;
width: 8px;
height: 8px;
cursor: pointer;
transition-duration: 0.28s;
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
transition-duration: 0.2s;
transition-property: -webkit-transform;
transition-property: transform;
transition-property: transform, -webkit-transform;
-webkit-transform: scale3d(0, 0, 0);
transform: scale3d(0, 0, 0);
-webkit-transform: scale(0);
transform: scale(0);
transform-origin: 50% 50%;
}
.mdl-radio__button:checked + .mdl-radio__circles .mdl-radio__inner-circle {
-webkit-transform: scale(1);
transform: scale(1);
}
.mdl-radio__button:disabled + .mdl-radio__circles .mdl-radio__inner-circle {
color: rgba(0, 0, 0, 0.26);
}
.mdl-radio.show-focus .mdl-radio__button:focus + .mdl-radio__circles .mdl-radio__inner-circle {
color: #00a4dc;
}
.mdl-radio__focus-circle {
position: absolute;
top: 0;
left: 0;
box-sizing: border-box;
width: 100%;
height: 100%;
margin: 0;
border-radius: 50%;
background: #00a4dc;
opacity: 0.26;
transition-duration: 0.2s;
transition-property: -webkit-transform;
transition-property: transform;
transition-property: transform, -webkit-transform;
-webkit-transform: scale(0);
transform: scale(0);
}
.mdl-radio__button:checked + .mdl-radio__label + .mdl-radio__outer-circle + .mdl-radio__inner-circle {
-webkit-transform: scale3d(1, 1, 1);
transform: scale3d(1, 1, 1);
}
.mdl-radio__button:disabled + .mdl-radio__label + .mdl-radio__outer-circle + .mdl-radio__inner-circle {
background: rgba(0, 0, 0, 0.26);
cursor: auto;
}
.mdl-radio__button:focus + .mdl-radio__label + .mdl-radio__outer-circle + .mdl-radio__inner-circle {
box-shadow: 0 0 0 10px rgba(255, 255, 255, 0.76);
}
.mdl-radio__button:checked:focus + .mdl-radio__label + .mdl-radio__outer-circle + .mdl-radio__inner-circle {
box-shadow: 0 0 0 10px rgba(0, 164, 220, 0.26);
.mdl-radio.show-focus .mdl-radio__button:focus + .mdl-radio__circles .mdl-radio__focus-circle {
-webkit-transform: scale(1.75);
transform: scale(1.75);
}
.mdl-radio__label {

View file

@ -1,4 +1,4 @@
define(['css!./emby-radio', 'registerElement'], function () {
define(['layoutManager', 'css!./emby-radio', 'registerElement'], function (layoutManager) {
'use strict';
var EmbyRadioPrototype = Object.create(HTMLInputElement.prototype);
@ -6,16 +6,24 @@ define(['css!./emby-radio', 'registerElement'], function () {
function onKeyDown(e) {
// Don't submit form on enter
if (e.keyCode === 13) {
// Real (non-emulator) Tizen does nothing on Space
if (e.keyCode === 13 || e.keyCode === 32) {
e.preventDefault();
if (!this.checked) {
this.checked = true;
this.dispatchEvent(new CustomEvent('change', {
bubbles: true
}));
}
return false;
}
}
EmbyRadioPrototype.attachedCallback = function () {
var showFocus = !layoutManager.mobile;
if (this.getAttribute('data-radio') === 'true') {
return;
@ -30,13 +38,36 @@ define(['css!./emby-radio', 'registerElement'], function () {
labelElement.classList.add('mdl-radio');
labelElement.classList.add('mdl-js-radio');
labelElement.classList.add('mdl-js-ripple-effect');
if (showFocus) {
labelElement.classList.add('show-focus');
}
var labelTextElement = labelElement.querySelector('span');
labelTextElement.classList.add('radioButtonLabel');
labelTextElement.classList.add('mdl-radio__label');
labelElement.insertAdjacentHTML('beforeend', '<span class="mdl-radio__outer-circle"></span><span class="mdl-radio__inner-circle"></span>');
var html = '';
html += '<div class="mdl-radio__circles">';
html += '<svg>';
html += '<defs>';
html += '<clipPath id="cutoff">';
html += '<circle cx="50%" cy="50%" r="50%" />';
html += '</clipPath>';
html += '</defs>';
html += '<circle class="mdl-radio__outer-circle" cx="50%" cy="50%" r="50%" fill="none" stroke="currentcolor" stroke-width="0.26em" clip-path="url(#cutoff)" />';
html += '<circle class="mdl-radio__inner-circle" cx="50%" cy="50%" r="25%" fill="currentcolor" />';
html += '</svg>';
if (showFocus) {
html += '<div class="mdl-radio__focus-circle"></div>';
}
html += '</div>';
this.insertAdjacentHTML('afterend', html);
this.addEventListener('keydown', onKeyDown);
};

View file

@ -109,7 +109,7 @@
}
.selectArrow {
margin-top: 0.35em;
margin-top: 1.2em;
font-size: 1.7em;
}

View file

@ -144,7 +144,7 @@ define(['layoutManager', 'browser', 'actionsheet', 'css!./emby-select', 'registe
this.parentNode.insertBefore(label, this);
if (this.classList.contains('emby-select-withcolor')) {
this.parentNode.insertAdjacentHTML('beforeend', '<div class="selectArrowContainer"><div style="visibility:hidden;">0</div><i class="selectArrow material-icons keyboard_arrow_down"></i></div>');
this.parentNode.insertAdjacentHTML('beforeend', '<div class="selectArrowContainer"><div style="visibility:hidden;display:none;">0</div><i class="selectArrow material-icons keyboard_arrow_down"></i></div>');
}
};

View file

@ -111,22 +111,32 @@
<div class="detailImageContainer padded-left"></div>
<div class="detailPageContent">
<div class="detailPagePrimaryContent padded-left padded-right">
<div class="detailSection" style="margin-bottom: 0;">
<div class="detailSection">
<div class="itemMiscInfo nativeName hide"></div>
<div class="genres hide" style="margin: .7em 0;font-size:92%;"></div>
<div class="directors hide" style="margin: .7em 0;font-size:92%;"></div>
<form class="trackSelections flex align-items-center flex-wrap-wrap hide focuscontainer-x">
<div class="selectContainer selectContainer-inline selectSourceContainer hide trackSelectionFieldContainer flex-shrink-zero">
<div class="itemDetailsGroup">
<div class="detailsGroupItem genresGroup hide">
<div class="genresLabel label"></div>
<div class="genres content"></div>
</div>
<div class="detailsGroupItem directorsGroup hide">
<div class="directorsLabel label"></div>
<div class="directors content"></div>
</div>
</div>
<form class="trackSelections hide focuscontainer-x">
<div class="selectContainer selectSourceContainer hide trackSelectionFieldContainer flex-shrink-zero">
<select is="emby-select" class="selectSource detailTrackSelect" label=""></select>
</div>
<div class="selectContainer selectContainer-inline selectVideoContainer hide trackSelectionFieldContainer flex-shrink-zero">
<div class="selectContainer selectVideoContainer hide trackSelectionFieldContainer flex-shrink-zero">
<select is="emby-select" class="selectVideo detailTrackSelect" label=""></select>
</div>
<div class="selectContainer selectContainer-inline selectAudioContainer hide trackSelectionFieldContainer flex-shrink-zero">
<div class="selectContainer selectAudioContainer hide trackSelectionFieldContainer flex-shrink-zero">
<select is="emby-select" class="selectAudio detailTrackSelect" label=""></select>
</div>
<div class="selectContainer selectContainer-inline selectSubtitlesContainer hide trackSelectionFieldContainer">
<div class="selectContainer selectSubtitlesContainer hide trackSelectionFieldContainer">
<select is="emby-select" class="selectSubtitles detailTrackSelect" label=""></select>
</div>
</form>

View file

@ -1,18 +0,0 @@
"use strict";
window.queryString = {}, window.queryString.extract = function(maybeUrl) {
return maybeUrl.split("?")[1] || ""
}, window.queryString.parse = function(str) {
return "string" != typeof str ? {} : (str = str.trim().replace(/^(\?|#|&)/, ""), str ? str.split("&").reduce(function(ret, param) {
var parts = param.replace(/\+/g, " ").split("="),
key = parts[0],
val = parts[1];
return key = decodeURIComponent(key), val = void 0 === val ? null : decodeURIComponent(val), ret.hasOwnProperty(key) ? Array.isArray(ret[key]) ? ret[key].push(val) : ret[key] = [ret[key], val] : ret[key] = val, ret
}, {}) : {})
}, window.queryString.stringify = function(obj) {
return obj ? Object.keys(obj).sort().map(function(key) {
var val = obj[key];
return Array.isArray(val) ? val.sort().map(function(val2) {
return encodeURIComponent(key) + "=" + encodeURIComponent(val2)
}).join("&") : encodeURIComponent(key) + "=" + encodeURIComponent(val)
}).join("&") : ""
};

View file

@ -1,83 +0,0 @@
"use strict";
var assert = require("assert"),
qs = require("./");
describe(".parse()", function() {
it("query strings starting with a `?`", function() {
assert.deepEqual(qs.parse("?foo=bar"), {
foo: "bar"
})
}), it("query strings starting with a `#`", function() {
assert.deepEqual(qs.parse("#foo=bar"), {
foo: "bar"
})
}), it("query strings starting with a `&", function() {
assert.deepEqual(qs.parse("&foo=bar&foo=baz"), {
foo: ["bar", "baz"]
})
}), it("parse a query string", function() {
assert.deepEqual(qs.parse("foo=bar"), {
foo: "bar"
})
}), it("parse multiple query string", function() {
assert.deepEqual(qs.parse("foo=bar&key=val"), {
foo: "bar",
key: "val"
})
}), it("parse query string without a value", function() {
assert.deepEqual(qs.parse("foo"), {
foo: null
}), assert.deepEqual(qs.parse("foo&key"), {
foo: null,
key: null
}), assert.deepEqual(qs.parse("foo=bar&key"), {
foo: "bar",
key: null
})
}), it("return empty object if no qss can be found", function() {
assert.deepEqual(qs.parse("?"), {}), assert.deepEqual(qs.parse("&"), {}), assert.deepEqual(qs.parse("#"), {}), assert.deepEqual(qs.parse(" "), {})
}), it("handle `+` correctly", function() {
assert.deepEqual(qs.parse("foo+faz=bar+baz++"), {
"foo faz": "bar baz "
})
}), it("handle multiple of the same key", function() {
assert.deepEqual(qs.parse("foo=bar&foo=baz"), {
foo: ["bar", "baz"]
})
}), it("query strings params including embedded `=`", function() {
assert.deepEqual(qs.parse("?param=http%3A%2F%2Fsomeurl%3Fid%3D2837"), {
param: "http://someurl?id=2837"
})
})
}), describe(".stringify()", function() {
it("stringify", function() {
assert.strictEqual(qs.stringify({
foo: "bar"
}), "foo=bar"), assert.strictEqual(qs.stringify({
foo: "bar",
bar: "baz"
}), "bar=baz&foo=bar")
}), it("different types", function() {
assert.strictEqual(qs.stringify(), ""), assert.strictEqual(qs.stringify(0), "")
}), it("URI encode", function() {
assert.strictEqual(qs.stringify({
"foo bar": "baz faz"
}), "foo%20bar=baz%20faz")
}), it("handle array value", function() {
assert.strictEqual(qs.stringify({
abc: "abc",
foo: ["bar", "baz"]
}), "abc=abc&foo=bar&foo=baz")
})
}), describe(".extract()", function() {
it("should extract qs from url", function() {
assert.equal(qs.extract("http://foo.bar/?abc=def&hij=klm"), "abc=def&hij=klm"), assert.equal(qs.extract("http://foo.bar/?"), "")
}), it("should handle strings not containing qs", function() {
assert.equal(qs.extract("http://foo.bar/"), ""), assert.equal(qs.extract(""), "")
}), it("should throw for invalid values", function() {
assert.throws(function() {
qs.extract(null)
}, TypeError), assert.throws(function() {
qs.extract(void 0)
}, TypeError)
})
});

View file

@ -47,6 +47,15 @@
</div>
</div>
</a>
<a is="emby-linkbutton" data-ripple="false" href="#" style="display:block;padding:0;margin:0;" class="clientSettings listItem-border">
<div class="listItem">
<i class="material-icons listItemIcon listItemIcon-transparent devices_other"></i>
<div class="listItemBody">
<div class="listItemBodyText">${ClientSettings}</div>
</div>
</div>
</a>
</div>
<div class="adminSection verticalSection verticalSection-extrabottompadding">
<h2 class="sectionTitle" style="padding-left:.25em;">${HeaderAdmin}</h2>

View file

@ -271,6 +271,9 @@ define([], function () {
if (!browser.tizen) {
browser.orsay = userAgent.toLowerCase().indexOf('smarthub') !== -1;
} else {
var v = (navigator.appVersion).match(/Tizen (\d+).(\d+)/);
browser.tizenVersion = parseInt(v[1]);
}
if (browser.edgeUwp) {

View file

@ -214,6 +214,15 @@ define(['browser'], function (browser) {
break;
case 'avi':
supported = browser.tizen || browser.orsay || browser.web0s || browser.edgeUwp;
// New Samsung TV don't support XviD/DivX
// Explicitly add supported codecs to make other codecs be transcoded
if (browser.tizenVersion >= 4) {
videoCodecs.push('h264');
if (canPlayH265(videoTestElement, options)) {
videoCodecs.push('h265');
videoCodecs.push('hevc');
}
}
break;
case 'mpg':
case 'mpeg':

View file

@ -73,7 +73,7 @@ define(["dom", "layoutManager", "inputManager", "connectionManager", "events", "
}
if (user && user.localUser) {
if (headerHomeButton) {
if (headerHomeButton && !layoutManager.mobile) {
headerHomeButton.classList.remove("hide");
}
@ -243,15 +243,20 @@ define(["dom", "layoutManager", "inputManager", "connectionManager", "events", "
html += '<a is="emby-linkbutton" class="navMenuOption lnkMediaFolder" data-itemid="selectserver" href="selectserver.html?showuser=1"><i class="material-icons navMenuOptionIcon">wifi</i><span class="navMenuOptionText">' + globalize.translate("ButtonSelectServer") + "</span></a>";
}
html += '<a is="emby-linkbutton" class="navMenuOption lnkMediaFolder btnSettings" data-itemid="settings" href="#"><i class="material-icons navMenuOptionIcon settings"></i><span class="navMenuOptionText">' + globalize.translate("ButtonSettings") + "</span></a>";
html += '<a is="emby-linkbutton" class="navMenuOption lnkMediaFolder btnLogout" data-itemid="logout" href="#"><i class="material-icons navMenuOptionIcon exit_to_app"></i><span class="navMenuOptionText">' + globalize.translate("ButtonSignOut") + "</span></a>";
html += "</div>";
}
// add buttons to navigation drawer
navDrawerScrollContainer.innerHTML = html;
// bind logout button click to method
var btnLogout = navDrawerScrollContainer.querySelector(".btnLogout");
var btnSettings = navDrawerScrollContainer.querySelector(".btnSettings");
if (btnSettings) {
btnSettings.addEventListener("click", onSettingsClick);
}
var btnLogout = navDrawerScrollContainer.querySelector(".btnLogout");
if (btnLogout) {
btnLogout.addEventListener("click", onLogoutClick);
}
@ -598,6 +603,10 @@ define(["dom", "layoutManager", "inputManager", "connectionManager", "events", "
}
}
function onSettingsClick() {
Dashboard.navigate("mypreferencesmenu.html");
}
function onLogoutClick() {
Dashboard.logout();
}
@ -788,7 +797,7 @@ define(["dom", "layoutManager", "inputManager", "connectionManager", "events", "
var headerCastButton;
var headerSearchButton;
var headerAudioPlayerButton;
var enableLibraryNavDrawer = !layoutManager.tv;
var enableLibraryNavDrawer = layoutManager.desktop;
var skinHeader = document.querySelector(".skinHeader");
var requiresUserRefresh = true;
var lastOpenTime = new Date().getTime();
@ -863,6 +872,7 @@ define(["dom", "layoutManager", "inputManager", "connectionManager", "events", "
pageClassOn("pageshow", "page", function (e) {
var page = this;
var isDashboardPage = page.classList.contains("type-interior");
var isHomePage = page.classList.contains("homePage");
var isLibraryPage = !isDashboardPage && page.classList.contains("libraryPage");
var apiClient = getCurrentApiClient();
@ -874,7 +884,7 @@ define(["dom", "layoutManager", "inputManager", "connectionManager", "events", "
refreshDashboardInfoInDrawer(apiClient);
} else {
if (mainDrawerButton) {
if (enableLibraryNavDrawer) {
if (enableLibraryNavDrawer || isHomePage) {
mainDrawerButton.classList.remove("hide");
} else {
mainDrawerButton.classList.add("hide");

View file

@ -355,39 +355,6 @@ var AppInfo = {};
return headroom;
}
function getCastSenderApiLoader() {
var ccLoaded = false;
return {
load: function () {
if (ccLoaded) {
return Promise.resolve();
}
return new Promise(function (resolve, reject) {
var fileref = document.createElement("script");
fileref.setAttribute("type", "text/javascript");
fileref.onload = function () {
ccLoaded = true;
resolve();
};
fileref.setAttribute("src", "https://www.gstatic.com/cv/js/sender/v1/cast_sender.js");
document.querySelector("head").appendChild(fileref);
});
}
};
}
function getDummyCastSenderApiLoader() {
return {
load: function () {
window.chrome = window.chrome || {};
return Promise.resolve();
}
};
}
function createSharedAppFooter(appFooter) {
return new appFooter({});
}
@ -439,28 +406,16 @@ var AppInfo = {};
defineResizeObserver();
define("dialog", [componentsPath + "/dialog/dialog"], returnFirstDependency);
if (preferNativeAlerts && window.confirm) {
define("confirm", [componentsPath + "/confirm/nativeconfirm"], returnFirstDependency);
} else {
define("confirm", [componentsPath + "/confirm/confirm"], returnFirstDependency);
}
if ((preferNativeAlerts || browser.xboxOne) && window.confirm) {
define("prompt", [componentsPath + "/prompt/nativeprompt"], returnFirstDependency);
} else {
define("prompt", [componentsPath + "/prompt/prompt"], returnFirstDependency);
}
define("loading", [componentsPath + "/loading/loading"], returnFirstDependency);
define("multi-download", [componentsPath + "/multidownload"], returnFirstDependency);
define("fileDownloader", [componentsPath + "/filedownloader"], returnFirstDependency);
define("localassetmanager", [bowerPath + "/apiclient/localassetmanager"], returnFirstDependency);
if ("cordova" === self.appMode || "android" === self.appMode) {
define("castSenderApiLoader", [], getDummyCastSenderApiLoader);
} else {
define("castSenderApiLoader", [], getCastSenderApiLoader);
}
define("castSenderApiLoader", [componentsPath + "/castSenderApi"], returnFirstDependency);
define("transfermanager", [bowerPath + "/apiclient/sync/transfermanager"], returnFirstDependency);
define("filerepository", [bowerPath + "/apiclient/sync/filerepository"], returnFirstDependency);
@ -733,8 +688,8 @@ var AppInfo = {};
"resize-observer-polyfill",
"shaka",
"swiper",
"queryString",
"sortable",
"libjass",
"webcomponents",
"material-icons",
"jellyfin-noto",
@ -798,9 +753,6 @@ var AppInfo = {};
define("headroom", [componentsPath + "/headroom/headroom"], returnFirstDependency);
define("scroller", [componentsPath + "/scroller"], returnFirstDependency);
define("navdrawer", [componentsPath + "/navdrawer/navdrawer"], returnFirstDependency);
define("queryString", [bowerPath + "/query-string/index"], function () {
return queryString;
});
define("emby-button", [elementsPath + "/emby-button/emby-button"], returnFirstDependency);
define("paper-icon-button-light", [elementsPath + "/emby-button/paper-icon-button-light"], returnFirstDependency);

View file

@ -101,8 +101,7 @@
"Desktop": "Работен плот",
"DeviceAccessHelp": "Това се отнася само за устройства, които могат да бъдат различени и няма да попречи на достъп от мрежов четец. Филтрирането на потребителски устройства ще предотврати използването им докато не бъдат одобрени тук.",
"Director": "Режисьор",
"DirectorValue": "Режисьор: {0}",
"DirectorsValue": "Режисьори: {0}",
"Directors": "Режисьори",
"Disc": "Диск",
"Dislike": "Нехаресване",
"Display": "Показване",
@ -137,9 +136,8 @@
"FormatValue": "Формат: {0}",
"Friday": "Петък",
"Fullscreen": "Цял екран",
"GenreValue": "Жанр: {0}",
"Genre": "Жанр",
"Genres": "Жанрове",
"GenresValue": "Жанрове: {0}",
"GroupVersions": "Групиране на версиите",
"GuestStar": "Гостуваща звезда",
"Guide": "Справочник",
@ -435,7 +433,7 @@
"LabelStatus": "Състояние:",
"LabelStopWhenPossible": "Спирай, когато е възможно:",
"LabelSubtitlePlaybackMode": "Режим на субтитрите:",
"LabelSubtitles": "Субтитри:",
"LabelSubtitles": "Субтитри",
"LabelSupportedMediaTypes": "Поддържани типове медия:",
"LabelTag": "Етикет:",
"LabelTextColor": "Цвят на текста:",
@ -812,7 +810,7 @@
"MediaInfoLayout": "Подредба",
"MusicVideo": "Музикален клип",
"MediaInfoStreamTypeVideo": "Видео",
"LabelVideo": "Видео:",
"LabelVideo": "Видео",
"HeaderVideoTypes": "Видове видеа",
"HeaderVideoType": "Вид на видеото",
"EnableExternalVideoPlayers": "Външни възпроизводители",
@ -832,5 +830,9 @@
"ButtonNetwork": "Мрежа",
"ButtonFullscreen": "На цял екран",
"ButtonDown": "Надолу",
"ButtonConnect": "Свързване"
"ButtonConnect": "Свързване",
"AllowOnTheFlySubtitleExtraction": "Позволява моментално извличане на поднадписи",
"AllowHWTranscodingHelp": "Позволява на тунера да прекодира моментално. Това може да помогне за редуциране на прекодирането от сървъра.",
"AddItemToCollectionHelp": "Добавяне към колекция чрез търсенето им и използване на дясно-щракване с мишката или контекстното меню.",
"Absolute": "Aбсолютен"
}

View file

@ -461,7 +461,7 @@
"LabelArtist": "Umělec",
"LabelArtists": "Umělci:",
"LabelArtistsHelp": "Odděl pomocí ;",
"LabelAudio": "Zvuk:",
"LabelAudio": "Zvuk",
"LabelAudioLanguagePreference": "Preferovaný jazyk zvuku:",
"LabelBindToLocalNetworkAddress": "Vázat na místní síťovou adresu:",
"LabelBindToLocalNetworkAddressHelp": "Volitelné. Přepsat lokální IP adresu vazanou na http server. Pokud je ponecháno prázdné, server se sváže ke všem dostupným adresám (aplikace bude dostupná na všech síťových zařízení, které server nabízí). Změna této hodnoty vyžaduje restartování Jellyfin Serveru.",
@ -709,7 +709,7 @@
"LabelStopping": "Zastavování",
"LabelSubtitleFormatHelp": "Příklad: srt",
"LabelSubtitlePlaybackMode": "Mód titulků:",
"LabelSubtitles": "Titulky:",
"LabelSubtitles": "Titulky",
"LabelSupportedMediaTypes": "Podporované typy médií:",
"LabelTagline": "Slogan:",
"LabelTextBackgroundColor": "Barva pozadí textu:",
@ -1276,8 +1276,7 @@
"DetectingDevices": "Hledání zařízení",
"DirectPlayError": "Chyba přímého přehrávání",
"DirectStreamHelp2": "Přímé streamování souboru používá velmi malý výkon bez ztráty kvality videa.",
"DirectorValue": "Režisér: {0}",
"DirectorsValue": "Režiséři: {0}",
"Directors": "Režiséři",
"Disabled": "Vypnuto",
"DisplayInMyMedia": "Zobrazit na domovské obrazovce",
"DisplayInOtherHomeScreenSections": "Zobrazení v sekcích domovské obrazovky, jako jsou nejnovější média, a pokračování ve sledování",
@ -1297,8 +1296,7 @@
"Filters": "Filtry",
"Folders": "Složky",
"General": "Hlavní",
"GenreValue": "Žánr: {0}",
"GenresValue": "Žánry: {0}",
"Genre": "Žánr",
"GroupBySeries": "Seskupit podle série",
"HandledByProxy": "Zpracováno reverzním proxy",
"HeaderAddLocalUser": "Přidat místního uživatele",
@ -1395,7 +1393,7 @@
"LabelUrl": "URL:",
"LabelUserAgent": "User agent:",
"LabelUserRemoteClientBitrateLimitHelp": "Přepíše výchozí globální hodnotu nastavenou v nastavení přehrávání serveru.",
"LabelVideo": "Video:",
"LabelVideo": "Video",
"LabelVideoCodec": "Video kodek:",
"LeaveBlankToNotSetAPassword": "Můžete ponechat prázdné pro nastavení bez hesla.",
"LetterButtonAbbreviation": "A",

View file

@ -1166,8 +1166,7 @@
"DirectStreamHelp1": "Medie filen er kompatibel med enheden i forhold til opløsning og medie type (H.264,AC3, etc.), men er i en ikke kompatibel fil container (mkv, avi, wmv, etc). Videoen vil blive genpakket live før den streames til enheden.",
"DirectStreamHelp2": "Direkte Streaming af en fil bruger meget lidt processor kraft uden nogen tab af video kvalitet.",
"DirectStreaming": "Direkte streaming",
"DirectorValue": "Instruktør: {0}",
"DirectorsValue": "Instruktører: {0}",
"Directors": "Instruktører",
"Disc": "Disk",
"Dislike": "Kan ikke lide",
"Display": "Visning",
@ -1207,8 +1206,7 @@
"Features": "Funktioner",
"Filters": "Filtre",
"FormatValue": "Format: {0}",
"GenreValue": "Genre: {0}",
"GenresValue": "Genrer: {0}",
"Genre": "Genre",
"GroupBySeries": "Gruppér efter serie",
"Guide": "Vejledning",
"GuideProviderLogin": "Log Ind",
@ -1270,7 +1268,7 @@
"Label3DFormat": "3D format:",
"LabelAlbum": "Album:",
"LabelArtist": "Kunstner",
"LabelAudio": "Lyd:",
"LabelAudio": "Lyd",
"LabelBitrateMbps": "Bitrate (Mbps):",
"LabelBlockContentWithTags": "Blokér filer med mærkerne:",
"LabelBurnSubtitles": "Brænd undertekster:",
@ -1315,7 +1313,7 @@
"LabelSortOrder": "Sorteringsorden:",
"LabelSoundEffects": "Lydeffekter:",
"LabelStatus": "Status:",
"LabelSubtitles": "Undertekster:",
"LabelSubtitles": "Undertekster",
"LabelSyncNoTargetsHelp": "Det ser ud til at du ikke har nogen apps der understøtter offline hentning.",
"LabelTVHomeScreen": "TV modus hjemmeskærm:",
"LabelTag": "Mærke:",
@ -1329,7 +1327,7 @@
"LabelUrl": "Link:",
"LabelVersion": "Version:",
"LabelVersionNumber": "Version {0}",
"LabelVideo": "Video:",
"LabelVideo": "Video",
"LabelVideoCodec": "Video codec:",
"LabelWindowBackgroundColor": "Tekst baggrundsfarve:",
"LabelXDlnaCap": "X-DLNA begrænsning:",

View file

@ -1,5 +1,5 @@
{
"Absolute": "Gesamt",
"Absolute": "Absolut",
"AccessRestrictedTryAgainLater": "Der Zugriff ist derzeit eingeschränkt. Bitte versuche es später erneut.",
"Actor": "Darsteller(in)",
"Add": "Hinzufügen",
@ -175,8 +175,7 @@
"DirectStreamHelp2": "Direktes Streaming von Dateien benötigt sehr wenig Rechenleistung ohne Verlust der Videoqualität.",
"DirectStreaming": "Direktes Streaming",
"Director": "Regisseur",
"DirectorValue": "Regisseur: {0}",
"DirectorsValue": "Regisseure: {0}",
"Directors": "Regisseure",
"Disabled": "Abgeschaltet",
"Disc": "Disk",
"Disconnect": "Verbindung trennen",
@ -759,7 +758,7 @@
"LabelSubtitleDownloaders": "Untertitel Downloader:",
"LabelSubtitleFormatHelp": "Beispiel: srt",
"LabelSubtitlePlaybackMode": "Untertitelmodus:",
"LabelSubtitles": "Untertitel:",
"LabelSubtitles": "Untertitel",
"LabelSupportedMediaTypes": "Unterstüzte Medientypen:",
"LabelTVHomeScreen": "TV-Mode Startseite:",
"LabelTextBackgroundColor": "Hintergrundfarbe des Textes:",
@ -1069,6 +1068,8 @@
"PluginInstalledMessage": "Das Plugin wurde erfolgreich installiert. Der Jellyfin-Server muss neu gestartet werden, um die Änderungen zu übernehmen.",
"PreferEmbeddedTitlesOverFileNames": "Bevorzuge eingebettete Titel vor Dateinamen",
"PreferEmbeddedTitlesOverFileNamesHelp": "Das bestimmt den Standard Displaytitel wenn keine lokale oder Internetmetadaten verfügbar sind.",
"PreferEmbeddedEpisodeInfosOverFileNames": "Bevorzuge eingebettete Episodeninformationen vor Dateinamen",
"PreferEmbeddedEpisodeInfosOverFileNamesHelp": "Bevorzugt die in den Metadaten eingebetteten Episodeninformationen.",
"PreferredNotRequired": "Bevorzugt, aber nicht benötigt",
"Premieres": "Premieren",
"Previous": "Vorheriges",
@ -1291,9 +1292,8 @@
"Extras": "Extras",
"FolderTypeTvShows": "TV Serien",
"FormatValue": "Format: {0}",
"GenreValue": "Genre: {0}",
"Genre": "Genre",
"Genres": "Genres",
"GenresValue": "Genres: {0}",
"HeaderAdmin": "Admin",
"HeaderApp": "App",
"HeaderGenres": "Genres",
@ -1305,7 +1305,7 @@
"Home": "Startseite",
"Horizontal": "Horizontal",
"LabelAlbum": "Album:",
"LabelAudio": "Audio:",
"LabelAudio": "Audio",
"LabelCache": "Cache:",
"LabelFormat": "Format:",
"LabelH264Crf": "H264 Encodierungs-CRF:",
@ -1324,7 +1324,7 @@
"LabelTypeText": "Text",
"LabelVersion": "Version:",
"LabelVersionNumber": "Version {0}",
"LabelVideo": "Video:",
"LabelVideo": "Video",
"LeaveBlankToNotSetAPassword": "Du kannst dieses Feld frei lassen um kein Passwort zu setzen.",
"LinksValue": "Links: {0}",
"MessageImageFileTypeAllowed": "Nur JPEG- und PNG-Dateien werden unterstützt.",
@ -1491,5 +1491,6 @@
"NoCreatedLibraries": "Sieht so aus als hättest du bis jetzt keine Bibliothek erstellt. {0}Möchtest du jetzt eine Bibliothek erstellen?{1}",
"AllowFfmpegThrottling": "Transkodierung drosseln",
"PlaybackErrorNoCompatibleStream": "Es gab ein Problem bei der Erkennung des Wiedergabeprofils des Clients und der Server sendet kein kompatibles Format.",
"AllowFfmpegThrottlingHelp": "Wenn eine Transkodierung oder ein Remux weit genug über die aktuelle Abspielposition fortgeschritten ist, pausiere sie sodass weniger Ressourcen verbraucht werden. Dies ist am nützlichsten, wenn wenig geskippt wird. Bei Wiedergabeproblemen sollte diese Option deaktiviert werden."
"AllowFfmpegThrottlingHelp": "Wenn eine Transkodierung oder ein Remux weit genug über die aktuelle Abspielposition fortgeschritten ist, pausiere sie sodass weniger Ressourcen verbraucht werden. Dies ist am nützlichsten, wenn wenig geskippt wird. Bei Wiedergabeproblemen sollte diese Option deaktiviert werden.",
"ClientSettings": "Client Einstellungen"
}

View file

@ -166,8 +166,7 @@
"DirectStreamHelp2": "Η άμεση ροή ενός αρχείου χρησιμοποιεί ελάχιστη ισχύ επεξεργασίας χωρίς απώλεια της ποιότητας του βίντεο.",
"DirectStreaming": "Απευθείας Αναμετάδοση",
"Director": "Σκηνοθέτης",
"DirectorValue": "Σκηνοθέτης: {0}",
"DirectorsValue": "Σκηνοθέτες: {0}",
"Directors": "Σκηνοθέτες",
"Disabled": "Απενεργοποιημένο",
"Disc": "Δίσκος",
"Disconnect": "Αποσύνδεση",
@ -233,9 +232,8 @@
"Friday": "Παρασκευή",
"Fullscreen": "ΠΛΗΡΗΣ ΟΘΟΝΗ",
"General": "Γενικά",
"GenreValue": "Είδος: {0}",
"Genre": "Είδος",
"Genres": "Είδη",
"GenresValue": "Είδη: {0}",
"GroupBySeries": "Ομαδοποίηση κατά σειρά",
"GroupVersions": "Ομαδικές εκδόσεις",
"GuestStar": "Φιλική Συμμετοχή",
@ -452,7 +450,7 @@
"LabelAppNameExample": "Παράδειγμα: Sickbeard, NzbDrone",
"LabelArtists": "Καλλιτέχνες:",
"LabelArtistsHelp": "Ξεχωρίστε πολλαπλά χρησιμοποιώντας;",
"LabelAudio": "Ήχος:",
"LabelAudio": "Ήχος",
"LabelAudioLanguagePreference": "Προτιμώμενη γλώσσα ήχου:",
"LabelAutomaticallyRefreshInternetMetadataEvery": "Αυτόματη ανανέωση μεταδεδομένων από το internet:",
"LabelBirthDate": "Ημερομηνία Γενεθλίων:",
@ -666,7 +664,7 @@
"LabelStopWhenPossible": "Διακοπή όταν είναι δυνατόν:",
"LabelSubtitleFormatHelp": "Παράδειγμα: srt",
"LabelSubtitlePlaybackMode": "Λειτουργία υποτίτλων:",
"LabelSubtitles": "Υπότιτλοι:",
"LabelSubtitles": "Υπότιτλοι",
"LabelSupportedMediaTypes": "Υποστηριζόμενοι τύποι μέσων:",
"LabelTVHomeScreen": "Αρχική οθόνη λειτουργίας τηλεόρασης:",
"LabelTag": "Ετικέτα:",
@ -696,7 +694,7 @@
"LabelVersion": "Έκδοση:",
"LabelVersionInstalled": "{0} εγκαταστήθηκε",
"LabelVersionNumber": "Έκδοση {0}",
"LabelVideo": "Βίντεο:",
"LabelVideo": "Βίντεο",
"LabelXDlnaCapHelp": "Καθορίζει το περιεχόμενο του στοιχείου X_DLNACAP στο urn:schemas-dlna-org:device-1-0 namespace.",
"LabelXDlnaDocHelp": "Καθορίζει το περιεχόμενο του στοιχείου X_DLNACAP στο urn:schemas-dlna-org:device-1-0 namespace.",
"LabelYear": "Έτος:",

View file

@ -223,8 +223,7 @@
"DirectStreamHelp2": "Direct Streaming a file uses very little processing power without any loss in video quality.",
"DirectStreaming": "Direct streaming",
"Director": "Director",
"DirectorValue": "Director: {0}",
"DirectorsValue": "Directors: {0}",
"Directors": "Directors",
"Disabled": "Disabled",
"Disc": "Disc",
"Disconnect": "Disconnect",
@ -299,8 +298,7 @@
"Friday": "Friday",
"Fullscreen": "Full screen",
"General": "General",
"GenreValue": "Genre: {0}",
"GenresValue": "Genres: {0}",
"Genre": "Genre",
"GroupBySeries": "Group by series",
"GroupVersions": "Group versions",
"GuestStar": "Guest star",
@ -808,7 +806,7 @@
"LabelTag": "Tag:",
"LabelTVHomeScreen": "TV mode home screen:",
"LabelSupportedMediaTypes": "Supported Media Types:",
"LabelSubtitles": "Subtitles:",
"LabelSubtitles": "Subtitles",
"LabelSubtitlePlaybackMode": "Subtitle mode:",
"LabelSubtitleFormatHelp": "Example: srt",
"LabelSubtitleDownloaders": "Subtitle downloaders:",
@ -1169,7 +1167,7 @@
"LabelAudioChannels": "Audio channels:",
"LabelAudioBitrate": "Audio bitrate:",
"LabelAudioBitDepth": "Audio bit depth:",
"LabelAudio": "Audio:",
"LabelAudio": "Audio",
"LabelArtistsHelp": "Separate multiple using ;",
"LabelArtists": "Artists:",
"LabelAppName": "App name",
@ -1338,7 +1336,7 @@
"MediaInfoSoftware": "Software",
"ValueOneSeries": "1 series",
"MediaInfoBitrate": "Bitrate",
"LabelVideo": "Video:",
"LabelVideo": "Video",
"LabelPrevious": "Previous",
"LabelPostProcessorArgumentsHelp": "Use {path} as the path to the recording file.",
"LabelKodiMetadataEnableExtraThumbs": "Copy extrafanart to extrathumbs field",

View file

@ -147,6 +147,7 @@
"ChannelNumber": "Channel number",
"Channels": "Channels",
"CinemaModeConfigurationHelp": "Cinema mode brings the theater experience straight to your living room with the ability to play trailers and custom intros before the main feature.",
"ClientSettings": "Client Settings",
"Collections": "Collections",
"ColorPrimaries": "Color primaries",
"ColorSpace": "Color space",
@ -191,8 +192,7 @@
"DirectStreamHelp2": "Direct Streaming a file uses very little processing power without any loss in video quality.",
"DirectStreaming": "Direct streaming",
"Director": "Director",
"DirectorValue": "Director: {0}",
"DirectorsValue": "Directors: {0}",
"Directors": "Directors",
"Disabled": "Disabled",
"Disc": "Disc",
"Disconnect": "Disconnect",
@ -271,9 +271,8 @@
"Friday": "Friday",
"Fullscreen": "Full screen",
"General": "General",
"GenreValue": "Genre: {0}",
"Genre": "Genre",
"Genres": "Genres",
"GenresValue": "Genres: {0}",
"GroupBySeries": "Group by series",
"GroupVersions": "Group versions",
"GuestStar": "Guest star",
@ -550,7 +549,7 @@
"LabelAppNameExample": "Example: Sickbeard, Sonarr",
"LabelArtists": "Artists:",
"LabelArtistsHelp": "Separate multiple using ;",
"LabelAudio": "Audio:",
"LabelAudio": "Audio",
"LabelAudioBitDepth": "Audio bit depth:",
"LabelAudioBitrate": "Audio bitrate:",
"LabelAudioChannels": "Audio channels:",
@ -840,7 +839,7 @@
"LabelSubtitleDownloaders": "Subtitle downloaders:",
"LabelSubtitleFormatHelp": "Example: srt",
"LabelSubtitlePlaybackMode": "Subtitle mode:",
"LabelSubtitles": "Subtitles:",
"LabelSubtitles": "Subtitles",
"LabelSupportedMediaTypes": "Supported Media Types:",
"LabelTVHomeScreen": "TV mode home screen:",
"LabelTag": "Tag:",
@ -886,7 +885,7 @@
"DashboardServerName": "Server: {0}",
"DashboardOperatingSystem": "Operating System: {0}",
"DashboardArchitecture": "Architecture: {0}",
"LabelVideo": "Video:",
"LabelVideo": "Video",
"LabelVideoBitrate": "Video bitrate:",
"LabelVideoCodec": "Video codec:",
"LabelVideoResolution": "Video resolution:",
@ -1239,6 +1238,8 @@
"PluginInstalledMessage": "The plugin has been successfully installed. Jellyfin Server will need to be restarted for changes to take effect.",
"PreferEmbeddedTitlesOverFileNames": "Prefer embedded titles over filenames",
"PreferEmbeddedTitlesOverFileNamesHelp": "This determines the default display title when no internet metadata or local metadata is available.",
"PreferEmbeddedEpisodeInfosOverFileNamesHelp": "This uses the episode informations from the embedded metadata if available.",
"PreferEmbeddedEpisodeInfosOverFileNames": "Prefer embedded episode informations over filenames",
"PreferredNotRequired": "Preferred, but not required",
"Premiere": "Premiere",
"Premieres": "Premieres",

View file

@ -68,7 +68,7 @@
"AllowMediaConversion": "Permitir conversión de medios",
"AllowMediaConversionHelp": "Permitir o denegar acceso a la opción de convertir medios.",
"AllowOnTheFlySubtitleExtraction": "Permitir extracción de subtítulos al vuelo",
"AllowOnTheFlySubtitleExtractionHelp": "Los subtítulos incrustados pueden ser extraídos de videos y entregados a apps de Jellyfin en texto plano para ayudar a prevenir la transcodificación de video. En algunos sistemas esto puede llevar un largo tiempo y causar demoras en la reproducción durante el proceso de extracción. Desactivar esta opción para quemar los subtítulos incrustados en la transcodificación de video cuando no son soportados nativamente por el dispositivo cliente.",
"AllowOnTheFlySubtitleExtractionHelp": "Los subtítulos incrustados pueden extraerse de los videos y entregarse a los reproductores en texto plano para ayudar a evitar la transcodificación de video. En algunos sistemas, esto puede tardar mucho tiempo y provocar que la reproducción de video se detenga durante el proceso de extracción. Deshabilite esta opción para que los subtítulos incrustados se graben con transcodificación de video cuando no estén soportados de forma nativa por el dispositivo cliente.",
"AllowRemoteAccess": "Permitir conexiones remotas a este Servidor Jellyfin.",
"AllowRemoteAccessHelp": "Si no está tildado, todas las conexiones remotas serán bloqueadas.",
"AlwaysPlaySubtitles": "Siempre reproducir subtítulos",
@ -81,7 +81,7 @@
"AutoBasedOnLanguageSetting": "Auto (basado en configuración de idioma)",
"AutomaticallyConvertNewContent": "Convertir contenido nuevo automáticamente",
"Backdrop": "Fondo",
"AllowHWTranscodingHelp": "Si se activa, se permitirá al sintonizador transcodificar streams al vuelo. Esto podría ayudar a reducir la transcodificación requerida por el servidor Jellyfin.",
"AllowHWTranscodingHelp": "Permite que el sintonizador transcodifique las transmisiones sobre la marcha. Esto puede ayudar a reducir la transcodificación requerida por el servidor.",
"AllowedRemoteAddressesHelp": "Lista separada por comas de direcciones IP o IP/máscara-de-red para redes a las que se les permitirá conectarse de forma remota. Si se deja vacía, todas las direcciones remotas serán permitidas.",
"AlwaysPlaySubtitlesHelp": "Los subtítulos que concuerden con la preferencia de idioma se cargarán independientemente del idioma del audio.",
"AndroidUnlockRestoreHelp": "Para recuperar tu compra anterior, por favor asegurate que iniciaste sesión en el dispositivo con la misma cuenta de Google (o Amazon) que hizo la compra originalmente. Asegurate de que la tienda de aplicaciones esté habilitada y no posea control parental alguno, y que tiene una conexión a Internet activa. Solo tendrás que hacer esto una sola vez para recuperar tu compra anterior.",
@ -102,12 +102,12 @@
"BirthPlaceValue": "Lugar de nacimiento: {0}",
"Blacklist": "Lista negra",
"BobAndWeaveWithHelp": "Bob and weave (mayor calidad, pero más lento)",
"BookLibraryHelp": "Libros de audio y de texto son soportados. Revise la {0}guía de nombrado de libros de Jellyfin{1}.",
"BookLibraryHelp": "Los libros de texto y audio libros son soportados. Revise la {0}Guía para Nomenclatura de Libros{1}.",
"Box": "Caja",
"BoxRear": "Caja (lado opuesto)",
"Browse": "Explorar",
"BrowsePluginCatalogMessage": "Explore nuestro catálogo de complementos para ver los complementos disponibles.",
"BurnSubtitlesHelp": "Determine si el servidor debería incrustar los subtítulos cuando convierte los videos dependiendo del formato de subtítulo. Evitar incrustar subtitulos mejorará el rendimiento del servidor. Seleccione Auto para incrustar formatos basados en imagen (por ejemplo, VOBSUB, PGS, SUB/IDX, etc.), como así también ciertos subtítulos ASS/SSA",
"BurnSubtitlesHelp": "Determina si el servidor debe grabar subtítulos al convertir videos dependiendo del formato de los subtítulos. Evitar la grabación de subtítulos mejorará el rendimiento del servidor. Seleccione Auto para grabar formatos basados en imágenes (VOBSUB, PGS, SUB/IDX, etc.) y ciertos subtítulos ASS/SSA.",
"ButtonAccept": "Aceptar",
"ButtonAdd": "Agregar",
"ButtonAddMediaLibrary": "Agregar biblioteca de medios",
@ -308,12 +308,11 @@
"DeviceLastUsedByUserName": "Usado ultima vez por {0}",
"DirectPlayError": "Error en la reproducción directa",
"DirectPlaying": "Reproducción directa",
"DirectStreamHelp1": "El medio es compatible con el dispositivo respecto a la resolución y el tipo de medio (H.264, AC3, etc.), pero esta en un contenedor incompatible (.mkv, .avi, .wmv, etc.). El video va a ser re-empaquetado en el momento que sea transmitido al dispositivo.",
"DirectStreamHelp1": "El medio es compatible con el dispositivo en cuanto a la resolución y tipo de medio (H.264, AC3, etc.), pero está en un contenedor de archivo incompatible (mkv, avi, wmv, etc.). El video sera reempaquetado en el acto antes de transmitirlo al dispositivo.",
"DirectStreamHelp2": "Transmitir directamente un archivo usa muy poco procesamiento, esto sin perdida en la calidad de video.",
"DirectStreaming": "Transmisión en directo",
"Director": "Director",
"DirectorValue": "Director: {0}",
"DirectorsValue": "Directores: {0}",
"Directors": "Directores",
"Disabled": "Deshabilitado",
"Disc": "Disco",
"Disconnect": "Desconectar",
@ -321,7 +320,7 @@
"DisplayInMyMedia": "Mostrar en pantalla principal",
"DisplayInOtherHomeScreenSections": "Mostrar en las secciones de la pantalla principal, como últimos medios y continuar viendo",
"DisplayMissingEpisodesWithinSeasons": "Mostrar episodios faltantes entre temporadas",
"DisplayMissingEpisodesWithinSeasonsHelp": "Esto debe ser habilitado en las bibilotecas de TV, en la configuracion del servidor de Jellyfin.",
"DisplayMissingEpisodesWithinSeasonsHelp": "Esto también debe estar habilitado para las bibliotecas de TV en la configuración del servidor.",
"DisplayModeHelp": "Selecciona el tipo de pantalla en el cual estas usando Jellyfin.",
"DoNotRecord": "No grabar",
"Down": "Abajo",
@ -345,7 +344,7 @@
"EnableBackdropsHelp": "Si esta habilitado, los fondos van a ser mostrados en segundo plano de algunas paginas mientras estas en la biblioteca.",
"EnableCinemaMode": "Habilitar modo Cine",
"EnableColorCodedBackgrounds": "Habilitar colores en el fondo del codigo",
"AuthProviderHelp": "Selecciona un Proveedor de Autenticación para autenticar la contraseña de este usuario",
"AuthProviderHelp": "Seleccione un proveedor de autenticación que se utilizará para autenticar la contraseña de este usuario.",
"CriticRating": "Calificación de la crítica",
"DefaultSubtitlesHelp": "Los subtítulos se cargan en base a los indicadores por defecto y los indicadores forzados en los metadatos embebidos. Las preferencias de idioma son consideradas cuando existe más de una opción.",
"Dislike": "No me gusta",
@ -398,8 +397,7 @@
"Friday": "Viernes",
"Fullscreen": "Pantalla Completa",
"General": "General",
"GenreValue": "Género: {0}",
"GenresValue": "Géneros: {0}",
"Genre": "Género",
"GroupBySeries": "Agrupar por Serie",
"GroupVersions": "Agrupar versiones",
"GuestStar": "Estrella invitada",
@ -411,5 +409,13 @@
"HeaderFavoriteEpisodes": "Episodios favoritos",
"HeaderFavoriteArtists": "Artistas favoritos",
"HeaderFavoriteAlbums": "Álbumes favoritos",
"Shows": "Series"
"Shows": "Series",
"CopyStreamURLError": "Hubo un error copiando la URL.",
"CopyStreamURLSuccess": "URL copiada con éxito.",
"CopyStreamURL": "Copiar la URL de la transmisión",
"ButtonSplit": "Dividir",
"ButtonAddImage": "Agregar imagen",
"AskAdminToCreateLibrary": "Pregunte al administrador para crear una biblioteca.",
"AllowFfmpegThrottlingHelp": "Cuando una transcodificación o conversión avanza demasiado con respecto a la posición actual de la reproducción, se pausara el proceso para consumir menos recursos. esto es mas útil cuando no se hacen búsquedas de tiempo a menudo. Desactive esta opción si experimenta problemas en la reproducción.",
"AllowFfmpegThrottling": "Transcodificación Throttle"
}

View file

@ -179,7 +179,7 @@
"DirectStreamHelp1": "El medio es compatible con el dispositivo en cuanto a la resolución y tipo de medio (H.264, AC3, etc.), pero está en un contenedor de archivo incompatible (mkv, avi, wmv, etc.). El video sera reempaquetado en el acto antes de transmitirlo al dispositivo.",
"DirectStreamHelp2": "La Transmisión Directa de un archivo usa muy poco poder de procesamiento sin ninguna perdida en la calidad de video.",
"DirectStreaming": "Transmisión Directa",
"DirectorsValue": "Directores: {0}",
"Directors": "Directores",
"Disabled": "Desactivado",
"Disc": "DIsco",
"Disconnect": "Desconectar",
@ -195,7 +195,7 @@
"Download": "Descargar",
"DownloadsValue": "{0} descargas",
"DrmChannelsNotImported": "Los canales con DRM no serán importados.",
"DropShadow": "Mostrar sombra",
"DropShadow": "Sombra Paralela",
"EasyPasswordHelp": "Su código PIN fácil se utiliza para el acceso sin conexión en los clientes compatibles y también puede utilizarse para acceder fácilmente cuando se está en la misma red.",
"Edit": "Editar",
"EditImages": "Editar imágenes",
@ -255,9 +255,8 @@
"FormatValue": "Formato: {0}",
"Friday": "Viernes",
"Fullscreen": "Pantalla Completa",
"GenreValue": "Genero: {0}",
"Genre": "Genero",
"Genres": "Géneros",
"GenresValue": "Géneros: {0}",
"GroupBySeries": "Agrupar por series",
"GroupVersions": "Agrupar versiones",
"GuestStar": "Estrella invitada",
@ -782,7 +781,7 @@
"LabelSubtitleDownloaders": "Recolectores de Subtitulos:",
"LabelSubtitleFormatHelp": "Ejemplo: srt",
"LabelSubtitlePlaybackMode": "Modo de subtítulo:",
"LabelSubtitles": "Subtítulos:",
"LabelSubtitles": "Subtítulos",
"LabelSupportedMediaTypes": "Tipos de Medios Soportados:",
"LabelTVHomeScreen": "Modo de pantalla de TV:",
"LabelTag": "Etiqueta:",
@ -1350,7 +1349,6 @@
"ButtonTrailer": "Trailer",
"AuthProviderHelp": "Seleccione un proveedor de autenticación que se utilizará para autenticar la contraseña de este usuario.",
"Director": "Director",
"DirectorValue": "Director: {0}",
"Extras": "Extras",
"General": "General",
"HeaderAdmin": "Administrador",
@ -1367,7 +1365,7 @@
"HeaderRestartingServer": "Reiniciando servidor",
"HeaderVideos": "Videos",
"Horizontal": "Horizontal",
"LabelAudio": "Audio:",
"LabelAudio": "Audio",
"LabelAuthProvider": "Proveedor de autenticación:",
"LabelDynamicExternalId": "{0} Id:",
"LabelPasswordResetProvider": "Proveedor de restablecimiento de contraseña:",
@ -1380,7 +1378,7 @@
"DashboardServerName": "Servidor: {0}",
"DashboardOperatingSystem": "Sistema operativo: {0}",
"DashboardArchitecture": "Arquitectura: {0}",
"LabelVideo": "Video:",
"LabelVideo": "Video",
"LabelWeb": "Web: ",
"LaunchWebAppOnStartup": "Iniciar la interfaz web al iniciar el servidor",
"LaunchWebAppOnStartupHelp": "Abre el cliente web en su navegador web predeterminado cuando se inicia el servidor. Esto no ocurrirá cuando se utilice la función de reinicio del servidor.",

View file

@ -5,7 +5,7 @@
"AddToCollection": "Añadir a la colección",
"AddToPlaylist": "Añadir a la lista de reproducción",
"AddedOnValue": "Añadido {0}",
"AdditionalNotificationServices": "Visite el catálogo de complementos para instalar servicios de notificación adicionales.",
"AdditionalNotificationServices": "Visite el catálogo de extensiones para instalar servicios de notificación adicionales.",
"Albums": "Álbumes",
"Alerts": "Alertas",
"All": "Todo",
@ -40,7 +40,7 @@
"Box": "Caja",
"BoxRear": "Caja (trasera)",
"Browse": "Explorar",
"BrowsePluginCatalogMessage": "Navegar el catalogo de complementos para ver los complementos disponibles.",
"BrowsePluginCatalogMessage": "Explore el catálogo de extensiones para ver las extensiones disponibles.",
"ButtonAdd": "Añadir",
"ButtonAddMediaLibrary": "Añadir biblioteca de medios",
"ButtonAddScheduledTaskTrigger": "Agregar Activador",
@ -818,16 +818,16 @@
"MessageItemSaved": "Elemento grabado.",
"MessageItemsAdded": "Ítems añadidos.",
"MessageLeaveEmptyToInherit": "Dejar en blanco para heredar la configuración del elemento padre, o el valor global por defecto.",
"MessageNoAvailablePlugins": "No hay complementos disponibles.",
"MessageNoAvailablePlugins": "No hay extensiones disponibles.",
"MessageNoMovieSuggestionsAvailable": "No hay sugerencias de películas disponibles. Comience ver y calificar sus películas y vuelva para ver las recomendaciones.",
"MessageNoPluginsInstalled": "No tiene complementos instalados.",
"MessageNoPluginsInstalled": "No hay extensiones instaladas.",
"MessageNoTrailersFound": "No se han encontrado tráilers. Instala el canal de tráilers para mejorar su experiencia añadiendo una biblioteca de tráilers por internet.",
"MessageNothingHere": "Nada aquí.",
"MessagePasswordResetForUsers": "Se ha restablecido las contraseñas a los siguientes usuarios. Ahora pueden iniciar sesión con los códigos PIN que usaron para el restablecimiento.",
"MessagePleaseEnsureInternetMetadata": "Asegúrate de que la descarga de etiquetas desde internet está activada.",
"MessagePleaseWait": "Por favor, espere.",
"MessagePluginConfigurationRequiresLocalAccess": "Para configurar este complemento inicia sesión en tu servidor local directamente.",
"MessagePluginInstallDisclaimer": "Los complementos creados por los miembros de la comunidad de Jellyfin son una buena forma de mejorar tu experiencia Jellyfin con características adicionales y otros beneficios. Antes de instalarlos considera los efectos que pueden tener en tu servidor Jellyfin, como escaneos de la biblioteca más largos, procesado en segundo plano adicional y una reducción de la estabilidad del sistema.",
"MessagePluginInstallDisclaimer": "Las extensiones creadas por los miembros de la comunidad de Jellyfin son una buena forma de mejorar tu experiencia con características adicionales y otros beneficios. Antes de instalarlos considera los efectos que pueden tener en tu servidor Jellyfin, como escaneos de la biblioteca más largos, procesado en segundo plano adicional y una reducción de la estabilidad del sistema.",
"MessageReenableUser": "Mira abajo para reactivarlo",
"MessageSettingsSaved": "Ajustes guardados.",
"MessageTheFollowingLocationWillBeRemovedFromLibrary": "Se eliminarán las siguientes ubicaciones de medios de tu biblioteca:",
@ -1138,7 +1138,7 @@
"TabMovies": "Películas",
"TabMusic": "Música",
"TabMusicVideos": "Videos musicales",
"TabMyPlugins": "Mis complementos",
"TabMyPlugins": "Mis extensiones",
"TabNetworks": "Cadenas",
"TabNfoSettings": "Ajustes de NFO",
"TabNotifications": "Notificaciones",
@ -1248,9 +1248,8 @@
"Descending": "Descendiente",
"DirectStreamHelp1": "El tipo de archivo (H.264, AC3, etc.) y la resolución son compatibles con el dispositivo, pero no el contenedor (mkv, avi, wmv, etc.). El vídeo será re-empaquetado al vuelo antes de transmitirlo al dispositivo.",
"DirectStreamHelp2": "La transmisión directa del archivo usa muy poco procesamiento sin ninguna pérdida de calidad en el vídeo.",
"Director": "Dirección de",
"DirectorValue": "Dirección de: {0}",
"DirectorsValue": "Directores: {0}",
"Director": "Director",
"Directors": "Directores",
"Display": "Mostrar",
"DisplayInMyMedia": "Mostrar en la pantalla de inicio",
"DisplayInOtherHomeScreenSections": "Mostrar en las secciones de la pantalla de inicio al igual que \"últimos\" y \"continuar viendo\"",
@ -1272,8 +1271,7 @@
"Filters": "Filtros",
"Folders": "Carpetas",
"General": "General",
"GenreValue": "Género: {0}",
"GenresValue": "Géneros: {0}",
"Genre": "Género",
"GroupBySeries": "Agrupar por series",
"GuideProviderLogin": "Credenciales",
"HeaderAlbumArtists": "Artistas del álbum",
@ -1290,7 +1288,7 @@
"HeaderVideoType": "Tipo de vídeo",
"Home": "Inicio",
"Horizontal": "Horizontal",
"LabelAudio": "Audio:",
"LabelAudio": "Audio",
"LabelBurnSubtitles": "Incrustar subtítulos:",
"LabelDashboardTheme": "Tema para la interfaz del servidor:",
"LabelDateTimeLocale": "Fecha y hora local:",
@ -1308,10 +1306,10 @@
"LabelSortBy": "Ordenar por:",
"LabelSortOrder": "Orden:",
"LabelSoundEffects": "Efectos de sonido:",
"LabelSubtitles": "Subtítulos:",
"LabelSubtitles": "Subtítulos",
"LabelTVHomeScreen": "Modo televisión en pantalla de inicio:",
"LabelVersion": "Versión:",
"LabelVideo": "Vídeo:",
"LabelVideo": "Vídeo",
"LabelXDlnaCap": "X-DNLA cap:",
"LabelXDlnaDoc": "X-DLNA doc:",
"LearnHowYouCanContribute": "Descubre cómo puedes contribuir.",
@ -1418,7 +1416,7 @@
"TV": "Televisión",
"TabInfo": "Info",
"TabLogs": "Registros",
"TabPlugins": "Complementos",
"TabPlugins": "Extensiones",
"TabSeries": "Series",
"TabTrailers": "Tráilers",
"TagsValue": "Etiquetas: {0}",

View file

@ -139,5 +139,8 @@
"AllLanguages": "تمام زبان ها",
"AllLibraries": "تمام کتابخانه ها",
"AllowHWTranscodingHelp": "اگر فعال شود, اجازه میدهید تبدیل ( کم و زیاد کردن کیفیت ) درلحظه و توسط کارت دریافت سیگنال صورت گیرد. این کمک میکند به اینکه سرور جلیفین کمتر عمل تبدیل را انجام دهد.",
"AllowOnTheFlySubtitleExtraction": "اجازه میدهد در لحظه زیرنویس بازشود"
"AllowOnTheFlySubtitleExtraction": "اجازه میدهد در لحظه زیرنویس بازشود",
"Add": "افزودن",
"Actor": "بازیگر",
"AccessRestrictedTryAgainLater": "دسترسی در حال حاضر محدود شده است. لطفا دوباره تلاش کنید."
}

View file

@ -240,8 +240,7 @@
"DirectStreamHelp2": "Tiedoston suoraan toistaminen käyttää erittäin vähän prosessorin resursseja ilman laadun heikentämistä.",
"DirectStreaming": "Suora suoratoisto",
"Director": "Ohjaaja",
"DirectorValue": "Ohjaaja: {0}",
"DirectorsValue": "Ohjaajat: {0}",
"Directors": "Ohjaajat",
"Disabled": "Pois päältä kytkettynä",
"Disc": "Levy",
"Disconnect": "Katkaise yhteys",
@ -257,7 +256,7 @@
"DownloadsValue": "{0} latausta",
"DrmChannelsNotImported": "Kanavia joissa on tekijänoikeusesto-ohjelmia, ei ladata.",
"DropShadow": "Tiputa varjo",
"EasyPasswordHelp": "Sinun helppoa PIN-koodia käytetään offline-käytössä tuetuissa Jellyfin-sovelluksissa, ja voidaan myös nopeuttaa verkkoon kirjautumista.",
"EasyPasswordHelp": "Sinun helppoa PIN-koodia käytetään offline-käytössä tuetuissa Jellyfin-sovelluksissa, ja voi myös nopeuttaa lan yhteyden kautta kirjautumista.",
"Edit": "Muokkaa",
"EditImages": "Muokkaa kuvia",
"EditMetadata": "Muokkaa metadataa",
@ -305,5 +304,20 @@
"EnableDisplayMirroring": "Näytön peilaus",
"EnableColorCodedBackgrounds": "Väri-koodatut taustat",
"EnableCinemaMode": "Teatteri-tila",
"EnableBackdropsHelp": "Näytä taustat tietyillä sivuilla selatessasi kirjastoa."
"EnableBackdropsHelp": "Näytä taustat tietyillä sivuilla selatessasi kirjastoa.",
"EnableExternalVideoPlayersHelp": "Videota soitettaessa näytetään erillinen valikko.",
"Depressed": "Painettu",
"CopyStreamURLError": "Verkko-osoitteen kopioinnissa tapahtui virhe.",
"ButtonSplit": "jaa",
"AskAdminToCreateLibrary": "Pyydä järjestelmän ylläpitäjää luomaan kirjasto.",
"EnableStreamLooping": "Auto-toista suoralähetykset",
"EnableNextVideoInfoOverlayHelp": "Videon lopussa, näytä soittolistassa seuraavaksi toistettavan videon tiedot.",
"ClientSettings": "Pääte-asetukset",
"AllowFfmpegThrottlingHelp": "Kun uudelleenkoodaus tai remux ehtii tarpeeksi toiston edelle, keskeytä laskenta jotta laskentaresursseja kuluu vähemmän. Tämä on hyödyllistä jos katselet hyppimättä eri kohtiin. Älä käytä jos toiston kanssa ilmenee ongelmia.",
"AllowFfmpegThrottling": "Rajoita uudelleenkoodaus",
"ErrorDeletingItem": "Tiedostoa poistaessa Jellyfin Palvelimelta ilmeni virhe. Varmista, että Jellyfin Palvelimella on kirjoitusoikeudet mediakansioon ja kokeile uudestaan.",
"ErrorAddingXmlTvFile": "XMLTV-tiedostoa käyttäessä tapahtui virhe. Varmista, että tiedosto on olemassa ja kokeile uudestaan.",
"ErrorAddingTunerDevice": "Viritintä lisätessä ilmeni ongelma. Varmista, että se on kytketty oikein ja kokeile uudestaan.",
"EnableThemeVideosHelp": "Soita tunnusvideoita taustalla, selatessasi kirjastoa.",
"EnableThemeVideos": "Teeman videot"
}

View file

@ -175,9 +175,8 @@
"DirectStreamHelp1": "Le média est compatible avec l'appareil en ce qui concerne la résolution et le type de média (H.264, AC3, etc), mais se trouve dans un conteneur de fichiers incompatible (mkv, avi, wmv, etc). La vidéo sera rempaquetée à la volée avant d'être diffusée à l'appareil.",
"DirectStreamHelp2": "Le streaming en direct d'un fichier utilise très peu de puissance de traitement sans perte de qualité vidéo.",
"DirectStreaming": "Streaming direct",
"Director": "Réalisation",
"DirectorValue": "Réalisation: {0}",
"DirectorsValue": "Réalisation: {0}",
"Director": "Réalisateur(trice)",
"Directors": "Réalisateurs",
"Disabled": "Désactivé",
"Disc": "Disque",
"Disconnect": "Déconnecter",
@ -777,7 +776,7 @@
"LabelSubtitleDownloaders": "Outils de téléchargement de sous-titres :",
"LabelSubtitleFormatHelp": "Exemple : srt",
"LabelSubtitlePlaybackMode": "Mode des sous-titres :",
"LabelSubtitles": "Sous-titres :",
"LabelSubtitles": "Sous-titres",
"LabelSupportedMediaTypes": "Types de médias supportés :",
"LabelTVHomeScreen": "Écran d'accueil du mode TV :",
"LabelTag": "Étiquette :",
@ -814,7 +813,7 @@
"LabelValue": "Valeur :",
"LabelVersion": "Version :",
"LabelVersionInstalled": "{0} installé(s)",
"LabelVideo": "Vidéo :",
"LabelVideo": "Vidéo",
"LabelXDlnaCap": "Cap X-DLNA :",
"LabelXDlnaCapHelp": "Détermine le contenu de l'élément X_DLNACAP dans l'espace de nom urn:schemas-dlna-org:device-1-0.",
"LabelXDlnaDoc": "Doc X-DLNA :",
@ -1100,7 +1099,7 @@
"PlayAllFromHere": "Tout lire à partir d'ici",
"PlayCount": "Nombre de lectures",
"PlayFromBeginning": "Lire depuis le début",
"PlayNext": "Lire le suivant",
"PlayNext": "Lire ensuite",
"PlayNextEpisodeAutomatically": "Lancer l'épisode suivant automatiquement",
"Played": "Lu",
"Playlists": "Listes de lecture",
@ -1329,9 +1328,8 @@
"ButtonPause": "Pause",
"Collections": "Collections",
"Extras": "Extras",
"GenreValue": "Genre: {0}",
"Genre": "Genre",
"Genres": "Genres",
"GenresValue": "Genres: {0}",
"Guide": "Guide",
"GuestStar": "Guest star",
"Photos": "Photos",
@ -1341,7 +1339,7 @@
"HeaderTuners": "Égaliseur",
"Horizontal": "Horizontal",
"Images": "Images",
"LabelAudio": "Audio :",
"LabelAudio": "Audio",
"LabelVersionNumber": "Version {0}",
"LeaveBlankToNotSetAPassword": "Laissez vide pour ne pas définir de mot de passe.",
"Logo": "Logo",
@ -1470,5 +1468,7 @@
"AllowFfmpegThrottlingHelp": "Quand le transcodage ou le remultiplexage est suffisamment loin de la position de lecture, le processus se mettra en pause afin déconomiser des ressources. Plus utile lors dune lecture continue. À désactiver en cas de problèmes de lecture.",
"AllowFfmpegThrottling": "Adapter la Vitesse du Transcodage",
"NoCreatedLibraries": "Il semblerait que vous n'ayez créé aucune librairie. {0}Voulez-vous en créer une maintenant ?{1}",
"PlaybackErrorNoCompatibleStream": "Problème de profil client, le serveur na pas pu envoyer un format média compatible."
"PlaybackErrorNoCompatibleStream": "Problème de profil client, le serveur na pas pu envoyer un format média compatible.",
"PreferEmbeddedEpisodeInfosOverFileNames": "Préférer les informations intégrées aux noms de fichiers",
"PreferEmbeddedEpisodeInfosOverFileNamesHelp": "Utilise les informations des métadonnées intégrées, si disponible."
}

View file

@ -164,5 +164,8 @@
"Songs": "Lieder",
"Sync": "Synchronisation",
"ValueSpecialEpisodeName": "Extra - {0}",
"VersionNumber": "Version {0}"
"VersionNumber": "Version {0}",
"Absolute": "Absolut",
"Actor": "Schauspiler",
"AccessRestrictedTryAgainLater": "Zuegriff isch momentan beschränkt. Probier bitte später nomau. "
}

View file

@ -59,7 +59,6 @@
"DeleteImageConfirmation": "האם אתה בטוח שברצונך למחוק תמונה זו?",
"DeleteMedia": "מחק מדיה",
"DeleteUser": "מחק משתמש",
"Director": "מנהל",
"Dislike": "לא אוהב",
"DoNotRecord": "אל תקליט",
"Download": "הורדה",
@ -557,8 +556,8 @@
"DisplayMissingEpisodesWithinSeasons": "הצג פרקים חסרים בתוך העונות",
"DisplayInMyMedia": "הצג בעמוד הבית",
"Disconnect": "התנתק",
"DirectorsValue": "במאים: {0}",
"DirectorValue": "במאי: {0}",
"Director": "במאי",
"Directors": "במאים",
"Descending": "סדר יורד",
"Default": "ברירת מחדל",
"DeathDateValue": "נפטר: {0}",
@ -667,8 +666,7 @@
"HeaderAddScheduledTaskTrigger": "הוסף טריגר",
"HeaderActivity": "פעילות",
"Guide": "מדריך",
"GenresValue": "ז'אנרים: {0}",
"GenreValue": "ז'אנר: {0}",
"Genre": "ז'אנר",
"General": "כללי",
"Fullscreen": "מסך מלא",
"FolderTypeUnset": "תוכן מעורבב",

View file

@ -32,5 +32,7 @@
"Aired": "प्रसारित हो चुका",
"AdditionalNotificationServices": "अतिरिक्त सूचना सेवाओं को स्थापित करने के लिए प्लगइन सूची पर नज़र डालें।",
"AddedOnValue": "जोड़ दिया",
"AddToPlaylist": "प्लेलिस्ट में जोड़ें"
"AddToPlaylist": "प्लेलिस्ट में जोड़ें",
"AllowMediaConversionHelp": "मीडिया परिवर्तन के लिये अनुमति दें",
"AllowMediaConversion": "मीडिया रूपांतरण की अनुमति दें"
}

View file

@ -87,8 +87,7 @@
"DeleteMedia": "Média törlése",
"Descending": "Csökkenő",
"Director": "Rendező",
"DirectorValue": "Rendező: {0}",
"DirectorsValue": "Rendezők: {0}",
"Directors": "Rendezők",
"Dislike": "Nem tettszik",
"Display": "Megjelenítés",
"DisplayMissingEpisodesWithinSeasons": "Hiányzó évad epizódok megjelenítése",
@ -124,7 +123,6 @@
"Fullscreen": "Teljes képernyő",
"General": "Általános",
"Genres": "Műfajok",
"GenresValue": "Műfajok: {0}",
"HeaderActiveDevices": "Aktív eszközök",
"HeaderAddToCollection": "Hozzáadás gyűjteményhez",
"HeaderAddToPlaylist": "Hozzáadás lejátszási listához",
@ -233,7 +231,7 @@
"LabelAllowServerAutoRestart": "Automatikus újraindítás engedélyezése a szervernek a frissítések telepítéséhez",
"LabelAllowServerAutoRestartHelp": "A szerver csak akkor indul újra ha nincs felhasználói tevékenység.",
"LabelArtists": "Előadók:",
"LabelAudio": "Audió:",
"LabelAudio": "Audió",
"LabelAudioLanguagePreference": "Audió nyelvének beállítása:",
"LabelBirthYear": "Születési év:",
"LabelCachePath": "Gyorsítótár útvonal:",
@ -321,7 +319,7 @@
"LabelStopping": "Megállítás",
"LabelSubtitleFormatHelp": "Például: srt",
"LabelSubtitlePlaybackMode": "Felirat mód:",
"LabelSubtitles": "Feliratok:",
"LabelSubtitles": "Feliratok",
"LabelTagline": "Címke:",
"LabelTheme": "Kinézet:",
"LabelTime": "Idő:",
@ -338,7 +336,7 @@
"LabelUsername": "Felhasználónév:",
"LabelVersionInstalled": "{0} telepítve",
"LabelVersionNumber": "Verzió {0}",
"LabelVideo": "Videó:",
"LabelVideo": "Videó",
"LabelYear": "Év:",
"LabelYourFirstName": "Keresztneved:",
"LabelYoureDone": "Készen vagy!",
@ -575,7 +573,7 @@
"Writer": "Író",
"Yesterday": "Tegnap",
"FormatValue": "Formátum: {0}",
"GenreValue": "Műfaj: {0}",
"Genre": "Műfaj",
"HeaderServerSettings": "Szerver beállítások",
"LabelDropImageHere": "Húzz ide egy képet, vagy kattints a böngészéshez.",
"LabelDropShadow": "Árnyék:",
@ -1213,7 +1211,7 @@
"Screenshots": "Képernyőképek",
"SearchForCollectionInternetMetadata": "Keresés az interneten artwork és metaadat után",
"Series": "Sorozatok",
"SeriesCancelled": "A sorozat törölt.",
"SeriesCancelled": "Sorozat törölve.",
"SeriesRecordingScheduled": "A sorozatfelvétel ütemezett.",
"SeriesSettings": "Sorozat beállítások",
"ServerRestartNeededAfterPluginInstall": "A bővítmény telepítése után újra kell indítani a Jellyfin Szerver-t.",
@ -1474,5 +1472,7 @@
"DeviceAccessHelp": "Ez csak azokra az eszközökre alkalmazható, amelyek egyedileg vannak azonosítva és nem gátolják meg a böngészőből való elérést. A felhasználói eszközök kiszűrése meg fogja akadályozni az új eszközök használatát addig, amíg itt nem engedélyezed őket.",
"PlaybackErrorNoCompatibleStream": "Hiba történt a kliens felmérése közben és a szerver nem küld kompatibilis formátumot az eszközre.",
"AllowFfmpegThrottlingHelp": "Ha az átkódolás vagy remux eléggé előtöltődött a jelenlegi lejátszási pozícióhoz képest, ez megállítja a folyamatot, hogy kevesebb erőforrást vegyen igénybe. Ez akkor hasznos, ha ritkán ugrálsz előre a lejátszott videókban. Kapcsold ki, ha lejátszási problémákba ütközöl.",
"AllowFfmpegThrottling": "Átkódolás visszafogása"
"AllowFfmpegThrottling": "Átkódolás visszafogása",
"PreferEmbeddedEpisodeInfosOverFileNames": "Inkább a beágyazott epizódokra vonatkozó információkat részesítse előnyben a fájlnevekkel szemben",
"PreferEmbeddedEpisodeInfosOverFileNamesHelp": "Ez a beágyazott metaadatok epizódinformációit használja, ha rendelkezésre állnak."
}

View file

@ -165,8 +165,7 @@
"DirectStreamHelp2": "Lo Streaming in Diretta di un file utilizza poco il processore senza alcuna perdita di qualità video.",
"DirectStreaming": "Streaming Diretto",
"Director": "Regista",
"DirectorValue": "Regista: {0}",
"DirectorsValue": "Registi: {0}",
"Directors": "Registi",
"Disabled": "Disabilitato",
"Disc": "Disco",
"Disconnect": "Disconnetti",
@ -240,9 +239,8 @@
"FormatValue": "Formato: {0}",
"Friday": "Venerdì",
"Fullscreen": "Schermo Intero",
"GenreValue": "Genere: {0}",
"Genre": "Genere",
"Genres": "Generi",
"GenresValue": "Generi: {0}",
"GroupBySeries": "Raggruppa per serie",
"GroupVersions": "Raggruppa versioni",
"GuestStar": "Personaggio famoso",
@ -581,7 +579,7 @@
"LabelForgotPasswordUsernameHelp": "Inserisci il tuo nome utente, se te lo ricordi.",
"LabelFormat": "Formato:",
"LabelFriendlyName": "Nome Condiviso:",
"LabelServerNameHelp": "Questo nome è usato per identificare il server e verrà usato di default come nome del pc.",
"LabelServerNameHelp": "Questo nome è usato per identificare il server e avrà come default il nome del pc.",
"LabelGroupMoviesIntoCollections": "Raggruppa i film nelle collezioni",
"LabelGroupMoviesIntoCollectionsHelp": "Quando si visualizzano le liste di film, quelli appartenenti ad una collezione saranno visualizzati come un elemento raggruppato.",
"LabelH264Crf": "CRF di codifica H264:",
@ -751,7 +749,7 @@
"LabelSubtitleDownloaders": "Downloader sottotitoli:",
"LabelSubtitleFormatHelp": "Esempio: srt",
"LabelSubtitlePlaybackMode": "Modalità Sottotitolo:",
"LabelSubtitles": "Sottotitoli:",
"LabelSubtitles": "Sottotitoli",
"LabelSupportedMediaTypes": "Tipi di media supportati:",
"LabelTVHomeScreen": "Schermata iniziale della modalità TV:",
"LabelTagline": "Slogan:",
@ -1319,7 +1317,7 @@
"HeaderRestartingServer": "Riavvio Server",
"Home": "Home",
"LabelAlbum": "Album:",
"LabelAudio": "Audio:",
"LabelAudio": "Audio",
"LabelCache": "Cache:",
"ButtonAddImage": "Aggiungi Immagine",
"CopyStreamURL": "Copia Indirizzo dello Stream",
@ -1400,7 +1398,7 @@
"LabelTranscodingProgress": "Progresso di trascodifica:",
"DashboardVersionNumber": "Versione: {0}",
"DashboardServerName": "Server: {0}",
"LabelVideo": "Video:",
"LabelVideo": "Video",
"DashboardArchitecture": "Architettura: {0}",
"LabelWeb": "Web:",
"LaunchWebAppOnStartup": "Lancia l'interfaccia web quando viene avviato il server",

View file

@ -176,8 +176,7 @@
"DirectStreamHelp2": "ファイルのダイレクトストリーミングは、ビデオ品質を損なうことなく、Jellyfin Serverにもほとんど負荷がありません。",
"DirectStreaming": "ダイレクトストリーミング",
"Director": "ディレクター",
"DirectorValue": "ディレクター: {0}",
"DirectorsValue": "ディレクターズ: {0}",
"Directors": "ディレクターズ",
"Disabled": "無効",
"Disc": "ディスク",
"Disconnect": "切断",
@ -266,9 +265,8 @@
"Friday": "金曜日",
"Fullscreen": "フルスクリーン",
"General": "全般",
"GenreValue": "ジャンル: {0}",
"Genre": "ジャンル",
"Genres": "ジャンル",
"GenresValue": "ジャンル: {0}",
"GroupBySeries": "シリーズグループ",
"GroupVersions": "グループバージョン",
"GuestStar": "ゲストスター",
@ -560,7 +558,7 @@
"LabelOriginalAspectRatio": "元のアスペクト比:",
"LabelPrevious": "前へ",
"LabelServerName": "サーバー名:",
"LabelSubtitles": "字幕:",
"LabelSubtitles": "字幕",
"LabelSupportedMediaTypes": "サポートされているメディアタイプ:",
"LabelTVHomeScreen": "TVモードホームスクリーン:",
"LabelTextColor": "文字色:",
@ -860,7 +858,7 @@
"LabelAllowedRemoteAddresses": "リモートIPアドレスフィルター:",
"LabelAppNameExample": "例: スケートボード、ソナー",
"LabelArtists": "アーティスト:",
"LabelAudio": "音声:",
"LabelAudio": "音声",
"LabelAudioBitDepth": "音声ビット深度:",
"LabelAudioBitrate": "音声ビットレート:",
"LabelAudioChannels": "音声チャンネル:",
@ -965,7 +963,7 @@
"DashboardVersionNumber": "バージョン: {0}",
"DashboardServerName": "サーバー: {0}",
"DashboardArchitecture": "アーキテクチャ: {0}",
"LabelVideo": "映像:",
"LabelVideo": "映像",
"LabelVideoBitrate": "映像ビットレート:",
"LabelYourFirstName": "名前:",
"Share": "共有",

View file

@ -188,8 +188,7 @@
"DirectStreamHelp2": "Faıldy tikeleı taratý beıne sapasyn joǵaltpaı óte az esepteý qýatyn paıdalanady.",
"DirectStreaming": "Tikeleı tasymaldanýda",
"Director": "Rejısór",
"DirectorValue": "Rejısóri: {0}",
"DirectorsValue": "Rejısórler; {0}",
"Directors": "Rejısórler",
"Disabled": "Ajyratylǵan",
"Disc": "Dıski",
"Disconnect": "Ajyratý",
@ -267,9 +266,8 @@
"Friday": "juma",
"Fullscreen": "Tolyq ekran",
"General": "Jalpy",
"GenreValue": "Janr: {0}",
"Genre": "Janr",
"Genres": "Janrlar",
"GenresValue": "Janrlar: {0}",
"GroupBySeries": "Telehıkaıalar boıynsha toptastyrý",
"GroupVersions": "Nusqalardy toptastyrý",
"GuestStar": "Shaqyrylǵan aktór",
@ -538,7 +536,7 @@
"LabelAppNameExample": "Mysaly: Sickbeard, Sonarr",
"LabelArtists": "Oryndaýshylar:",
"LabelArtistsHelp": "Birneshýin mynaýmen bólińiz ;",
"LabelAudio": "Dybys:",
"LabelAudio": "Dybys",
"LabelAudioLanguagePreference": "Dybys tiliniń teńshelimi:",
"LabelAutomaticallyRefreshInternetMetadataEvery": "Metaderekterdi Internetten avtomatty jańartý:",
"LabelBindToLocalNetworkAddress": "Jergilikti jeli mekenjaıyna baılastyrý:",
@ -809,7 +807,7 @@
"LabelSubtitleDownloaders": "Sýbtıtrler júkteýshileri:",
"LabelSubtitleFormatHelp": "Mysal: srt",
"LabelSubtitlePlaybackMode": "Sýbtıtr rejimi:",
"LabelSubtitles": "Sýbtıtrler:",
"LabelSubtitles": "Sýbtıtrler",
"LabelSupportedMediaTypes": "Qoldaýdaǵy tasyǵyshderekter túrleri:",
"LabelTVHomeScreen": "TD rejimindegi basqy ekran:",
"LabelTag": "Teg:",
@ -851,7 +849,7 @@
"LabelVersion": "Nusqa:",
"LabelVersionInstalled": "{0} ornatylǵan",
"LabelVersionNumber": "Nýsqasy: {0}",
"LabelVideo": "Beıne:",
"LabelVideo": "Beıne",
"LabelXDlnaCap": "X-DLNA sıpattary:",
"LabelXDlnaCapHelp": "urn:schemas-dlna-org:device-1-0 ataýlar keńistigindegi X_DLNACAP elementi mazmunyn anyqtaıdy.",
"LabelXDlnaDoc": "X-DLNA tásimi:",

View file

@ -880,7 +880,6 @@
"DoNotRecord": "녹화 안 함",
"Disconnect": "연결 끊기",
"Disabled": "비활성화됨",
"DirectorValue": "감독: {0}",
"DirectPlaying": "다이렉트 재생",
"DirectStreaming": "다이렉트 스트리밍",
"DirectStreamHelp2": "다이렉트 스트리밍은 비디오 퀄리티의 손실없이 매우 적은 처리능력을 사용합니다.",
@ -1026,7 +1025,7 @@
"LabelWeb": "웹:",
"LabelVideoCodec": "비디오 코덱:",
"LabelVideoBitrate": "비디오 비트레이트:",
"LabelVideo": "비디오:",
"LabelVideo": "비디오",
"DashboardArchitecture": "아키텍처: {0}",
"DashboardOperatingSystem": "운영체제: {0}",
"DashboardServerName": "서버: {0}",
@ -1043,7 +1042,7 @@
"LabelTheme": "테마:",
"LabelTextSize": "글자 크기:",
"LabelTextColor": "글자 색:",
"LabelSubtitles": "자막:",
"LabelSubtitles": "자막",
"LabelSubtitleFormatHelp": "예시: srt",
"LabelSubtitleDownloaders": "자막 다운로더:",
"LabelStopping": "중지",
@ -1083,7 +1082,7 @@
"LabelAudioCodec": "오디오 코덱:",
"LabelAudioChannels": "오디오 채널:",
"LabelAudioBitrate": "오디오 비트레이트:",
"LabelAudio": "오디오:",
"LabelAudio": "오디오",
"Items": "항목",
"Kids": "어린이",
"Home": "홈",
@ -1145,8 +1144,7 @@
"HardwareAccelerationWarning": "하드웨어 가속을 활성화하면 일부 환경에서 불안정해질 수 있습니다. 운영체제 및 비디오 드라이버가 최신 상태인지 확인하십시오. 이 기능을 활성화한 후 비디오를 재생하는 데 어려움이 있을 경우 설정을 다시 '사용 안 함'으로 변경하십시오.",
"GuestStar": "게스트 스타",
"GroupBySeries": "시리즈별로 그룹화",
"GenresValue": "장르: {0}",
"GenreValue": "장르: {0}",
"Genre": "장르",
"General": "일반",
"FileReadCancelled": "파일 읽기 작업이 취소되었습니다.",
"FetchingData": "추가 데이터를 가져오는 중",
@ -1284,7 +1282,7 @@
"LabelDiscNumber": "디스크 번호:",
"Identify": "식별자",
"HeaderMoreLikeThis": "비슷한 작품",
"DirectorsValue": "감독: {0}",
"Directors": "감독",
"ButtonSplit": "나누기",
"HeaderContainerProfileHelp": "컨테이너 프로파일은 사용자의 디바이스에서 재생 가능한 파일 형식을 나타냅니다. 다이렉트 플레이가 설정된 경우에도 디바이스에서 지원되지 않는 형식이라면 트랜스코딩이 적용됩니다.",
"HeaderCodecProfileHelp": "코덱 프로파일은 사용자의 디바이스에서 재생 가능한 코덱을 가리킵니다. 다이렉트 플레이가 설정된 경우에도 디바이스에서 지원되지 않는 코덱이라면 트랜스코딩이 적용됩니다.",

View file

@ -624,8 +624,7 @@
"ConfirmEndPlayerSession": "Ar norite išjungti Jellyfin ant {0}?",
"Descending": "Mažėjančia tvarka",
"DetectingDevices": "Ieškomi įrenginiai",
"DirectorValue": "Režisierius: {0}",
"DirectorsValue": "Režisieriai: {0}",
"Directors": "Režisieriai",
"Disabled": "Išjungtas",
"Disc": "Diskas",
"Disconnect": "Atsijungti",
@ -785,7 +784,7 @@
"HeaderLoginFailure": "Prisijungimo klaida",
"Hide": "Paslėpti",
"LabelAll": "Visi",
"LabelAudio": "Garsas:",
"LabelAudio": "Garsas",
"LabelCancelled": "Atšaukta",
"LabelCertificatePassword": "Sertifikato slaptažodis:",
"LabelCertificatePasswordHelp": "Jei sertifikatui reikalingas slaptažodis, jį įveskite čia.",
@ -805,7 +804,7 @@
"ExtraLarge": "Labai didelis",
"Fullscreen": "Viso ekrano režimas",
"General": "Bendri",
"GenreValue": "Žanras: {0}",
"Genre": "Žanras",
"ErrorPleaseSelectLineup": "Pasirinkite TV programą ir bandykite dar kartą. Jei TV programos nerodoma, patikrinkite ar teisingas jūsų vartotojo vardas, slaptažodis ir pašto kodas.",
"HeaderRevisionHistory": "Versijų istorija",
"HeaderShutdown": "Išjungti",
@ -924,7 +923,6 @@
"ErrorAddingXmlTvFile": "Atidarant XMLTV failą įvyko klaida. Įsitikinkite, ar failas egzistuoja, ir bandykite dar kartą.",
"ErrorGettingTvLineups": "Atsisiunčiant TV programas įvyko klaida. Įsitikinkite, kad jūsų informacija teisinga, ir bandykite dar kartą.",
"Features": "Medžiagos",
"GenresValue": "Žanrai: {0}",
"GroupBySeries": "Grupuoti pagal serialus",
"Guide": "Gidas",
"GuideProviderLogin": "Prisijungti",

View file

@ -32,11 +32,11 @@
"MessageDownloadQueued": "Lejupielāde ierindota.",
"MessageCreateAccountAt": "Izveido kontu {0}",
"MessageContactAdminToResetPassword": "Lūdzu sazinies ar sistēmas administratoru lai atiestatītu paroli.",
"MessageConfirmShutdown": "Vai tu tiešām gribi izslēgt serveri?",
"MessageConfirmRestart": "Vai tu tiešām gribi restartēt Jellyfin Server?",
"MessageConfirmRemoveMediaLocation": "Vai tu tiešām gribi noņemt šo ceļu?",
"MessageConfirmShutdown": "Vai tu tiešām vēlies izslēgt serveri?",
"MessageConfirmRestart": "Vai tu tiešām vēlies restartēt Jellyfin Server?",
"MessageConfirmRemoveMediaLocation": "Vai tu tiešām vēlies noņemt šo ceļu?",
"MessageConfirmRecordingCancellation": "Atcelt ierakstu?",
"MessageConfirmAppExit": "Vai tu gribi iziet?",
"MessageConfirmAppExit": "Vai tu vēlies iziet?",
"MessageAlreadyInstalled": "Šī versija jau ir uzstādīta.",
"MediaInfoStreamTypeVideo": "Video",
"MediaInfoStreamTypeSubtitle": "Subtitri",
@ -52,7 +52,7 @@
"LabelVideoResolution": "Video izšķirtspēja:",
"LabelVideoCodec": "Video kodeks:",
"LabelVideoBitrate": "Video bitu-ātrums:",
"LabelVideo": "Video:",
"LabelVideo": "Video",
"DashboardArchitecture": "Arhitektūra: {0}",
"DashboardOperatingSystem": "Operētājsistēma: {0}",
"DashboardServerName": "Serveris: {0}",
@ -85,7 +85,7 @@
"LabelTag": "Tags:",
"LabelTVHomeScreen": "TV režīma mājas ekrāns:",
"LabelSupportedMediaTypes": "Atbalstītie Multivides Veidi:",
"LabelSubtitles": "Subtitri:",
"LabelSubtitles": "Subtitri",
"LabelSubtitlePlaybackMode": "Subtitru veids:",
"LabelSubtitleFormatHelp": "Piemērs: srt",
"LabelSubtitleDownloaders": "Subtitru lejupielādētāji:",
@ -222,7 +222,7 @@
"LabelBirthYear": "Dzimšanas gads:",
"LabelBirthDate": "Dzimšanas datums:",
"LabelAudioLanguagePreference": "Ieteicamā audio valoda:",
"LabelAudio": "Audio:",
"LabelAudio": "Audio",
"LabelArtistsHelp": "Atdali vairākus izmantojot ;",
"LabelArtists": "Izpildītājs:",
"LabelAppNameExample": "Piemēram: Sickbeard, Sonarr",
@ -412,9 +412,8 @@
"GuestStar": "Vieszvaigzne",
"GroupVersions": "Grupēt versijas",
"GroupBySeries": "Grupēt pēc sērijām",
"GenresValue": "Žanri: {0}",
"Genres": "Žanri",
"GenreValue": "Žanrs: {0}",
"Genre": "Žanrs",
"General": "Vispārīgs",
"Fullscreen": "Pilnekrāns",
"Friday": "Piektdiena",
@ -464,8 +463,7 @@
"Dislike": "Nepatīk",
"Disc": "Disks",
"Disabled": "Atspējots",
"DirectorsValue": "Direktori: {0}",
"DirectorValue": "Direktors: {0}",
"Directors": "Direktori",
"Director": "Direktors",
"DirectStreaming": "Tiešā straumēšana",
"DirectPlaying": "Tiešā Atskaņošana",
@ -698,7 +696,7 @@
"Unplayed": "Neatskaņots",
"Unmute": "Ieslēgt skaņu",
"UninstallPluginHeader": "Noņemt Paplašinājumu",
"UninstallPluginConfirmation": "Vai tu tiešām gribi noņemt {0}?",
"UninstallPluginConfirmation": "Vai tu tiešām vēlies noņemt {0}?",
"Tuesday": "Otrdiena",
"Transcoding": "Trans-kodēšana",
"Trailers": "Treileri",
@ -916,9 +914,9 @@
"HeaderTaskTriggers": "Uzdevumu Trigeri",
"HeaderSelectTranscodingPathHelp": "Pārlūko vai ievadi ceļu, kurā tiks glabātas īslaicīgās trans-kodēšanas datnes. Šai mapei jābūt rakstāmai.",
"HeaderSelectTranscodingPath": "Izvēlies Trans-kodēšanas Īslaicīgo Ceļu",
"HeaderSelectServerCachePathHelp": "Pārlūko vai ievadi ceļu, kurā tu gribi saglabāt servera keša datnes. Šai mapei jābūt rakstāmai.",
"HeaderSelectServerCachePathHelp": "Pārlūko vai ievadi ceļu, kurā vēlies saglabāt servera keša datnes. Šai mapei jābūt rakstāmai.",
"HeaderSelectPath": "Izvēlies Ceļu",
"HeaderSelectMetadataPathHelp": "Pārlūko vai ievadi ceļu, kurā tu gribi saglabāt metadatus. Šai mapei jābūt rakstāmai.",
"HeaderSelectMetadataPathHelp": "Pārlūko vai ievadi ceļu, kurā vēlies saglabāt metadatus. Šai mapei jābūt rakstāmai.",
"HeaderSelectMetadataPath": "Izvēlies Metadatu Ceļu",
"HeaderSelectCertificatePath": "Izvēlies Sertifikāta Ceļu",
"HeaderScenes": "Ainas",
@ -975,11 +973,11 @@
"DirectStreamHelp1": "Šis medijs ir saderīgs ar ierīci pēc izšķirtspējas un medija veida (H.264, AC3, utt.), bet atrodas nesaderīgā datnes konteinerī (mkv, avi, wmv, utt.). Video tiks pārpakots uz saderīgu formātu pirms tas tiks straumēts uz ierīci.",
"Descending": "Disltošs",
"Depressed": "Atspiests",
"DeleteUserConfirmation": "Vai tu tiešām gribi izdzēst šo lietotāju?",
"DeleteUserConfirmation": "Vai tu tiešām vēlies izdzēst šo lietotāju?",
"DeleteUser": "Dzēst Lietotāju",
"DeleteMedia": "Dzēst mediju",
"DeleteImageConfirmation": "Vai tu tiešām gribi izdzēst šo attēlu?",
"DeleteDeviceConfirmation": "Vai tu tiešām gribi noņemt šo ierīci? Tā parādīsies atkārtoti nākamo reizi, kad lietotājs ieiet ar to.",
"DeleteImageConfirmation": "Vai tu tiešām vēlies izdzēst šo attēlu?",
"DeleteDeviceConfirmation": "Vai tu tiešām vēlies noņemt šo ierīci? Tā parādīsies atkārtoti nākamo reizi, kad lietotājs ieiet ar to.",
"DefaultErrorMessage": "Apstrādājot pieprasījumu notika kļūda. Pēc brītiņa lūdzu mēģini vēlreiz.",
"DeathDateValue": "Miris: {0}",
"ConfirmEndPlayerSession": "Vai jūs gribat izslēgt Jellyfin uz {0}?",
@ -1046,5 +1044,42 @@
"LabelKodiMetadataSaveImagePathsHelp": "Tas ir ieteicams ja tev ir attēlu datņu nosaukumi, kas neatbilst Kodi vadlīnijām.",
"LabelKodiMetadataSaveImagePaths": "Saglabāt attēlu ceļus iekš nfo datnēm",
"LabelKodiMetadataEnablePathSubstitutionHelp": "Iespējot ceļu substitūciju attēlu ceļiem izmantojot serveru ceļu substitūcijas iestatījumus.",
"LabelKodiMetadataEnablePathSubstitution": "Iespējot ceļu substitūciju"
"LabelKodiMetadataEnablePathSubstitution": "Iespējot ceļu substitūciju",
"MessageDirectoryPickerBSDInstruction": "Priekš BSD, tev var būt vajadzēs nokonfigurēt glabātuvi savā FreeNAS jail, lai atļautu Jellyfin tai piekļuvi.",
"MessageConfirmRevokeApiKey": "Vai tu tiešām vēlies atsaukt šo api atslēgu? Lietotnes savienojums ar Jellyfin Serveri tiks strauji atslēgts.",
"MessageConfirmProfileDeletion": "Vai tu tiešām vēlies izdzēst šo profilu?",
"LabelTranscodingProgress": "Trans-kodēšanas progress:",
"LabelTranscodingFramerate": "Trans-kodēšanas kadru ātrums:",
"LabelRecordingPathHelp": "Ievadi noklusējuma vietējo vietu, kur saglabāt ierakstus. Ja atstāsts tukšs, servera programmas datu mape tiks lietota tā vietā.",
"LabelPublicHttpsPortHelp": "Publiskais porta numurs, ko kartēt uz vietējo HTTPS portu.",
"LabelOriginalAspectRatio": "Oriģinālās proporcijas:",
"LabelMaxStreamingBitrateHelp": "Ievadi maksimālo bitu ātrumu straumēšanai.",
"LabelLocalHttpServerPortNumberHelp": "TCP porta numurs, kuru izmantos Jellyfin HTTP serveris.",
"MessageAreYouSureYouWishToRemoveMediaFolder": "Vai tiešām vēlies noņemt šo mediju datni?",
"MessageAreYouSureDeleteSubtitles": "Vai tiešām vēlies izdzēst šo subtitru datni?",
"MediaIsBeingConverted": "Medijs tiek pārveidots uz formātu kuru atbalsta tā atskaņojošā ierīce.",
"MediaInfoStreamTypeEmbeddedImage": "Iegults Attēls",
"MediaInfoTimestamp": "Laika zīmogs",
"MediaInfoSampleRate": "Izlases ātrums",
"MediaInfoInterlaced": "Rindpārlēkts",
"MediaInfoFramerate": "Kadru ātrums",
"MediaInfoAspectRatio": "Attēla proporcijas",
"MaxParentalRatingHelp": "Saturs ar augstāku reitingu tiks paslēpts no šī lietotāja.",
"LibraryAccessHelp": "Izvēlies bibliotēkas, ko koplietot ar šo lietotāju. Administratori spēs rediģēt visas bibliotēkas izmantojot metadatu pārvaldnieku.",
"LearnHowYouCanContribute": "Uzzini, kā tu vari dot ieguldījumu.",
"LabelUserLoginAttemptsBeforeLockout": "Neizdevušies piekļuves mēģinājumi pirms lietotājs tiek bloķēts:",
"LabelTranscodingThreadCount": "Trans-kodēšanas kodolu daudzums:",
"LabelTranscodes": "Transkodi:",
"LabelTitle": "Tituls:",
"LabelSaveLocalMetadata": "Saglabāt māksu media mapēs",
"LabelReadHowYouCanContribute": "Uzzini, kā tu vari dot ieguldījumu.",
"LabelNumberOfGuideDays": "Dienu daudzumus, kuram lejupielādēt gidu:",
"LabelLockItemToPreventChanges": "Aizslēgt šo objektu lai aizliegtu izmaiņas",
"LabelLocalHttpServerPortNumber": "Vietējais HTTP porta numurs:",
"OptionAllowManageLiveTv": "Atļaut Tiešraides TV ierakstu pārvaldīšanu",
"OptionAllowLinkSharing": "Atļaut dalīšanos sociālajos tīklos",
"OptionAllowBrowsingLiveTv": "Atļaut Tiešraides TV piekļuvi",
"MediaInfoForced": "Piespiests",
"LabelPublicHttpPortHelp": "Publiskai porta numurs, kas tiks kartēts uz vietējo HTTP portu.",
"LabelOptionalNetworkPath": "(Neobligāts) Koplietota tīkla mape:"
}

View file

@ -1159,7 +1159,6 @@
"MediaInfoStreamTypeVideo": "Video",
"OptionDownloadBannerImage": "Banner",
"CopyStreamURLSuccess": "URLen ble kopiert.",
"DirectorValue": "Regissør: {0}",
"OptionThumb": "Miniatyrbilde",
"LabelInternetQuality": "Internettkvalitet:",
"SubtitleAppearanceSettingsDisclaimer": "Disse innstillingene vil ikke påvirke grafiske undertekster (PGS, DVD, osv.) eller ASS/SSA-teksting som inkluderer sin egen formatering.",
@ -1180,7 +1179,7 @@
"MediaInfoSampleRate": "Samplingsfrekvens",
"MediaInfoStreamTypeData": "Data",
"Option3D": "3D",
"LabelVideo": "Video:",
"LabelVideo": "Video",
"OptionAlbum": "Album",
"OptionAlbumArtist": "Albumartist",
"Filters": "Filtre",
@ -1267,7 +1266,7 @@
"LabelMatchType": "Matchtype:",
"OptionPosterCard": "Plakatkort",
"Uniform": "Jevn",
"DirectorsValue": "Regissører: {0}",
"Directors": "Regissører",
"Disabled": "Deaktivert",
"Disc": "Plate",
"Display": "Vis",
@ -1283,8 +1282,7 @@
"FetchingData": "Henter ytterligere data",
"Folders": "Mapper",
"FormatValue": "Format: {0}",
"GenreValue": "Sjanger: {0}",
"GenresValue": "Sjangre: {0}",
"Genre": "Sjanger",
"GroupBySeries": "Grupper etter serie",
"GroupVersions": "Grupper etter versjon",
"Guide": "Guide",
@ -1315,7 +1313,7 @@
"Horizontal": "Horisontal",
"HttpsRequiresCert": "For å bruke sikker tilkobling må du legge inn et klarert SSL-sertifikat, for eksempel fra Let's Encrypt. Du må enten legge inn et sertifikat, eller deaktivere sikker tilkobling.",
"LabelAlbumArtPN": "Albumomslag PN:",
"LabelAudio": "Lyd:",
"LabelAudio": "Lyd",
"LabelAuthProvider": "Autentiserings-metode:",
"LabelBitrate": "Bithastighet:",
"LabelBurnSubtitles": "Brenn inn undertekst:",
@ -1344,7 +1342,7 @@
"LabelSpecialSeasonsDisplayName": "Visningsnavn for spesialsesong:",
"LabelStatus": "Status:",
"LabelSubtitleDownloaders": "Kilder for undertekst:",
"LabelSubtitles": "Undertekster:",
"LabelSubtitles": "Undertekster",
"LabelTVHomeScreen": "Hjemskjerm for TV-modus:",
"LabelTag": "Tagg:",
"LabelTextBackgroundColor": "Tekstbagrunnsfarge:",

View file

@ -168,8 +168,7 @@
"DirectStreamHelp2": "Direct streamen van een bestand gebruikt weinig processor kracht zonder verlies van beeldkwaliteit.",
"DirectStreaming": "Direct streamen",
"Director": "Regiseur",
"DirectorValue": "Regisseur: {0}",
"DirectorsValue": "Regisseurs: {0}",
"Directors": "Regisseurs",
"Disabled": "Uitgeschakeld",
"Disc": "Disk",
"Disconnect": "Loskoppelen",
@ -745,7 +744,7 @@
"LabelSubtitleDownloaders": "Ondertiteldownloaders:",
"LabelSubtitleFormatHelp": "Voorbeeld: srt",
"LabelSubtitlePlaybackMode": "Ondertitel mode:",
"LabelSubtitles": "Ondertitels:",
"LabelSubtitles": "Ondertitels",
"LabelSupportedMediaTypes": "Ondersteunde Media Types:",
"LabelTVHomeScreen": "TV mode begin scherm",
"LabelTextBackgroundColor": "Tekst achtergrond kleur:",
@ -1269,9 +1268,8 @@
"Desktop": "Bureaublad",
"DownloadsValue": "{0} downloads",
"Filters": "Filters",
"GenreValue": "Genre: {0}",
"Genre": "Genre",
"Genres": "Genres",
"GenresValue": "Genres: {0}",
"HeaderAlbums": "Albums",
"HeaderCastAndCrew": "Cast & Crew",
"HeaderCastCrew": "Cast & Crew",
@ -1312,7 +1310,7 @@
"ItemCount": "{0} items",
"Items": "Items",
"LabelAlbum": "Album:",
"LabelAudio": "Audio:",
"LabelAudio": "Audio",
"LabelAuthProvider": "Authenticatie Aanbieder:",
"LabelCache": "Cache:",
"LabelDidlMode": "DIDL mode:",
@ -1431,7 +1429,7 @@
"LabelXDlnaCap": "X-DLNA cap:",
"DashboardVersionNumber": "Versie: {0}",
"DashboardArchitecture": "Architectuur: {0}",
"LabelVideo": "Video:",
"LabelVideo": "Video",
"MediaInfoStreamTypeAudio": "Audio",
"MediaInfoStreamTypeData": "Data",
"MediaInfoStreamTypeSubtitle": "Ondertiteling",

View file

@ -180,8 +180,7 @@
"DirectStreamHelp2": "Transmisja bezpośrednia pliku używa niewiele mocy przetwarzania, bez utraty jakości wideo.",
"DirectStreaming": "Transmisja bezpośrednia",
"Director": "Reżyser",
"DirectorValue": "Reżyser: {0}",
"DirectorsValue": "Reżyserzy: {0}",
"Directors": "Reżyserzy",
"Disabled": "Nieaktywne",
"Disc": "Dysk",
"Disconnect": "Rozłącz",
@ -258,9 +257,8 @@
"Friday": "Piątek",
"Fullscreen": "Pełny ekran",
"General": "Ogólne",
"GenreValue": "Gatunek: {0}",
"Genre": "Gatunek",
"Genres": "Gatunki",
"GenresValue": "Gatunki: {0}",
"GroupBySeries": "Grupuj po serialach",
"GroupVersions": "Wersje grup",
"GuestStar": "Gość specjalny",
@ -525,7 +523,7 @@
"LabelAppNameExample": "Przykład: Sickbeard, Sonarr",
"LabelArtists": "Wykonawcy:",
"LabelArtistsHelp": "Oddzielaj używając ;",
"LabelAudio": "Dźwięk:",
"LabelAudio": "Dźwięk",
"LabelAudioLanguagePreference": "Preferowany język ścieżki dźwiękowej:",
"LabelAutomaticallyRefreshInternetMetadataEvery": "Odświeżaj automatycznie metadane z Internetu:",
"LabelBindToLocalNetworkAddress": "Przypisz do lokalnego adresu sieciowego:",
@ -791,7 +789,7 @@
"LabelSubtitleDownloaders": "Dostawcy napisów:",
"LabelSubtitleFormatHelp": "Przykład: srt",
"LabelSubtitlePlaybackMode": "Tryb napisów:",
"LabelSubtitles": "Napisy:",
"LabelSubtitles": "Napisy",
"LabelSupportedMediaTypes": "Obsługiwane typy mediów:",
"LabelTVHomeScreen": "Ekran startowy trybu telewizyjnego:",
"LabelTag": "Znacznik:",
@ -829,7 +827,7 @@
"LabelVersion": "Wersja:",
"LabelVersionInstalled": "Zainstalowano {0}",
"LabelVersionNumber": "Wersja {0}",
"LabelVideo": "Wideo:",
"LabelVideo": "Wideo",
"LabelXDlnaCapHelp": "Określa zawartość elementu X_DLNACAP w przestrzeni nazw urn:schemas-dlna-org:device-1-0.",
"LabelXDlnaDocHelp": "Określa zawartość elementu X_DLNADOC w przestrzeni nazw urn:schemas-dlna-org:device-1-0.",
"LabelYear": "Rok:",

View file

@ -172,8 +172,7 @@
"DirectStreamHelp2": "O streaming direto de um arquivo usa baixo processamento sem perda de qualidade de vídeo.",
"DirectStreaming": "Streaming Direto",
"Director": "Diretor",
"DirectorValue": "Diretor: {0}",
"DirectorsValue": "Diretores: {0}",
"Directors": "Diretores",
"Disabled": "Desativado",
"Disc": "Disco",
"Disconnect": "Desconectar",
@ -248,9 +247,8 @@
"Friday": "Sexta-feira",
"Fullscreen": "Tela cheia",
"General": "Geral",
"GenreValue": "Gênero: {0}",
"Genre": "Gênero",
"Genres": "Gêneros",
"GenresValue": "Gêneros: {0}",
"GroupBySeries": "Agrupar por séries",
"GroupVersions": "Agrupar versões",
"GuestStar": "Convidado especial",
@ -508,7 +506,7 @@
"LabelAppNameExample": "Exemplo: Sickbeard, Sonarr",
"LabelArtists": "Artistas:",
"LabelArtistsHelp": "Separa vários usando ;",
"LabelAudio": "Áudio:",
"LabelAudio": "Áudio",
"LabelAudioLanguagePreference": "Idioma preferido de áudio:",
"LabelAutomaticallyRefreshInternetMetadataEvery": "Atualizar automaticamente os metadados da internet:",
"LabelBindToLocalNetworkAddress": "Vincular a um endereço de rede local:",
@ -770,7 +768,7 @@
"LabelSubtitleDownloaders": "Downloaders de legendas:",
"LabelSubtitleFormatHelp": "Exemplo: srt",
"LabelSubtitlePlaybackMode": "Modo de legenda:",
"LabelSubtitles": "Legendas:",
"LabelSubtitles": "Legendas",
"LabelSupportedMediaTypes": "Tipos de Mídia Suportados:",
"LabelTVHomeScreen": "Tela inicial do modo TV:",
"LabelTagline": "Slogan:",
@ -806,7 +804,7 @@
"LabelVersion": "Versão:",
"LabelVersionInstalled": "{0} instalado",
"LabelVersionNumber": "Versão {0}",
"LabelVideo": "Vídeo:",
"LabelVideo": "Vídeo",
"LabelXDlnaCapHelp": "Determina o conteúdo do elemento X_DLNACAP no namespace urn:schemas-dlna-org:device-1-0.",
"LabelXDlnaDocHelp": "Determina o conteúdo do elemento X_DLNADOC no namespace urn:schemas-dlna-org:device-1-0.",
"LabelYear": "Ano:",

View file

@ -873,8 +873,7 @@
"GuestStar": "Estrela convidada",
"GroupVersions": "Agrupar versões",
"GroupBySeries": "Agrupar por série",
"GenresValue": "Géneros: {0}",
"GenreValue": "Género: {0}",
"Genre": "Género",
"General": "Geral",
"FormatValue": "Formato: {0}",
"FolderTypeUnset": "Conteúdo Misto",
@ -956,7 +955,7 @@
"LabelBindToLocalNetworkAddress": "Endereço local para colocar o servidor à escuta:",
"LabelAutomaticallyRefreshInternetMetadataEvery": "Atualizar metadados automaticamente a partir da Internet:",
"LabelAuthProvider": "Provedor de autenticação:",
"LabelAudio": "Áudio:",
"LabelAudio": "Áudio",
"LabelAllowedRemoteAddressesMode": "Tipo de filtro de IP remoto:",
"LabelAllowedRemoteAddresses": "Filtro de IP remoto:",
"LabelAllowHWTranscoding": "Permitir transcodificação por hardware",
@ -1077,8 +1076,7 @@
"News": "Notícias",
"Programs": "Programas",
"HeaderMovies": "Filmes",
"DirectorsValue": "Realização: {0}",
"DirectorValue": "Realizador: {0}",
"Directors": "Realização",
"ButtonOff": "Desligado",
"ButtonAddImage": "Adicionar Imagem",
"LabelOriginalTitle": "Título original:",
@ -1308,7 +1306,7 @@
"LabelWeb": "Web:",
"LabelVideoCodec": "Codec de vídeo:",
"LabelVideoBitrate": "Taxa de bits de vídeo:",
"LabelVideo": "Vídeo:",
"LabelVideo": "Vídeo",
"DashboardArchitecture": "Arquitetura: {0}",
"DashboardOperatingSystem": "Sistema Operativo: {0}",
"DashboardServerName": "Servidor: {0}",
@ -1322,7 +1320,7 @@
"LabelTextColor": "Côr do texto:",
"LabelTextBackgroundColor": "Côr de fundo do texto:",
"LabelTag": "Etiqueta:",
"LabelSubtitles": "Legendas:",
"LabelSubtitles": "Legendas",
"LabelSportsCategories": "Categorias de Desporto:",
"FetchingData": "A transferir informação adicional",
"List": "lista",

View file

@ -340,7 +340,7 @@
"LabelHttpsPort": "Número da porta HTTPS local:",
"LabelHomeScreenSectionValue": "Secção {0} do Painel Principal:",
"LabelHomeNetworkQuality": "Qualidade da rede interna:",
"LabelHardwareAccelerationTypeHelp": "Esta funcionalidade é experimental e está disponível apenas em sistemas suportados.",
"LabelHardwareAccelerationTypeHelp": "A aceleração de hardware requer configuração adicional.",
"LabelHardwareAccelerationType": "Aceleração por hardware:",
"LabelEncoderPreset": "Predefinição para codificação H264:",
"LabelH264Crf": "CRF para codificação H264:",
@ -377,7 +377,7 @@
"LabelEnableDlnaClientDiscoveryInterval": "Intervalo para descoberta de clientes (segundos)",
"LabelEnableBlastAliveMessagesHelp": "Activar esta opção se o servidor não for convenientemente detectado por outros dispositivos UPnP na rede.",
"LabelEnableBlastAliveMessages": "Enviar mensagens de reconhecimento",
"LabelEnableAutomaticPortMapHelp": "Tenta correponder automaticamente a porta pública para a porta local através de UPnP. Isto poderá não funcionar em alguns modelos de routers.",
"LabelEnableAutomaticPortMapHelp": "Tenta corresponder automaticamente a porta pública para a porta local através de UPnP. Isto poderá não funcionar em alguns modelos de roteadores. As alterações não serão até reinicialização do servidor.",
"LabelEnableAutomaticPortMap": "Activar a correspondência automática de portas",
"LabelEmbedAlbumArtDidlHelp": "Alguns dispositivos preferem este método para obter a capa do álbum. Outros pode não ser capazes de reproduzir com esta opção activada.",
"LabelEmbedAlbumArtDidl": "Incorporar a capa do álbum no DIDL",
@ -450,7 +450,7 @@
"LabelAudioCodec": "Codec de áudio:",
"LabelAudioChannels": "Canais de áudio:",
"LabelAudioBitrate": "Taxa de bits de áudio:",
"LabelAudio": "Áudio:",
"LabelAudio": "Áudio",
"LabelArtistsHelp": "Separe múltiplos com ;",
"LabelArtists": "Artistas:",
"LabelAppNameExample": "Exemplo: Sickbeard, NzbDrone",
@ -906,8 +906,7 @@
"Disconnect": "Desligar",
"Disc": "Disco",
"Disabled": "Desactivado",
"DirectorsValue": "Realização: {0}",
"DirectorValue": "Realizador: {0}",
"Directors": "Realização",
"Director": "Realizador",
"DirectStreaming": "Reprodução directa",
"DirectStreamHelp2": "A reprodução directa de um ficheiro requer pouco processamento e não implica perda de qualidade num vídeo.",
@ -1092,7 +1091,7 @@
"AuthProviderHelp": "Seleccione um mecanismo de autenticação a ser utilizado para validar as credenciais deste utilizador.",
"Audio": "Áudio",
"AttributeNew": "Novo",
"AspectRatio": "Formato",
"AspectRatio": "Proporção da tela",
"Ascending": "Crescente",
"Art": "Capa",
"AroundTime": "Por volta das {0}",
@ -1186,12 +1185,11 @@
"GuestStar": "Estrela convidada",
"GroupVersions": "Agrupar versões",
"GroupBySeries": "Agrupar por série",
"GenresValue": "Géneros: {0}",
"ErrorAddingListingsToSchedulesDirect": "Ocorreu um erro ao adicionar o alinhamento à sua conta Schedules Direct. As contas Schedules Direct permitem apenas um número limitado de alinhamentos. Poderá ser necessário iniciar sessão na sua conta e remover outras listagens antes de prosseguir.",
"Ended": "Terminado",
"DefaultMetadataLangaugeDescription": "Estes são os valores por omissão que podem ser individualizados para cada uma das bibliotecas.",
"Genres": "Géneros",
"GenreValue": "Género: {0}",
"Genre": "Género",
"General": "Geral",
"Fullscreen": "Ecrã inteiro",
"Friday": "Sexta",
@ -1213,5 +1211,120 @@
"CopyStreamURLError": "Ocorreu um erro ao copiar o URL.",
"ButtonSplit": "Dividir",
"AskAdminToCreateLibrary": "Peça a um administrador para criar a biblioteca.",
"AllowFfmpegThrottling": "Transcodificação com falhas"
"AllowFfmpegThrottling": "Transcodificação com falhas",
"DashboardOperatingSystem": "Sistema Operativo",
"LabelUserLoginAttemptsBeforeLockout": "Número de tentativas de login falhadas antes do bloqueio do utilizador:",
"LabelTrackNumber": "Número da faixa:",
"LabelSportsCategories": "Categorias de Desportos:",
"Yesterday": "Ontem",
"MusicVideo": "Vídeo de música",
"MusicLibraryHelp": "Reveja o {0} guia de nomes de músicas {1}.",
"MusicArtist": "Artista musical",
"MusicAlbum": "Álbum de música",
"MovieLibraryHelp": "Reveja o {0} guia de nomeação de filmes {1}.",
"MoveRight": "Mover para a direita",
"MoveLeft": "Mova à esquerda",
"MoreMediaInfo": "Informações sobre mídia",
"MoreFromValue": "Mais de {0}",
"MediaInfoRefFrames": "Quadros de referência",
"MediaInfoContainer": "Container",
"MediaInfoAnamorphic": "Anamorphic",
"LabelVideoResolution": "Resolução do vídeo:",
"LabelTypeMetadataDownloaders": "{0} metadata downloaders:",
"LabelTranscodePath": "Caminho da transcodificação:",
"OnlyImageFormats": "Somente formatos de imagem (VOBSUB, PGS, SUB, etc)",
"OnlyForcedSubtitlesHelp": "Apenas as legendas marcadas como forçadas serão carregadas.",
"OnlyForcedSubtitles": "Apenas legendas forçadas",
"Off": "Desligar",
"NumLocationsValue": "{0} pastas",
"Normal": "Normal",
"None": "Nenhum",
"NoSubtitlesHelp": "As legendas não serão carregadas por padrão. Eles ainda podem ser ativados manualmente durante a reprodução.",
"NoSubtitles": "Sem legendas",
"NoSubtitleSearchResultsFound": "Nenhum resultado encontrado.",
"NoNewDevicesFound": "Não foram encontrados novos dispositivos. Para adicionar um novo sintonizador, feche esta caixa de diálogo e insira as informações do dispositivo manualmente.",
"NoCreatedLibraries": "Parece que você ainda não criou nenhuma biblioteca. {0} Deseja criar um agora? {1}",
"No": "Não",
"Mobile": "Celular",
"MetadataSettingChangeHelp": "A alteração das configurações de metadados afetará o novo conteúdo adicionado a partir de agora. Para atualizar o conteúdo existente, abra a tela de detalhes e clique no botão Atualizar ou execute atualizações em massa usando o gerenciador de metadados.",
"MetadataManager": "Gestor de metadados",
"Metadata": "Metadados",
"MessageYouHaveVersionInstalled": "Você possui a versão {0} atualmente instalada.",
"MessageUnsetContentHelp": "O conteúdo será exibido como pastas simples. Para obter melhores resultados, use o gerenciador de metadados para definir os tipos de conteúdo das subpastas.",
"MessageSettingsSaved": "Configurações salvas.",
"MessagePleaseWait": "Por favor, espere. Isso pode levar um minuto.",
"MessagePlayAccessRestricted": "A reprodução deste conteúdo está atualmente restrita. Entre em contato com o administrador do servidor para obter mais informações.",
"MessageNoServersAvailable": "Nenhum servidor foi encontrado usando a descoberta automática de servidores.",
"MessageNoCollectionsAvailable": "As coleções permitem que você desfrute de agrupamentos personalizados de filmes, séries e álbuns. Clique no botão + para começar a criar coleções.",
"MessageConfirmAppExit": "Você quer sair?",
"MediaInfoLayout": "Layout",
"MediaInfoLanguage": "Língua",
"MediaInfoInterlaced": "Entrelaçada",
"MediaInfoFramerate": "Taxa de quadros",
"MediaInfoForced": "Forçar",
"MediaInfoExternal": "Externo",
"MediaInfoDefault": "Padrão",
"MediaInfoCodecTag": "Codec tag",
"MediaInfoCodec": "Codec",
"MediaInfoBitrate": "Taxa de bits",
"MediaInfoBitDepth": "Profundidade de bits",
"MediaInfoAspectRatio": "Proporção da tela",
"ManageRecording": "Gerenciar gravações",
"Logo": "Logo",
"List": "Lista",
"LinksValue": "Links: {0}",
"Like": "Gostei",
"LeaveBlankToNotSetAPassword": "Você pode deixar esse campo em branco para definir nenhuma senha.",
"LearnHowYouCanContribute": "Aprenda como você pode contribuir.",
"LaunchWebAppOnStartupHelp": "Open the web client in your default web browser when the server initially starts. This will not occur when using the restart server function.",
"LaunchWebAppOnStartup": "Inicie a interface da web ao iniciar o servidor",
"Large": "Amplo",
"LanNetworksHelp": "Comma separated list of IP addresses or IP/netmask entries for networks that will be considered on local network when enforcing bandwidth restrictions. If set, all other IP addresses will be considered to be on the external network and will be subject to the external bandwidth restrictions. If left blank, only the server's subnet is considered to be on the local network.",
"LabelffmpegPathHelp": "O caminho para o arquivo do aplicativo ffmpeg ou pasta que contém o ffmpeg.",
"LabelffmpegPath": "FFmpeg caminho:",
"LabelYear": "Ano:",
"LabelXDlnaDoc": "X-DLNA doc:",
"LabelXDlnaCap": "X-DLNA cap:",
"LabelWeb": "Web:",
"LabelVideoCodec": "Vídeo: codec:",
"LabelVideoBitrate": "Vídeo taxa de bits:",
"LabelVideo": "Vídeo:",
"DashboardArchitecture": "Arquitetura: {0}",
"DashboardServerName": "Servidor: {0}",
"DashboardVersionNumber": "Versão: {0}",
"LabelVersion": "Versão:",
"LabelVaapiDeviceHelp": "Este é o nó de renderização usado para aceleração de hardware.",
"LabelVaapiDevice": "VA API Dispositivo:",
"LabelUserAgent": "Agente de usuário",
"LabelTranscodes": "Transcodificação:",
"LabelTranscodingFramerate": "Transcodificação frame por segundo:",
"LabelTranscodingProgress": "Progresso da transcodificação:",
"LabelTitle": "Título:",
"LabelTheme": "Tema:",
"LabelTextColor": "Cor do texto:",
"LabelTextBackgroundColor": "Cor do plano de fundo do texto:",
"LabelTag": "Tag:",
"LabelTVHomeScreen": "Tela inicial do modo TV:",
"LabelSubtitles": "Legendas:",
"LabelSubtitleDownloaders": "Downloaders de legendas:",
"LabelStreamType": "Tipo de fluxo:",
"LabelSpecialSeasonsDisplayName": "Nome de exibição da temporada especial:",
"LabelSoundEffects": "Efeitos sonoros:",
"LabelSortTitle": "Classificar título:",
"LabelSortOrder": "Ordem da Ordenação",
"LabelSortBy": "Ordenar por:",
"LabelSkin": "Skin:",
"EnableFastImageFadeInHelp": "Habilite uma animação mais rápida para imagens carregadas",
"EnableFastImageFadeIn": "Efeito de imagem fade-in rápido",
"LabelRemoteClientBitrateLimitHelp": "Um limite opcional de taxa de bits por fluxo para todos os dispositivos fora da rede. Isso é útil para impedir que os dispositivos solicitem uma taxa de bits mais alta do que a sua conexão à Internet pode suportar. Isso pode resultar no aumento da carga da CPU no servidor para transcodificar vídeos em tempo real para uma taxa de bits mais baixa.",
"LabelPlayerDimensions": "Dimensões do reprodutor:",
"LabelParentNumber": "Número pai:",
"LabelMetadataSavers": "Economizadores de metadados:",
"LabelDroppedFrames": "Quadros caídos:",
"LabelCorruptedFrames": "Quadros corrompidos:",
"LabelAudioBitDepth": "Profundidade do bit de áudio:",
"ClientSettings": "Configurações do Cliente",
"AllowFfmpegThrottlingHelp": "Quando uma transcodificação ou remux se aproximar da posição atual de reprodução, pause o processo para que consuma menos recursos. Isso é mais útil ao assistir sem procurar com frequência. Desative isso se você tiver problemas de reprodução.",
"MySubtitles": "Minhas legendas",
"Name": "Nome"
}

View file

@ -382,8 +382,7 @@
"ConfirmDeletion": "Confirmă ștergerea",
"DeleteDeviceConfirmation": "Sigur doriți să ștergeți acest dispozitiv? Acesta va reapărea data viitoare când un utilizator se conectează cu acesta.",
"DeleteUser": "Șterge utilizator",
"DirectorValue": "Regizor: {0}",
"DirectorsValue": "Regizori: {0}",
"Directors": "Regizori",
"Disabled": "Dezactivat",
"Disconnect": "Deconectare",
"Dislike": "Neplăcut",
@ -545,8 +544,7 @@
"EveryNDays": "La fiecare {0} zile",
"Extras": "Extra",
"Genres": "Genuri",
"GenreValue": "Gen: {0}",
"GenresValue": "Genuri: {0}",
"Genre": "Gen",
"Guide": "Ghid",
"HeaderCancelRecording": "Anulați înregistrarea",
"HeaderCancelSeries": "Anulați seriile",
@ -655,7 +653,7 @@
"LabelTag": "Etichetă:",
"LabelTVHomeScreen": "Ecran de pornire în modul TV:",
"LabelSupportedMediaTypes": "Tipuri media suportate:",
"LabelSubtitles": "Subtitrări:",
"LabelSubtitles": "Subtitrări",
"LabelSubtitlePlaybackMode": "Mod subtitrare:",
"LabelSubtitleFormatHelp": "Exemplu: srt",
"LabelSubtitleDownloaders": "Descărcare subtitrări:",
@ -905,7 +903,7 @@
"LabelAudioChannels": "Canale audio:",
"LabelAudioBitrate": "Rata de biți audio:",
"LabelAudioBitDepth": "Adâncimea bitului audio:",
"LabelAudio": "Audio:",
"LabelAudio": "Audio",
"LabelAppNameExample": "Exemplu: Sickbeard, Sonarr",
"LabelAppName": "Nume app",
"LabelAllowedRemoteAddressesMode": "Modul de filtrare a adresei IP de la distanță:",
@ -1148,7 +1146,7 @@
"LabelWeb": "Web:",
"LabelVideoCodec": "Codec video:",
"LabelVideoBitrate": "Rata de biți a video-ului:",
"LabelVideo": "Video:",
"LabelVideo": "Video",
"DashboardArchitecture": "Arhitectură: {0}",
"DashboardOperatingSystem": "Sistem de operare: {0}",
"DashboardServerName": "Server: {0}",

View file

@ -181,8 +181,7 @@
"DirectStreamHelp2": "При прямой трансляции файла расходуется очень мало вычислительной мощности без потери качества видео.",
"DirectStreaming": "Транслируется напрямую",
"Director": "Режиссёр",
"DirectorValue": "Режиссёр: {0}",
"DirectorsValue": "Режиссёры: {0}",
"Directors": "Режиссёры",
"Disabled": "Отключено",
"Disc": "Диск",
"Disconnect": "Разъединиться",
@ -260,9 +259,8 @@
"Friday": "пятница",
"Fullscreen": "Полный экран",
"General": "Общие",
"GenreValue": "Жанр: {0}",
"Genre": "Жанр",
"Genres": "Жанры",
"GenresValue": "Жанры: {0}",
"GroupBySeries": "Группирование по сериалам",
"GroupVersions": "Сгруппировать версии",
"GuestStar": "Пригл. актёр",
@ -527,7 +525,7 @@
"LabelAppNameExample": "Пример: Sickbeard, Sonarr",
"LabelArtists": "Исполнители:",
"LabelArtistsHelp": "Для разделения используйте точку с запятой ;",
"LabelAudio": "Аудио:",
"LabelAudio": "Аудио",
"LabelAudioLanguagePreference": "Выбор языка аудио:",
"LabelAutomaticallyRefreshInternetMetadataEvery": "Автоматически обновлять метаданные из Интернета:",
"LabelBindToLocalNetworkAddress": "Привязка к адресу в локальной сети:",
@ -794,7 +792,7 @@
"LabelSubtitleDownloaders": "Загрузчики субтитров:",
"LabelSubtitleFormatHelp": "Пример: srt",
"LabelSubtitlePlaybackMode": "Режим субтитров:",
"LabelSubtitles": "Субтитры:",
"LabelSubtitles": "Субтитры",
"LabelSupportedMediaTypes": "Поддерживаемые типы медиаданных:",
"LabelTVHomeScreen": "Главная страница ТВ-режима:",
"LabelTag": "Тег:",
@ -832,7 +830,7 @@
"LabelVersion": "Версия:",
"LabelVersionInstalled": "Установлена: {0}",
"LabelVersionNumber": "Версия {0}",
"LabelVideo": "Видео:",
"LabelVideo": "Видео",
"LabelXDlnaCap": "Свойства X-Dlna:",
"LabelXDlnaCapHelp": "Определяется содержание из элемента X_DLNACAP во пространстве имён urn:schemas-dlna-org:device-1-0.",
"LabelXDlnaDoc": "Схема X-Dlna:",

View file

@ -123,8 +123,7 @@
"DetectingDevices": "Hľadám zariadenia",
"DeviceAccessHelp": "Táto možnosť sa vzťahuje iba na zariadenia, ktoré môžu byť jedinečne identifikované a nezabráni prístup cez prehliadač. Filtrovaním prístupu používateľských zariadení zabraňuje užívateľom použiť nové zariadenie, pokiaľ neboli tu schválené.",
"Director": "Režisér",
"DirectorValue": "Réžia: {0}",
"DirectorsValue": "Režiséri: {0}",
"Directors": "Režiséri",
"Disc": "Disk",
"Disconnect": "Odpojiť",
"Dislike": "Nepáči sa mi to",
@ -165,9 +164,8 @@
"Friday": "Piatok",
"Fullscreen": "Celá obrazovka",
"General": "Všeobecné",
"GenreValue": "Žáner: {0}",
"Genre": "Žáner",
"Genres": "Žánre",
"GenresValue": "Žánre: {0}",
"GroupBySeries": "Zoskupiť podľa série",
"GuestStar": "Hosťujúca hviezda",
"Guide": "Sprievodca",
@ -473,7 +471,7 @@
"LabelStartWhenPossible": "Spustiť akonáhle je možné:",
"LabelStatus": "Stav:",
"LabelSubtitleFormatHelp": "Príklad: srt",
"LabelSubtitles": "Titulky:",
"LabelSubtitles": "Titulky",
"LabelSupportedMediaTypes": "Podporované typy médií:",
"LabelTextBackgroundColor": "Farba pozadia textu:",
"LabelTextColor": "Farba textu:",
@ -962,7 +960,7 @@
"HeaderVideoType": "Typ videa",
"HeaderVideoTypes": "Typy videí",
"LabelAirsBeforeSeason": "Vysielané pred sériou:",
"LabelAudio": "Zvuk:",
"LabelAudio": "Zvuk",
"LabelBlockContentWithTags": "Blokovať položky s tagmi:",
"LabelDisplayMode": "Režim zobrazenia:",
"LabelDisplaySpecialsWithinSeasons": "Zobraziť špeciálne epizódy v sérií, v ktorej boli odvysielané",
@ -1329,7 +1327,7 @@
"LabelXDlnaCap": "X-DLNA cap:",
"LabelVideoCodec": "Video kodek:",
"LabelVideoBitrate": "Dátový tok videa:",
"LabelVideo": "Video:",
"LabelVideo": "Video",
"LabelVaapiDeviceHelp": "Toto je vykreslovací node, ktorý sa používa na hardvérovú akceleráciu.",
"LabelVaapiDevice": "VA API zariadenie:",
"LabelUserRemoteClientBitrateLimitHelp": "Prepíše východzie globálne hodnoty nastavené v nastavení prehrávania servera.",

View file

@ -271,8 +271,7 @@
"Down": "Dol",
"Dislike": "Ni mi všeč",
"Disabled": "Onemogočen",
"DirectorsValue": "Režiserji: {0}",
"DirectorValue": "Režiser: {0}",
"Directors": "Režiserji",
"Director": "Režiser",
"DetectingDevices": "Zaznavanje naprav",
"Desktop": "Namizje",
@ -462,8 +461,7 @@
"GuestStar": "Gostujoči igralec",
"GroupVersions": "Združi različice",
"GroupBySeries": "Združi bo serijah",
"GenresValue": "Zvrsti: {0}",
"GenreValue": "Zvrst: {0}",
"Genre": "Zvrst",
"General": "Splošno",
"Fullscreen": "Celoten zaslon",
"Friday": "Petek",
@ -596,7 +594,7 @@
"LabelAppName": "Ime aplikacije",
"LabelAppNameExample": "Primer: Sickbeard, Sonarr",
"LabelArtistsHelp": "Loči več z ;",
"LabelAudio": "Zvok:",
"LabelAudio": "Zvok",
"LabelAudioBitrate": "Bitna hitrost zvoka:",
"LabelAudioChannels": "Kanali zvoka:",
"LabelAudioCodec": "Zvočni kodek:",
@ -1187,7 +1185,7 @@
"LabelTextBackgroundColor": "Barva ozadja besedila:",
"LabelTag": "Oznaka:",
"LabelSupportedMediaTypes": "Podprti tipi predstavnosti:",
"LabelSubtitles": "Podnapisi:",
"LabelSubtitles": "Podnapisi",
"LabelSubtitlePlaybackMode": "Način podnapisov:",
"LabelSubtitleFormatHelp": "Primer: srt",
"LabelSubtitleDownloaders": "Pridobivanje podnapisov:",

View file

@ -163,8 +163,7 @@
"DirectStreamHelp2": "Direktströmning av en fil använder väldigt lite resurser av CPU'n utan att bildkvaliten försämras.",
"DirectStreaming": "Direktströmning",
"Director": "Regissör",
"DirectorValue": "Regi: {0}",
"DirectorsValue": "Regi: {0}",
"Directors": "Regi",
"Disabled": "Inaktiverad",
"Disc": "Skiva",
"Disconnect": "Koppla bort",
@ -235,7 +234,6 @@
"Friday": "Fredag",
"Fullscreen": "Fullskärm",
"Genres": "Genrer",
"GenresValue": "Genrer: {0}",
"GroupBySeries": "Gruppera efter serie",
"GroupVersions": "Gruppera versioner",
"GuestStar": "Gästmedverkande",
@ -482,7 +480,7 @@
"LabelAppNameExample": "Exempel: Sickbeard, Sonarr",
"LabelArtists": "Artister:",
"LabelArtistsHelp": "Separera med vid flera ;",
"LabelAudio": "Ljud:",
"LabelAudio": "Ljud",
"LabelAudioLanguagePreference": "Önskat ljudspråk:",
"LabelAutomaticallyRefreshInternetMetadataEvery": "Uppdatera metadata automatiskt ifrån internet:",
"LabelBindToLocalNetworkAddress": "Knyt till lokal nätverksadress:",
@ -742,7 +740,7 @@
"LabelSubtitleDownloaders": "Undertextskällor:",
"LabelSubtitleFormatHelp": "Exempel: srt",
"LabelSubtitlePlaybackMode": "Undertextläge:",
"LabelSubtitles": "Undertexter:",
"LabelSubtitles": "Undertexter",
"LabelSupportedMediaTypes": "Mediaformat som stöds:",
"LabelTVHomeScreen": "Hemskärm i TV-läge:",
"LabelTag": "Etikett:",
@ -1273,7 +1271,7 @@
"HeaderApp": "Applikation",
"HeaderAdmin": "Administratör",
"Guide": "Guide",
"GenreValue": "Genre: {0}",
"Genre": "Genre",
"General": "Allmänt",
"FastForward": "Snabbspola",
"Extras": "Extramaterial",
@ -1453,7 +1451,7 @@
"LabelVideoResolution": "Video upplösning:",
"LabelVideoCodec": "Video codec:",
"LabelVideoBitrate": "Video bitrate:",
"LabelVideo": "Video:",
"LabelVideo": "Video",
"DashboardArchitecture": "Arkitektur: {0}",
"DashboardOperatingSystem": "Operativsystem: {0}",
"DashboardServerName": "Server: {0}",

View file

@ -314,9 +314,8 @@
"ColorPrimaries": "Renk primerleri",
"DirectStreamHelp2": "Doğrudan Akış, video kalitesinde herhangi bir kayıp olmadan çok az işlem gücü kullanır.",
"DirectStreaming": "Doğrudan akış",
"Director": "yönetmen",
"DirectorValue": "Yönetmen: {0}",
"DirectorsValue": "Yöneticiler: {0}",
"Director": "Yönetmen",
"Directors": "Yöneticiler",
"Disabled": "Deaktif",
"DisplayModeHelp": "Jellyfini çalıştırdığınız ekran türünü seçin.",
"DoNotRecord": "Kaydetme",
@ -521,8 +520,7 @@
"GuestStar": "Konuk sanatçı",
"GroupVersions": "Grup versiyonları",
"GroupBySeries": "Seriye göre gruplandır",
"GenresValue": "Türler: {0}",
"GenreValue": "Tür: {0}",
"Genre": "Tür",
"General": "Genel",
"Fullscreen": "Tam ekran",
"FormatValue": "Biçim: {0}",
@ -651,7 +649,7 @@
"LabelAudioSampleRate": "Ses örnekleme hızı:",
"LabelAudioCodec": "Ses kodeği:",
"LabelAudioChannels": "Ses kanalları:",
"LabelAudio": "Ses:",
"LabelAudio": "Ses",
"LabelAppName": "Uygulama adı",
"LabelAllowHWTranscoding": "Donanım kod dönüştürmesine izin ver",
"LabelAll": "Tümü",

View file

@ -537,8 +537,8 @@
"LabelDisplayName": "显示名称:",
"LabelDisplayOrder": "显示顺序:",
"LabelDisplaySpecialsWithinSeasons": "显示季中所播出的特集",
"LabelDownMixAudioScale": "混音频增强:",
"LabelDownMixAudioScaleHelp": "缩混音频增强。值为A将保留原来的音量。",
"LabelDownMixAudioScale": "混音频增强:",
"LabelDownMixAudioScaleHelp": "降混音时增强音频。值为 1 时将保留原始音量。",
"LabelDownloadLanguages": "下载语言:",
"LabelDropImageHere": "拖拽或点击选择图像于此处。",
"LabelDroppedFrames": "丢弃的帧:",
@ -705,7 +705,7 @@
"LabelPublicHttpPortHelp": "映射到本地 HTTP 端口的公开端口号。",
"LabelPublicHttpsPort": "公开 HTTPS 端口号:",
"LabelPublicHttpsPortHelp": "映射到本地 HTTPS 端口的公开端口号。",
"LabelReadHowYouCanContribute": "学习如何构建。",
"LabelReadHowYouCanContribute": "了解如何做出贡献。",
"LabelReasonForTranscoding": "转码原因:",
"LabelRecord": "录制:",
"LabelRecordingPath": "默认录制路径:",
@ -753,7 +753,7 @@
"LabelSubtitleDownloaders": "字幕下载器:",
"LabelSubtitleFormatHelp": "例如SRT",
"LabelSubtitlePlaybackMode": "字幕模式:",
"LabelSubtitles": "字幕",
"LabelSubtitles": "字幕",
"LabelSupportedMediaTypes": "支持的媒体类型:",
"LabelTVHomeScreen": "TV 模式主屏幕:",
"LabelTag": "标签:",
@ -1310,16 +1310,14 @@
"BoxRear": "盒子(背面)",
"ChannelNumber": "频道号码",
"ColorSpace": "色彩空间",
"DirectorValue": "导演:{0}",
"DirectorsValue": "导演:{0}",
"Directors": "导演",
"ColorTransfer": "色彩转换",
"ConfirmDeleteItem": "这将同时在磁盘和媒体库中删除这个项目。确认删除?",
"ConfirmDeleteItems": "这将同时在磁盘和媒体库中删除这些项目。确认删除?",
"ConfirmEndPlayerSession": "确认要关闭位于{0}的Jellyfin吗",
"ValueSeconds": "{0}秒",
"Features": "功能",
"GenreValue": "风格:{0}",
"GenresValue": "风格:{0}",
"Genre": "风格",
"Guide": "指南",
"HeaderCancelRecording": "取消录制",
"HeaderFavoriteMovies": "最爱的电影",
@ -1329,7 +1327,7 @@
"HeaderFavoriteVideos": "最爱的视频",
"HeaderVideoType": "视频类型",
"Items": "项目",
"LabelAudio": "音频",
"LabelAudio": "音频",
"LabelServerName": "服务器名称:",
"LabelTranscodePath": "转码路径:",
"LabelTranscodes": "转码:",
@ -1348,7 +1346,7 @@
"HeaderFavoriteArtists": "最爱的艺术家",
"HeaderKeepRecording": "继续录制",
"HeaderKeepSeries": "保持系列",
"HeaderMusicQuality": "音",
"HeaderMusicQuality": "音频质量",
"HeaderNextEpisodePlayingInValue": "下一集在 {0} 后播放",
"HeaderNextVideoPlayingInValue": "下一部影片在 {0} 后播放",
"HeaderPlayOn": "播放在",
@ -1365,7 +1363,7 @@
"LabelUserLoginAttemptsBeforeLockout": "用户被封禁前可尝试的次数:",
"DashboardVersionNumber": "版本:{0}",
"DashboardServerName": "服务器:{0}",
"LabelVideo": "视频",
"LabelVideo": "视频",
"LabelWeb": "网站:",
"LeaveBlankToNotSetAPassword": "您可以将此字段留空以设置空密码。",
"LinksValue": "链接:{0}",
@ -1474,5 +1472,8 @@
"AskAdminToCreateLibrary": "请联系管理员以创建一个新的资料库。",
"PlaybackErrorNoCompatibleStream": "客户端配置文件存在问题,服务器未发送兼容的媒体格式。",
"AllowFfmpegThrottlingHelp": "当转码或再封装的进度大幅超过当前播放位置时,暂停该进程,以使其消耗更少的资源。在观看时不经常调整播放进度的情况下,这将非常有用。如果遇到播放问题,请关闭此功能。",
"AllowFfmpegThrottling": "限制转码速度"
"AllowFfmpegThrottling": "限制转码速度",
"PreferEmbeddedEpisodeInfosOverFileNames": "优先使用内置的剧集信息而不是文件名",
"PreferEmbeddedEpisodeInfosOverFileNamesHelp": "这将在内置元数据含剧集信息时使用内置信息。",
"ClientSettings": "客户端设置"
}

View file

@ -328,7 +328,7 @@
"Art": "圖像",
"Artists": "演出者",
"AsManyAsPossible": "越多越好",
"Ascending": "由少到多",
"Ascending": "遞增",
"AspectRatio": "長寬比",
"AttributeNew": "新增",
"Audio": "音訊",
@ -453,8 +453,7 @@
"DirectStreamHelp2": "直接串流檔案會占用非常少的處理效能並且影片的品質不會有任何損失。",
"DirectStreaming": "直接串流",
"Director": "導演",
"DirectorValue": "導演: {0}",
"DirectorsValue": "導演: {0}",
"Directors": "導演",
"Disabled": "已停用",
"Disc": "光碟",
"Disconnect": "斷開連結",
@ -539,9 +538,8 @@
"FreeAppsFeatureDescription": "享受免費的Jellyfin應用程式。",
"Fullscreen": "全螢幕",
"General": "一般",
"GenreValue": "類型 : {0}",
"Genre": "類型",
"Genres": "風格",
"GenresValue": "類型 : {0}",
"GroupBySeries": "按系列分組",
"GroupVersions": "按版本分組",
"GuestStar": "特邀明星",
@ -552,7 +550,7 @@
"EncoderPresetHelp": "速度越慢則會得到更好的壓縮編碼效率。",
"HDPrograms": "HD節目",
"HandledByProxy": "由反向代理處理",
"HardwareAccelerationWarning": "啟動硬體加速可能在某些環境下導致系統不穩定。請確認你的作業系統和影片驅動程式是最新的。如果你在開啟此項後播放影片產生困難,那麼你需要將此選項設回”自動“。",
"HardwareAccelerationWarning": "啟動硬體加速可能在某些環境下導致系統不穩定。請確認你的作業系統和影片驅動程式是最新的。如果你在開啟此項後播放影片產生困難,那麼你需要將此選項設回”“。",
"HeaderAccessSchedule": "存取時程",
"HeaderAccessScheduleHelp": "建立一個存取時程以限制可存取的時段。",
"HeaderActiveDevices": "運行中裝置",
@ -917,7 +915,7 @@
"LabelAppNameExample": "例如: Sickbeard, Sonarr",
"LabelArtists": "藝人:",
"LabelArtistsHelp": "分開多重使用 ;",
"LabelAudio": "音頻",
"LabelAudio": "音頻",
"LabelAuthProvider": "認證提供者:",
"LabelAutomaticallyRefreshInternetMetadataEvery": "從網路自動刷新數據:",
"LabelBindToLocalNetworkAddress": "聯結本地網絡地址:",
@ -1046,7 +1044,7 @@
"LabelExtractChaptersDuringLibraryScan": "於媒體庫掃描時擷取章節圖片",
"LabelHttpsPort": "本地 HTTPS 端口:",
"LabelFailed": "失敗",
"LabelSubtitles": "字幕",
"LabelSubtitles": "字幕",
"LabelSupportedMediaTypes": "支援的媒體類型:",
"LabelTextBackgroundColor": "文字背景顏色:",
"LabelTextColor": "文字顏色:",
@ -1062,7 +1060,7 @@
"LabelTypeText": "文本",
"LabelUsername": "使用者名稱:",
"DashboardOperatingSystem": "作業系統:{0}",
"LabelVideo": "影片",
"LabelVideo": "影片",
"LabelVideoCodec": "影片編碼:",
"LabelYear": "年:",
"LatestFromLibrary": "最新 {0}",
@ -1493,7 +1491,7 @@
"RecordingPathChangeMessage": "更改錄製資料夾不會將現有錄製從舊位置遷移到新的,您需要手動移動它們。",
"RestartPleaseWaitMessage": "Jellyfin 伺服器將重新啟動,這將花費幾分鐘時間。",
"LabelEmbedAlbumArtDidl": "於 Didl 中嵌入專輯封面",
"LabelEnableAutomaticPortMapHelp": "自動嘗試映射公共連接埠到 UPnP 本地連接埠。這可能無法用於某些路由器。",
"LabelEnableAutomaticPortMapHelp": "自動嘗試映射公共連接埠到 UPnP 本地連接埠。這可能無法用於某些路由器。需重新啓動伺服器。",
"LabelEmbedAlbumArtDidlHelp": "有些裝置使用這個方式來取得專輯封面,啟用這個選項可能導致其他設備播放失敗。",
"SettingsWarning": "更改這些值可能會導致不穩定或連線故障。如果您遇到任何問題,建議將它們重新更改為預設值。",
"LabelEnableSingleImageInDidlLimitHelp": "若在 Didl 中嵌入多個圖片,某些裝置可能無法正常顯示。",
@ -1636,10 +1634,18 @@
"LaunchWebAppOnStartupHelp": "伺服器啓動時在默認游覽器中打開網頁端。使用重啓伺服器功能時此項不生效。",
"LabelVideoResolution": "視頻解析度:",
"LabelStreamType": "串流類型:",
"EnableFastImageFadeInHelp": "為已加載的圖片啓用更快的淡入動畫",
"EnableFastImageFadeIn": "快速圖片淡入",
"EnableFastImageFadeInHelp": "對已載入的圖片啟用更快的淡入動畫",
"EnableFastImageFadeIn": "圖片快速淡入效果",
"LabelPlayerDimensions": "播放器尺寸:",
"LabelDroppedFrames": "丟棄的幀:",
"LabelCorruptedFrames": "損壞的幀:",
"ButtonSplit": "拆分"
"ButtonSplit": "分割",
"AskAdminToCreateLibrary": "如要建立資料庫,請求管理員。",
"NoCreatedLibraries": "看來您還未創任何媒體庫。{0}立刻創一個新的嗎?{1}",
"ClientSettings": "用戶設定",
"AllowFfmpegThrottlingHelp": "當轉檔或重組進度大量超前目前播放進度時,將暫停轉檔節省消耗的資源。在不常跳播的時候最有效。如果遇到播放問題,請關閉此功能。",
"AllowFfmpegThrottling": "限制轉檔",
"PreferEmbeddedEpisodeInfosOverFileNamesHelp": "這將會使用內建劇集資料。",
"PlaybackErrorNoCompatibleStream": "用戶端偵測出了問題,伺服器也未傳送相容的媒體格式。",
"PreferEmbeddedEpisodeInfosOverFileNames": "優先使用內建劇集資訊而不是檔案名稱"
}

View file

@ -382,7 +382,7 @@ a[data-role=button] {
.emby-checkbox:checked + span + .checkboxOutline {
background-color: #030322;
border: 2px solid rgb(72, 195, 200);
border: 0.14em solid rgb(72, 195, 200);
}
.emby-checkbox:checked + span + .checkboxOutline > .checkboxIcon-checked {
@ -394,7 +394,7 @@ a[data-role=button] {
}
.emby-checkbox:focus:not(:checked) + span + .checkboxOutline {
border: 2px solid #ff77f1;
border: 0.14em solid #ff77f1;
}
.itemProgressBarForeground {
@ -438,6 +438,15 @@ a[data-role=button] {
color: #f8f8fe;
}
.mdl-radio.show-focus .mdl-radio__button:focus + .mdl-radio__circles svg .mdl-radio__outer-circle,
.mdl-radio.show-focus .mdl-radio__button:focus + .mdl-radio__circles svg .mdl-radio__inner-circle {
color: #ff77f1;
}
.mdl-radio.show-focus .mdl-radio__button:focus + .mdl-radio__circles .mdl-radio__focus-circle {
background: #00a4dc;
}
.emby-tab-button {
color: #999;
}

View file

@ -6,12 +6,12 @@ const CopyPlugin = require("copy-webpack-plugin");
const Assets = [
"alameda/alameda.js",
"native-promise-only/npo.js",
"libass-wasm/dist/subtitles-octopus-worker.js",
"libass-wasm/dist/subtitles-octopus-worker.data",
"libass-wasm/dist/subtitles-octopus-worker.wasm",
"libass-wasm/dist/subtitles-octopus-worker-legacy.js",
"libass-wasm/dist/subtitles-octopus-worker-legacy.data",
"libass-wasm/dist/subtitles-octopus-worker-legacy.js.mem"
"libass-wasm/dist/js/subtitles-octopus-worker.js",
"libass-wasm/dist/js/subtitles-octopus-worker.data",
"libass-wasm/dist/js/subtitles-octopus-worker.wasm",
"libass-wasm/dist/js/subtitles-octopus-worker-legacy.js",
"libass-wasm/dist/js/subtitles-octopus-worker-legacy.data",
"libass-wasm/dist/js/subtitles-octopus-worker-legacy.js.mem"
];
module.exports = {

957
yarn.lock

File diff suppressed because it is too large Load diff