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

Merge branch 'jellyfin:master' into audio-normalization

This commit is contained in:
TelepathicWalrus 2023-02-25 15:00:46 +00:00 committed by GitHub
commit 993d6d81a9
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
71 changed files with 4475 additions and 1428 deletions

View file

@ -21,11 +21,11 @@ jobs:
- name: Checkout repository
uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0
- name: Initialize CodeQL
uses: github/codeql-action/init@a34ca99b4610d924e04c68db79e503e1f79f9f02 # v2.1.39
uses: github/codeql-action/init@32dc499307d133bb5085bae78498c0ac2cf762d5 # v2.2.5
with:
languages: ${{ matrix.language }}
queries: +security-extended
- name: Autobuild
uses: github/codeql-action/autobuild@a34ca99b4610d924e04c68db79e503e1f79f9f02 # v2.1.39
uses: github/codeql-action/autobuild@32dc499307d133bb5085bae78498c0ac2cf762d5 # v2.2.5
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@a34ca99b4610d924e04c68db79e503e1f79f9f02 # v2.1.39
uses: github/codeql-action/analyze@32dc499307d133bb5085bae78498c0ac2cf762d5 # v2.2.5

View file

@ -12,7 +12,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Notify as seen
uses: peter-evans/create-or-update-comment@5adcb0bb0f9fb3f95ef05400558bdb3f329ee808 # tag=v2.1.0
uses: peter-evans/create-or-update-comment@67dcc547d311b736a8e6c5c236542148a47adc3d # v2.1.1
with:
token: ${{ secrets.JF_BOT_TOKEN }}
comment-id: ${{ github.event.comment.id }}

1971
package-lock.json generated

File diff suppressed because it is too large Load diff

View file

@ -17,10 +17,10 @@
"@types/escape-html": "1.0.2",
"@types/loadable__component": "5.13.4",
"@types/lodash-es": "4.17.6",
"@types/react": "17.0.52",
"@types/react-dom": "17.0.18",
"@typescript-eslint/eslint-plugin": "5.48.1",
"@typescript-eslint/parser": "5.48.1",
"@types/react": "17.0.53",
"@types/react-dom": "17.0.19",
"@typescript-eslint/eslint-plugin": "5.52.0",
"@typescript-eslint/parser": "5.52.0",
"@uupaa/dynamic-import-polyfill": "1.0.2",
"autoprefixer": "10.4.13",
"babel-loader": "9.1.2",
@ -30,15 +30,15 @@
"copy-webpack-plugin": "11.0.0",
"cross-env": "7.0.3",
"css-loader": "6.7.3",
"cssnano": "5.1.14",
"es-check": "7.0.1",
"eslint": "8.32.0",
"eslint-plugin-compat": "4.0.2",
"cssnano": "5.1.15",
"es-check": "7.1.0",
"eslint": "8.34.0",
"eslint-plugin-compat": "4.1.2",
"eslint-plugin-eslint-comments": "3.2.0",
"eslint-plugin-import": "2.27.4",
"eslint-plugin-import": "2.27.5",
"eslint-plugin-jsx-a11y": "6.7.1",
"eslint-plugin-promise": "6.1.1",
"eslint-plugin-react": "7.32.0",
"eslint-plugin-react": "7.32.2",
"eslint-plugin-react-hooks": "4.6.0",
"eslint-plugin-sonarjs": "0.18.0",
"expose-loader": "4.0.0",
@ -47,19 +47,19 @@
"mini-css-extract-plugin": "2.7.2",
"postcss": "8.4.21",
"postcss-loader": "7.0.2",
"postcss-preset-env": "7.8.3",
"postcss-preset-env": "8.0.1",
"postcss-scss": "4.0.6",
"sass": "1.57.1",
"sass": "1.58.1",
"sass-loader": "13.2.0",
"source-map-loader": "4.0.1",
"style-loader": "3.3.1",
"stylelint": "14.16.1",
"stylelint-config-rational-order": "0.1.2",
"stylelint-no-browser-hacks": "1.2.1",
"stylelint-order": "6.0.1",
"stylelint-scss": "4.3.0",
"stylelint-order": "6.0.2",
"stylelint-scss": "4.4.0",
"ts-loader": "9.4.2",
"typescript": "4.9.4",
"typescript": "4.9.5",
"webpack": "5.75.0",
"webpack-cli": "5.0.1",
"webpack-dev-server": "4.11.1",
@ -76,13 +76,13 @@
"@fontsource/noto-sans-tc": "4.5.12",
"@jellyfin/libass-wasm": "4.1.1",
"@jellyfin/sdk": "unstable",
"@loadable/component": "5.15.2",
"@loadable/component": "5.15.3",
"blurhash": "2.0.4",
"classlist.js": "https://github.com/eligrey/classList.js/archive/1.2.20180112.tar.gz",
"classnames": "2.3.2",
"core-js": "3.27.1",
"core-js": "3.28.0",
"date-fns": "2.29.3",
"dompurify": "2.4.3",
"dompurify": "2.4.4",
"epubjs": "0.4.2",
"escape-html": "1.0.3",
"fast-text-encoding": "1.0.6",
@ -96,17 +96,17 @@
"jstree": "3.3.14",
"libarchive.js": "1.3.0",
"lodash-es": "4.17.21",
"marked": "4.2.5",
"marked": "4.2.12",
"material-design-icons-iconfont": "6.7.0",
"native-promise-only": "0.8.1",
"pdfjs-dist": "2.16.105",
"react": "17.0.2",
"react-dom": "17.0.2",
"react-router-dom": "6.6.2",
"react-router-dom": "6.8.1",
"resize-observer-polyfill": "1.5.1",
"screenfull": "6.0.2",
"sortablejs": "1.15.0",
"swiper": "8.4.5",
"swiper": "8.4.7",
"webcomponents.js": "0.7.24",
"whatwg-fetch": "3.6.2",
"workbox-core": "6.5.4",

View file

@ -597,11 +597,6 @@
display: flex;
flex-direction: column;
.layout-mobile & {
padding-left: 5%;
padding-right: 5%;
}
.layout-desktop &,
.layout-tv & {
.emby-scroller {
@ -624,6 +619,11 @@
padding-right: 32.45vw;
padding-left: 2%;
}
.layout-mobile & {
padding-left: 5%;
padding-right: 5%;
}
}
.detailSectionContent a {
@ -669,11 +669,6 @@
margin: 1em 0;
}
.detailButton,
.mainDetailButtons {
display: flex;
}
.itemName {
margin: 0.5em 0;
font-weight: 600;
@ -750,6 +745,10 @@
.layout-mobile .mainDetailButtons {
margin-top: 1em;
margin-bottom: 0.5em;
}
.layout-mobile [dir="ltr"] .mainDetailButtons {
margin-left: 0;
@include header-poster-padding;
@ -758,20 +757,16 @@
margin-bottom: 0;
padding-left: 0;
}
[dir="ltr"] & {
margin-left: 0;
}
[dir="rtl"] & {
.layout-mobile [dir="rtl"] .mainDetailButtons {
margin-right: 0;
padding-left: unset !important;
@include header-poster-padding-rtl;
@media all and (max-width: 32em) {
padding-right: 0 !important;
}
margin-bottom: 0;
padding-right: 0;
}
}
@ -807,22 +802,16 @@
.layout-tv & {
display: block;
}
}
.layout-desktop [dir="rtl"] .detailPagePrimaryContainer {
.layout-desktop [dir="rtl"] &,
.layout-tv [dir="rtl"] & {
padding-right: 32.45vw;
}
.layout-desktop [dir="ltr"] .detailPagePrimaryContainer {
.layout-desktop [dir="ltr"] &,
.layout-tv [dir="ltr"] & {
padding-left: 32.45vw;
}
.layout-tv [dir="rtl"] .detailPagePrimaryContainer {
padding-right: 32.45vw;
}
.layout-tv [dir="ltr"] .detailPagePrimaryContainer {
padding-left: 32.45vw;
}
.layout-desktop .detailRibbon {
@ -841,31 +830,23 @@
flex: 1 0 0;
.layout-mobile & {
[dir="ltr"] {
@include header-poster-padding;
}
[dir="rtl"] & {
@include header-poster-padding-rtl;
}
@media all and (max-width: 32em) {
position: relative;
}
}
.layout-mobile [dir="ltr"] & {
@include header-poster-padding;
}
.layout-mobile [dir="rtl"] & {
@include header-poster-padding-rtl;
}
}
.infoText {
min-width: 0;
max-width: 100%;
[dir="ltr"] & {
text-align: left;
}
[dir="rtl"] & {
text-align: right;
}
}
.detailPageSecondaryContainer {
@ -1141,10 +1122,6 @@ div.itemDetailGalleryLink.defaultCardBackground {
}
@media all and (max-width: 62.5em) {
.mainDetailButtons {
margin-left: -0.5em;
}
.detailButtonHideonMobile {
display: none !important;
}

View file

@ -366,6 +366,10 @@ import template from './libraryoptionseditor.template.html';
parent.querySelector('.subtitleFetchers').addEventListener('click', onSortableContainerClick);
parent.querySelector('.metadataFetchers').addEventListener('click', onSortableContainerClick);
parent.querySelector('.imageFetchers').addEventListener('click', onImageFetchersContainerClick);
parent.querySelector('#chkEnableEmbeddedTitles').addEventListener('change', (e) => {
parent.querySelector('.chkEnableEmbeddedExtrasTitlesContainer').classList.toggle('hide', !e.currentTarget.checked);
});
}
export async function embed(parent, contentType, libraryOptions) {
@ -412,8 +416,12 @@ import template from './libraryoptionseditor.template.html';
if (contentType === 'books' || contentType === 'boxsets' || contentType === 'playlists' || contentType === 'music') {
parent.querySelector('.chkEnableEmbeddedTitlesContainer').classList.add('hide');
parent.querySelector('.chkEnableEmbeddedExtrasTitlesContainer').classList.add('hide');
} else {
parent.querySelector('.chkEnableEmbeddedTitlesContainer').classList.remove('hide');
if (parent.querySelector('#chkEnableEmbeddedTitles').checked) {
parent.querySelector('.chkEnableEmbeddedExtrasTitlesContainer').classList.remove('hide');
}
}
if (contentType === 'tvshows') {
@ -525,6 +533,7 @@ import template from './libraryoptionseditor.template.html';
SeasonZeroDisplayName: parent.querySelector('#txtSeasonZeroName').value,
AutomaticRefreshIntervalDays: parseInt(parent.querySelector('#selectAutoRefreshInterval').value),
EnableEmbeddedTitles: parent.querySelector('#chkEnableEmbeddedTitles').checked,
EnableEmbeddedExtrasTitles: parent.querySelector('#chkEnableEmbeddedExtrasTitles').checked,
EnableEmbeddedEpisodeInfos: parent.querySelector('#chkEnableEmbeddedEpisodeInfos').checked,
AllowEmbeddedSubtitles: parent.querySelector('#selectAllowEmbeddedSubtitles').value,
SkipSubtitlesIfEmbeddedSubtitlesPresent: parent.querySelector('#chkSkipIfGraphicalSubsPresent').checked,
@ -580,6 +589,8 @@ import template from './libraryoptionseditor.template.html';
parent.querySelector('#chkSaveLocal').checked = options.SaveLocalMetadata;
parent.querySelector('.chkAutomaticallyGroupSeries').checked = options.EnableAutomaticSeriesGrouping;
parent.querySelector('#chkEnableEmbeddedTitles').checked = options.EnableEmbeddedTitles;
parent.querySelector('.chkEnableEmbeddedExtrasTitlesContainer').classList.toggle('hide', !options.EnableEmbeddedTitles);
parent.querySelector('#chkEnableEmbeddedExtrasTitles').checked = options.EnableEmbeddedExtrasTitles;
parent.querySelector('#chkEnableEmbeddedEpisodeInfos').value = options.EnableEmbeddedEpisodeInfos;
parent.querySelector('#selectAllowEmbeddedSubtitles').value = options.AllowEmbeddedSubtitles;
parent.querySelector('#chkSkipIfGraphicalSubsPresent').checked = options.SkipSubtitlesIfEmbeddedSubtitlesPresent;

View file

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

View file

@ -261,6 +261,10 @@ import ServerConnections from '../ServerConnections';
const imgUrl = options.imageSource === 'channel' ? getChannelImageUrl(item, downloadWidth) : getImageUrl(item, downloadWidth);
let imageClass = isLargeStyle ? 'listItemImage listItemImage-large' : 'listItemImage';
if (options.imageSource === 'channel') {
imageClass += ' listItemImage-channel';
}
if (isLargeStyle && layoutManager.tv) {
imageClass += ' listItemImage-large-tv';
}
@ -428,6 +432,7 @@ import ServerConnections from '../ServerConnections';
container: false,
episodeTitle: false,
criticRating: false,
officialRating: false,
endsAt: false
});

View file

@ -153,6 +153,10 @@
margin-right: 0.75em;
}
.listItemImage-channel {
background-size: contain;
}
.listItemImageButton {
align-self: center;
justify-self: center;
@ -316,3 +320,13 @@
.listItemCheckboxContainer {
width: auto !important;
}
.listItemMediaInfo + .timerIndicator {
[dir="ltr"] & {
margin-left: 0.25em;
}
[dir="rtl"] & {
margin-right: 0.25em;
}
}

View file

@ -8,6 +8,7 @@ import 'material-design-icons-iconfont';
import './mediainfo.scss';
import '../guide/programs.scss';
import '../../elements/emby-button/emby-button';
import * as userSettings from '../../scripts/settings/userSettings';
/* eslint-disable indent */
function getTimerIndicator(item) {
@ -158,7 +159,7 @@ import '../../elements/emby-button/emby-button';
}
}
if (item.StartDate && item.Type !== 'Program' && item.Type !== 'SeriesTimer') {
if (item.StartDate && item.Type !== 'Program' && item.Type !== 'SeriesTimer' && item.Type !== 'Timer') {
try {
date = datetime.parseISO8601Date(item.StartDate);
@ -196,47 +197,52 @@ import '../../elements/emby-button/emby-button';
}
}
if (item.Type === 'Program') {
if (item.Type === 'Program' || item.Type === 'Timer') {
let program = item;
if (item.Type === 'Timer') {
program = item.ProgramInfo;
}
if (options.programIndicator !== false) {
if (item.IsLive) {
if (program.IsLive && userSettings.get('guide-indicator-live') === 'true') {
miscInfo.push({
html: `<div class="mediaInfoProgramAttribute mediaInfoItem liveTvProgram">${globalize.translate('Live')}</div>`
});
} else if (item.IsPremiere) {
} else if (program.IsPremiere && userSettings.get('guide-indicator-premiere') === 'true') {
miscInfo.push({
html: `<div class="mediaInfoProgramAttribute mediaInfoItem premiereTvProgram">${globalize.translate('Premiere')}</div>`
});
} else if (item.IsSeries && !item.IsRepeat) {
} else if (program.IsSeries && !program.IsRepeat && userSettings.get('guide-indicator-new') === 'true') {
miscInfo.push({
html: `<div class="mediaInfoProgramAttribute mediaInfoItem newTvProgram">${globalize.translate('New')}</div>`
});
} else if (item.IsSeries && item.IsRepeat) {
} else if (program.IsSeries && program.IsRepeat && userSettings.get('guide-indicator-repeat') === 'true') {
miscInfo.push({
html: `<div class="mediaInfoProgramAttribute mediaInfoItem repeatTvProgram">${globalize.translate('Repeat')}</div>`
});
}
}
if ((item.IsSeries || item.EpisodeTitle) && options.episodeTitle !== false) {
text = itemHelper.getDisplayName(item, {
if ((program.IsSeries || program.EpisodeTitle) && options.episodeTitle !== false) {
text = itemHelper.getDisplayName(program, {
includeIndexNumber: options.episodeTitleIndexNumber
});
if (text) {
miscInfo.push(escapeHtml(text));
}
} else if (item.IsMovie && item.ProductionYear && options.originalAirDate !== false) {
miscInfo.push(item.ProductionYear);
} else if (item.PremiereDate && options.originalAirDate !== false) {
} else if (program.IsMovie && program.ProductionYear && options.originalAirDate !== false) {
miscInfo.push(program.ProductionYear);
} else if (program.PremiereDate && options.originalAirDate !== false) {
try {
date = datetime.parseISO8601Date(item.PremiereDate);
date = datetime.parseISO8601Date(program.PremiereDate);
text = globalize.translate('OriginalAirDateValue', datetime.toLocaleDateString(date));
miscInfo.push(text);
} catch (e) {
console.error('error parsing date:', item.PremiereDate);
console.error('error parsing date:', program.PremiereDate);
}
} else if (item.ProductionYear) {
miscInfo.push(item.ProductionYear);
} else if (program.ProductionYear && options.year !== false ) {
miscInfo.push(program.ProductionYear);
}
}
@ -255,7 +261,7 @@ import '../../elements/emby-button/emby-button';
}
}
if (item.RunTimeTicks && item.Type !== 'Series' && item.Type !== 'Program' && item.Type !== 'Book' && !showFolderRuntime && options.runtime !== false) {
if (item.RunTimeTicks && item.Type !== 'Series' && item.Type !== 'Program' && item.Type !== 'Timer' && item.Type !== 'Book' && !showFolderRuntime && options.runtime !== false) {
if (item.Type === 'Audio') {
miscInfo.push(datetime.getDisplayRunningTime(item.RunTimeTicks));
} else {
@ -263,7 +269,7 @@ import '../../elements/emby-button/emby-button';
}
}
if (item.OfficialRating && item.Type !== 'Season' && item.Type !== 'Episode') {
if (options.officialRating !== false && item.OfficialRating && item.Type !== 'Season' && item.Type !== 'Episode') {
miscInfo.push({
text: item.OfficialRating,
cssClass: 'mediaInfoOfficialRating'

View file

@ -422,7 +422,8 @@ function getPlaybackInfo(player,
enableDirectPlay,
enableDirectStream,
allowVideoStreamCopy,
allowAudioStreamCopy) {
allowAudioStreamCopy,
secondarySubtitleStreamIndex) {
if (!itemHelper.isLocalItem(item) && item.MediaType === 'Audio' && !player.useServerPlaybackInfoForAudio) {
return Promise.resolve({
MediaSources: [
@ -462,6 +463,9 @@ function getPlaybackInfo(player,
if (subtitleStreamIndex != null) {
query.SubtitleStreamIndex = subtitleStreamIndex;
}
if (secondarySubtitleStreamIndex != null) {
query.SecondarySubtitleStreamIndex = secondarySubtitleStreamIndex;
}
if (enableDirectPlay != null) {
query.EnableDirectPlay = enableDirectPlay;
}
@ -876,25 +880,49 @@ class PlaybackManager {
});
};
function getCurrentSubtitleStream(player) {
self.playerHasSecondarySubtitleSupport = function (player = self._currentPlayer) {
if (!player) return false;
return Boolean(player.supports('SecondarySubtitles'));
};
/**
* Checks if:
* - the track can be used directly as a secondary subtitle
* - or if it can be paired with a secondary subtitle when used as a primary subtitle
*/
self.trackHasSecondarySubtitleSupport = function (track, player = self._currentPlayer) {
if (!player || !track) return false;
const format = (track.Codec || '').toLowerCase();
// Currently, only non-SSA/non-ASS external subtitles are supported.
// Showing secondary subtitles does not work with any SSA/ASS subtitle combinations because
// of the complexity of how they are rendered and the risk of the subtitles overlapping
return format !== 'ssa' && format !== 'ass' && getDeliveryMethod(track) === 'External';
};
self.secondarySubtitleTracks = function (player = self._currentPlayer) {
const streams = self.subtitleTracks(player);
return streams.filter((stream) => self.trackHasSecondarySubtitleSupport(stream, player));
};
function getCurrentSubtitleStream(player, isSecondaryStream = false) {
if (!player) {
throw new Error('player cannot be null');
}
const index = getPlayerData(player).subtitleStreamIndex;
const index = isSecondaryStream ? getPlayerData(player).secondarySubtitleStreamIndex : getPlayerData(player).subtitleStreamIndex;
if (index == null || index === -1) {
return null;
}
return getSubtitleStream(player, index);
return self.getSubtitleStream(player, index);
}
function getSubtitleStream(player, index) {
self.getSubtitleStream = function (player, index) {
return self.subtitleTracks(player).filter(function (s) {
return s.Type === 'Subtitle' && s.Index === index;
})[0];
}
};
self.getPlaylist = function (player) {
player = player || self._currentPlayer;
@ -1463,6 +1491,24 @@ class PlaybackManager {
return getPlayerData(player).subtitleStreamIndex;
};
self.getSecondarySubtitleStreamIndex = function (player) {
player = player || self._currentPlayer;
if (!player) {
throw new Error('player cannot be null');
}
try {
if (!enableLocalPlaylistManagement(player)) {
return player.getSecondarySubtitleStreamIndex();
}
} catch (e) {
console.error('[playbackmanager] Failed to get secondary stream index:', e);
}
return getPlayerData(player).secondarySubtitleStreamIndex;
};
function getDeliveryMethod(subtitleStream) {
// This will be null for internal subs for local items
if (subtitleStream.DeliveryMethod) {
@ -1480,7 +1526,7 @@ class PlaybackManager {
const currentStream = getCurrentSubtitleStream(player);
const newStream = getSubtitleStream(player, index);
const newStream = self.getSubtitleStream(player, index);
if (!currentStream && !newStream) {
return;
@ -1522,9 +1568,48 @@ class PlaybackManager {
player.setSubtitleStreamIndex(selectedTrackElementIndex);
// Also disable secondary subtitles when disabling the primary
// subtitles, or if it doesn't support a secondary pair
if (selectedTrackElementIndex === -1 || !self.trackHasSecondarySubtitleSupport(newStream)) {
self.setSecondarySubtitleStreamIndex(-1);
}
getPlayerData(player).subtitleStreamIndex = index;
};
self.setSecondarySubtitleStreamIndex = function (index, player) {
player = player || self._currentPlayer;
if (!self.playerHasSecondarySubtitleSupport(player)) return;
if (player && !enableLocalPlaylistManagement(player)) {
try {
return player.setSecondarySubtitleStreamIndex(index);
} catch (e) {
console.error('[playbackmanager] AutoSet - Failed to set secondary track:', e);
}
}
const currentStream = getCurrentSubtitleStream(player, true);
const newStream = self.getSubtitleStream(player, index);
if (!currentStream && !newStream) {
return;
}
// Secondary subtitles are currently only handled client side
// Changes to the server code are required before we can handle other delivery methods
if (newStream && !self.trackHasSecondarySubtitleSupport(newStream, player)) {
return;
}
try {
player.setSecondarySubtitleStreamIndex(index);
getPlayerData(player).secondarySubtitleStreamIndex = index;
} catch (e) {
console.error('[playbackmanager] AutoSet - Failed to set secondary track:', e);
}
};
self.supportSubtitleOffset = function (player) {
player = player || self._currentPlayer;
return player && 'setSubtitleOffset' in player;
@ -1548,7 +1633,7 @@ class PlaybackManager {
};
self.isSubtitleStreamExternal = function (index, player) {
const stream = getSubtitleStream(player, index);
const stream = self.getSubtitleStream(player, index);
return stream ? getDeliveryMethod(stream) === 'External' : false;
};
@ -1639,6 +1724,7 @@ class PlaybackManager {
}).then(function (deviceProfile) {
const audioStreamIndex = params.AudioStreamIndex == null ? getPlayerData(player).audioStreamIndex : params.AudioStreamIndex;
const subtitleStreamIndex = params.SubtitleStreamIndex == null ? getPlayerData(player).subtitleStreamIndex : params.SubtitleStreamIndex;
const secondarySubtitleStreamIndex = params.SecondarySubtitleStreamIndex == null ? getPlayerData(player).secondarySubtitleStreamIndex : params.SecondarySubtitleStreamIndex;
let currentMediaSource = self.currentMediaSource(player);
const apiClient = ServerConnections.getApiClient(currentItem.ServerId);
@ -1665,6 +1751,7 @@ class PlaybackManager {
}
getPlayerData(player).subtitleStreamIndex = subtitleStreamIndex;
getPlayerData(player).secondarySubtitleStreamIndex = secondarySubtitleStreamIndex;
getPlayerData(player).audioStreamIndex = audioStreamIndex;
getPlayerData(player).maxStreamingBitrate = maxBitrate;
@ -1950,6 +2037,7 @@ class PlaybackManager {
state.PlayState.PlaybackRate = self.getPlaybackRate(player);
state.PlayState.SubtitleStreamIndex = self.getSubtitleStreamIndex(player);
state.PlayState.SecondarySubtitleStreamIndex = self.getSecondarySubtitleStreamIndex(player);
state.PlayState.AudioStreamIndex = self.getAudioStreamIndex(player);
state.PlayState.BufferedRanges = self.getBufferedRanges(player);
@ -2230,11 +2318,16 @@ class PlaybackManager {
});
}
function rankStreamType(prevIndex, prevSource, mediaSource, streamType) {
function rankStreamType(prevIndex, prevSource, mediaSource, streamType, isSecondarySubtitle) {
if (prevIndex == -1) {
console.debug(`AutoSet ${streamType} - No Stream Set`);
if (streamType == 'Subtitle')
if (streamType == 'Subtitle') {
if (isSecondarySubtitle) {
mediaSource.DefaultSecondarySubtitleStreamIndex = -1;
} else {
mediaSource.DefaultSubtitleStreamIndex = -1;
}
}
return;
}
@ -2292,8 +2385,13 @@ class PlaybackManager {
if (bestStreamIndex != null) {
console.debug(`AutoSet ${streamType} - Using ${bestStreamIndex} score ${bestStreamScore}.`);
if (streamType == 'Subtitle')
if (streamType == 'Subtitle') {
if (isSecondarySubtitle) {
mediaSource.DefaultSecondarySubtitleStreamIndex = bestStreamIndex;
} else {
mediaSource.DefaultSubtitleStreamIndex = bestStreamIndex;
}
}
if (streamType == 'Audio')
mediaSource.DefaultAudioStreamIndex = bestStreamIndex;
} else {
@ -2317,6 +2415,10 @@ class PlaybackManager {
if (subtitle && typeof prevSource.DefaultSubtitleStreamIndex == 'number') {
rankStreamType(prevSource.DefaultSubtitleStreamIndex, prevSource, mediaSource, 'Subtitle');
}
if (subtitle && typeof prevSource.DefaultSecondarySubtitleStreamIndex == 'number') {
rankStreamType(prevSource.DefaultSecondarySubtitleStreamIndex, prevSource, mediaSource, 'Subtitle', true);
}
} catch (e) {
console.error(`AutoSet - Caught unexpected error: ${e}`);
}
@ -2384,6 +2486,19 @@ class PlaybackManager {
const user = await apiClient.getCurrentUser();
autoSetNextTracks(prevSource, mediaSource, user.Configuration.RememberAudioSelections, user.Configuration.RememberSubtitleSelections);
if (mediaSource.DefaultSubtitleStreamIndex == null || mediaSource.DefaultSubtitleStreamIndex < 0) {
mediaSource.DefaultSubtitleStreamIndex = mediaSource.DefaultSecondarySubtitleStreamIndex;
mediaSource.DefaultSecondarySubtitleStreamIndex = -1;
}
const subtitleTrack1 = mediaSource.MediaStreams[mediaSource.DefaultSubtitleStreamIndex];
const subtitleTrack2 = mediaSource.MediaStreams[mediaSource.DefaultSecondarySubtitleStreamIndex];
if (!self.trackHasSecondarySubtitleSupport(subtitleTrack1, player)
|| !self.trackHasSecondarySubtitleSupport(subtitleTrack2, player)) {
mediaSource.DefaultSecondarySubtitleStreamIndex = -1;
}
const streamInfo = createStreamInfo(apiClient, item.MediaType, item, mediaSource, startPosition, player);
streamInfo.fullscreen = playOptions.fullscreen;
@ -2751,7 +2866,8 @@ class PlaybackManager {
return {
...prevSource,
DefaultAudioStreamIndex: prevPlayerData.audioStreamIndex,
DefaultSubtitleStreamIndex: prevPlayerData.subtitleStreamIndex
DefaultSubtitleStreamIndex: prevPlayerData.subtitleStreamIndex,
DefaultSecondarySubtitleStreamIndex: prevPlayerData.secondarySubtitleStreamIndex
};
}
@ -2910,9 +3026,11 @@ class PlaybackManager {
if (mediaSource) {
playerData.audioStreamIndex = mediaSource.DefaultAudioStreamIndex;
playerData.subtitleStreamIndex = mediaSource.DefaultSubtitleStreamIndex;
playerData.secondarySubtitleStreamIndex = mediaSource.DefaultSecondarySubtitleStreamIndex;
} else {
playerData.audioStreamIndex = null;
playerData.subtitleStreamIndex = null;
playerData.secondarySubtitleStreamIndex = null;
}
self._playNextAfterEnded = true;

View file

@ -11,8 +11,6 @@
<div class="paperList" style="padding: 1em;">
<p id="serverName"></p>
<p id="versionNumber"></p>
<p id="operatingSystem"></p>
<p id="architecture"></p>
</div>
<div class="dashboardActionsContainer">

View file

@ -203,8 +203,6 @@ import confirm from '../../components/confirm/confirm';
apiClient.getSystemInfo().then(function (systemInfo) {
view.querySelector('#serverName').innerText = globalize.translate('DashboardServerName', systemInfo.ServerName);
view.querySelector('#versionNumber').innerText = globalize.translate('DashboardVersionNumber', systemInfo.Version);
view.querySelector('#operatingSystem').innerText = globalize.translate('DashboardOperatingSystem', systemInfo.OperatingSystem);
view.querySelector('#architecture').innerText = globalize.translate('DashboardArchitecture', systemInfo.SystemArchitecture);
if (systemInfo.CanSelfRestart) {
view.querySelector('#btnRestartServer').classList.remove('hide');

View file

@ -79,6 +79,7 @@
</label>
</div>
</div>
<br />
<div>
<button is="emby-button" type="submit" class="raised button-submit block">

View file

@ -1,4 +1,5 @@
import 'jquery';
import loading from '../../components/loading/loading';
import globalize from '../../scripts/globalize';
import '../../elements/emby-checkbox/emby-checkbox';
@ -35,6 +36,7 @@ import alert from '../../components/alert';
config.MetadataPath = $('#txtMetadataPath', form).val();
config.MetadataNetworkPath = $('#txtMetadataNetworkPath', form).val();
config.QuickConnectAvailable = form.querySelector('#chkQuickConnectAvailable').checked;
ApiClient.updateServerConfiguration(config).then(function() {
ApiClient.getNamedConfiguration(brandingConfigKey).then(function(brandingConfig) {
brandingConfig.LoginDisclaimer = form.querySelector('#txtLoginDisclaimer').value;

View file

@ -1,10 +1,35 @@
import { ImageResolution } from '@jellyfin/sdk/lib/generated-client/models/image-resolution';
import 'jquery';
import loading from '../../components/loading/loading';
import libraryMenu from '../../scripts/libraryMenu';
import globalize from '../../scripts/globalize';
import '../../components/listview/listview.scss';
import Dashboard from '../../utils/dashboard';
import '../../components/listview/listview.scss';
function populateImageResolutionOptions(select) {
let html = '';
[
{
name: globalize.translate('ResolutionMatchSource'),
value: ImageResolution.MatchSource
},
{ name: '2160p', value: ImageResolution.P2160 },
{ name: '1440p', value: ImageResolution.P1440 },
{ name: '1080p', value: ImageResolution.P1080 },
{ name: '720p', value: ImageResolution.P720 },
{ name: '480p', value: ImageResolution.P480 },
{ name: '360p', value: ImageResolution.P360 },
{ name: '240p', value: ImageResolution.P240 },
{ name: '144p', value: ImageResolution.P144 }
].forEach(({ value, name }) => {
html += `<option value="${value}">${name}</option>`;
});
select.innerHTML = html;
}
/* eslint-disable indent */
function populateLanguages(select) {
@ -32,11 +57,21 @@ import Dashboard from '../../utils/dashboard';
}
function loadPage(page) {
const promises = [ApiClient.getServerConfiguration(), populateLanguages(page.querySelector('#selectLanguage')), populateCountries(page.querySelector('#selectCountry'))];
const promises = [
ApiClient.getServerConfiguration(),
populateLanguages(page.querySelector('#selectLanguage')),
populateCountries(page.querySelector('#selectCountry'))
];
populateImageResolutionOptions(page.querySelector('#txtChapterImageResolution'));
Promise.all(promises).then(function(responses) {
const config = responses[0];
page.querySelector('#selectLanguage').value = config.PreferredMetadataLanguage || '';
page.querySelector('#selectCountry').value = config.MetadataCountryCode || '';
page.querySelector('#valDummyChapterDuration').value = config.DummyChapterDuration || '';
page.querySelector('#valDummyChapterCount').value = config.DummyChapterCount || '';
page.querySelector('#txtChapterImageResolution').value = config.ChapterImageResolution || '';
loading.hide();
});
}
@ -47,6 +82,9 @@ import Dashboard from '../../utils/dashboard';
ApiClient.getServerConfiguration().then(function(config) {
config.PreferredMetadataLanguage = form.querySelector('#selectLanguage').value;
config.MetadataCountryCode = form.querySelector('#selectCountry').value;
config.DummyChapterDuration = form.querySelector('#valDummyChapterDuration').value;
config.DummyChapterCount = form.querySelector('#valDummyChapterCount').value;
config.ChapterImageResolution = form.querySelector('#txtChapterImageResolution').value;
ApiClient.updateServerConfiguration(config).then(Dashboard.processServerConfigurationUpdateResult);
});
return false;

View file

@ -5,6 +5,7 @@
<div class="content-primary">
<form class="metadataImagesConfigurationForm">
<div class="verticalSection">
<h2 style="margin-top:0;">${HeaderPreferredMetadataLanguage}</h2>
<p style="margin:1.5em 0;">${DefaultMetadataLangaugeDescription}</p>
@ -16,8 +17,30 @@
<div class="selectContainer">
<select is="emby-select" id="selectCountry" required="required" label="${LabelCountry}"></select>
</div>
</div>
<div class="verticalSection">
<h2>${HeaderDummyChapter}</h2>
<div class="inputContainer">
<input is="emby-input" type="number" id="valDummyChapterDuration" label="${LabelDummyChapterDuration}" min="1"></input>
<div class="fieldDescription">${LabelDummyChapterDurationHelp}</div>
</div>
<div class="inputContainer">
<input is="emby-input" type="number" id="valDummyChapterCount" label="${LabelDummyChapterCount}" min="1"></input>
<div class="fieldDescription">${LabelDummyChapterCountHelp}</div>
</div>
<div class="selectContainer">
<select is="emby-select" id="txtChapterImageResolution" label="${LabelChapterImageResolution}"></select>
<div class="fieldDescription">
<div>${LabelChapterImageResolutionHelp}</div>
</div>
</div>
</div>
<br />
<div><button is="emby-button" type="submit" class="raised button-submit block"><span>${Save}</span></button></div>
<div>
<button is="emby-button" type="submit" class="raised button-submit block"><span>${Save}</span></button>
</div>
</form>
</div>

View file

@ -143,13 +143,18 @@
<div class="writersLabel label"></div>
<div class="writers content focuscontainer-x"></div>
</div>
<div class="detailsGroupItem studiosGroup hide">
<div class="studiosLabel label"></div>
<div class="studios content focuscontainer-x"></div>
</div>
</div>
</div>
</div>
<div class="seriesTimerScheduleSection verticalSection detailVerticalSection hide" style="margin-top: -3em;">
<div id="seriesTimerScheduleSection" class="verticalSection detailVerticalSection hide" style="margin-top: -3em;">
<h2 class="sectionTitle">${Schedule}</h2>
<div class="seriesTimerSchedule padded-right"></div>
<div id="seriesTimerSchedule" is="emby-itemscontainer" class="itemsContainer vertical-list padded-right" data-contextmenu="false"></div>
</div>
<div class="collectionItems hide"></div>

View file

@ -96,33 +96,26 @@ function getContextMenuOptions(item, user, button) {
};
}
function getProgramScheduleHtml(items) {
let html = '';
html += '<div is="emby-itemscontainer" class="itemsContainer vertical-list" data-contextmenu="false">';
html += listView.getListViewHtml({
function getProgramScheduleHtml(items, action = 'none') {
return listView.getListViewHtml({
items: items,
enableUserDataButtons: false,
image: true,
imageSource: 'channel',
showProgramDateTime: true,
showChannel: false,
mediaInfo: false,
action: 'none',
mediaInfo: true,
runtime: false,
action,
moreButton: false,
recordButton: false
});
html += '</div>';
return html;
}
function renderSeriesTimerSchedule(page, apiClient, seriesTimerId) {
apiClient.getLiveTvTimers({
UserId: apiClient.getCurrentUserId(),
ImageTypeLimit: 1,
EnableImageTypes: 'Primary,Backdrop,Thumb',
SortBy: 'StartDate',
EnableTotalRecordCount: false,
EnableUserData: false,
@ -134,7 +127,7 @@ function renderSeriesTimerSchedule(page, apiClient, seriesTimerId) {
}
const html = getProgramScheduleHtml(result.Items);
const scheduleTab = page.querySelector('.seriesTimerSchedule');
const scheduleTab = page.querySelector('#seriesTimerSchedule');
scheduleTab.innerHTML = html;
imageLoader.lazyChildren(scheduleTab);
});
@ -162,13 +155,13 @@ function renderSeriesTimerEditor(page, item, apiClient, user) {
});
});
page.querySelector('.seriesTimerScheduleSection').classList.remove('hide');
page.querySelector('#seriesTimerScheduleSection').classList.remove('hide');
hideAll(page, 'btnCancelSeriesTimer', true);
renderSeriesTimerSchedule(page, apiClient, item.Id);
return;
}
page.querySelector('.seriesTimerScheduleSection').classList.add('hide');
page.querySelector('#seriesTimerScheduleSection').classList.add('hide');
hideAll(page, 'btnCancelSeriesTimer');
}
@ -184,34 +177,7 @@ function renderTrackSelections(page, instance, item, forceReload) {
return;
}
let mediaSources = item.MediaSources;
const resolutionNames = [];
const sourceNames = [];
mediaSources.forEach(function (v) {
(v.Name.endsWith('p') || v.Name.endsWith('i')) && !Number.isNaN(parseInt(v.Name, 10)) ? resolutionNames.push(v) : sourceNames.push(v);
});
resolutionNames.sort((a, b) => parseInt(b.Name, 10) - parseInt(a.Name, 10));
sourceNames.sort((a, b) => {
const nameA = a.Name.toUpperCase();
const nameB = b.Name.toUpperCase();
if (nameA < nameB) {
return -1;
} else if (nameA > nameB) {
return 1;
}
return 0;
});
mediaSources = [];
resolutionNames.forEach(v => {
mediaSources.push(v);
});
sourceNames.forEach(v => {
mediaSources.push(v);
});
const mediaSources = item.MediaSources;
instance._currentPlaybackMediaSources = mediaSources;
page.querySelector('.trackSelections').classList.remove('hide');
@ -1031,6 +997,29 @@ function renderDirector(page, item, context) {
}
}
function renderStudio(page, item, context) {
const studios = item.Studios || [];
const html = studios.map(function (studio) {
return '<a style="color:inherit;" class="button-link" is="emby-linkbutton" href="' + appRouter.getRouteUrl({
Name: studio.Name,
Type: 'Studio',
ServerId: item.ServerId,
Id: studio.Id
}, {
context: context
}) + '">' + escapeHtml(studio.Name) + '</a>';
}).join(', ');
const studiosLabel = page.querySelector('.studiosLabel');
studiosLabel.innerText = globalize.translate(studios.length > 1 ? 'Studios' : 'Studio');
const studiosValue = page.querySelector('.studios');
studiosValue.innerHTML = html;
const studiosGroup = page.querySelector('.studiosGroup');
studiosGroup.classList.toggle('hide', !studios.length);
}
function renderMiscInfo(page, item) {
const primaryItemMiscInfo = page.querySelectorAll('.itemMiscInfo-primary');
@ -1079,6 +1068,7 @@ function renderDetails(page, item, apiClient, context, isStatic) {
renderMoreFromSeason(page, item, apiClient);
renderMoreFromArtist(page, item, apiClient);
renderDirector(page, item, context);
renderStudio(page, item, context);
renderWriter(page, item, context);
renderGenres(page, item, context);
renderChannelGuide(page, apiClient, item);
@ -1599,13 +1589,13 @@ function renderSeriesSchedule(page, item) {
const apiClient = ServerConnections.getApiClient(item.ServerId);
apiClient.getLiveTvPrograms({
UserId: apiClient.getCurrentUserId(),
ImageTypeLimit: 1,
HasAired: false,
SortBy: 'StartDate',
EnableTotalRecordCount: false,
EnableImages: false,
ImageTypeLimit: 0,
Limit: 50,
EnableUserData: false,
Fields: 'ChannelInfo,ChannelImage',
LibrarySeriesId: item.Id
}).then(function (result) {
if (result.Items.length) {
@ -1614,17 +1604,11 @@ function renderSeriesSchedule(page, item) {
page.querySelector('#seriesScheduleSection').classList.add('hide');
}
page.querySelector('#seriesScheduleList').innerHTML = listView.getListViewHtml({
items: result.Items,
enableUserDataButtons: false,
showParentTitle: false,
image: false,
showProgramDateTime: true,
mediaInfo: false,
showTitle: true,
moreButton: false,
action: 'programdialog'
});
const html = getProgramScheduleHtml(result.Items, 'programdialog');
const scheduleTab = page.querySelector('#seriesScheduleList');
scheduleTab.innerHTML = html;
imageLoader.lazyChildren(scheduleTab);
loading.hide();
});
}

View file

@ -92,6 +92,25 @@
<div class="fieldDescription">${LabelPostProcessorArgumentsHelp}</div>
</div>
</div>
<div class="verticalSection">
<h2 class="sectionTitle">${HeaderRecordingMetadataSaving}</h2>
<div class="checkboxContainer checkboxContainer-withDescription">
<label>
<input is="emby-checkbox" type="checkbox" id="chkSaveRecordingNFO" />
<span>${SaveRecordingNFO}</span>
</label>
<div class="fieldDescription checkboxFieldDescription">${SaveRecordingNFOHelp}</div>
</div>
<div class="checkboxContainer checkboxContainer-withDescription">
<label>
<input is="emby-checkbox" type="checkbox" id="chkSaveRecordingImages" />
<span>${SaveRecordingImages}</span>
</label>
<div class="fieldDescription checkboxFieldDescription">${SaveRecordingImagesHelp}</div>
</div>
</div>
<br />
<div>
<button is="emby-button" type="submit" class="raised button-submit block"><span>${Save}</span></button>

View file

@ -16,6 +16,8 @@ function loadPage(page, config) {
page.querySelector('#txtSeriesRecordingPath').value = config.SeriesRecordingPath || '';
page.querySelector('#txtPostProcessor').value = config.RecordingPostProcessor || '';
page.querySelector('#txtPostProcessorArguments').value = config.RecordingPostProcessorArguments || '';
page.querySelector('#chkSaveRecordingNFO').checked = config.SaveRecordingNFO;
page.querySelector('#chkSaveRecordingImages').checked = config.SaveRecordingImages;
loading.hide();
}
@ -36,6 +38,8 @@ function onSubmit() {
config.PostPaddingSeconds = 60 * $('#txtPostPaddingMinutes', form).val();
config.RecordingPostProcessor = $('#txtPostProcessor', form).val();
config.RecordingPostProcessorArguments = $('#txtPostProcessorArguments', form).val();
config.SaveRecordingNFO = form.querySelector('#chkSaveRecordingNFO').checked;
config.SaveRecordingImages = form.querySelector('#chkSaveRecordingImages').checked;
ApiClient.updateNamedConfiguration('livetv', config).then(function () {
Dashboard.processServerConfigurationUpdateResult();
showSaveMessage(recordingPathChanged);

View file

@ -787,13 +787,19 @@ import { setBackdropTransparency, TRANSPARENCY_LEVEL } from '../../../components
nowPlayingPositionText.classList.add('hide');
}
if (userSettings.enableVideoRemainingTime()) {
const leftTicks = runtimeTicks - positionTicks;
if (leftTicks >= 0) {
updateTimeText(nowPlayingDurationText, leftTicks);
nowPlayingDurationText.innerHTML = '-' + nowPlayingDurationText.innerHTML;
nowPlayingDurationText.classList.remove('hide');
} else {
nowPlayingPositionText.classList.add('hide');
}
} else {
updateTimeText(nowPlayingDurationText, runtimeTicks);
nowPlayingDurationText.classList.remove('hide');
}
}
}
@ -871,6 +877,15 @@ import { setBackdropTransparency, TRANSPARENCY_LEVEL } from '../../../components
elem.innerHTML = html;
}
function nowPlayingDurationTextClick() {
userSettings.enableVideoRemainingTime(!userSettings.enableVideoRemainingTime());
// immediately update the text, without waiting for the next tick update or if the player is paused
const state = playbackManager.getPlayerState(currentPlayer);
const playState = state.PlayState;
const nowPlayingItem = state.NowPlayingItem;
updateTimeDisplay(playState.PositionTicks, nowPlayingItem.RunTimeTicks, playState.PlaybackStartTimeTicks, playState.PlaybackRate, playState.BufferedRanges || []);
}
function onSettingsButtonClick() {
const btn = this;
@ -973,9 +988,57 @@ import { setBackdropTransparency, TRANSPARENCY_LEVEL } from '../../../components
});
}
function showSecondarySubtitlesMenu(actionsheet, positionTo) {
const player = currentPlayer;
if (!playbackManager.playerHasSecondarySubtitleSupport(player)) return;
let currentIndex = playbackManager.getSecondarySubtitleStreamIndex(player);
const streams = playbackManager.secondarySubtitleTracks(player);
if (currentIndex == null) {
currentIndex = -1;
}
streams.unshift({
Index: -1,
DisplayTitle: globalize.translate('Off')
});
const menuItems = streams.map(function (stream) {
const opt = {
name: stream.DisplayTitle,
id: stream.Index
};
if (stream.Index === currentIndex) {
opt.selected = true;
}
return opt;
});
actionsheet.show({
title: globalize.translate('SecondarySubtitles'),
items: menuItems,
positionTo
}).then(function (id) {
if (id) {
const index = parseInt(id);
if (index !== currentIndex) {
playbackManager.setSecondarySubtitleStreamIndex(index, player);
}
}
})
.finally(() => {
resetIdle();
});
setTimeout(resetIdle, 0);
}
function showSubtitleTrackSelection() {
const player = currentPlayer;
const streams = playbackManager.subtitleTracks(player);
const secondaryStreams = playbackManager.secondarySubtitleTracks(player);
let currentIndex = playbackManager.getSubtitleStreamIndex(player);
if (currentIndex == null) {
@ -998,6 +1061,29 @@ import { setBackdropTransparency, TRANSPARENCY_LEVEL } from '../../../components
return opt;
});
/**
* Only show option if:
* - player has support
* - has more than 1 subtitle track
* - has valid secondary tracks
* - primary subtitle is not off
* - primary subtitle has support
*/
const currentTrackCanAddSecondarySubtitle = playbackManager.playerHasSecondarySubtitleSupport(player)
&& streams.length > 1
&& secondaryStreams.length > 0
&& currentIndex !== -1
&& playbackManager.trackHasSecondarySubtitleSupport(playbackManager.getSubtitleStream(player, currentIndex), player);
if (currentTrackCanAddSecondarySubtitle) {
const secondarySubtitleMenuItem = {
name: globalize.translate('SecondarySubtitles'),
id: 'secondarysubtitle'
};
menuItems.unshift(secondarySubtitleMenuItem);
}
const positionTo = this;
import('../../../components/actionSheet/actionSheet').then(({default: actionsheet}) => {
@ -1006,11 +1092,19 @@ import { setBackdropTransparency, TRANSPARENCY_LEVEL } from '../../../components
items: menuItems,
positionTo: positionTo
}).then(function (id) {
if (id === 'secondarysubtitle') {
try {
showSecondarySubtitlesMenu(actionsheet, positionTo);
} catch (e) {
console.error(e);
}
} else {
const index = parseInt(id);
if (index !== currentIndex) {
playbackManager.setSubtitleStreamIndex(index, player);
}
}
toggleSubtitleSync();
}).finally(() => {
@ -1330,6 +1424,8 @@ import { setBackdropTransparency, TRANSPARENCY_LEVEL } from '../../../components
nowPlayingPositionSlider.classList.add('focusable');
}
nowPlayingDurationText.addEventListener('click', nowPlayingDurationTextClick);
view.addEventListener('viewbeforeshow', function () {
headerElement.classList.add('osdHeader');
setBackdropTransparency(TRANSPARENCY_LEVEL.Full);

View file

@ -50,8 +50,8 @@
<span>${ButtonChangeServer}</span>
</button>
<div class="disclaimerContainer">
<div class="disclaimer"></div>
<div class="loginDisclaimerContainer">
<div class="loginDisclaimer"></div>
</div>
</div>
</div>

View file

@ -284,11 +284,11 @@ import './login.scss';
loading.hide();
});
apiClient.getJSON(apiClient.getUrl('Branding/Configuration')).then(function (options) {
const disclaimer = view.querySelector('.disclaimer');
const loginDisclaimer = view.querySelector('.loginDisclaimer');
disclaimer.innerHTML = DOMPurify.sanitize(marked(options.LoginDisclaimer || ''));
loginDisclaimer.innerHTML = DOMPurify.sanitize(marked(options.LoginDisclaimer || ''));
for (const elem of disclaimer.querySelectorAll('a')) {
for (const elem of loginDisclaimer.querySelectorAll('a')) {
elem.rel = 'noopener noreferrer';
elem.target = '_blank';
elem.classList.add('button-link');

View file

@ -1,9 +1,9 @@
.disclaimerContainer {
.loginDisclaimerContainer {
display: flex;
margin-top: 2em;
}
.disclaimer {
.loginDisclaimer {
margin: 0 auto;
h1,

View file

@ -74,6 +74,7 @@ function init() {
autoFocuser.enable();
Events.on(ServerConnections, 'localusersignedin', globalize.updateCurrentCulture);
Events.on(ServerConnections, 'localusersignedout', globalize.updateCurrentCulture);
});
}
@ -227,15 +228,8 @@ async function onAppReady() {
}
};
const handleLanguageChange = () => {
const locale = globalize.getCurrentLocale();
document.documentElement.setAttribute('lang', locale);
};
const handleUserChange = () => {
handleStyleChange();
handleLanguageChange();
};
Events.on(ServerConnections, 'localusersignedin', handleUserChange);
@ -243,8 +237,6 @@ async function onAppReady() {
Events.on(currentSettings, 'change', (e, prop) => {
if (prop == 'disableCustomCss' || prop == 'customCss') {
handleStyleChange();
} else if (prop == 'language') {
handleLanguageChange();
}
});

View file

@ -155,6 +155,9 @@ function tryRemoveElement(elem) {
return profileBuilder({});
}
const PRIMARY_TEXT_TRACK_INDEX = 0;
const SECONDARY_TEXT_TRACK_INDEX = 1;
export class HtmlVideoPlayer {
/**
* @type {string}
@ -178,7 +181,6 @@ function tryRemoveElement(elem) {
* @type {boolean}
*/
isFetching = false;
/**
* @type {HTMLDivElement | null | undefined}
*/
@ -187,6 +189,10 @@ function tryRemoveElement(elem) {
* @type {number | undefined}
*/
#subtitleTrackIndexToSetOnPlaying;
/**
* @type {number | undefined}
*/
#secondarySubtitleTrackIndexToSetOnPlaying;
/**
* @type {number | null}
*/
@ -207,6 +213,10 @@ function tryRemoveElement(elem) {
* @type {number | undefined}
*/
#customTrackIndex;
/**
* @type {number | undefined}
*/
#customSecondaryTrackIndex;
/**
* @type {boolean | undefined}
*/
@ -215,14 +225,26 @@ function tryRemoveElement(elem) {
* @type {number | undefined}
*/
#currentTrackOffset;
/**
* @type {HTMLElement | null | undefined}
*/
#secondaryTrackOffset;
/**
* @type {HTMLElement | null | undefined}
*/
#videoSubtitlesElem;
/**
* @type {HTMLElement | null | undefined}
*/
#videoSecondarySubtitlesElem;
/**
* @type {any | null | undefined}
*/
#currentTrackEvents;
/**
* @type {any | null | undefined}
*/
#currentSecondaryTrackEvents;
/**
* @type {string[] | undefined}
*/
@ -448,18 +470,39 @@ function tryRemoveElement(elem) {
destroyFlvPlayer(this);
destroyCastPlayer(this);
let secondaryTrackValid = true;
this.#subtitleTrackIndexToSetOnPlaying = options.mediaSource.DefaultSubtitleStreamIndex == null ? -1 : options.mediaSource.DefaultSubtitleStreamIndex;
if (this.#subtitleTrackIndexToSetOnPlaying != null && this.#subtitleTrackIndexToSetOnPlaying >= 0) {
const initialSubtitleStream = options.mediaSource.MediaStreams[this.#subtitleTrackIndexToSetOnPlaying];
if (!initialSubtitleStream || initialSubtitleStream.DeliveryMethod === 'Encode') {
this.#subtitleTrackIndexToSetOnPlaying = -1;
secondaryTrackValid = false;
}
// secondary track should not be shown if primary track is no longer a valid pair
if (initialSubtitleStream && !playbackManager.trackHasSecondarySubtitleSupport(initialSubtitleStream, this)) {
secondaryTrackValid = false;
}
} else {
secondaryTrackValid = false;
}
this.#audioTrackIndexToSetOnPlaying = options.playMethod === 'Transcode' ? null : options.mediaSource.DefaultAudioStreamIndex;
this._currentPlayOptions = options;
if (secondaryTrackValid) {
this.#secondarySubtitleTrackIndexToSetOnPlaying = options.mediaSource.DefaultSecondarySubtitleStreamIndex == null ? -1 : options.mediaSource.DefaultSecondarySubtitleStreamIndex;
if (this.#secondarySubtitleTrackIndexToSetOnPlaying != null && this.#secondarySubtitleTrackIndexToSetOnPlaying >= 0) {
const initialSecondarySubtitleStream = options.mediaSource.MediaStreams[this.#secondarySubtitleTrackIndexToSetOnPlaying];
if (!initialSecondarySubtitleStream || !playbackManager.trackHasSecondarySubtitleSupport(initialSecondarySubtitleStream, this)) {
this.#secondarySubtitleTrackIndexToSetOnPlaying = -1;
}
}
} else {
this.#secondarySubtitleTrackIndexToSetOnPlaying = -1;
}
const crossOrigin = getCrossOriginValue(options.mediaSource);
if (crossOrigin) {
elem.crossOrigin = crossOrigin;
@ -490,8 +533,13 @@ function tryRemoveElement(elem) {
this.setCurrentTrackElement(index);
}
setSecondarySubtitleStreamIndex(index) {
this.setCurrentTrackElement(index, SECONDARY_TEXT_TRACK_INDEX);
}
resetSubtitleOffset() {
this.#currentTrackOffset = 0;
this.#secondaryTrackOffset = 0;
this.#showTrackOffset = false;
}
@ -510,11 +558,11 @@ function tryRemoveElement(elem) {
/**
* @private
*/
getTextTrack() {
getTextTracks() {
const videoElement = this.#mediaElement;
if (videoElement) {
return Array.from(videoElement.textTracks)
.find(function (trackElement) {
.filter(function (trackElement) {
// get showing .vtt textTack
return trackElement.mode === 'showing';
});
@ -523,9 +571,6 @@ function tryRemoveElement(elem) {
}
}
/**
* @private
*/
setSubtitleOffset(offset) {
const offsetValue = parseFloat(offset);
@ -534,12 +579,15 @@ function tryRemoveElement(elem) {
this.updateCurrentTrackOffset(offsetValue);
this.#currentSubtitlesOctopus.timeOffset = (this._currentPlayOptions.transcodingOffsetTicks || 0) / 10000000 + offsetValue;
} else {
const trackElement = this.getTextTrack();
const trackElements = this.getTextTracks();
// if .vtt currently rendering
if (trackElement) {
this.setTextTrackSubtitleOffset(trackElement, offsetValue);
} else if (this.#currentTrackEvents) {
this.setTrackEventsSubtitleOffset(this.#currentTrackEvents, offsetValue);
if (trackElements?.length > 0) {
trackElements.forEach((trackElement, index) => {
this.setTextTrackSubtitleOffset(trackElement, offsetValue, index);
});
} else if (this.#currentTrackEvents || this.#currentSecondaryTrackEvents) {
this.#currentTrackEvents && this.setTrackEventsSubtitleOffset(this.#currentTrackEvents, offsetValue, PRIMARY_TEXT_TRACK_INDEX);
this.#currentSecondaryTrackEvents && this.setTrackEventsSubtitleOffset(this.#currentSecondaryTrackEvents, offsetValue, SECONDARY_TEXT_TRACK_INDEX);
} else {
console.debug('No available track, cannot apply offset: ', offsetValue);
}
@ -549,13 +597,25 @@ function tryRemoveElement(elem) {
/**
* @private
*/
updateCurrentTrackOffset(offsetValue) {
updateCurrentTrackOffset(offsetValue, currentTrackIndex = PRIMARY_TEXT_TRACK_INDEX) {
let offsetToCompare = this.#currentTrackOffset;
if (this.isSecondaryTrack(currentTrackIndex)) {
offsetToCompare = this.#secondaryTrackOffset;
}
let relativeOffset = offsetValue;
const newTrackOffset = offsetValue;
if (this.#currentTrackOffset) {
relativeOffset -= this.#currentTrackOffset;
if (offsetToCompare) {
relativeOffset -= offsetToCompare;
}
if (this.isSecondaryTrack(currentTrackIndex)) {
this.#secondaryTrackOffset = newTrackOffset;
} else {
this.#currentTrackOffset = newTrackOffset;
}
// relative to currentTrackOffset
return relativeOffset;
}
@ -563,9 +623,12 @@ function tryRemoveElement(elem) {
/**
* @private
*/
setTextTrackSubtitleOffset(currentTrack, offsetValue) {
setTextTrackSubtitleOffset(currentTrack, offsetValue, currentTrackIndex) {
if (currentTrack.cues) {
offsetValue = this.updateCurrentTrackOffset(offsetValue);
offsetValue = this.updateCurrentTrackOffset(offsetValue, currentTrackIndex);
if (offsetValue === 0) {
return;
}
Array.from(currentTrack.cues)
.forEach(function (cue) {
cue.startTime -= offsetValue;
@ -577,9 +640,12 @@ function tryRemoveElement(elem) {
/**
* @private
*/
setTrackEventsSubtitleOffset(trackEvents, offsetValue) {
setTrackEventsSubtitleOffset(trackEvents, offsetValue, currentTrackIndex) {
if (Array.isArray(trackEvents)) {
offsetValue = this.updateCurrentTrackOffset(offsetValue) * 1e7; // ticks
offsetValue = this.updateCurrentTrackOffset(offsetValue, currentTrackIndex) * 1e7; // ticks
if (offsetValue === 0) {
return;
}
trackEvents.forEach(function (trackEvent) {
trackEvent.StartPositionTicks -= offsetValue;
trackEvent.EndPositionTicks -= offsetValue;
@ -591,6 +657,14 @@ function tryRemoveElement(elem) {
return this.#currentTrackOffset;
}
isPrimaryTrack(textTrackIndex) {
return textTrackIndex === PRIMARY_TEXT_TRACK_INDEX;
}
isSecondaryTrack(textTrackIndex) {
return textTrackIndex === SECONDARY_TEXT_TRACK_INDEX;
}
/**
* @private
*/
@ -819,6 +893,16 @@ function tryRemoveElement(elem) {
if (this.#audioTrackIndexToSetOnPlaying != null && this.canSetAudioStreamIndex()) {
this.setAudioStreamIndex(this.#audioTrackIndexToSetOnPlaying);
}
if (this.#secondarySubtitleTrackIndexToSetOnPlaying != null && this.#secondarySubtitleTrackIndexToSetOnPlaying >= 0) {
/**
* Using a 0ms timeout to set the secondary subtitles because of some weird race condition when
* setting both primary and secondary tracks at the same time.
* The `TextTrack` content and cues will somehow get mixed up and each track will play a mix of both languages.
* Putting this in a timeout fixes it completely.
*/
setTimeout(() => this.setSecondarySubtitleStreamIndex(this.#secondarySubtitleTrackIndexToSetOnPlaying), 0);
}
}
/**
@ -956,27 +1040,75 @@ function tryRemoveElement(elem) {
/**
* @private
*/
destroyCustomTrack(videoElement) {
destroyCustomRenderedTrackElements(targetTrackIndex) {
if (this.isPrimaryTrack(targetTrackIndex)) {
if (this.#videoSubtitlesElem) {
tryRemoveElement(this.#videoSubtitlesElem);
this.#videoSubtitlesElem = null;
}
} else if (this.isSecondaryTrack(targetTrackIndex)) {
if (this.#videoSecondarySubtitlesElem) {
tryRemoveElement(this.#videoSecondarySubtitlesElem);
this.#videoSecondarySubtitlesElem = null;
}
} else { // destroy all
if (this.#videoSubtitlesElem) {
const subtitlesContainer = this.#videoSubtitlesElem.parentNode;
if (subtitlesContainer) {
tryRemoveElement(subtitlesContainer);
}
this.#videoSubtitlesElem = null;
this.#videoSecondarySubtitlesElem = null;
}
}
}
this.#currentTrackEvents = null;
/**
* @private
*/
destroyNativeTracks(videoElement, targetTrackIndex) {
if (videoElement) {
const destroySingleTrack = typeof targetTrackIndex === 'number';
const allTracks = videoElement.textTracks || []; // get list of tracks
for (const track of allTracks) {
for (let index = 0; index < allTracks.length; index++) {
const track = allTracks[index];
// Skip all other tracks if we are targeting just one
if (destroySingleTrack && targetTrackIndex !== index) {
continue;
}
if (track.label.includes('manualTrack')) {
track.mode = 'disabled';
}
}
}
}
/**
* @private
*/
destroyStoredTrackInfo(targetTrackIndex) {
if (this.isPrimaryTrack(targetTrackIndex)) {
this.#customTrackIndex = -1;
this.#currentTrackEvents = null;
} else if (this.isSecondaryTrack(targetTrackIndex)) {
this.#customSecondaryTrackIndex = -1;
this.#currentSecondaryTrackEvents = null;
} else { // destroy all
this.#customTrackIndex = -1;
this.#customSecondaryTrackIndex = -1;
this.#currentTrackEvents = null;
this.#currentSecondaryTrackEvents = null;
}
}
/**
* @private
*/
destroyCustomTrack(videoElement, targetTrackIndex) {
this.destroyCustomRenderedTrackElements(targetTrackIndex);
this.destroyNativeTracks(videoElement, targetTrackIndex);
this.destroyStoredTrackInfo(targetTrackIndex);
this.#currentClock = null;
this._currentAspectRatio = null;
@ -1029,23 +1161,34 @@ function tryRemoveElement(elem) {
/**
* @private
*/
setTrackForDisplay(videoElement, track) {
setTrackForDisplay(videoElement, track, targetTextTrackIndex = PRIMARY_TEXT_TRACK_INDEX) {
if (!track) {
this.destroyCustomTrack(videoElement);
// Destroy all tracks by passing undefined if there is no valid primary track
this.destroyCustomTrack(videoElement, this.isSecondaryTrack(targetTextTrackIndex) ? targetTextTrackIndex : undefined);
return;
}
let targetTrackIndex = this.#customTrackIndex;
if (this.isSecondaryTrack(targetTextTrackIndex)) {
targetTrackIndex = this.#customSecondaryTrackIndex;
}
// skip if already playing this track
if (this.#customTrackIndex === track.Index) {
if (targetTrackIndex === track.Index) {
return;
}
this.resetSubtitleOffset();
const item = this._currentPlayOptions.item;
this.destroyCustomTrack(videoElement);
this.destroyCustomTrack(videoElement, targetTextTrackIndex);
if (this.isSecondaryTrack(targetTextTrackIndex)) {
this.#customSecondaryTrackIndex = track.Index;
} else {
this.#customTrackIndex = track.Index;
this.renderTracksEvents(videoElement, track, item);
}
this.renderTracksEvents(videoElement, track, item, targetTextTrackIndex);
}
/**
@ -1155,16 +1298,39 @@ function tryRemoveElement(elem) {
/**
* @private
*/
renderSubtitlesWithCustomElement(videoElement, track, item) {
this.fetchSubtitles(track, item).then((data) => {
if (!this.#videoSubtitlesElem) {
const subtitlesContainer = document.createElement('div');
renderSubtitlesWithCustomElement(videoElement, track, item, targetTextTrackIndex) {
Promise.all([import('../../scripts/settings/userSettings'), this.fetchSubtitles(track, item)]).then((results) => {
const [userSettings, subtitleData] = results;
const subtitleAppearance = userSettings.getSubtitleAppearanceSettings();
const subtitleVerticalPosition = parseInt(subtitleAppearance.verticalPosition, 10);
if (!this.#videoSubtitlesElem && !this.isSecondaryTrack(targetTextTrackIndex)) {
let subtitlesContainer = document.querySelector('.videoSubtitles');
if (!subtitlesContainer) {
subtitlesContainer = document.createElement('div');
subtitlesContainer.classList.add('videoSubtitles');
subtitlesContainer.innerHTML = '<div class="videoSubtitlesInner"></div>';
this.#videoSubtitlesElem = subtitlesContainer.querySelector('.videoSubtitlesInner');
}
const subtitlesElement = document.createElement('div');
subtitlesElement.classList.add('videoSubtitlesInner');
subtitlesContainer.appendChild(subtitlesElement);
this.#videoSubtitlesElem = subtitlesElement;
this.setSubtitleAppearance(subtitlesContainer, this.#videoSubtitlesElem);
videoElement.parentNode.appendChild(subtitlesContainer);
this.#currentTrackEvents = data.TrackEvents;
this.#currentTrackEvents = subtitleData.TrackEvents;
} else if (!this.#videoSecondarySubtitlesElem && this.isSecondaryTrack(targetTextTrackIndex)) {
const subtitlesContainer = document.querySelector('.videoSubtitles');
if (!subtitlesContainer) return;
const secondarySubtitlesElement = document.createElement('div');
secondarySubtitlesElement.classList.add('videoSecondarySubtitlesInner');
// determine the order of the subtitles
if (subtitleVerticalPosition < 0) {
subtitlesContainer.insertBefore(secondarySubtitlesElement, subtitlesContainer.firstChild);
} else {
subtitlesContainer.appendChild(secondarySubtitlesElement);
}
this.#videoSecondarySubtitlesElem = secondarySubtitlesElement;
this.setSubtitleAppearance(subtitlesContainer, this.#videoSecondarySubtitlesElem);
this.#currentSecondaryTrackEvents = subtitleData.TrackEvents;
}
});
}
@ -1211,7 +1377,7 @@ function tryRemoveElement(elem) {
/**
* @private
*/
renderTracksEvents(videoElement, track, item) {
renderTracksEvents(videoElement, track, item, targetTextTrackIndex = PRIMARY_TEXT_TRACK_INDEX) {
if (!itemHelper.isLocalItem(item) || track.IsExternal) {
const format = (track.Codec || '').toLowerCase();
if (format === 'ssa' || format === 'ass') {
@ -1220,15 +1386,15 @@ function tryRemoveElement(elem) {
}
if (this.requiresCustomSubtitlesElement()) {
this.renderSubtitlesWithCustomElement(videoElement, track, item);
this.renderSubtitlesWithCustomElement(videoElement, track, item, targetTextTrackIndex);
return;
}
}
let trackElement = null;
if (videoElement.textTracks && videoElement.textTracks.length > 0) {
trackElement = videoElement.textTracks[0];
const updatingTrack = videoElement.textTracks && videoElement.textTracks.length > (this.isSecondaryTrack(targetTextTrackIndex) ? 1 : 0);
if (updatingTrack) {
trackElement = videoElement.textTracks[targetTextTrackIndex];
// This throws an error in IE, but is fine in chrome
// In IE it's not necessary anyway because changing the src seems to be enough
try {
@ -1288,8 +1454,12 @@ function tryRemoveElement(elem) {
return;
}
const trackEvents = this.#currentTrackEvents;
const subtitleTextElement = this.#videoSubtitlesElem;
const allTrackEvents = [this.#currentTrackEvents, this.#currentSecondaryTrackEvents];
const subtitleTextElements = [this.#videoSubtitlesElem, this.#videoSecondarySubtitlesElem];
for (let i = 0; i < allTrackEvents.length; i++) {
const trackEvents = allTrackEvents[i];
const subtitleTextElement = subtitleTextElements[i];
if (trackEvents && subtitleTextElement) {
const ticks = timeMs * 10000;
@ -1309,11 +1479,12 @@ function tryRemoveElement(elem) {
}
}
}
}
/**
* @private
*/
setCurrentTrackElement(streamIndex) {
setCurrentTrackElement(streamIndex, targetTextTrackIndex) {
console.debug(`setting new text track index to: ${streamIndex}`);
const mediaStreamTextTracks = getMediaStreamTextTracks(this._currentPlayOptions.mediaSource);
@ -1322,7 +1493,7 @@ function tryRemoveElement(elem) {
return t.Index === streamIndex;
})[0];
this.setTrackForDisplay(this.#mediaElement, track);
this.setTrackForDisplay(this.#mediaElement, track, targetTextTrackIndex);
if (enableNativeTrackSupport(this.#currentSrc, track)) {
if (streamIndex !== -1) {
this.setCueAppearance();
@ -1500,6 +1671,7 @@ function tryRemoveElement(elem) {
list.push('SetBrightness');
list.push('SetAspectRatio');
list.push('SecondarySubtitles');
return list;
}

View file

@ -65,13 +65,22 @@ video[controls]::-webkit-media-controls {
padding-left: env(safe-area-inset-left);
padding-right: env(safe-area-inset-right);
padding-bottom: env(safe-area-inset-bottom);
display: flex;
flex-direction: column;
align-items: center;
}
.videoSubtitlesInner {
max-width: 70%;
background-color: rgba(0, 0, 0, 0.8);
margin: auto;
display: inline-block;
}
.videoSecondarySubtitlesInner {
max-width: 70%;
background-color: rgba(0, 0, 0, 0.8);
min-height: 0 !important;
margin-top: 0.5em !important;
margin-bottom: 0.5em !important;
}
@keyframes htmlvideoplayer-zoomin {

View file

@ -89,6 +89,8 @@ const Direction = {
currentCulture = normalizeLocaleName(culture);
document.documentElement.setAttribute('lang', currentCulture);
let dateTimeCulture;
try {
dateTimeCulture = userSettings.dateTimeLocale();

View file

@ -182,6 +182,19 @@ export class UserSettings {
return toBoolean(this.get('enableNextVideoInfoOverlay', false), true);
}
/**
* Get or set 'Video Remaining/Total Time' state.
* @param {boolean|undefined} val - Flag to enable 'Video Remaining/Total Time' or undefined.
* @return {boolean} 'Video Remaining/Total Time' state.
*/
enableVideoRemainingTime(val) {
if (val !== undefined) {
return this.set('enableVideoRemainingTime', val.toString());
}
return toBoolean(this.get('enableVideoRemainingTime', false), true);
}
/**
* Get or set 'Theme Songs' state.
* @param {boolean|undefined} val - Flag to enable 'Theme Songs' or undefined.
@ -594,6 +607,7 @@ export const preferFmp4HlsContainer = currentSettings.preferFmp4HlsContainer.bin
export const enableCinemaMode = currentSettings.enableCinemaMode.bind(currentSettings);
export const enableAudioNormalization = currentSettings.enableAudioNormalization.bind(currentSettings);
export const enableNextVideoInfoOverlay = currentSettings.enableNextVideoInfoOverlay.bind(currentSettings);
export const enableVideoRemainingTime = currentSettings.enableVideoRemainingTime.bind(currentSettings);
export const enableThemeSongs = currentSettings.enableThemeSongs.bind(currentSettings);
export const enableThemeVideos = currentSettings.enableThemeVideos.bind(currentSettings);
export const enableFastFadein = currentSettings.enableFastFadein.bind(currentSettings);

File diff suppressed because it is too large Load diff

View file

@ -57,7 +57,7 @@
"ButtonPause": "Pozastavit",
"ButtonPreviousTrack": "Předchozí stopa",
"ButtonQuickStartGuide": "Rychlý průvodce",
"ButtonRefreshGuideData": "Obnovit data programového průvodce",
"ButtonRefreshGuideData": "Aktualizovat data programového průvodce",
"ButtonRemove": "Odstranit",
"ButtonRename": "Přejmenovat",
"ButtonResetEasyPassword": "Obnovit Easy PIN kód",
@ -242,11 +242,11 @@
"HeaderInstantMix": "Rychlý mix",
"HeaderKeepRecording": "Udržet nahrávání",
"HeaderKeepSeries": "Udržet seriál",
"HeaderLatestEpisodes": "Nejnovější díly",
"HeaderLatestMedia": "Nejnovější média",
"HeaderLatestMovies": "Nejnovější filmy",
"HeaderLatestMusic": "Nejnovější hudba",
"HeaderLatestRecordings": "Nejnovější nahrávky",
"HeaderLatestEpisodes": "Nedávno přidané díly",
"HeaderLatestMedia": "Nedávno přidaná média",
"HeaderLatestMovies": "Nedávno přidané filmy",
"HeaderLatestMusic": "Nedávno přidaná hudba",
"HeaderLatestRecordings": "Nedávno přidané nahrávky",
"HeaderLibraries": "Knihovny",
"HeaderLibraryAccess": "Přístup ke knihovně",
"HeaderLibraryFolders": "Složky knihovny",
@ -335,7 +335,7 @@
"HeaderYears": "Roky",
"Help": "Nápověda",
"Hide": "Skrýt",
"HideWatchedContentFromLatestMedia": "Skrýt zhlédnuté položky v seznamu Nejnovější média",
"HideWatchedContentFromLatestMedia": "Skrýt zhlédnuté položky v seznamu Nedávno přidaná média",
"Home": "Domů",
"Identify": "Identifikovat",
"Images": "Obrázky",
@ -556,7 +556,7 @@
"LabelRecord": "Záznam:",
"LabelRecordingPath": "Standardní složka pro nahrávání:",
"LabelRecordingPathHelp": "Určete výchozí umístění pro uložení nahrávky. Pokud je ponecháno prázdné, budou použity složky programu na serveru (data).",
"LabelRefreshMode": "Mód obnovy:",
"LabelRefreshMode": "Typ aktualizace:",
"LabelReleaseDate": "Datum vydání:",
"LabelRemoteClientBitrateLimit": "Datový tok streamování do Internetu (Mbps):",
"LabelRuntimeMinutes": "Délka:",
@ -627,7 +627,7 @@
"LabelffmpegPath": "FFmpeg - cesta:",
"LabelffmpegPathHelp": "Cesta k souboru aplikace FFmpeg nebo složka obsahující aplikaci FFmpeg.",
"Large": "Velký",
"LatestFromLibrary": "Nejnovější {0}",
"LatestFromLibrary": "Nedávno přidáno v knihovně {0}",
"LearnHowYouCanContribute": "Zjistěte, jak můžete přispět.",
"LibraryAccessHelp": "Vyberte knihovny, které chcete sdílet s tímto uživatelem. Administrátoři budou moci editovat všechny složky pomocí Správce metadat.",
"List": "Seznam",
@ -840,7 +840,7 @@
"PlayAllFromHere": "Přehrát vše odsud",
"PlayCount": "Počet přehrání",
"PlayFromBeginning": "Přehrát od začátku",
"PlayNext": "Přehrát po aktuální",
"PlayNext": "Přehrát jako další",
"PlayNextEpisodeAutomatically": "Automaticky přehrávat další epizodu",
"PlaybackErrorNoCompatibleStream": "Tento klient není kompatibilní s médiem a server neodesílá kompatibilní formát médií.",
"Played": "Přehráno",
@ -869,10 +869,10 @@
"MessageChangeRecordingPath": "Změna záznamové složky automaticky nepřesune stávající záznamy ze starého umístění do nového. Budete muset přesunout ručně, pokud je to žádoucí.",
"RecordingScheduled": "Plán nahrávání.",
"Recordings": "Nahrávky",
"Refresh": "Obnovit",
"Refresh": "Aktualizovat",
"RefreshDialogHelp": "Metadata se aktualizují na základě nastavení a internetových služeb, které jsou povoleny na nástěnce.",
"RefreshMetadata": "Obnovit metadata",
"RefreshQueued": "Obnovení zařazeno.",
"RefreshMetadata": "Aktualizovat metadata",
"RefreshQueued": "Aktualizace zařazena do fronty.",
"ReleaseDate": "Datum vydání",
"RememberMe": "Zapamatuj si mě",
"RemoveFromCollection": "Odebrat z kolekce",
@ -895,7 +895,7 @@
"Screenshots": "Snímky obrazovky",
"Search": "Vyhledávání",
"SearchForCollectionInternetMetadata": "Vyhledat metadata a obrázky na Internetu",
"SearchForMissingMetadata": "Hledat chybějící metadata",
"SearchForMissingMetadata": "Vyhledat chybějící metadata",
"SearchForSubtitles": "Vyhledat titulky",
"SearchResults": "Výsledky vyhledávání",
"SendMessage": "Poslat zprávu",
@ -937,7 +937,7 @@
"TabCodecs": "Kodeky",
"TabContainers": "Obaly",
"TabDashboard": "Nástěnka",
"TabLatest": "Nejnovější",
"TabLatest": "Nedávno přidáno",
"TabLogs": "Záznamy",
"TabMusic": "Hudba",
"TabMyPlugins": "Moje zásuvné moduly",
@ -1040,7 +1040,7 @@
"DirectStreamHelp2": "Výkon potřebný pro přímé streamování záleží na zvukovém profilu. Pouze video stopa je bezztrátová.",
"Directors": "Režiséři",
"DisplayInMyMedia": "Zobrazit na domovské obrazovce",
"DisplayInOtherHomeScreenSections": "Zobrazit v sekcích domovské obrazovky, např. v sekcích Nejnovější média nebo Pokračování ve sledování",
"DisplayInOtherHomeScreenSections": "Zobrazit v sekcích domovské obrazovky, např. v sekcích Nedávno přidaná média nebo Pokračování ve sledování",
"DownloadsValue": "{0} ke stažení",
"EditMetadata": "Upravit metadata",
"EnableExternalVideoPlayersHelp": "Při spuštění přehrávání videa se zobrazí nabídka externího přehrávače.",
@ -1510,7 +1510,7 @@
"EnablePlugin": "Povolit",
"DirectPlayHelp": "Zdrojový soubor je s klientem plně kompatibilní a relaci je tak soubor posílán bez úprav.",
"HeaderContinueReading": "Pokračovat ve čtení",
"EnableGamepadHelp": "Naslouchat vstupu z připojených herních ovladačů.",
"EnableGamepadHelp": "Naslouchat vstupu z připojených herních ovladačů. (Vyžaduje 'Režim zobrazení' nastavený na 'TV')",
"LabelEnableGamepad": "Povolit herní ovladač",
"Controls": "Ovládání",
"TextSent": "Text odeslán.",
@ -1623,7 +1623,7 @@
"BehindTheScenes": "Z natáčení",
"Trailer": "Upoutávka",
"Clip": "Krátký film",
"AllowEmbeddedSubtitlesHelp": "Zakázat titulky, které jsou vložené v kontejneru média. Vyžaduje kompletní obnovení knihovny.",
"AllowEmbeddedSubtitlesHelp": "Zakázat titulky, které jsou vložené v kontejneru média. Vyžaduje kompletní přeskenování knihovny.",
"AllowEmbeddedSubtitlesAllowTextOption": "Povolit textové titulky",
"AllowEmbeddedSubtitlesAllowImageOption": "Povolit grafické titulky",
"AllowEmbeddedSubtitlesAllowAllOption": "Povolit všechny",
@ -1688,5 +1688,21 @@
"DownloadAll": "Stáhnout vše",
"Experimental": "Experimentální",
"LabelStereoDownmixAlgorithm": "Algoritmus převodu na stereo",
"StereoDownmixAlgorithmHelp": "Algoritmus pro převod vícekanálového zvuku na stereo."
"StereoDownmixAlgorithmHelp": "Algoritmus pro převod vícekanálového zvuku na stereo.",
"HeaderRecordingMetadataSaving": "Metadata nahrávky",
"SaveRecordingNFO": "Uložit metadata elektronického programového průvodce nahrávky do souboru NFO",
"SaveRecordingNFOHelp": "Uložit metadata položek elektronického programového průvodce spolu s médii.",
"SaveRecordingImages": "Uložit obrázky elektronického programového průvodce nahrávky",
"SaveRecordingImagesHelp": "Uložit obrázky elektronického programového průvodce nahrávky spolu s médii.",
"HeaderDummyChapter": "Obrázky kapitol",
"LabelDummyChapterDuration": "Rozmezí:",
"LabelDummyChapterDurationHelp": "Rozmezí v sekundách mezi extrakcí obrázků kapitol.",
"LabelDummyChapterCount": "Limit:",
"LabelDummyChapterCountHelp": "Maximální počet obrázků kapitol, který má být vytvořen pro jeden soubor médií.",
"LabelChapterImageResolution": "Rozlišení:",
"LabelChapterImageResolutionHelp": "Rozližení extrahovaných obrázků kapitol.",
"ResolutionMatchSource": "Stejné jako zdroj",
"PreferEmbeddedExtrasTitlesOverFileNames": "Preferovat vložené názvy před názvy souborů pro doplňky",
"PreferEmbeddedExtrasTitlesOverFileNamesHelp": "Doplňky většinou mají stejný vložený název jako nadřazená položka. Zaškrtnutím je i přesto můžete upřednostnit.",
"SecondarySubtitles": "Sekundární titulky"
}

View file

@ -1510,7 +1510,7 @@
"Framerate": "Bildrate",
"DirectPlayHelp": "Die Quelldatei ist vollständig mit diesem Client kompatibel, und die Sitzung empfängt die Datei ohne Änderungen.",
"HeaderContinueReading": "Weiterlesen",
"EnableGamepadHelp": "Auf Eingaben aller verbundenen Controller hören.",
"EnableGamepadHelp": "Auf Eingaben aller verbundenen Controller hören. (Erfordert: 'TV'-Anzeigemodus)",
"LabelEnableGamepad": "Gamepad aktivieren",
"Controls": "Steuerung",
"TextSent": "Text gesendet.",
@ -1685,5 +1685,24 @@
"MessageNoFavoritesAvailable": "Es sind aktuell keine Favoriten verfügbar.",
"Unreleased": "Noch nicht veröffentlicht",
"EnableCardLayout": "Visuelle CardBox anzeigen",
"DownloadAll": "Alle Herunterladen"
"DownloadAll": "Alle Herunterladen",
"LabelStereoDownmixAlgorithm": "Stereo Downmix Algorithmus",
"StereoDownmixAlgorithmHelp": "Algorithmus um Mehrkanal-Audio zu Stereo-Audio umzuwandeln.",
"Experimental": "Experimentell",
"SaveRecordingNFO": "Speichern der EPG-Metadaten in NFO",
"SaveRecordingNFOHelp": "Speichern Sie Metadaten von EPG-Anbietern zusammen mit den Medien.",
"ResolutionMatchSource": "Quelle der Übereinstimmung",
"PreferEmbeddedExtrasTitlesOverFileNames": "Eingebettete Titel gegenüber Dateinamen für Extras bevorzugen",
"PreferEmbeddedExtrasTitlesOverFileNamesHelp": "Extras haben oft denselben eingebetteten Namen wie die übergeordnete Datei. Aktivieren Sie diese Option, um trotzdem eingebettete Titel für sie zu verwenden.",
"SaveRecordingImages": "Speichern der EPG-Bilder der Aufnahme",
"SaveRecordingImagesHelp": "Speichern Sie Bilder von EPG-Anbietern zusammen mit den Medien.",
"SecondarySubtitles": "Sekundäre Untertitel",
"HeaderDummyChapter": "Kapitel Bilder",
"HeaderRecordingMetadataSaving": "Aufzeichnung von Metadaten",
"LabelDummyChapterDuration": "Intervall:",
"LabelDummyChapterDurationHelp": "Das Intervall für die Extraktion des Kapitelbildes in Sekunden.",
"LabelDummyChapterCount": "Limit:",
"LabelDummyChapterCountHelp": "Die maximale Anzahl von Kapitelbildern, die für jede Mediendatei extrahiert werden.",
"LabelChapterImageResolution": "Auflösung:",
"LabelChapterImageResolutionHelp": "Die Auflösung der extrahierten Kapitelbilder."
}

View file

@ -189,7 +189,7 @@
"Disconnect": "Disconnect",
"Display": "Display",
"DisplayInMyMedia": "Display on home screen",
"DisplayInOtherHomeScreenSections": "Display in home screen sections such as 'Latest Media' and 'Continue Watching'",
"DisplayInOtherHomeScreenSections": "Display in home screen sections such as 'Recently Added Media' and 'Continue Watching'",
"DisplayMissingEpisodesWithinSeasons": "Display missing episodes within their series",
"DisplayMissingEpisodesWithinSeasonsHelp": "This must also be enabled for TV libraries in the server configuration.",
"DisplayModeHelp": "Select the layout style you want for the interface.",
@ -332,11 +332,11 @@
"HeaderKeepRecording": "Keep Recording",
"HeaderKeepSeries": "Keep Programme",
"HeaderKodiMetadataHelp": "To enable or disable NFO metadata, edit a library and find the 'Metadata savers' section.",
"HeaderLatestEpisodes": "Latest Episodes",
"HeaderLatestMedia": "Latest Media",
"HeaderLatestMovies": "Latest Films",
"HeaderLatestMusic": "Latest Music",
"HeaderLatestRecordings": "Latest Recordings",
"HeaderLatestEpisodes": "Recently Added Episodes",
"HeaderLatestMedia": "Recently Added Media",
"HeaderLatestMovies": "Recently Added Films",
"HeaderLatestMusic": "Recently Added Music",
"HeaderLatestRecordings": "Recently Added Recordings",
"HeaderLibraries": "Libraries",
"HeaderLibraryAccess": "Library Access",
"HeaderLibraryFolders": "Library Folders",
@ -751,7 +751,7 @@
"MediaInfoCodec": "Codec",
"ManageRecording": "Manage recording",
"LiveTV": "Live TV",
"LatestFromLibrary": "Latest {0}",
"LatestFromLibrary": "Recently Added in {0}",
"Large": "Large",
"LabelZipCode": "Postcode:",
"LabelYoureDone": "You're Done!",
@ -817,7 +817,7 @@
"TabPlugins": "Plugins",
"TabNfoSettings": "NFO Settings",
"TabNetworking": "Networking",
"TabLatest": "Latest",
"TabLatest": "Recently Added",
"TabDashboard": "Dashboard",
"TabContainers": "Containers",
"TabCodecs": "Codecs",
@ -1029,7 +1029,7 @@
"Identify": "Identify",
"Horizontal": "Horizontal",
"Home": "Home",
"HideWatchedContentFromLatestMedia": "Hide watched content from 'Latest Media'",
"HideWatchedContentFromLatestMedia": "Hide watched content from 'Recently Added Media'",
"Hide": "Hide",
"Help": "Help",
"HeaderXmlSettings": "XML Settings",
@ -1518,7 +1518,7 @@
"MessageChromecastConnectionError": "Your Google Cast receiver is unable to contact the Jellyfin server. Please check the connection and try again.",
"Framerate": "Framerate",
"DirectPlayHelp": "The source file is entirely compatible with this client, and the session is receiving the file without modifications.",
"EnableGamepadHelp": "Listen for input from any connected controllers.",
"EnableGamepadHelp": "Listen for input from any connected controllers. (Requires: 'TV' Display Mode)",
"LabelEnableGamepad": "Enable Gamepad",
"Controls": "Controls",
"TextSent": "Text sent.",
@ -1688,5 +1688,21 @@
"DownloadAll": "Download All",
"Experimental": "Experimental",
"LabelStereoDownmixAlgorithm": "Stereo Downmix Algorithm",
"StereoDownmixAlgorithmHelp": "Algorithm used to downmix multi-channel audio to stereo."
"StereoDownmixAlgorithmHelp": "Algorithm used to downmix multi-channel audio to stereo.",
"LabelDummyChapterDuration": "Interval:",
"LabelDummyChapterCountHelp": "The maximum number of chapter images that will be extracted for each media file.",
"HeaderRecordingMetadataSaving": "Recording Metadata",
"SaveRecordingNFOHelp": "Save metadata from EPG listings provider along side media.",
"SaveRecordingImages": "Save recording EPG images",
"SaveRecordingImagesHelp": "Save images from EPG listings provider along side media.",
"HeaderDummyChapter": "Chapter Images",
"LabelDummyChapterDurationHelp": "The chapter image extraction interval in seconds.",
"LabelDummyChapterCount": "Limit:",
"LabelChapterImageResolution": "Resolution:",
"LabelChapterImageResolutionHelp": "The resolution of the extracted chapter images.",
"ResolutionMatchSource": "Match Source",
"SaveRecordingNFO": "Save recording EPG metadata in NFO",
"PreferEmbeddedExtrasTitlesOverFileNames": "Prefer embedded titles over filenames for extras",
"PreferEmbeddedExtrasTitlesOverFileNamesHelp": "Extras often have the same embedded name as the parent, check this to use embedded titles for them anyway.",
"SecondarySubtitles": "Secondary Subtitles"
}

View file

@ -161,8 +161,6 @@
"Cursive": "Cursive",
"CustomDlnaProfilesHelp": "Create a custom profile to target a new device or override a system profile.",
"DailyAt": "Daily at {0}",
"DashboardArchitecture": "Architecture: {0}",
"DashboardOperatingSystem": "Operating System: {0}",
"DashboardServerName": "Server: {0}",
"DashboardVersionNumber": "Version: {0}",
"Data": "Data",
@ -202,7 +200,7 @@
"Disconnect": "Disconnect",
"Display": "Display",
"DisplayInMyMedia": "Display on home screen",
"DisplayInOtherHomeScreenSections": "Display in home screen sections such as 'Latest Media' and 'Continue Watching'",
"DisplayInOtherHomeScreenSections": "Display in home screen sections such as 'Recently Added Media' and 'Continue Watching'",
"DisplayMissingEpisodesWithinSeasons": "Display missing episodes within seasons",
"DisplayMissingEpisodesWithinSeasonsHelp": "This must also be enabled for TV libraries in the server configuration.",
"DisplayModeHelp": "Select the layout style you want for the interface.",
@ -364,6 +362,7 @@
"HeaderDirectPlayProfile": "Direct Playback Profile",
"HeaderDirectPlayProfileHelp": "Add direct playback profiles to indicate which formats the device can handle natively.",
"HeaderDownloadSync": "Download & Sync",
"HeaderDummyChapter": "Chapter Images",
"HeaderDVR": "DVR",
"HeaderEasyPinCode": "Easy PIN Code",
"HeaderEditImages": "Edit Images",
@ -390,11 +389,11 @@
"HeaderKeepRecording": "Keep Recording",
"HeaderKeepSeries": "Keep Series",
"HeaderKodiMetadataHelp": "To enable or disable NFO metadata, edit a library and find the 'Metadata savers' section.",
"HeaderLatestEpisodes": "Latest Episodes",
"HeaderLatestMedia": "Latest Media",
"HeaderLatestMovies": "Latest Movies",
"HeaderLatestMusic": "Latest Music",
"HeaderLatestRecordings": "Latest Recordings",
"HeaderLatestEpisodes": "Recently Added Episodes",
"HeaderLatestMedia": "Recently Added Media",
"HeaderLatestMovies": "Recently Added Movies",
"HeaderLatestMusic": "Recently Added Music",
"HeaderLatestRecordings": "Recently Added Recordings",
"HeaderLibraries": "Libraries",
"HeaderLibraryAccess": "Library Access",
"HeaderLibraryFolders": "Library Folders",
@ -436,6 +435,7 @@
"HeaderProfileInformation": "Profile Information",
"HeaderProfileServerSettingsHelp": "These values control how the server will present itself to clients.",
"HeaderRecentlyPlayed": "Recently Played",
"HeaderRecordingMetadataSaving": "Recording Metadata",
"HeaderRecordingOptions": "Recording Options",
"HeaderRecordingPostProcessing": "Recording Post Processing",
"HeaderRemoteAccessSettings": "Remote Access Settings",
@ -505,7 +505,7 @@
"HeaderYears": "Years",
"Help": "Help",
"Hide": "Hide",
"HideWatchedContentFromLatestMedia": "Hide watched content from 'Latest Media'",
"HideWatchedContentFromLatestMedia": "Hide watched content from 'Recently Added Media'",
"Home": "Home",
"HomeVideosPhotos": "Home Videos and Photos",
"Horizontal": "Horizontal",
@ -628,6 +628,12 @@
"LabelDroppedFrames": "Dropped frames:",
"LabelDropShadow": "Drop shadow:",
"LabelDropSubtitleHere": "Drop subtitle here, or click to browse.",
"LabelDummyChapterDuration": "Interval:",
"LabelDummyChapterDurationHelp": "The chapter image extraction interval in seconds.",
"LabelDummyChapterCount": "Limit:",
"LabelDummyChapterCountHelp": "The maximum number of chapter images that will be extracted for each media file.",
"LabelChapterImageResolution": "Resolution:",
"LabelChapterImageResolutionHelp": "The resolution of the extracted chapter images.",
"LabelDynamicExternalId": "{0} Id:",
"LabelEasyPinCode": "Easy PIN code:",
"LabelEmbedAlbumArtDidl": "Embed album art in DIDL",
@ -989,7 +995,7 @@
"Large": "Large",
"Larger": "Larger",
"LastSeen": "Last seen {0}",
"LatestFromLibrary": "Latest {0}",
"LatestFromLibrary": "Recently Added in {0}",
"LearnHowYouCanContribute": "Learn how you can contribute.",
"LeaveBlankToNotSetAPassword": "You can leave this field blank to set no password.",
"LibraryAccessHelp": "Select the libraries to share with this user. Administrators will be able to edit all folders using the metadata manager.",
@ -1315,6 +1321,8 @@
"PosterCard": "Poster Card",
"PreferEmbeddedEpisodeInfosOverFileNames": "Prefer embedded episode information over filenames",
"PreferEmbeddedEpisodeInfosOverFileNamesHelp": "Use the episode information from the embedded metadata if available.",
"PreferEmbeddedExtrasTitlesOverFileNames": "Prefer embedded titles over filenames for extras",
"PreferEmbeddedExtrasTitlesOverFileNamesHelp": "Extras often have the same embedded name as the parent, check this to use embedded titles for them anyway.",
"PreferEmbeddedTitlesOverFileNames": "Prefer embedded titles over filenames",
"PreferEmbeddedTitlesOverFileNamesHelp": "Determine the display title to use when no internet metadata or local metadata is available.",
"AllowEmbeddedSubtitles": "Disable different types of embedded subtitles",
@ -1382,6 +1390,7 @@
"ReplaceAllMetadata": "Replace all metadata",
"ReplaceExistingImages": "Replace existing images",
"ResetPassword": "Reset Password",
"ResolutionMatchSource": "Match Source",
"Restart": "Restart",
"ResumeAt": "Resume from {0}",
"Rewind": "Rewind",
@ -1389,6 +1398,10 @@
"Saturday": "Saturday",
"Save": "Save",
"SaveChanges": "Save changes",
"SaveRecordingNFO": "Save recording EPG metadata in NFO",
"SaveRecordingNFOHelp": "Save metadata from EPG listings provider along side media.",
"SaveRecordingImages": "Save recording EPG images",
"SaveRecordingImagesHelp": "Save images from EPG listings provider along side media.",
"SaveSubtitlesIntoMediaFolders": "Save subtitles into media folders",
"SaveSubtitlesIntoMediaFoldersHelp": "Storing subtitles next to video files will allow them to be more easily managed.",
"ScanForNewAndUpdatedFiles": "Scan for new and updated files",
@ -1401,6 +1414,7 @@
"SearchForSubtitles": "Search for Subtitles",
"SearchResults": "Search Results",
"Season": "Season",
"SecondarySubtitles": "Secondary Subtitles",
"SelectAdminUsername": "Please select a username for the admin account.",
"SelectServer": "Select Server",
"SendMessage": "Send message",
@ -1467,7 +1481,7 @@
"TabContainers": "Containers",
"TabDashboard": "Dashboard",
"TabDirectPlay": "Direct Playback",
"TabLatest": "Latest",
"TabLatest": "Recently Added",
"TabLogs": "Logs",
"TabMusic": "Music",
"TabMyPlugins": "My Plugins",
@ -1618,7 +1632,7 @@
"AllowVppTonemappingHelp": "Full Intel driver based tone-mapping. Currently works only on certain hardware with HDR10 videos. This has a higher priority compared to another OpenCL implementation.",
"Controls": "Controls",
"LabelEnableGamepad": "Enable Gamepad",
"EnableGamepadHelp": "Listen for input from any connected controllers.",
"EnableGamepadHelp": "Listen for input from any connected controllers. (Requires: 'TV' Display Mode)",
"AudioCodecNotSupported": "The audio codec is not supported",
"ContainerNotSupported": "The container is not supported",
"SubtitleCodecNotSupported": "The subtitle codec is not supported",

View file

@ -154,7 +154,7 @@
"DateAdded": "Fecha agregada",
"DatePlayed": "Fecha de reproducción",
"DeathDateValue": "Muerte: {0}",
"Default": "Por Defecto",
"Default": "Predeterminado",
"ErrorDefault": "Hubo un error procesando la solicitud. Por favor intentalo nuevamente mas tarde.",
"DefaultMetadataLangaugeDescription": "Estos son tus predeterminados y pueden ser personalizados por librería únicamente.",
"Delete": "Borrar",
@ -1235,7 +1235,7 @@
"TitleHostingSettings": "Configuraciones de alojamiento",
"TitleHardwareAcceleration": "Aceleración por hardware",
"Thursday": "Jueves",
"Thumb": "Pulgar",
"Thumb": "Miniatura",
"TheseSettingsAffectSubtitlesOnThisDevice": "Esta configuración afecta los subtítulos en este dispositivo",
"ThemeVideos": "Videos temáticos",
"ThemeSongs": "Canciones temáticas",
@ -1353,7 +1353,7 @@
"NextTrack": "Pasar al siguiente",
"LabelUnstable": "Inestable",
"Video": "Video",
"ThumbCard": "Tarjeta de pulgar",
"ThumbCard": "Tarjeta de miniatura",
"Subtitle": "Subtítulo",
"SpecialFeatures": "Características especiales",
"SelectServer": "Seleccionar servidor",
@ -1517,7 +1517,7 @@
"MessageSent": "Mensaje enviado.",
"LabelSlowResponseTime": "Tiempo en ms después de lo cual una respuesta es considerada lenta:",
"LabelSlowResponseEnabled": "Log de alarma si la respuesta del servidor fue lenta",
"UseEpisodeImagesInNextUpHelp": "Las secciones Siguiente y Continuar viendo utilizaran imagenes del episodio como miniaturas en lugar de miniaturas del show.",
"UseEpisodeImagesInNextUpHelp": "Las secciones 'Siguiente' y 'Continuar viendo' utilizarán imágenes del episodio como miniaturas en lugar de miniaturas del show.",
"UseEpisodeImagesInNextUp": "Usar imágenes de los episodios en \"Siguiente\" y \"Continuar Viendo\"",
"LabelAutomaticallyAddToCollection": "Agregar automáticamente a la colección",
"HeaderSyncPlayTimeSyncSettings": "Sincronización de tiempo",
@ -1684,5 +1684,16 @@
"MessageNoItemsAvailable": "No hay artículos disponibles actualmente.",
"MessageNoFavoritesAvailable": "No hay favoritos disponibles actualmente.",
"MessageRenameMediaFolder": "Cambiar el nombre de una biblioteca de medios hará que se pierdan todos los metadatos, proceda con precaución.",
"DownloadAll": "Descargar todo"
"DownloadAll": "Descargar todo",
"Experimental": "Experimental",
"LabelStereoDownmixAlgorithm": "Algoritmo de mezcla estéreo",
"StereoDownmixAlgorithmHelp": "Algoritmo utilizado para mezclar audio multicanal a estéreo.",
"LabelDummyChapterDurationHelp": "El intervalo de extracción de la imagen del capítulo en segundos.",
"HeaderRecordingMetadataSaving": "Grabando metadatos",
"HeaderDummyChapter": "Imágenes del capítulo",
"LabelDummyChapterDuration": "Intervalo:",
"LabelDummyChapterCount": "Límite:",
"LabelDummyChapterCountHelp": "El número máximo de imágenes de capítulos que se extraerán para cada archivo multimedia.",
"LabelChapterImageResolution": "Resolución:",
"LabelChapterImageResolutionHelp": "La resolución de las imágenes de los capítulos extraídos."
}

View file

@ -248,11 +248,11 @@
"HeaderKeepRecording": "Mantener grabación",
"HeaderKeepSeries": "Mantener series",
"HeaderKodiMetadataHelp": "Para habilitar o deshabilitar los metadatos NFO, edite una biblioteca y busque la sección 'Guardadores de metadatos'.",
"HeaderLatestEpisodes": "Últimos episodios",
"HeaderLatestMedia": "Últimos",
"HeaderLatestMovies": "Últimas películas",
"HeaderLatestMusic": "Última música",
"HeaderLatestRecordings": "Últimas grabaciones",
"HeaderLatestEpisodes": "Últimos episodios añadidos",
"HeaderLatestMedia": "Últimos elementos añadidos",
"HeaderLatestMovies": "Últimas películas añadidas",
"HeaderLatestMusic": "Última música añadida",
"HeaderLatestRecordings": "Últimas grabaciones añadidas",
"HeaderLibraries": "Bibliotecas",
"HeaderLibraryAccess": "Acceso a la biblioteca",
"HeaderLibraryFolders": "Carpetas de la biblioteca",
@ -344,7 +344,7 @@
"HeaderYears": "Años",
"Help": "Ayuda",
"Hide": "Ocultar",
"HideWatchedContentFromLatestMedia": "Esconder contenido visto de \"Últimos\"",
"HideWatchedContentFromLatestMedia": "Esconder contenido visto de \"Últimos elementos\"",
"HttpsRequiresCert": "Para activar la conexión segura, necesitas un certificado SSL de confianza, como Let's Encrypt. De lo contrario, desactive las conexiones seguras.",
"Identify": "Identificar",
"Images": "Imágenes",
@ -1074,11 +1074,11 @@
"Descending": "Descendiente",
"DirectStreamHelp1": "La transmisión de video es compatible con el dispositivo, pero tiene un formato de audio incompatible (DTS, Dolby TrueHD, etc.) o un número de canales de audio. La transmisión de video se volverá a empaquetar sin pérdidas sobre la marcha antes de enviarse al dispositivo. Solo se transcodificará la transmisión de audio.",
"DirectStreamHelp2": "La energía consumida por la transmisión directa generalmente depende del perfil de audio. Solo la transmisión de video no tiene pérdidas.",
"Director": "Director",
"Director": "Dirigido por",
"Directors": "Directores",
"Display": "Visualización",
"DisplayInMyMedia": "Mostrar en la pantalla de inicio",
"DisplayInOtherHomeScreenSections": "Mostrar en las secciones de la pantalla de inicio como \"Últimos\" y \"Continuar viendo\"",
"DisplayInOtherHomeScreenSections": "Mostrar en la pantalla de inicio secciones como \"Últimos elementos añadidos\" y \"Continuar viendo\"",
"DisplayMissingEpisodesWithinSeasons": "Mostrar episodios ausentes en las temporadas",
"DisplayMissingEpisodesWithinSeasonsHelp": "Esto también debe ser habilitado para la biblioteca de TV en la configuración del servidor.",
"DropShadow": "Eliminar sombra",
@ -1532,7 +1532,7 @@
"SubtitleCodecNotSupported": "El códec de subtítulos no es compatible",
"ContainerNotSupported": "El formato de archivo no es compatible",
"AudioCodecNotSupported": "El códec de audio no es compatible",
"EnableGamepadHelp": "Escucha la entrada de cualquier controlador conectado.",
"EnableGamepadHelp": "Escucha la entrada de cualquier controlador conectado. (Requiere: modo de visualización 'TV')",
"UseEpisodeImagesInNextUpHelp": "Las secciones \"A continuación\" y \"Seguir viendo\" utilizarán las imágenes de los episodios como miniaturas en lugar de la miniatura principal de la serie.",
"UseEpisodeImagesInNextUp": "Utilizar las imágenes de los episodios en las secciones \"A continuación\" y \"Seguir viendo\"",
"LabelSlowResponseTime": "Tiempo en ms a partir del cual una respuesta se considera lenta:",
@ -1635,7 +1635,7 @@
"Scene": "Escena",
"Interview": "Entrevista",
"DeletedScene": "Escena eliminada",
"BehindTheScenes": "Detrás de cámaras",
"BehindTheScenes": "Detrás de las cámaras",
"Trailer": "Trailer",
"Clip": "Mediometraje",
"SelectAll": "Seleccionar todo",
@ -1677,5 +1677,25 @@
"LabelStereoDownmixAlgorithm": "Algoritmo de mezcla estéreo",
"StereoDownmixAlgorithmHelp": "Algoritmo utilizado para mezclar audio multicanal a estéreo.",
"LabelVppTonemappingBrightness": "Ganancia de brillo de mapeo de tonos VPP:",
"LabelVppTonemappingBrightnessHelp": "Aplicar gananca de brillo en mapeo de tonos VPP. El valor recomendado y por defecto es 0."
"LabelVppTonemappingBrightnessHelp": "Aplicar gananca de brillo en mapeo de tonos VPP. El valor recomendado y por defecto es 0.",
"Unreleased": "No publicado todavía",
"LabelVppTonemappingContrastHelp": "Aplicar ganancia de contraste en el mapeado de tonos VPP. Los valores recomendados y por defecto son 1.2 y 1 respectivamente.",
"VideoRangeTypeNotSupported": "El tipo de rango del video no es compatible",
"MediaInfoDvLevel": "Nivel de DV",
"MediaInfoRpuPresentFlag": "Bandera preestablecida de DV rpu",
"MediaInfoDvBlSignalCompatibilityId": "ID de compatibilidad de señal DV bl",
"LabelVppTonemappingContrast": "Ganancia de contraste con el mapeado de tono VPP:",
"MediaInfoDvVersionMajor": "Versión principal de DV",
"MediaInfoElPresentFlag": "Indicador preestablecido del el DV",
"MediaInfoBlPresentFlag": "Indicador preestablecido del bl DV",
"MediaInfoDvVersionMinor": "Versión menor de DV",
"HeaderRecordingMetadataSaving": "Grabando metadatos",
"SaveRecordingNFO": "Guardar grabación de metadatos EPG en NFO",
"SaveRecordingNFOHelp": "Guardar metadatos del proveedor de listados EPG junto con los archivos multimedia.",
"SaveRecordingImages": "Guardar grabación de imágenes EPG",
"SaveRecordingImagesHelp": "Guardar imágenes del proveedor de listados EPG junto con los archivos multimedia.",
"LabelDummyChapterDuration": "Intervalo:",
"LabelDummyChapterDurationHelp": "Intervalo de extracción de imágenes de los capítulos en segundos",
"HeaderDummyChapter": "Imágenes de capítulos",
"LabelDummyChapterCount": "Límite:"
}

View file

@ -1463,7 +1463,7 @@
"LabelEnableSSDPTracing": "Habilitar seguimiento SSDP:",
"LabelEnableIP6Help": "Habilita la funcionalidad IPv6.",
"LabelEnableIP6": "Habilitar IPv6",
"LabelEnableIP4Help": "Habilita la funcionalidad IPv4.",
"LabelEnableIP4Help": "Habilitar la funcionalidad IPv4.",
"LabelEnableIP4": "Habilitar IPv4",
"LabelDropSubtitleHere": "Suelta el subtitulo aqui, o haz clic para buscar.",
"LabelCreateHttpPortMapHelp": "Permite la asignación automática de puertos para crear una regla para el tráfico HTTP además del tráfico HTTPS.",

View file

@ -1586,5 +1586,9 @@
"SelectAll": "انتخاب همه",
"ThemeSong": "آهنگ قالب",
"Sample": "نمونه",
"ThemeVideo": "ویدئوی قالب"
"ThemeVideo": "ویدئوی قالب",
"IgnoreDts": "نادیده‌گرفتن DTS (decoding timestamp)",
"HomeVideosPhotos": "ویدیو ها و تصاویر خانگی",
"Experimental": "آزمایشی",
"DownloadAll": "دانلود همه"
}

View file

@ -176,7 +176,7 @@
"Disc": "Levy",
"Disconnect": "Katkaise yhteys",
"DisplayInMyMedia": "Näytä aloitusnäytöllä",
"DisplayInOtherHomeScreenSections": "Näytä aloitusnäytön osiot, kuten 'Uusi media' ja 'Jatka katselua'",
"DisplayInOtherHomeScreenSections": "Näytä aloitusnäytön osiot, kuten 'Viimeksi lisätty media' ja 'Jatka katselua'",
"DisplayMissingEpisodesWithinSeasons": "Näytä puuttuvat jaksot tuotantokausissa",
"DisplayMissingEpisodesWithinSeasonsHelp": "Tämä on aktivoitava sarjakirjastoille myös palvelimen asetuksista.",
"DisplayModeHelp": "Valitse ulkonäkö, jonka haluat käyttöliittymälle.",
@ -343,7 +343,7 @@
"LabelAbortedByServerShutdown": "(Keskeytetty palvelimen sammutuksen takia)",
"Identify": "Tunnista",
"Horizontal": "Horisontaalinen",
"HideWatchedContentFromLatestMedia": "Piilota toistettu sisältö 'Uusi media' -osiosta",
"HideWatchedContentFromLatestMedia": "Piilota toistettu sisältö 'Hiljattain lisätty media' -osiosta",
"HeaderUpcomingOnTV": "Tulossa televisiosta",
"HeaderTypeImageFetchers": "Kuvien lataajat ({0}):",
"HeaderTranscodingProfile": "Transkoodausprofiili",
@ -411,11 +411,11 @@
"HeaderMediaFolders": "Mediakansiot",
"HeaderMedia": "Media",
"HeaderLibraryFolders": "Kirjaston kansiot",
"HeaderLatestMedia": "Uusi media",
"HeaderLatestRecordings": "Uudet tallenteet",
"HeaderLatestMusic": "Uusi musiikki",
"HeaderLatestMovies": "Uudet elokuvat",
"HeaderLatestEpisodes": "Uudet jaksot",
"HeaderLatestMedia": "Hiljattain lisätty media",
"HeaderLatestRecordings": "Hiljattain lisätyt tallenteet",
"HeaderLatestMusic": "Hiljattain lisätty musiikki",
"HeaderLatestMovies": "Hiljattain lisätyt elokuvat",
"HeaderLatestEpisodes": "Hiljattain lisätyt jaksot",
"HeaderInstall": "Asenna",
"HeaderFrequentlyPlayed": "Usein toistetut",
"HeaderFetcherSettings": "Lataajan asetukset",
@ -562,7 +562,7 @@
"TabMyPlugins": "Omat lisäosat",
"TabMusic": "Musiikki",
"TabLogs": "Lokit",
"TabLatest": "Uudet",
"TabLatest": "Hiljattain lisätyt",
"TabDirectPlay": "Muuntamaton toisto",
"TabDashboard": "Hallintapaneeli",
"TabCatalog": "Luettelo",
@ -1264,7 +1264,7 @@
"LabelMinAudiobookResumeHelp": "Kohteita pidetään toistamattomina, jos toisto keskeytetään ennen tätä aikaa.",
"LabelMaxStreamingBitrate": "Suoratoiston enimmäislaatu:",
"MoreFromValue": "Lisää kohteesta {0}",
"LatestFromLibrary": "Uudet '{0}'",
"LatestFromLibrary": "Hiljattain lisätty: '{0}'",
"LabelVideoRange": "Videon alue:",
"LabelVaapiDeviceHelp": "Tämä on renderöintinoodi, jota käytetään laitteistokiihdytykseen.",
"LabelUserRemoteClientBitrateLimitHelp": "Korvaa globaali arvo asetusten kohdasta Ohjauspaneeli > Toisto > Suoratoisto.",
@ -1306,7 +1306,7 @@
"LabelSlowResponseEnabled": "Kirjaa lokimerkintä, jos palvelin vastasi liian hitaasti",
"LabelSkipIfGraphicalSubsPresentHelp": "Tekstitysten säilytys tekstimuodossa mahdollistaa sujuvamman mediatoiston ja vähentää transkoodauksen todennäköisyyttä.",
"SimultaneousConnectionLimitHelp": "Samanaikaisten suoratoistojen enimmäismäärä. Arvo 0 poistaa rajoituksen käytöstä.",
"EnableGamepadHelp": "Kuuntele syötteitä kiinnitetyistä peliohjaimista.",
"EnableGamepadHelp": "Seuraa kytkettyjen ohjainten syötteitä (edellytys: TV-näyttötila).",
"LabelEnableGamepad": "Ota käyttöön peliohjain",
"Controls": "Ohjaimet",
"AllowVppTonemappingHelp": "Täysi Intel-ajuriin pohjautuva sävykartoitus. Toimii toistaiseksi vain teittyjen laitteiden ja HDR10-videoiden kanssa. Tämä on muihin OpenCL-toteutuksiin verrattuna ensisijainen.",
@ -1681,5 +1681,21 @@
"DownloadAll": "Lataa kaikki",
"Experimental": "Kokeellinen",
"LabelStereoDownmixAlgorithm": "Stereoäänen alasmiksausalgoritmi:",
"StereoDownmixAlgorithmHelp": "Algoritmi, jonka perusteella monikanavaääni alasmiksataan steroääneksi."
"StereoDownmixAlgorithmHelp": "Algoritmi, jonka perusteella monikanavaääni alasmiksataan steroääneksi.",
"HeaderRecordingMetadataSaving": "Tallenteen metatiedot",
"SaveRecordingNFO": "Tallenna tallenteen ohjelmaoppaan metatiedot NFO-tiedostoon",
"SaveRecordingNFOHelp": "Tallenna ohjelmaoppaan tietolähteen metatiedot mediatiedoston oheen.",
"SaveRecordingImages": "Tallenna tallenteen ohjelmaoppaan kuvat",
"SaveRecordingImagesHelp": "Tallenna ohjelmaoppaan tietolähteen kuvat mediatiedoston oheen.",
"HeaderDummyChapter": "Kappalekuvat",
"LabelDummyChapterDuration": "Aikaväli:",
"LabelDummyChapterDurationHelp": "Kappalekuvien purkuväli sekunteina.",
"LabelDummyChapterCount": "Enimmäismäärä:",
"LabelDummyChapterCountHelp": "Yhdestä mediatiedostosta purettavien kappalekuvien enimmäismäärä.",
"LabelChapterImageResolution": "Resoluutio:",
"LabelChapterImageResolutionHelp": "Purettujen kappalekuvien resoluutio.",
"ResolutionMatchSource": "Vastaa lähdettä",
"PreferEmbeddedExtrasTitlesOverFileNames": "Suosi lisämateriaaleille upotettuja otsikoita tiedostonimien sijaan",
"PreferEmbeddedExtrasTitlesOverFileNamesHelp": "Lisämateriaaleilla on usein sama otsikko kuin niiden isännällä. Valitse tämä käyttääksesi silti upotettuja otsikoita.",
"SecondarySubtitles": "Toissijaiset tekstitykset"
}

View file

@ -590,7 +590,7 @@
"HeaderContainerProfileHelp": "Les profiles de conteneur indique les formats supporté par un appareille. Si un format n'est pas supporté, le média sera transcodé, même si ce format est configuré pour la lecture directe.",
"HeaderConfirmRevokeApiKey": "Révoquer la clef d'API",
"HeaderCodecProfileHelp": "Les profils de codec indiquent les codecs supportés par un appareil. Si un codec n'est pas supporté, le média sera transcodé, même si ce codec est configuré pour la lecture directe.",
"HeaderCastAndCrew": "Distribution & équipe",
"HeaderCastAndCrew": "Distribution et équipe",
"HeaderBranding": "Slogan",
"LabelAudioSampleRate": "Taux déchantillonnage audio :",
"LabelAudioLanguagePreference": "Langue audio préférée :",
@ -1017,5 +1017,8 @@
"LabelLoginDisclaimerHelp": "Un message qui sera affiché au bas de la page de connexion.",
"LabelManufacturerUrl": "URL du fabricant :",
"LabelMaxChromecastBitrate": "Qualité du streaming pour Google Cast :",
"LabelMaxParentalRating": "Classification parentale maximale :"
"LabelMaxParentalRating": "Classification parentale maximale :",
"SpecialFeatures": "Bonus",
"Sort": "Trier",
"SortByValue": "Trier par"
}

View file

@ -294,11 +294,11 @@
"HeaderKeepRecording": "Garder l'enregistrement",
"HeaderKeepSeries": "Garder la série",
"HeaderKodiMetadataHelp": "Pour activer ou désactiver les métadonnées NFO, ouvrir l'interface de gestion d'une médiathèque et trouver la section 'Formats de métadonnées'.",
"HeaderLatestEpisodes": "Derniers épisodes",
"HeaderLatestEpisodes": "Ajouts récents",
"HeaderLatestMedia": "Ajouts récents",
"HeaderLatestMovies": "Derniers films",
"HeaderLatestMusic": "Dernières musiques",
"HeaderLatestRecordings": "Derniers enregistrements",
"HeaderLatestMovies": "Ajouts récents",
"HeaderLatestMusic": "Ajouts récents",
"HeaderLatestRecordings": "Ajouts récents",
"HeaderLibraries": "Médiathèques",
"HeaderLibraryAccess": "Accès à la médiathèque",
"HeaderLibraryFolders": "Dossiers de la médiathèque",
@ -1068,7 +1068,7 @@
"TabContainers": "Conteneurs",
"TabDashboard": "Tableau de bord",
"TabDirectPlay": "Lecture directe",
"TabLatest": "Derniers",
"TabLatest": "Ajouts récents",
"TabLogs": "Journaux",
"TabMusic": "Musiques",
"TabMyPlugins": "Mes extensions",
@ -1511,7 +1511,7 @@
"DirectPlayHelp": "Le fichier source est entièrement compatible avec le client et la session reçoit le fichier sans modifications.",
"HeaderContinueReading": "Reprendre la lecture",
"TextSent": "Message envoyé.",
"EnableGamepadHelp": "Détecter le signal d'entrée de toute manette connectée.",
"EnableGamepadHelp": "Détecter le signal d'entrée de toute manette connectée. (Nécessite le mode daffichage 'TV'.)",
"LabelEnableGamepad": "Activer la manette de jeu",
"Controls": "Contrôles",
"MessageSent": "Message envoyé.",
@ -1628,7 +1628,7 @@
"AllowEmbeddedSubtitlesAllowNoneOption": "Ne rien accepter",
"AllowEmbeddedSubtitlesAllowAllOption": "Tout accepter",
"AllowEmbeddedSubtitlesHelp": "Désactiver les sous-titres intégrés aux fichiers médias. Nécessite un rafraichissement complet de la librairie.",
"AllowEmbeddedSubtitles": "Désactiver les sous-titres intégrés",
"AllowEmbeddedSubtitles": "Désactiver les sous-titres intégrés :",
"ShowParentImages": "Afficher les images de la série",
"NextUpRewatching": "Revoir",
"MixedMoviesShows": "Films et séries mélangés",
@ -1688,5 +1688,21 @@
"DownloadAll": "Tout télécharger",
"Experimental": "Expérimental",
"StereoDownmixAlgorithmHelp": "Algorithme utilisé pour rééchantillonner laudio multicanal en stéréo.",
"LabelStereoDownmixAlgorithm": "Algorithme de rééchantillonnage en stéréo :"
"LabelStereoDownmixAlgorithm": "Algorithme de rééchantillonnage en stéréo :",
"SaveRecordingNFOHelp": "Inclure les métadonnées du fournisseur de listes EPG dans l'enregistrement.",
"SaveRecordingImagesHelp": "Inclure les images des métadonnées du fournisseur de listes EPG dans l'enregistrement.",
"HeaderRecordingMetadataSaving": "Enregistrement des métadonnées",
"SaveRecordingNFO": "Enregistrer les métadonnées du fournisseur dans le fichier NFO",
"SaveRecordingImages": "Enregistrer les images des métadonnées du fournisseur",
"LabelDummyChapterDurationHelp": "Intervalle dextraction des images de chapitre en secondes.",
"LabelDummyChapterCount": "Limite :",
"LabelChapterImageResolution": "Résolution :",
"LabelChapterImageResolutionHelp": "La résolution des images de chapitre.",
"ResolutionMatchSource": "Résolution de la source",
"HeaderDummyChapter": "Images des chapitres",
"LabelDummyChapterDuration": "Intervalle :",
"LabelDummyChapterCountHelp": "Nombre maximal dimages de chapitre à extraire pour chaque fichier multimédia.",
"PreferEmbeddedExtrasTitlesOverFileNames": "Préférer les titres intégrés aux médias pour les bonus",
"PreferEmbeddedExtrasTitlesOverFileNamesHelp": "Les bonus possèdent souvent un titre intégré identique au média parent, cocher l'option pour utiliser ce titre quoi qu'il en soit.",
"SecondarySubtitles": "Sous-titres secondaires"
}

View file

@ -85,7 +85,7 @@
"Collections": "Sammlungen",
"Favorites": "Favoriten",
"Folders": "Ordner",
"Genres": "Genres",
"Genres": "Genre",
"HeaderAlbumArtists": "Album-Künstler",
"HeaderContinueWatching": "weiter schauen",
"Movies": "Film",

View file

@ -773,7 +773,7 @@
"EnableDecodingColorDepth10Hevc": "אפשר פענוח חומרה של 10 סיביות עבור HEVC",
"EnableBackdropsHelp": "הצג את התפאורות ברקע של כמה דפים בעת גלישה בספרייה.",
"DisplayMissingEpisodesWithinSeasonsHelp": "יש להפעיל זאת גם עבור ספריות טלוויזיה בתצורת השרת.",
"DisplayInOtherHomeScreenSections": "הצג בקטעי מסך הבית כגון המדיה העדכנית והמשיך בצפייה",
"DisplayInOtherHomeScreenSections": "הצג במסך הבית מחיצות כגון \"התוכן, שנוסף לאחרונה\" ו-\"המשיך בצפייה\"",
"DeinterlaceMethodHelp": "בחר בשיטת deinterlacing לשימוש בהמרת תוכנה מקושרת לתוכן. כאשר מופעלת האצת חומרה התומכת בפירוק חומרה של חומרה, ישתמש במתקן החומרה במקום בהגדרה זו.",
"DefaultSubtitlesHelp": "כתוביות נטענות על סמך ברירת המחדל והדגלים המאולצים במטא הנתונים המוטמעים. העדפות שפה נחשבות כאשר קיימות אפשרויות מרובות.",
"ColorTransfer": "העברת צבע",
@ -1049,5 +1049,6 @@
"DownloadAll": "הורד הכל",
"Experimental": "ניסיוני",
"LabelDisableCustomCss": "אפשר קוד css מותאם אישית בשביל עיצובים מהשרת",
"LabelEasyPinCode": "קוד PIN קל"
"LabelEasyPinCode": "קוד PIN קל",
"EnableCardLayout": "הצג מערך ארגז חזותי"
}

View file

@ -17,16 +17,16 @@
"AddToCollection": "संग्रह में जोड़ें",
"Add": "जोड़ें",
"Actor": "अभिनेता",
"AccessRestrictedTryAgainLater": "वर्तमान में पहुंच प्रतिबंधित है। कृपया बाद में पुनः प्रयास करें.",
"AccessRestrictedTryAgainLater": "पहुंच प्रतिबंधित है। कृपया बाद में प्रयास करें.",
"AllowHWTranscodingHelp": "ट्यूनर को निरंतर रूप से धाराओं को ट्रांसकोड करने दें। यह सर्वर द्वारा ट्रांसकोडिंग को कम करने में मदद कर सकता है।",
"AllLanguages": "सभी भाषाएं",
"AllEpisodes": "सभी प्रकरण",
"AllComplexFormats": "सभी जटिल प्रारूप (ASS, SSA, VobSub, PGS, SUB, IDX, …)",
"AllComplexFormats": "सभी प्रारूप (ASS, SSA, VobSub, PGS, SUB, IDX, …)",
"AllChannels": "सभी चैनल्स",
"Alerts": "चेतावनियां",
"Albums": "एल्बम",
"Aired": "प्रसारित हो चुका",
"AdditionalNotificationServices": "अतिरिक्त सूचना सेवाओं को स्थापित करने के लिए प्लगइन सूची पर नज़र डालें।",
"Aired": "प्रसारित हो चुका है",
"AdditionalNotificationServices": "दी गयी सूची में से प्लगिन इनस्टॉल करें|",
"AddedOnValue": "जोड़ दिया",
"AddToPlaylist": "प्लेलिस्ट में जोड़ें",
"AllowMediaConversionHelp": "मीडिया परिवर्तन के लिये अनुमति दें या इनकार करें.",
@ -86,7 +86,7 @@
"AllowFfmpegThrottlingHelp": "जब एक ट्रांसकोड या रीमूक्स वर्तमान प्लेबैक स्थिति से काफी आगे हो जाता है, तो प्रक्रिया को रोकें ताकि यह कम संसाधनों का उपभोग करेगा। अक्सर मांग किए बिना देखने पर यह सबसे उपयोगी है। यदि आप प्लेबैक समस्याओं का अनुभव करते हैं तो इसे बंद कर दें।",
"AllowFfmpegThrottling": "थ्रोटल ट्रांसकोड",
"AllowOnTheFlySubtitleExtractionHelp": "वीडियो ट्रांसकोडिंग को रोकने में मदद करने के लिए एंबेडेड सबटाइटल वीडियो से निकाले जा सकते हैं और सादे पाठ में ग्राहकों तक पहुंचाए जाते हैं। कुछ प्रणालियों पर यह एक लंबा समय ले सकता है और निष्कर्षण प्रक्रिया के दौरान वीडियो प्लेबैक को स्टाल करने का कारण बन सकता है। जब वे क्लाइंट डिवाइस द्वारा मूल रूप से समर्थित नहीं होते हैं, तो वीडियो ट्रांसकोडिंग के साथ जले हुए एम्बेडेड उपशीर्षक को अक्षम करें।",
"AlbumArtist": "चित्राधार कलाकार",
"AlbumArtist": "एल्बम कलाकार",
"AllowOnTheFlySubtitleExtraction": "मक्खी पर उपशीर्षक निष्कर्षण की अनुमति दें",
"Album": "एल्बम",
"ButtonSyncPlay": "SyncPlay",
@ -129,5 +129,23 @@
"MusicVideos": "संगीत वीडियो",
"OptionBluray": "BD",
"Playlists": "प्लेलिस्ट",
"Photos": "तस्वीरें"
"Photos": "तस्वीरें",
"AgeValue": "({0} साल पुराना)",
"ButtonClose": "बंद करें",
"AddToFavorites": "पसंदीदो में शामिल करे",
"ButtonExitApp": "ऐप को बंद करें",
"ButtonSpace": "स्पेस",
"ButtonSplit": "विभाजित करें",
"ButtonStart": "शुरु करें",
"ButtonStop": "रोकें",
"ButtonSubmit": "प्रस्तुत करें",
"ButtonTogglePlaylist": "प्लेलिस्ट",
"ButtonUninstall": "ऐप हटाएं",
"ButtonTrailer": "ट्रेलर",
"Large": "बड़ा",
"Small": "छोटा",
"Normal": "सामान्य",
"Songs": "गाने",
"Larger": "और बड़ा",
"ListPaging": "{2} का {0}-{1}"
}

View file

@ -849,7 +849,7 @@
"Playlists": "Popisi za reprodukciju",
"AllowMediaConversionHelp": "Dopusti ili odbij pristup mogućnosti konverzije medija.",
"AllLibraries": "Sve biblioteke",
"Aired": "Emitirano",
"Aired": "Prenošeno",
"AirDate": "Datum prikazivanja",
"AddedOnValue": "Dodano {0}",
"Songs": "Pjesme",
@ -872,7 +872,7 @@
"AlwaysPlaySubtitles": "Uvijek pokreni titlove",
"AllowRemoteAccessHelp": "Ako je odznačeno, svi udaljeni pristupi će biti blokirani.",
"AllowRemoteAccess": "Dopusti udaljene pristupe na ovaj server",
"AllowOnTheFlySubtitleExtraction": "Dopusti izdvajanje titla tokom reprodukcije",
"AllowOnTheFlySubtitleExtraction": "Dopusti izdvajanje titla tijekom reprodukcije",
"AllowMediaConversion": "Dopusti konverziju medija",
"AllLanguages": "Svi jezici",
"Alerts": "Upozorenja",
@ -1189,7 +1189,7 @@
"AgeValue": "(staro {0} godina)",
"MusicVideos": "Glazbeni spotovi",
"Subtitle": "Titl",
"AddToFavorites": "Dodaj u favorite",
"AddToFavorites": "Dodaj u omiljene",
"Unreleased": "Još nije objavljeno",
"ButtonExitApp": "Izlaz iz aplikacije",
"Casual": "Ležerno",

View file

@ -154,7 +154,7 @@
"Movies": "Film",
"Alerts": "Peringatan",
"AddedOnValue": "{0} Ditambahkan",
"AllowFfmpegThrottling": "Transcode Macet",
"AllowFfmpegThrottling": "Transcode Dibatas (Throttle)",
"AllowOnTheFlySubtitleExtractionHelp": "Subtitel yang disematkan dapat diekstrak dari video dan dikirim ke klien dalam teks biasa, untuk membantu mencegah transcoding video. Pada beberapa sistem, ini dapat memakan waktu lama dan menyebabkan pemutaran video terhenti selama proses ekstraksi. Nonaktifkan ini untuk menyematkan subtitle yang disematkan dengan transcoding video ketika mereka tidak didukung secara native oleh perangkat klien.",
"ButtonSyncPlay": "SyncPlay",
"EnablePhotosHelp": "Gambar akan terdeteksi dan ditampilkan bersama file media lainnya.",

View file

@ -250,7 +250,7 @@
"HeaderDeleteDevice": "Elimina dispositivo",
"HeaderDeleteItem": "Elimina Elemento",
"HeaderDeleteItems": "Elimina Elementi",
"HeaderDeleteProvider": "eliminare Provider",
"HeaderDeleteProvider": "Eliminare Provider",
"HeaderDeleteTaskTrigger": "Elimina Operazione pianificata",
"HeaderDetectMyDevices": "Rileva i miei dispositivi",
"HeaderDeveloperInfo": "Info sviluppatore",
@ -488,7 +488,7 @@
"LabelEpisodeNumber": "Numero espisodio:",
"LabelEvent": "Evento:",
"LabelEveryXMinutes": "Tutti:",
"LabelExtractChaptersDuringLibraryScan": "Estrarre immagini capitolo durante la scansione della libreria",
"LabelExtractChaptersDuringLibraryScan": "Estrae le immagini dei capitoli durante la scansione della libreria",
"LabelExtractChaptersDuringLibraryScanHelp": "Genera le immagini capitolo quando i video vengono importati durante la scansione della libreria. Alternativamente, verranno estratti durante l'operazione pianificata di estrazione delle immagini capitolo, permettendo la scansione della libreria più velocemente.",
"LabelFailed": "Fallito",
"LabelFileOrUrl": "File o URL:",
@ -510,7 +510,7 @@
"LabelIconMaxHeight": "Altezza icona massima:",
"LabelIconMaxWidth": "Larghezza massima icona:",
"LabelIdentificationFieldHelp": "Una stringa o espressione regex sensibile a maiuscole e minuscole.",
"LabelImageFetchersHelp": "Abilitare e classificare i tuoi Fetchers immagini preferite in ordine di priorità.",
"LabelImageFetchersHelp": "Abilita e classifica i tuoi generatori preferiti di immagini in ordine di priorità.",
"LabelImageType": "Tipo immagine:",
"LabelImportOnlyFavoriteChannels": "Limitare ai canali segnato come",
"LabelInNetworkSignInWithEasyPassword": "Abilita l'accesso da rete locale tramite codice PIN Semplificato",
@ -551,7 +551,7 @@
"LabelMessageTitle": "Titolo messaggio:",
"LabelMetadata": "Metadati:",
"LabelMetadataDownloadLanguage": "Lingua preferita per lo scaricamento:",
"LabelMetadataDownloadersHelp": "Abilitare e classificare i tuoi downloader metadati preferite in ordine di priorità. Downloader di priorità inferiori saranno utilizzati solo per riempire le informazioni mancanti.",
"LabelMetadataDownloadersHelp": "Abilita e classifica i tuoi downloader di metadati preferiti in ordine di priorità. Quelli con priorità inferiori saranno utilizzati solo per riempire le informazioni mancanti.",
"LabelMetadataPath": "Percorso per i metadati:",
"LabelMetadataPathHelp": "Specificare un percorso personalizzato per le immagini e i metadati scaricati.",
"LabelMetadataReaders": "Lettori Metadati:",
@ -698,7 +698,7 @@
"LabelffmpegPathHelp": "Il percorso dell'applicazione FFmpeg o della cartella che la contiene.",
"LanNetworksHelp": "Elenco separato da virgola di indirizzi IP o voci IP / maschera di rete per reti che saranno considerate sulla rete locale quando si applicano restrizioni di larghezza di banda. Se impostato, tutti gli altri indirizzi IP verranno considerati nella rete esterna e saranno soggetti alle limitazioni della larghezza di banda esterna. Se lasciato vuoto, solo la sottorete del server viene considerata nella rete locale.",
"Large": "Grande",
"LatestFromLibrary": "Ultime {0}",
"LatestFromLibrary": "{0} Recenti",
"LearnHowYouCanContribute": "Scopri come puoi contribuire.",
"LibraryAccessHelp": "Seleziona le librerie da condividere con questo utente. Gli amministratori saranno in grado di modificare tutte le cartelle utilizzando il gestore dei metadati.",
"List": "Lista",
@ -1513,7 +1513,7 @@
"MessageSent": "Messaggio inviato.",
"LabelEnableGamepad": "Abilita il Gamepad",
"TextSent": "Messaggio inviato.",
"EnableGamepadHelp": "Ascolta per ingresso da ogni controller collegato.",
"EnableGamepadHelp": "Attendi input da qualsiasi controller connesso. (Richiede: Modalità visualizzazione 'TV')",
"Controls": "Controlli",
"UseEpisodeImagesInNextUpHelp": "Le sezioni 'Prossimo' e 'Continua a Guardare' useranno le immagini dell'episodio come miniature al posto della miniatura principale dello spettacolo.",
"UseEpisodeImagesInNextUp": "Usa le immagini dell'episodio nelle sezioni 'Prossimo' e 'Continua a guardare'",

View file

@ -4,28 +4,28 @@
"Actor": "俳優",
"Add": "追加",
"AddToCollection": "コレクションに追加",
"AddToPlayQueue": "再生リストに追加",
"AddToPlayQueue": "再生キューに追加",
"AddToPlaylist": "プレイリストに追加",
"AddedOnValue": "{0}を追加しました",
"AdditionalNotificationServices": "プラグインカタログから通知サービスを追加してください。",
"AirDate": "放送日",
"Aired": "放映された",
"Albums": "アルバム",
"Alerts": "アティスト",
"Alerts": "アート",
"All": "すべて",
"AllChannels": "すべてのチャンネル",
"AllComplexFormats": "すべての複雑なフォーマット (ASS, SSA, VobSub, PGS, SUB, IDX など)",
"AllEpisodes": "すべてのエピソード",
"AllLanguages": "すべての言語",
"AllLibraries": "すべてのライブラリ",
"AllowHWTranscodingHelp": "チューナーによるストリームトランスコードを有効にする。 場合によってサーバーへのトランスコーディング負担を減らすことができます。",
"AllowHWTranscodingHelp": "チューナーでのストリームトランスコードを有効にします。 有効にすることで、サーバーへのトランスコード要求を減少させられる場合があります。",
"AllowMediaConversion": "メディアの変換を許可する",
"AllowMediaConversionHelp": "メディア変換機能へのアクセスを許可もしくは、拒否します。",
"AllowOnTheFlySubtitleExtraction": "字幕の抽出の許可/拒否",
"AllowOnTheFlySubtitleExtractionHelp": "埋め込まれた字幕は、ビデオのトランスコードを防ぐために、ビデオから抽出してプレーンテキストでクライアントに配信できます。 システムによっては、これに時間がかかり、抽出中にビデオの再生が止まることがあります。 これを無効にし、埋め込み字幕がクライアントデバイスでネイティブにサポートされていない場合、ビデオのトランスコードが強制されます。",
"AllowRemoteAccess": "サーバへのリモート接続の許可",
"AllowRemoteAccessHelp": "チェックが入っていない場合すべてのリモート接続をブロックします。",
"AllowedRemoteAddressesHelp": "リモート接続を許可するネットワークのIPアドレスまたはIPアドレス/マスク長 空白のままにすると、すべてのリモートアドレスが許可されます。",
"AllowedRemoteAddressesHelp": "リモート接続を許可するネットワークのIPアドレスまたはIPアドレス/ネットマスクをコンマ区切りのリストで指定できます。空白のままにすると、すべてのリモートアドレスが許可されます。",
"AlwaysPlaySubtitles": "常に有効",
"AlwaysPlaySubtitlesHelp": "言語に合った字幕が音声言語に関係なく読み込まれます。",
"AnyLanguage": "任意の言語",
@ -144,8 +144,8 @@
"DirectStreamHelp1": "ビデオストリームは、お使いのデバイスとの互換性がありますが、DTS、Dolby TrueHDなどのオーディオフォーマットまたはオーディオチャンネル数で互換性がありません。ビデオストリームは、デバイスに送信される前に、ロスレスに再パッケージされ、音声ストリームのみをトランスコードします。",
"DirectStreamHelp2": "ダイレクトストリーミングによって消費される電力はオーディオプロファイルによります。動画のストリームのみが可逆圧縮です。",
"DirectStreaming": "ダイレクトストリーミング",
"Director": "ディレクター",
"Directors": "ディレクターズ",
"Director": "監督",
"Directors": "監督",
"Disc": "ディスク",
"Disconnect": "切断",
"Display": "ディスプレイ",
@ -942,7 +942,7 @@
"LabelEnableBlastAliveMessages": "アライブメッセージを配信する",
"LabelDateAddedBehaviorHelp": "メタデータがある場合、これらのオプションの前に優先します。",
"AskAdminToCreateLibrary": "管理者にライブラリを作成する依頼をしてください。",
"AllowFfmpegThrottling": "トランスコードをスロットルする",
"AllowFfmpegThrottling": "トランスコードを制限",
"Episode": "エピソード",
"ClientSettings": "クライアント設定",
"Artist": "アーティスト",
@ -1492,7 +1492,7 @@
"LabelDisableCustomCss": "サーバーから提供されるテーマ/ブランディングのためのカスタムCSSコードを無効にする。",
"DisableCustomCss": "サーバーが提供するカスタムCSSコードの無効化",
"ErrorPlayerNotFound": "再生しようとしたメディア用のプレイヤーがありません。",
"AgeValue": "({0}年前)",
"AgeValue": "({0})",
"OtherArtist": "その他のアーチスト",
"NextChapter": "次のチャプター",
"Mixer": "ミキサー",
@ -1630,5 +1630,59 @@
"LabelSelectAudioChannels": "チャンネル",
"MessageChromecastConnectionError": "Google CastレシーバーがJellyfinサーバーに接続できません。接続を確認し、もう一度試してください。",
"MessagePlaybackError": "Google Cast レシーバーでこのファイルを再生する際にエラーが発生しました。",
"EnableVppTonemapping": "VPPトーンマッピングの有効化"
"EnableVppTonemapping": "VPPトーンマッピングの有効化",
"DownloadAll": "全てダウンロード",
"StereoDownmixAlgorithmHelp": "アルゴリズムは、多チャンネル音声をステレオにダウンミックスする際に使用されます。",
"AnamorphicVideoNotSupported": "アナモルフィック動画はサポートされていません",
"VideoProfileNotSupported": "動画コーデックのプロファイルがサポートされていません",
"LabelVppTonemappingBrightnessHelp": "VPP トーンマッピングでの輝度ゲインを適用します。推奨・デフォルト値はどちらも0です。",
"MediaInfoDvVersionMinor": "DV バージョンマイナー",
"MediaInfoDvBlSignalCompatibilityId": "DV bl signal compatibility id",
"InterlacedVideoNotSupported": "インターレース動画はサポートされていません",
"AllowVppTonemappingHelp": "完全なIntelドライバーがベースとなったトーンマッピングです。現在のところ、HDR10の動画と特定のハードウェアでのみ動作します。これは、他のOpenCL実装と比較して優先度がより高くなります。",
"VideoLevelNotSupported": "動画コーデックのレベルはサポートされていません",
"LabelHardwareEncodingOptions": "ハードウェアエンコードオプション:",
"AudioIsExternal": "音声ストリームが外部です",
"MediaInfoDoViTitle": "DV タイトル",
"Controls": "コントロール",
"ContainerNotSupported": "サポートされていないコンテナです",
"AudioBitrateNotSupported": "サポートされていない音声ビットレートです",
"AudioChannelsNotSupported": "サポートされていない音声チャンネル数です",
"PreferSystemNativeHwDecoder": "OSネイティブのDXVAまたはVA-APIハードウェアデコーダーを優先する",
"ContainerBitrateExceedsLimit": "動画のビットレートが制限を超えています",
"IntelLowPowerEncHelp": "省電力エンコードは、不要なCPUとGPUの同期を維持することができます。Linux環境では、i915 HuCファームウェアが設定されていない場合、これらを無効にする必要があります。",
"VideoBitrateNotSupported": "動画のビットレートはサポートされていません",
"UnknownVideoStreamInfo": "動画ストリーム情報が不明です",
"UnknownAudioStreamInfo": "音声ストリーム情報が不明です",
"Sample": "サンプル",
"ThemeSong": "主題歌",
"ThemeVideo": "テーマビデオ",
"LabelVppTonemappingBrightness": "VPPトーンマッピング輝度ゲイン:",
"LabelVppTonemappingContrast": "VPP トーンマッピングコントラストゲイン:",
"MediaInfoRpuPresentFlag": "DV rpu preset flag",
"EnableSplashScreen": "スプラッシュ画面を有効にする",
"LabelStereoDownmixAlgorithm": "ステレオダウンミックスのアルゴリズム",
"LabelEnableGamepad": "ゲームパッドを有効にする",
"EnableGamepadHelp": "接続済みのゲームパッドからの入力を受け付けます。",
"SecondaryAudioNotSupported": "第2音声トラックはサポートされていません",
"RefFramesNotSupported": "リファレンスフレームはサポートされていません",
"VideoBitDepthNotSupported": "動画のbit深度はサポートされていません",
"AudioBitDepthNotSupported": "音声のbit深度はサポートされていません",
"Trailer": "予告編",
"BehindTheScenes": "舞台裏",
"Interview": "インタビュー",
"Scene": "シーン",
"Clip": "短編映画",
"LabelVppTonemappingContrastHelp": "VPP トーンマッピングでのコントラストゲインを適用します。推奨値は1.2、デフォルト値は1です。",
"VideoRangeTypeNotSupported": "動画のレンジタイプはサポートされていません",
"LabelVideoRangeType": "動画のレンジタイプ:",
"MediaInfoVideoRangeType": "動画のレンジタイプ",
"MediaInfoDvVersionMajor": "DV バージョンメジャー",
"MediaInfoDvProfile": "DV プロファイル",
"MediaInfoDvLevel": "DV レベル",
"MediaInfoElPresentFlag": "DV el preset flag",
"MediaInfoBlPresentFlag": "DV bl preset flag",
"Unreleased": "まだ公開されていません",
"DeletedScene": "未公開シーン",
"Experimental": "試験的"
}

View file

@ -6,5 +6,23 @@
"Add": "დამატება",
"Aired": "გამოვიდა",
"Albums": "ალბომები",
"All": "ყველა"
"All": "ყველა",
"Collections": "კოლექციები",
"Default": "ნაგულისხმები",
"Genres": "ჟანრები",
"Artists": "შემსრულებლები",
"Books": "წიგნები",
"Channels": "არხები",
"HeaderAlbumArtists": "ალბომის შემსრულებლები",
"MusicVideos": "მუსიკის ვიდეოები",
"Playlists": "დასაკრავი სიები",
"Sync": "სინქრონიზაცია",
"ValueSpecialEpisodeName": "სპეციალური - {0}",
"HeaderContinueWatching": "ყურების გაგრძელება",
"Movies": "ფილმები",
"Shows": "სერიალები",
"Songs": "სიმღერები",
"Photos": "ფოტოები",
"Favorites": "რჩეულები",
"Folders": "საქაღალდეები"
}

View file

@ -326,7 +326,7 @@
"LabelNotificationEnabled": "이 알림 활성화",
"LabelNumber": "번호:",
"LabelNumberOfGuideDays": "일별 편성표 데이터 다운로드:",
"LabelNumberOfGuideDaysHelp": "더 많은 기간의 편성표 데이터를 다운로드하는 것은 목록 및 예약 녹화의 범위가 늘어 나지만 다운로드하는 데 시간이 오래 걸릴 수 있습니다.",
"LabelNumberOfGuideDaysHelp": "더 많은 기간의 편성표 데이터를 다운로드하면 더 많은 방송 일정 예약을 할 수 있고 볼 수 있는 목록이 늘어 나지만 다운로드하는 데 더 많은 시간이 소요됩니다. 자동은 채널 수에 따라 선택됩니다.",
"LabelOriginalAspectRatio": "원 화면비율:",
"LabelOverview": "줄거리:",
"LabelParentalRating": "등급:",
@ -742,7 +742,7 @@
"Sports": "스포츠",
"SortChannelsBy": "채널 정렬:",
"SortByValue": "{0} 정렬",
"Sort": "정",
"Sort": "정",
"SkipEpisodesAlreadyInMyLibrary": "이미 라이브러리에 있는 에피소드는 녹화 안 함",
"SimultaneousConnectionLimitHelp": "최대 동시 스트림 갯수. 0은 제한없음입니다.",
"Shuffle": "셔플",
@ -1322,7 +1322,7 @@
"Authorize": "승인",
"QuickConnectNotActive": "이 서버에서 퀵커넥트가 활성화되지 않았습니다",
"Raised": "양각",
"LabelMaxMuxingQueueSizeHelp": "모든 스트림이 초기화 될 때까지 기다리는 동안 버퍼링 할 수있는 최대 패킷 수입니다. ffmpeg 로그에서 \"출력 스트림에 대해 버퍼링 된 패킷이 너무 많음\"오류가 계속 발생하면이를 늘리십시오. 권장 값은 2048입니다.",
"LabelMaxMuxingQueueSizeHelp": "모든 스트림이 초기화되기를 기다리는 동안 버퍼링할 수 있는 최대 패킷 수입니다. ffmpeg 로그에서 \"출력 스트림을 위해 버퍼링된 패킷이 너무 많습니다\" 오류가 계속 발생하면 값을 늘리십시오. 권장 값은 2048입니다.",
"LabelMaxMuxingQueueSize": "최대 muxing 대기열 크기 :",
"Preview": "미리보기",
"SubtitleVerticalPositionHelp": "텍스트가 나타나는 줄 번호입니다. 양수는 하향식을 나타냅니다. 음수는 상향식을 나타냅니다.",
@ -1495,7 +1495,7 @@
"SubtitleCodecNotSupported": "자막 코덱이 지원되지 않습니다",
"ContainerNotSupported": "컨테이너가 지원되지 않습니다",
"AudioCodecNotSupported": "오디오 코덱이 지원되지 않습니다",
"EnableGamepadHelp": "연결된 컨트롤러에서 입력을 수신합니다.",
"EnableGamepadHelp": "연결된 컨트롤러에서 입력을 수신합니다. ('TV' 디스플레이 모드가 필요합니다)",
"LabelEnableGamepad": "게임패드 활성화",
"Controls": "컨트롤",
"EnableVppTonemapping": "VPP Tone 매핑 활성화",
@ -1589,5 +1589,19 @@
"IgnoreDtsHelp": "이 옵션을 비활성화하면 일부 문제가 해결될 수 있습니다. 예를 들어 별도의 오디오 및 비디오 스트림이 있는 채널에서 없는 오디오를 불러올 수 있습니다 .",
"LabelMaxVideoResolution": "허용되는 최대 비디오 코덱 변경 해상도",
"HomeVideosPhotos": "홈 비디오 및 사진",
"EnableCardLayout": "CardBox 보이기"
"EnableCardLayout": "CardBox 보이기",
"LabelStereoDownmixAlgorithm": "스테레오 다운믹스 알고리즘",
"Experimental": "실험실",
"DownloadAll": "전부 다운로드",
"LabelDummyChapterCountHelp": "미디어 파일에서 챕터 이미지를 추출할 최대 수.",
"LabelSyncPlaySettingsSyncCorrectionHelp": "미디어의 속도를 빠르게 하거나 재생 위치를 추정하여 재생 액티브 동기화를 활성화. 많이 끊기면 비활성화.",
"LabelSyncPlaySettingsMinDelaySkipToSync": "넘겨서 동기화 최소 딜레이:",
"HeaderDummyChapter": "챕터 이미지",
"LabelDummyChapterDuration": "간격:",
"LabelDummyChapterDurationHelp": "챕터 이미지 추출 간격은 초입니다.",
"LabelDummyChapterCount": "제한:",
"LabelChapterImageResolution": "화질:",
"LabelChapterImageResolutionHelp": "추출된 챕터 이미지의 화질.",
"LabelSyncPlaySettingsSpeedToSyncDuration": "동기화 속도 지속시간:",
"HeaderRecordingMetadataSaving": "메타데이터 녹화하기"
}

View file

@ -115,7 +115,7 @@
"Identify": "Identifikuoti",
"Images": "Atvaizdai",
"InstallingPackage": "Diegiama {0} (versija {1})",
"InstantMix": "Leisti miksą",
"InstantMix": "Maišyti",
"ItemCount": "{0} elementų",
"Kids": "Vaikams",
"Label3DFormat": "3D formatas:",
@ -437,10 +437,10 @@
"AllLanguages": "Visos kalbos",
"AllowMediaConversion": "Leisti medijos konvertavimą",
"AllowRemoteAccess": "Leisti nuotolinius prisijungimus prie šio Jellyfin serverio",
"AnyLanguage": "Bet Kokia Kalba",
"AnyLanguage": "Bet kuri kalba",
"Artists": "Atlikėjai",
"Audio": "Garsas",
"Auto": "Auto",
"Auto": "Automatinis",
"Backdrop": "Fonas",
"BirthDateValue": "Gimė: {0}",
"BirthPlaceValue": "Gimimo vieta: {0}",
@ -495,7 +495,7 @@
"AirDate": "Išleidimo data",
"Aired": "Išleista",
"AllowOnTheFlySubtitleExtraction": "Leisti subtitrų ištraukimą grojimo metu",
"AlwaysPlaySubtitlesHelp": "Subtitrai atitinkantys kalbos parinktį bus visada užkraunami nepaisant garso takelio kalbos.",
"AlwaysPlaySubtitlesHelp": "Pageidaujamą kalbą atitinkantys subtitrai bus įkelti neatsižvelgiant į garso kalbą.",
"AllLibraries": "Visos bibliotekos",
"AllowMediaConversionHelp": "Leisti arba uždrausti medijos konvertavimą.",
"AlwaysPlaySubtitles": "Visada rodyti subtitrus",
@ -525,7 +525,7 @@
"Ascending": "Didėjančia tvarka",
"AllComplexFormats": "Visi Sudėtingi Formatai (ASS, SSA, VobSub, PGS, SUB, IDX, …)",
"AllowHWTranscodingHelp": "Leisti imtuvui perkoduoti srautus grojant. Tai gali sumažinti perkodavimus reikalingus serveriui.",
"AuthProviderHelp": "Pasirinkite autentifikavimo paslaugos teikėją šio vartotojo slaptažodžio autentifikavimui.",
"AuthProviderHelp": "Pasirinkite autentifikavimo paslaugų teikėją, kuris bus naudojamas šio naudotojo slaptažodžiui autentifikuoti.",
"AllowedRemoteAddressesHelp": "IP adresų atskirtų kableliais sąrašas ar IP/netmask įrašai tinklams, kurie turės teisę prisijungti nuotoliniu būdu. Visi adresai bus leidžiami, jei įrašas tuščias.",
"HeaderMyMedia": "Mediateka",
"HeaderMyDevice": "Mano įrenginys",
@ -564,11 +564,11 @@
"CopyStreamURLSuccess": "Srauto nuoroda nukopijuota.",
"DefaultMetadataLangaugeDescription": "Tai yra numatytieji nustatymai. Jie gali būti keičiami kiekvienai bibliotekai atskirai.",
"AllowOnTheFlySubtitleExtractionHelp": "Įterptus subtitrus iš vaizdo įrašo galima išgauti ir klientams pateikti paprastu tekstu, kad būtų išvengta vaizdo įrašų perkodavimo. Kai kuriose sistemose tai gali užtrukti ilgą laiką ir gali sustabdyti vaizdo atkūrimą subtitrų išgavimo metu. Išjunkite tai, kad subtitrus būtu įrašomi į vaizdo įrašą naudojant perkodavimą, jei jie yra nepalaikomi kliento įrenginio.",
"BurnSubtitlesHelp": "Nustato, ar perkoduojant vaizdo įrašą serveris turėtų įrašyti subtitrus, atsižvelgiant į subtitrų formatą. Išvengiant subtitrų įrašymo gali pagerinti serverio našumą. Pasirinkite „Auto“, jei norite įrašyti atvaizdais paremtus formatus (VOBSUB, PGS, SUB, IDX, ...) Ir tam tikrus ASS arba SSA subtitrus.",
"BurnSubtitlesHelp": "Nustatykite, ar transkoduodamas vaizdo įrašus serveris turėtų įrašyti subtitrus. Jei to išvengsite, labai pagerės našumas. Pasirinkite Auto (automatinis), kad įrašytumėte vaizdų formatais (VobSub, PGS, SUB, IDX ir t. t.) ir tam tikrais ASS arba SSA subtitrais.",
"DefaultSubtitlesHelp": "Subtitrai įkeliami atsižvelgiant į numatytuosius ir priverstinius žymenis įterptuose metaduomenyse. Kalbos nustatymai įvertinami, kai yra keletas variantų.",
"HeaderDeleteProvider": "Ištrinti paslaugos teikėją",
"HeaderDeleteTaskTrigger": "Ištrinti užduoties trigerį",
"Absolute": "Visiškas",
"Absolute": "Absoliutus",
"HeaderCastAndCrew": "Aktoriai",
"Shows": "Laidos",
"HeaderDeveloperInfo": "Kūrėjo informacija",
@ -687,7 +687,7 @@
"HeaderNextVideoPlayingInValue": "Kitas vaizdo įrašas rodomas už {0}",
"HeaderPassword": "Slaptažodis",
"HeaderPasswordReset": "Slaptažodžio nustatymas iš naujo",
"LabelProfileCodecs": "Kodekas:",
"LabelProfileCodecs": "Kodekai:",
"HeaderProfileServerSettingsHelp": "Šios reikšmės kontroliuoja kaip serveris bus pateikiamas prie klientų.",
"LabelMetadataSavers": "Metaduomenų saugotojai:",
"LabelMetadataSaversHelp": "Išrinkite failo formatą metaduomenų saugojimui.",
@ -740,7 +740,7 @@
"LabelReasonForTranscoding": "Perkodavimo priežastis:",
"LabelPreferredSubtitleLanguage": "Pageidautina titrų kalba:",
"HeaderChannelAccess": "Prieiga prie kanalų",
"LabelProfileAudioCodecs": "Garso takelio kodekas:",
"LabelProfileAudioCodecs": "Garso takelio kodekai:",
"HeaderLiveTvTunerSetup": "Imtuvo nustatymai",
"FetchingData": "Gaunami papildomi duomenys",
"FileReadError": "Nuskaitant failą įvyko klaida.",
@ -809,7 +809,7 @@
"LabelProtocol": "Protokolas:",
"LabelProtocolInfo": "Apie protokolą:",
"HeaderCodecProfileHelp": "Kodekų profiliai nurodo įrenginio apribojimus, kai medija leidžiama su konkrečiais kodekais. Jei taikomas apribojimas, laikmena perkoduojama, net jei kodekas sukonfigūruotas tiesioginiam atkūrimui.",
"HeaderInstantMix": "auto miksavimas",
"HeaderInstantMix": "Maišyti",
"HeaderLibraryAccess": "Mediatekos prieigos teisės",
"HeaderLibraryOrder": "Mediatekos eiliškumas",
"HeaderLibrarySettings": "Mediatekos nustatymai",
@ -838,7 +838,7 @@
"ClientSettings": "Kliento Nustatymai",
"ButtonTogglePlaylist": "Grojaraštis",
"ButtonSplit": "Skirstyti",
"AskAdminToCreateLibrary": "Prašyti administratoriaus, kad sukurtų mediateka.",
"AskAdminToCreateLibrary": "Paprašykite administratoriaus sukurti biblioteką.",
"Album": "Albumas",
"ButtonSyncPlay": "SyncPlay",
"MusicVideos": "Muzikiniai vaizdo įrašai",
@ -977,9 +977,9 @@
"Cursive": "Kursyvus",
"ButtonSpace": "Tarpas",
"ButtonActivate": "Aktyvuoti",
"AllowFfmpegThrottlingHelp": "Kai perkodavimas arba \"remux\" pakankamai užkrovęs į priekį nuo dabartinės atkūrimo padėties, pristabdykite procesą, kad sunaudotų mažiau išteklių. Tai labiausiai naudinga, kai žiūrite dažnai nekeisdami rodymo pozicijos. Išjunkite tai, jei kyla atkūrimo problemų.",
"AllowTonemappingHelp": "Tonų atvaizdavimas gali pakeisti vaizdo įrašo dinaminį diapazoną iš HDR į SDR, kartu išsaugant vaizdo detales ir spalvas, kurios yra labai svarbi informacija, vaizduojant originalią sceną. Šiuo metu veikia tik su HDR10 arba HLG vaizdo įrašais. Tam reikalingas atitinkamas OpenCL arba CUDA vykdymo laikas.",
"Arranger": "Aranžuotojas",
"AllowFfmpegThrottlingHelp": "Kai perkodavimas arba pakartotinis atkodavimas (Remux) yra pakankamai toli nuo dabartinės atkūrimo pozicijos, pristabdykite procesą, kad jis sunaudotų mažiau išteklių. Tai naudingiausia žiūrint be dažno persukimo. Išjunkite šią funkciją, jei kyla atkūrimo problemų.",
"AllowTonemappingHelp": "Tonų atvaizdavimas gali pakeisti vaizdo įrašo dinaminį diapazoną iš HDR į SDR, išlaikant vaizdo detales ir spalvas, kurios yra labai svarbi informacija, kad būtų galima atvaizduoti pradinę sceną. Šiuo metu veikia tik su HDR10 arba HLG vaizdo įrašais. Tam reikia atitinkamos \"OpenCL\" arba CUDA paleidimo programos.",
"Arranger": "Organizatorius",
"EnableBlurHashHelp": "Vaizdai, kurie vis dar įkeliami, bus rodomi su unikalia rezervuota vieta.",
"EnableDetailsBannerHelp": "Rodyti reklamjuostės vaizdą elemento išsamios informacijos puslapio viršuje.",
"EnableCardLayout": "Rodyti vizualinį CardBox",
@ -992,5 +992,144 @@
"EnableAutoCast": "Nustatyti kaip numatytąjį",
"EnableBlurHash": "Įgalinti neryškias vaizdų rezervuotas vietas",
"ButtonUseQuickConnect": "Naudoti Quick Connect",
"Casual": "Įprastas"
"Casual": "Įprastas",
"LabelSelectVersionToInstall": "Pasirinkite versiją, kurią norite įdiegti:",
"Season": "Sezonas",
"ShowAdvancedSettings": "Rodyti išplėstinius nustatymus",
"ButtonBackspace": "Atgalinis",
"Conductor": "Dirigentas",
"LabelSortBy": "Rūšiuoti pagal:",
"LabelServerHostHelp": "192.168.1.100:8096 arba https://manoserveris.lt",
"LabelServerName": "Serverio pavadinimas:",
"LabelSpecialSeasonsDisplayName": "Specialaus sezono rodomas pavadinimas:",
"ScanLibrary": "Skenuoti biblioteką",
"SaveChanges": "Išsaugoti pakeitimus",
"Series": "Serijos",
"SeriesDisplayOrderHelp": "Rūšiuokite epizodus pagal transliavimo datą, DVD tvarką arba absoliučią numeraciją.",
"TV": "TV",
"ValueSeconds": "{0} sekundės",
"MessagePasswordResetForUsers": "Iš naujo nustatyti šių naudotojų slaptažodžiai. Dabar jie gali prisijungti naudodami \"Easy PIN\" kodus, kurie buvo naudojami iš naujo nustatant slaptažodžius.",
"PasswordResetProviderHelp": "Pasirinkite slaptažodžio nustatymo iš naujo teikėją, kuris bus naudojamas, kai šis vartotojas paprašys iš naujo nustatyti slaptažodį.",
"LabelInNetworkSignInWithEasyPassword": "Įgalinti prisijungimą tinkle naudojant mano \"Easy PIN\" kodą",
"LabelInNetworkSignInWithEasyPasswordHelp": "Naudokite \"Easy PIN\" kodą, norėdami prisijungti iš vietiniame tinkle esančių klientų. Jūsų įprasto slaptažodžio reikės tik būnant ne namuose. Jei PIN kodas paliekamas tuščias, jums nereikės slaptažodžio namų tinkle.",
"LabelPleaseRestart": "Pakeitimai įsigalios rankiniu būdu perkrovus žiniatinklio klientą.",
"ValueTimeLimitMultiHour": "Laiko limitas: {0} valandų",
"TypeOptionPluralBook": "Knygos",
"LabelTheme": "Tema:",
"TypeOptionPluralMovie": "Filmai",
"MessageForgotPasswordInNetworkRequired": "Norėdami pradėti slaptažodžio atstatymo procesą, pabandykite dar kartą prisijungti prie savo namų tinklo.",
"ValueConditions": "Sąlygos: {0}",
"Controls": "Valdikliai",
"PasswordResetComplete": "Slaptažodis buvo iš naujo nustatytas.",
"MessageContactAdminToResetPassword": "Norėdami iš naujo nustatyti slaptažodį, kreipkitės į sistemos administratorių.",
"TypeOptionPluralEpisode": "Epizodai",
"TypeOptionPluralSeries": "TV laidos",
"Localization": "Lokalizacija",
"VideoAudio": "Vaizdo garso įrašas",
"Watched": "Žiūrėta",
"Whitelist": "Leidimų sąrašas",
"ErrorPlayerNotFound": "Nerastas grotuvas, skirtas prašomai medijai.",
"LabelInternetQuality": "Interneto kokybė:",
"LabelProfileVideoCodecs": "Vaizdo įrašo kodekai:",
"PasswordResetConfirmation": "Ar tikrai norite iš naujo nustatyti slaptažodį?",
"TypeOptionPluralMusicVideo": "Muzikos vaizdo įrašai",
"TypeOptionPluralSeason": "Sezonai",
"Unmute": "Išjungti nutildymą",
"ValueTimeLimitSingleHour": "Laiko limitas: 1 valanda",
"Logo": "Logotipas",
"LearnHowYouCanContribute": "Sužinokite, kaip galite prisidėti.",
"MetadataManager": "Metaduomenų tvarkyklė",
"UninstallPluginConfirmation": "Ar tikrai norite pašalinti {0}?",
"MessageDeleteTaskTrigger": "Ar tikrai norite ištrinti šią užduoties paleidiklį?",
"LabelKodiMetadataDateFormat": "Išleidimo datos formatas:",
"MessageConfirmRevokeApiKey": "Ar tikrai norite atšaukti šį API raktą? Aplikacijos ryšys su šiuo serveriu bus staiga nutrauktas.",
"MessageNoPluginConfiguration": "Šis įskiepis neturi nustatymų, kuriuos būtų galima nustatyti.",
"Metadata": "Metaduomenys",
"OptionSaveMetadataAsHidden": "Išsaugoti metaduomenis ir vaizdus kaip paslėptus failus",
"PinCodeResetConfirmation": "Ar tikrai norite iš naujo nustatyti \"Easy PIN\" kodą?",
"LabelScreensaver": "Ekrano užsklanda:",
"LabelAutoDiscoveryTracingHelp": "Kai ši funkcija įjungta, automatinio aptikimo prievadu gauti paketai bus registruojami.",
"LabelBaseUrlHelp": "",
"LabelBindToLocalNetworkAddressHelp": "Pakeiskite vietinį HTTP serverio IP adresą. Jei paliekama tuščia, serveris bus susietas su visais prieinamais adresais. Keičiant šią reikšmę reikia iš naujo paleisti serverį.",
"LabelEnableHttpsHelp": "Klausykitės sukonfigūruotame HTTPS prievade. Taip pat turi būti pateiktas galiojantis sertifikatas, kad tai įsigaliotų.",
"LabelExtractChaptersDuringLibraryScanHelp": "Generuoti skyrių vaizdus, kai bibliotekos skenavimo metu importuojami vaizdo įrašai. Priešingu atveju jie bus išskirti atliekant suplanuotą skyrių vaizdų užduotį, todėl įprastas bibliotekos skenavimas bus baigtas greičiau.",
"LabelIconMaxWidth": "Didžiausias piktogramos plotis:",
"LabelCreateHttpPortMap": "Įjunkite automatinį prievadų atvaizdavimą HTTP ir HTTPS srautui.",
"LabelCustomDeviceDisplayNameHelp": "Nurodykite pasirinktinį rodomą pavadinimą arba palikite tuščią laukelį, kad būtų naudojamas prietaiso pateiktas pavadinimas.",
"LabelEnableSSDPTracing": "Įjungti SSDP sekimą:",
"LabelEnableSingleImageInDidlLimitHelp": "Kai kurie įrenginiai netinkamai atvaizduoja, jei DIDL yra įterpti keli vaizdai.",
"LabelffmpegPathHelp": "Kelias iki FFmpeg programos failo arba aplanko, kuriame yra FFmpeg.",
"LabelFont": "Šriftas:",
"LabelFolder": "Aplankas:",
"LabelFormat": "Formatas:",
"LabelForgotPasswordUsernameHelp": "Įveskite savo vartotojo vardą, jei jį prisimenate.",
"LabelH265Crf": "H.265 kodavimo CRF:",
"LabelHardwareAccelerationType": "Techninės įrangos spartinimas:",
"LabelHDHomerunPortRangeHelp": "Apriboja HDHomeRun UDP prievadų diapazoną šia verte. (Numatytoji reikšmė yra 1024 - 645535).",
"LabelHDHomerunPortRange": "HDHomeRun prievadų diapazonas:",
"LabelImageType": "Vaizdo tipas:",
"LabelIconMaxHeight": "Didžiausias piktogramos aukštis:",
"LabelIconMaxResHelp": "Didžiausia piktogramų, pateikiamų per savybę \"upnp:icon\", skiriamoji geba.",
"LabelImageFetchersHelp": "Įjunkite pageidaujamus vaizdų atrinkimo įrenginius ir išdėliokite juos pagal svarbą.",
"LabelFileOrUrl": "Failas arba URL:",
"LabelAlbumArtMaxResHelp": "Didžiausia albumo apipavidalinimo, pateikiamo per savybę \"upnp:albumArtURI\", skiriamoji geba.",
"LabelAutomaticDiscovery": "Įjungti automatinį atradimą:",
"LabelDisableCustomCss": "Išjunkite iš serverio pateiktą pasirinktinį CSS kodą, skirtą temoms ir (arba) prekės ženklams kurti.",
"LabelDroppedFrames": "Pamesti kadrai:",
"LabelEnableIP4": "Įjungti IPv4",
"LabelHardwareEncoding": "Techninės įrangos kodavimas:",
"LabelHomeNetworkQuality": "Namų tinklo kokybė:",
"LabelIdentificationFieldHelp": "Didžiųjų ir mažųjų raidžių neribojanti dalinė eilutė arba regex išraiška.",
"LabelAutoDiscoveryTracing": "Įjungti automatinio atradimo sekimą.",
"LabelAutomaticallyAddToCollectionHelp": "Jei bent 2 filmai turi tą patį kolekcijos pavadinimą, jie bus automatiškai įtraukti į kolekciją.",
"LabelDisplaySpecialsWithinSeasons": "Rodyti specialiąsias programas pagal sezonus, kuriuose jos buvo rodomos",
"LabelDownMixAudioScale": "Garso stiprinimas:",
"LabelEnableHttps": "Įjungti HTTPS",
"LabelEnableSSDPTracingHelp": "Įjungti išsamios informacijos SSDP tinklo sekimo registravimą. <br/><b>WARNING:</b> Dėl to labai pablogės našumas.",
"LabelEncoderPreset": "Kodavimo išankstinis nustatymas:",
"LabelColorTransfer": "Spalvų perdavimas:",
"LabelCreateHttpPortMapHelp": "Leisti automatinį prievadų atvaizdavimą, kad būtų sukurta taisyklė ne tik HTTPS, bet ir HTTP srautui.",
"LabelH264Crf": "H.264 kodavimo CRF:",
"LabelffmpegPath": "FFmpeg kelias:",
"LabelDropSubtitleHere": "Įdėkite subtitrą čia arba spustelėkite norėdami naršyti.",
"AllowFfmpegThrottling": "Perkodavimo ribojimas",
"EnableRewatchingNextUp": "Įgalinti pakartotinį žiūrėjimą programoje",
"EnableRewatchingNextUpHelp": "Įgalinti jau žiūrėtų epizodų rodymą skyreliuose \"Next Up\".",
"EnableTonemapping": "Įjungti tonų atvaizdavimą",
"LabelChromecastVersion": "\"Google Cast\" versija",
"LabelColorPrimaries": "Pirminės spalvos:",
"LabelColorSpace": "Spalvų erdvė:",
"HomeVideosPhotos": "Vaizdo įrašai ir nuotraukos",
"LabelCustomCertificatePathHelp": "Kelias į PKCS #12 failą, kuriame yra sertifikatas ir privatus raktas, kad būtų galima įjungti TLS palaikymą pasirinktiniame domene.",
"GoogleCastUnsupported": "\"Google Cast\" nepalaikoma",
"LabelEnableIP6": "Įjungti IPv6",
"EnableQuickConnect": "Įjungti greitąjį prisijungimą šiame serveryje",
"DeinterlaceMethodHelp": "Pasirinkite pertempimo panaikinimo metodą, kuris bus naudojamas programiškai perkoduojant pertemptą turinį. Kai įjungtas aparatinis pagreitinimas, palaikantis aparatinį pervertimo panaikinimą, vietoj šio nustatymo bus naudojamas aparatinis pervertimo panaikinimas.",
"LabelStereoDownmixAlgorithm": "Stereomiksavimo žemyn algoritmas",
"LabelHomeScreenSectionValue": "Pagrindinis ekrano skyrius {0}:",
"Experimental": "Eksperimentinis",
"DownloadAll": "Atsisiųsti viską",
"Engineer": "Garso inžinierius",
"HeaderDummyChapter": "Skyrių vaizdai",
"IgnoreDts": "Ignoruoti DTS (dekodavimo laiko žyma)",
"IgnoreDtsHelp": "Išjungus šią parinktį gali būti išspręstos kai kurios problemos, pvz., dingti garsas kanaluose su atskirais garso ir vaizdo srautais.",
"KnownProxiesHelp": "Kableliais atskirtas žinomų tarpinių serverių, naudojamų jungiantis prie \"Jellyfin\" egzemplioriaus, IP adresų arba prieglobos vardų sąrašas. To reikia, kad būtų tinkamai naudojamos \"X-Forwarded-For\" antraštės. Išsaugojus reikia iš naujo paleisti serverį.",
"LabelAutomaticDiscoveryHelp": "Leiskite programoms automatiškai aptikti \"Jellyfin\" naudojant UDP prievadą 7359.",
"LabelBaseUrl": "Bazinis URL adresas:",
"LabelDummyChapterDuration": "Intervalas:",
"LabelDummyChapterDurationHelp": "Skyriaus vaizdo išgavimo intervalas sekundėmis.",
"LabelDummyChapterCount": "Riba:",
"LabelDummyChapterCountHelp": "Didžiausias skyrių vaizdų, kurie bus išskirti iš kiekvieno medijos failo, skaičius.",
"LabelChapterImageResolution": "Rezoliucija:",
"LabelChapterImageResolutionHelp": "Išskirtų skyrių vaizdų skiriamoji geba.",
"LabelEnableIP4Help": "Įjunkite IPv4 funkciją.",
"LabelEnableIP6Help": "Įjunkite IPv6 funkciją.",
"LabelExtractChaptersDuringLibraryScan": "Skyrių vaizdų išskyrimas bibliotekos skenavimo metu",
"LabelHardwareAccelerationTypeHelp": "Greitintuvui reikia papildomos konfigūracijos.",
"HeaderRecordingMetadataSaving": "Metaduomenų įrašymas",
"LabelDateAddedBehavior": "Pridėta naujo turinio elgsena:",
"LabelDateAddedBehaviorHelp": "Jei yra metaduomenų reikšmė, ji visada bus naudojama prieš bet kurią iš šių parinkčių.",
"LabelDefaultUserHelp": "Nustatykite, kuri naudotojo biblioteka turėtų būti rodoma prijungtuose įrenginiuose. Tai galima pakeisti kiekvienam įrenginiui naudojant profilius.",
"LabelDeinterlaceMethod": "Pertempimo panaikinimo metodas:",
"LabelDownMixAudioScaleHelp": "Jei reikšmė lygi vienetui, bus išsaugotas originalus garsumas."
}

View file

@ -1276,5 +1276,47 @@
"ButtonExitApp": "Iziet no lietotnes",
"ButtonClose": "Aizvērt",
"ButtonBackspace": "Atpakaļatkāpe",
"AddToFavorites": "Pievienot favorītiem"
"AddToFavorites": "Pievienot favorītiem",
"LastSeen": "Pēdējo reizi manīts {0}",
"MessageNoMovieSuggestionsAvailable": "Šobrīd nav pieejami filmu ieteikumi. Sāciet skatīties filmas, novērtējiet tās un apskatiet šo sadaļu vēlreiz, lai saņemt rekomendācijas.",
"MessagePlayAccessRestricted": "Šī satura atskaņošana šobrīd ir ierobežota. Sazinieties ar servera administratoru, lai saņemtu vairāk informācijas.",
"MessageSyncPlayDisabled": "SyncPlay izslēgts.",
"MessageSyncPlayErrorMedia": "Neizdevās ieslēgt SyncPlay! Satura kļūme.",
"MessageSyncPlayGroupDoesNotExist": "Neizdevās pievienoties grupai, jo tā neeksistē.",
"MessageSyncPlayJoinGroupDenied": "Neizdevās pievienoties grupai.",
"MessageSyncPlayLibraryAccessDenied": "Piekļuve šim saturam ir ierobežota.",
"NoSubtitlesHelp": "Subtitri netiks ieslēgti pēc noklusējuma, bet tos tāpat varēs ieslēgt manuāli atskaņošanas laikā.",
"OptionAllowContentDownload": "Atļaut satura lejuplādes",
"Preview": "Priekšskatījums",
"MessageSyncPlayEnabled": "SyncPlay ieslēgts.",
"Movie": "Filma",
"OptionDateEpisodeAdded": "Sērijas pievienošanas datums",
"OptionDateShowAdded": "Pārraides pievienošanas datums",
"LabelTextWeight": "Teksta izmērs:",
"PlaybackRate": "Atskaņošanas ātrums",
"AllowEmbeddedSubtitlesAllowImageOption": "Atļaut attēlus",
"AllowEmbeddedSubtitlesAllowNoneOption": "Neatļaut neko",
"Profile": "Profils",
"QuickConnectActivationSuccessful": "Veiksmīgi aktivizēts",
"PleaseEnterNameOrId": "Lūdzu, ievadiet nosaukumu vai ārējo ID.",
"AllowEmbeddedSubtitlesAllowTextOption": "Atļaut tekstu",
"OptionResElement": "'res' elements",
"QuickConnectAuthorizeCode": "Lai autorizētos, ievadiet kodu {0}",
"QuickConnectAuthorizeSuccess": "Pieprasījums autorizēts",
"MediaInfoTitle": "Nosaukums",
"MillisecondsUnit": "ms",
"Photo": "Attēls",
"MessageConfirmDeleteTunerDevice": "Vai esat pārliecināti, ka vēlaties izdzēst šo ierīci?",
"MessageSent": "Ziņa nosūtīta.",
"Poster": "Plakāts",
"Experimental": "Eksperimentāla",
"IgnoreDtsHelp": "Šīs opcijas izslēgšana var radīt problēmas, piemēram, audio celiņa pazušana kanāliem ar atšķirīgiem audio un video avotiem.",
"LabelDummyChapterDuration": "Intervāls:",
"LabelDummyChapterCount": "Limits:",
"LabelChapterImageResolution": "Izšķirtspēja:",
"OptionAllowRemoteControlOthers": "Atļaut citu lietotāju attālo pārvaldību",
"OptionReleaseDate": "Izlaiduma gads",
"OptionUnairedEpisode": "Neizlaistās epizodes",
"DownloadAll": "Lejuplādēt visu",
"AllowEmbeddedSubtitlesAllowAllOption": "Atļaut visu"
}

View file

@ -1525,7 +1525,7 @@
"VideoFramerateNotSupported": "Videoens bildefrekvens støttes ikke",
"VideoBitDepthNotSupported": "Videoens bitdybde støttes ikke",
"RefFramesNotSupported": "Referanse-bilder støttes ikke",
"EnableGamepadHelp": "Lytt til inndata fra tilkoblet kontroller.",
"EnableGamepadHelp": "Lytt til inndata fra tilkoblet kontroller. (Krever: \"TV\"-visningsmodus)",
"LabelEnableGamepad": "Aktiver spillkontroller",
"AudioBitDepthNotSupported": "Lydens bitdybde støttes ikke",
"ThemeSong": "Tema-låt",
@ -1685,5 +1685,12 @@
"MessageNoItemsAvailable": "Ingen filer er tilgjengelige for øyeblikket.",
"OptionDateShowAdded": "Dato serien ble lagt til",
"Experimental": "Eksperimentell",
"DownloadAll": "Laste ned alt"
"DownloadAll": "Laste ned alt",
"LabelDummyChapterCountHelp": "Maksimalt antall kapittelbilder som vil bli ekstrahert for hver mediefil.",
"LabelStereoDownmixAlgorithm": "Stereo nedmiksingsalgoritme",
"HeaderDummyChapter": "Kapittel Bilder",
"LabelDummyChapterCount": "Grense:",
"LabelChapterImageResolution": "Oppløsning:",
"LabelDummyChapterDuration": "Intervall:",
"HeaderRecordingMetadataSaving": "Opptak metadata"
}

View file

@ -79,7 +79,7 @@
"ButtonRevoke": "Herroepen",
"ButtonScanAllLibraries": "Alle bibliotheken scannen",
"ButtonSelectDirectory": "Selecteer map",
"ButtonSelectView": "Selecteer weergave",
"ButtonSelectView": "Weergave selecteren",
"ButtonSend": "Stuur",
"ButtonShutdown": "Afsluiten",
"ButtonSignIn": "Aanmelden",
@ -139,9 +139,9 @@
"Disconnect": "Loskoppelen",
"Display": "Weergave",
"DisplayInMyMedia": "Op het startscherm weergeven",
"DisplayInOtherHomeScreenSections": "In secties van het startscherm weergeven, zoals \"Recente media\" en \"Verder kijken\"",
"DisplayInOtherHomeScreenSections": "In secties van het startscherm weergeven, zoals 'Onlangs toegevoegde media' en 'Verderkijken'",
"DisplayMissingEpisodesWithinSeasons": "Toon ontbrekende afleveringen binnen een seizoen",
"DisplayMissingEpisodesWithinSeasonsHelp": "Dit moet ook worden ingeschakeld voor TV bibliotheken in de server configuratie.",
"DisplayMissingEpisodesWithinSeasonsHelp": "Dit moet ook worden ingeschakeld voor tv-bibliotheken in de serverconfiguratie.",
"DisplayModeHelp": "Selecteer het schermtype waar Jellyfin op draait.",
"DoNotRecord": "Niet opnemen",
"Down": "Omlaag",
@ -160,8 +160,8 @@
"EnableExternalVideoPlayers": "Externe videospelers",
"EnableExternalVideoPlayersHelp": "Een menu voor externe spelers wordt getoond bij het afspelen van video's.",
"EnableHardwareEncoding": "Activeer hardwaredecodering",
"EnableNextVideoInfoOverlay": "Laat volgende video zien tijdens het afspelen",
"EnableNextVideoInfoOverlayHelp": "Toon informatie over de volgende video in de afspeellijst aan het einde van de video.",
"EnableNextVideoInfoOverlay": "Volgende video tonen tijdens afspelen",
"EnableNextVideoInfoOverlayHelp": "Toon aan het einde van de video informatie over de volgende video in de afspeellijst.",
"EnablePhotos": "Foto's weergeven",
"EnablePhotosHelp": "Afbeeldingen worden herkend en weergegeven naast andere mediabestanden.",
"EnableStreamLooping": "Livestreams automatisch herhalen",
@ -273,7 +273,7 @@
"HeaderFetcherSettings": "Fetcher-instellingen",
"HeaderForKids": "Voor Kinderen",
"HeaderFrequentlyPlayed": "Vaak afgespeeld",
"HeaderGuideProviders": "TV Gids data aanbieders",
"HeaderGuideProviders": "Data-aanbieders tv-gids",
"HeaderIdentification": "Identificatie",
"HeaderIdentificationCriteriaHelp": "Voer tenminste één identificatiecriterium in.",
"HeaderIdentificationHeader": "Identificatie Header",
@ -284,11 +284,11 @@
"HeaderKeepRecording": "Bewaar opname",
"HeaderKeepSeries": "Series behouden",
"HeaderKodiMetadataHelp": "Om NFO-metadata in of uit te schakelen, bewerk een bibliotheek en zoek in de metadata-downloaders sectie.",
"HeaderLatestEpisodes": "Nieuwste afleveringen",
"HeaderLatestMedia": "Nieuwste media",
"HeaderLatestMovies": "Nieuwste films",
"HeaderLatestMusic": "Nieuwste muziek",
"HeaderLatestRecordings": "Nieuwste opnames",
"HeaderLatestEpisodes": "Onlangs toegevoegde afleveringen",
"HeaderLatestMedia": "Onlangs toegevoegde media",
"HeaderLatestMovies": "Onlangs toegevoegde films",
"HeaderLatestMusic": "Onlangs toegevoegde muziek",
"HeaderLatestRecordings": "Onlangs toegevoegde opnamen",
"HeaderLibraries": "Bibliotheken",
"HeaderLibraryAccess": "Bibliotheek toegang",
"HeaderLibraryFolders": "Bibliotheekmappen",
@ -306,7 +306,7 @@
"HeaderNewApiKey": "Nieuwe API-sleutel",
"HeaderNewDevices": "Nieuwe Apparaten",
"HeaderNextEpisodePlayingInValue": "Volgende aflevering over {0}",
"HeaderNextVideoPlayingInValue": "Volgende Afgespeeld over {0}",
"HeaderNextVideoPlayingInValue": "Volgende video afspelen over {0}",
"HeaderOnNow": "Aan het spelen",
"HeaderOtherItems": "Overige Items",
"HeaderParentalRatings": "Kijkwijzer",
@ -366,9 +366,9 @@
"HeaderTranscodingProfile": "Direct Afspelen Profiel",
"HeaderTranscodingProfileHelp": "Transcoding profielen toevoegen om aan te geven welke indelingen moeten worden gebruikt wanneer transcoding vereist is.",
"HeaderTunerDevices": "Tuner apparaten",
"HeaderTypeImageFetchers": "Afbeelding downloaders ({0}):",
"HeaderTypeImageFetchers": "Ophalers afbeeldingen ({0}):",
"HeaderTypeText": "Voer tekst in",
"HeaderUpcomingOnTV": "Binnenkort op TV",
"HeaderUpcomingOnTV": "Binnenkort op tv",
"HeaderUploadImage": "Afbeelding Uploaden",
"HeaderUser": "Gebruiker",
"HeaderUsers": "Gebruikers",
@ -382,7 +382,7 @@
"HeaderYears": "Jaren",
"Help": "Hulp",
"Hide": "Verbergen",
"HideWatchedContentFromLatestMedia": "Verberg bekeken inhoud uit 'Nieuwste media'",
"HideWatchedContentFromLatestMedia": "Bekeken inhoud verbergen uit 'Onlangs toegevoegde media'",
"Home": "Start",
"Horizontal": "Horizontaal",
"HttpsRequiresCert": "Om beveiligde verbindingen in te schakelen, is een vertrouwd SSL-certificaat vereist (zoals Let's Encrypt). Geef een certificaat op of schakel beveiligde verbindingen uit.",
@ -455,7 +455,7 @@
"LabelDiscNumber": "Disk nummer:",
"LabelDisplayLanguage": "Schermtaal:",
"LabelDisplayLanguageHelp": "Vertaling van Jellyfin is een voortdurend project.",
"LabelDisplayMode": "Weergave mode:",
"LabelDisplayMode": "Weergavemodus:",
"LabelDisplayName": "Weergave naam:",
"LabelDisplayOrder": "Weergave volgorde:",
"LabelDisplaySpecialsWithinSeasons": "Voeg specials toe aan het seizoen waarin ze uitgezonden zijn",
@ -488,7 +488,7 @@
"LabelEpisodeNumber": "Afleveringsnummer:",
"LabelEvent": "Gebeurtenis:",
"LabelEveryXMinutes": "Iedere:",
"LabelExtractChaptersDuringLibraryScan": "Hoofdstukafbeeldingen uitpakken tijdens het scannen van de bibliotheek",
"LabelExtractChaptersDuringLibraryScan": "Hoofdstukafbeeldingen uitpakken tijdens bibliotheekscan",
"LabelExtractChaptersDuringLibraryScanHelp": "Genereer hoofdstuk afbeeldingen wanneer video's geïmporteerd worden tijdens het scannen van de bibliotheek. Zo niet, zullen deze gegenereerd worden tijdens een geplande taak, hierdoor zal reguliere bibliotheek scan sneller voltooien.",
"LabelFailed": "Mislukt",
"LabelFileOrUrl": "Bestand of URL:",
@ -694,7 +694,7 @@
"LabelffmpegPathHelp": "Het pad naar het FFmpeg applicatiebestand, of de folder die FFmpeg bevat.",
"LanNetworksHelp": "Komma-gescheiden lijst van IP-adressen of IP/netmask adressen voor netwerken die als lokaal gezien worden wanneer bandbreedtebeperkingen van toepassing zijn. Indien ingesteld, worden alle overige IP-adressen gezien als externe adressen en zullen worden onderworpen aan de bandbreedte-instellingen voor externe adressen. Indien blanco, zal alleen het subnet van de server als lokaal netwerk gezien worden.",
"Large": "Groot",
"LatestFromLibrary": "Nieuwste {0}",
"LatestFromLibrary": "Onlangs toegevoegd in {0}",
"LearnHowYouCanContribute": "Lees meer over hoe u kunt bijdragen.",
"LibraryAccessHelp": "Selecteer de bibliotheken om met deze gebruiker te delen. Beheerders kunnen alle mappen bewerken via de metadata-beheerder.",
"List": "Lijst",
@ -735,7 +735,7 @@
"MessageConfirmRevokeApiKey": "Weet u zeker dat u deze API-sleutel in wilt trekken? De verbinding van de applicatie met deze server zal plotseling verbroken worden.",
"MessageConfirmShutdown": "Weet u zeker dat u de server wilt afsluiten?",
"MessageContactAdminToResetPassword": "Neem contact op met de serverbeheerder om uw wachtwoord te resetten.",
"MessageCreateAccountAt": "Maak een account bij {0}",
"MessageCreateAccountAt": "Account aanmaken bij {0}",
"MessageDeleteTaskTrigger": "Weet u zeker dat u deze signaal taak wilt verwijderen?",
"MessageDirectoryPickerBSDInstruction": "Voor BSD moet u mogelijk de opslag in uw FreeNAS Jail opzetten, zodat Jellyfin toegang heeft tot uw media.",
"MessageDirectoryPickerLinuxInstruction": "Voor Linux op Arch Linux, CentOS, Debian, Fedora, openSUSE, of Ubuntu, moet u de service-gebruiker ten minste leestoegang tot uw opslaglocaties verlenen.",
@ -750,7 +750,7 @@
"MessageItemsAdded": "Items toegevoegd.",
"MessageLeaveEmptyToInherit": "Leeg laten om instellingen van bovenliggend item of de algemene waarde over te nemen.",
"MessageNoAvailablePlugins": "Geen beschikbare plug-ins.",
"MessageNoMovieSuggestionsAvailable": "Er zijn momenteel geen film suggesties beschikbaar. Begin met het bekijken en waardeer uw films, kom daarna terug om uw aanbevelingen te bekijken.",
"MessageNoMovieSuggestionsAvailable": "Er zijn momenteel geen filmsuggesties beschikbaar. Begin met het bekijken en beoordelen van uw films; kom daarna terug om uw aanbevelingen te bekijken.",
"MessageNoPluginsInstalled": "U heeft geen plug-ins geïnstalleerd.",
"MessageNoTrailersFound": "Installeer het Trailers kanaal om uw film ervaring te verbeteren door middel van het toevoegen van een bibliotheek met internet trailers.",
"MessageNothingHere": "Lijst is leeg.",
@ -821,7 +821,7 @@
"OptionAutomaticallyGroupSeries": "Automatisch series samenvoegen die over meerdere mappen zijn verspreid",
"OptionAutomaticallyGroupSeriesHelp": "Series die verspreid zijn over meerdere mappen binnen deze bibliotheek worden automatisch samengevoegd tot één serie.",
"OptionBluray": "BD",
"OptionCommunityRating": "Algemene Waardering",
"OptionCommunityRating": "Beoordeling gemeenschap",
"OptionCriticRating": "Beoordeling door critici",
"OptionCustomUsers": "Aangepast",
"OptionDaily": "Dagelijks",
@ -841,7 +841,7 @@
"OptionEnableAccessToAllChannels": "Toegang tot alle kanalen inschakelen",
"OptionEnableAccessToAllLibraries": "Toegang tot alle bibliotheken inschakelen",
"OptionEnableExternalContentInSuggestions": "Externe inhoud in suggesties inschakelen",
"OptionEnableExternalContentInSuggestionsHelp": "Laat internet trailers en live-tv-programma's op te nemen binnen de voorgestelde inhoud.",
"OptionEnableExternalContentInSuggestionsHelp": "Laat internettrailers en live-tv-programma's zien binnen de voorgestelde inhoud.",
"OptionEnableForAllTuners": "Inschakelen voor alle tuners",
"OptionEnableM2tsMode": "M2TS-modus inschakelen",
"OptionEnableM2tsModeHelp": "M2TS-modus bij het encoderen naar MPEG-TS inschakelen.",
@ -857,9 +857,9 @@
"OptionHlsSegmentedSubtitles": "HLS gesegmenteerde ondertiteling",
"OptionIgnoreTranscodeByteRangeRequests": "Transcodeer byte range-aanvragen negeren",
"OptionIgnoreTranscodeByteRangeRequestsHelp": "Deze verzoeken worden gehonoreerd, maar zal de byte bereik header worden genegeerd.",
"OptionImdbRating": "IMDb Waardering",
"OptionImdbRating": "Beoordeling IMDb",
"OptionLikes": "Leuk",
"OptionMissingEpisode": "Ontbrekende Afleveringen",
"OptionMissingEpisode": "Ontbrekende afleveringen",
"OptionNew": "Nieuw…",
"OptionOnInterval": "Op interval",
"OptionParentalRating": "Kijkwijzerclassificatie",
@ -879,7 +879,7 @@
"OptionSaveMetadataAsHiddenHelp": "Als u dit wijzigt, is dit van toepassing op nieuwe metagegevens die in de toekomst worden opgeslagen. Bestaande metadatabestanden worden bijgewerkt de volgende keer dat ze door de server worden opgeslagen.",
"OptionSubstring": "Subtekenreeks",
"OptionTrackName": "Naam van Nummer",
"OptionTvdbRating": "TheTVDB Waardering",
"OptionTvdbRating": "Beoordeling TheTVDB",
"OptionUnairedEpisode": "Toekomstige Afleveringen",
"OptionWakeFromSleep": "Uit slaapstand halen",
"OptionWeekdays": "Week dagen",
@ -928,8 +928,8 @@
"Raised": "Verhoogd",
"Rate": "Waardeer",
"RecentlyWatched": "Onlangs bekeken",
"RecommendationBecauseYouLike": "Omdat u {0} leuk vond",
"RecommendationBecauseYouWatched": "Omdat u keek naar {0}",
"RecommendationBecauseYouLike": "Omdat je {0} leuk vindt",
"RecommendationBecauseYouWatched": "Omdat je keek naar {0}",
"RecommendationDirectedBy": "Geregisseerd door {0}",
"RecommendationStarring": "In de hoofdrollen {0}",
"Record": "Opnemen",
@ -941,7 +941,7 @@
"Refresh": "Vernieuwen",
"RefreshDialogHelp": "Metadata wordt vernieuwd op basis van instellingen en internetservices die zijn ingeschakeld in het Dashboard.",
"RefreshMetadata": "Metadata vernieuwen",
"RefreshQueued": "Verversen wachtrij.",
"RefreshQueued": "Verversing in wachtrij.",
"ReleaseDate": "Uitgavedatum",
"RememberMe": "Onthoud mij",
"RemoveFromCollection": "Verwijderen uit collectie",
@ -991,7 +991,7 @@
"Shuffle": "Willekeurig",
"SimultaneousConnectionLimitHelp": "Het maximum aantal toegestane gelijktijdige streams. Geef 0 in voor geen limiet.",
"SkipEpisodesAlreadyInMyLibrary": "Neem geen afleveringen op die al in mijn bibliotheek aanwezig zijn",
"SkipEpisodesAlreadyInMyLibraryHelp": "Afleveringen zullen worden vergeleken met behulp van seizoen en aflevering nummers, indien beschikbaar.",
"SkipEpisodesAlreadyInMyLibraryHelp": "Afleveringen zullen worden vergeleken met behulp van seizoens- en afleveringsnummers, indien beschikbaar.",
"Small": "Klein",
"SmallCaps": "Kleine letters",
"Smaller": "Kleiner",
@ -1017,11 +1017,11 @@
"TabAdvanced": "Geavanceerd",
"TabCatalog": "Catalogus",
"TabDirectPlay": "Direct Afspelen",
"TabLatest": "Nieuwste",
"TabLatest": "Onlangs toegevoegd",
"TabLogs": "Logboeken",
"TabMusic": "Muziek",
"TabMyPlugins": "Mijn plug-ins",
"TabNetworks": "TV-Zenders",
"TabNetworks": "Tv-zenders",
"TabNfoSettings": "NFO Instellingen",
"TabNotifications": "Meldingen",
"TabOther": "Overig",
@ -1029,7 +1029,7 @@
"TabProfiles": "Profielen",
"TabResponses": "Reacties",
"TabScheduledTasks": "Geplande taken",
"TabUpcoming": "Binnenkort op TV",
"TabUpcoming": "Binnenkort",
"Tags": "Labels",
"TagsValue": "Labels: {0}",
"TellUsAboutYourself": "Vertel ons over uzelf",
@ -1045,7 +1045,7 @@
"TrackCount": "{0} nummers",
"Transcoding": "Transcoderen",
"Tuesday": "Dinsdag",
"TvLibraryHelp": "Bekijk de {0}TV naamgeving gids {1}.",
"TvLibraryHelp": "Bekijk de {0}Tv-naamgevingsgids{1}.",
"UninstallPluginConfirmation": "Weet u zeker dat u {0} wilt deïnstalleren?",
"HeaderUninstallPlugin": "Plug-in deïnstalleren",
"Unmute": "Dempen opheffen",
@ -1068,22 +1068,22 @@
"ValueSeconds": "{0} seconden",
"ValueSongCount": "{0} titels",
"ValueSpecialEpisodeName": "Speciaal - {0}",
"ValueTimeLimitMultiHour": "Tijdslimiet: {0} uren",
"ValueTimeLimitMultiHour": "Tijdslimiet: {0} uur",
"ValueTimeLimitSingleHour": "Tijdslimiet: 1 uur",
"Vertical": "Verticaal",
"ViewAlbum": "Bekijk album",
"ViewPlaybackInfo": "Bekijk afspelen info",
"Watched": "Bekeken",
"ViewAlbum": "Album bekijken",
"ViewPlaybackInfo": "Afspeelinfo bekijken",
"Watched": "Gekeken",
"Wednesday": "Woensdag",
"WelcomeToProject": "Welkom bij Jellyfin!",
"WizardCompleted": "Dat is alles wat we nu nodig hebben. Jellyfin is begonnen met het verzamelen van informatie over uw media bibliotheek. Probeer sommige van onze apps en klik dan <b>Finish</b> om het <b>Dashboard</b> te bekijken.",
"Writer": "Scenario",
"XmlDocumentAttributeListHelp": "Deze kenmerken worden toegepast op het hoofd-element van elk XML-antwoord.",
"XmlTvKidsCategoriesHelp": "Programma's met deze categorieën wordt weergegeven als programma's voor kinderen. Scheid meerdere met '|'.",
"XmlTvMovieCategoriesHelp": "Programma's met deze categorieën wordt weergegeven als films. Scheid meerdere met '|'.",
"XmlTvNewsCategoriesHelp": "Programma's met deze categorieën wordt weergegeven als nieuwsprogramma's. Scheid meerdere met '|'.",
"XmlTvPathHelp": "Een pad naar een XML-TV-bestand. Jellyfin zal dit bestand regelmatig lezen en controleren voor updates. U bent verantwoordelijk voor het maken en bijwerken van dit bestand.",
"XmlTvSportsCategoriesHelp": "Programma's met deze categorieën wordt weergegeven als sportprogramma's. Scheid meerdere met '|'.",
"XmlDocumentAttributeListHelp": "Deze kenmerken worden toegepast op het hoofdelement van elk XML-antwoord.",
"XmlTvKidsCategoriesHelp": "Programma's met deze categorieën worden weergegeven als programma's voor kinderen. Scheid meerdere met '|'.",
"XmlTvMovieCategoriesHelp": "Programma's met deze categorieën worden weergegeven als films. Scheid meerdere met '|'.",
"XmlTvNewsCategoriesHelp": "Programma's met deze categorieën worden weergegeven als nieuwsprogramma's. Scheid meerdere met '|'.",
"XmlTvPathHelp": "Een pad naar een XMLTV-bestand. Jellyfin zal dit bestand regelmatig lezen en controleren op updates. U bent verantwoordelijk voor het maken en bijwerken van dit bestand.",
"XmlTvSportsCategoriesHelp": "Programma's met deze categorieën worden weergegeven als sportprogramma's. Scheid meerdere met '|'.",
"Yes": "Ja",
"Yesterday": "Gisteren",
"Albums": "Albums",
@ -1155,7 +1155,7 @@
"Live": "Live",
"OptionDvd": "DVD",
"OptionResElement": "'res' element",
"TV": "TV",
"TV": "Tv",
"LabelTypeMetadataDownloaders": "Metadata-downloaders ({0}):",
"OptionLoginAttemptsBeforeLockout": "Bepaal hoeveel foutieve inlogpogingen kunnen plaatsvinden voordat de gebruiker buitengesloten wordt.",
"Premiere": "Première",
@ -1265,7 +1265,7 @@
"EveryXMinutes": "Elke {0} minuten",
"OnWakeFromSleep": "Op het wakker worden vanuit slaapstand",
"WeeklyAt": "{0}s op {1}",
"DailyAt": "Dagelijks op {0}",
"DailyAt": "Dagelijks om {0}",
"LastSeen": "Laatst gezien {0}",
"PersonRole": "als {0}",
"ListPaging": "{0}-{1} van de {2}",
@ -1292,7 +1292,7 @@
"MessageSyncPlayGroupDoesNotExist": "Kan niet deelnemen aan de groep omdat deze niet bestaat.",
"MessageSyncPlayPlaybackPermissionRequired": "Afspeelrechten vereist.",
"MessageSyncPlayGroupWait": "{0} is aan het bufferen…",
"MessageSyncPlayUserLeft": "{0} i heeft de groep verlaten.",
"MessageSyncPlayUserLeft": "{0} heeft de groep verlaten.",
"MessageSyncPlayUserJoined": "{0} is lid geworden van de groep.",
"MessageSyncPlayDisabled": "SyncPlay uitgeschakeld.",
"MessageSyncPlayEnabled": "SyncPlay ingeschakeld.",
@ -1310,7 +1310,7 @@
"LabelSyncPlayTimeOffset": "Tijd offset met de server:",
"LabelRequireHttps": "HTTPS verplichten",
"LabelStable": "Stabiel",
"LabelChromecastVersion": "Google Cast Versie",
"LabelChromecastVersion": "Google Cast-versie",
"LabelEnableHttpsHelp": "Luisteren op de geconfigureerde HTTPS-poort. Om dit te laten werken moet ook een geldig certificaat worden ingesteld.",
"LabelEnableHttps": "HTTPS inschakelen",
"HeaderSyncPlayEnabled": "SyncPlay ingeschakeld",
@ -1334,7 +1334,7 @@
"EnableBlurHashHelp": "Afbeeldingen die nog worden geladen, worden weergegeven met een unieke tijdelijke aanduiding.",
"EnableBlurHash": "Schakel wazige placeholders voor plaatjes in",
"Writers": "Scenario",
"ViewAlbumArtist": "Bekijk album artiest",
"ViewAlbumArtist": "Albumartiest bekijken",
"MessageAddRepository": "Om een repository toe te voegen klik je op de knop naast de kop, en vul je benodigde informatie in.",
"LabelRepositoryNameHelp": "Een zelf te configureren naam om deze repository te kunnen onderscheiden van andere repositories.",
"LabelRepositoryName": "Repository naam",
@ -1421,8 +1421,8 @@
"Authorize": "Geef toestemming",
"EnableFallbackFontHelp": "Aangepaste alternatieve lettertypen inschakelen. Dit kan foutief renderen van ondertiteling voorkomen.",
"LabelFallbackFontPathHelp": "Geef een pad op waar de fallback lettertypen staan voor het renderen van ASS/SSA ondertitels. De maximum toegestane lettertype omvang is 20MB. Lichtgewicht en web-vriendelijke lettertypen zoals woff2 zijn aanbevolen.",
"EnableFallbackFont": "Fallback lettertypen inschakelen",
"LabelFallbackFontPath": "Fallback map pad:",
"EnableFallbackFont": "Terugvallettertypen inschakelen",
"LabelFallbackFontPath": "Terugvalpad lettertypemap:",
"HeaderSelectFallbackFontPathHelp": "Blader of typ het pad naar de fallback lettertype map die gebruikt moet worden om ASS/SSA ondertitels te renderen.",
"HeaderSelectFallbackFontPath": "Kies fallback lettertype pad",
"OptionMaxActiveSessions": "Stel het maximum aantal gelijktijdige gebruikers sessies in.",
@ -1443,14 +1443,14 @@
"PreferFmp4HlsContainer": "Geef de voorkeur aan fMP4-HLS-mediacontainers",
"LabelSyncPlayInfo": "SyncPlay-informatie",
"LabelOriginalMediaInfo": "Informatie oorspronkelijke media",
"LabelRemuxingInfo": "Remuxing Informatie",
"LabelDirectStreamingInfo": "Direct Streaming Informatie",
"LabelRemuxingInfo": "Remux-informatie",
"LabelDirectStreamingInfo": "Informatie direct streamen",
"LabelTranscodingInfo": "Transcoderingsinformatie",
"LabelVideoInfo": "Video-informatie",
"LabelAudioInfo": "Audio-informatie",
"LabelPlaybackInfo": "Afspeelinformatie",
"RemuxHelp2": "Remux gebruikt zeer weinig verwerkingskracht met een volledig verliesvrije mediakwaliteit.",
"RemuxHelp1": "De media bevindt zich in een niet-ondersteunde bestandscontainer (MKV, AVI, WMV, enz.), maar zowel de videostream als de audiostream zijn compatibel met het apparaat. De media zal direct zonder kwaliteitsverlies verpakt worden voordat ze naar het apparaat wordt gestuurd.",
"RemuxHelp1": "De media bevindt zich in een niet-ondersteunde bestandscontainer (MKV, AVI, WMV, etc.), maar zowel de videostream als de audiostream zijn compatibel met het apparaat. De media zal direct zonder kwaliteitsverlies verpakt worden voordat deze naar het apparaat wordt gestuurd.",
"Remuxing": "Remuxing",
"AspectRatioFill": "Vullen",
"AspectRatioCover": "Hoes",
@ -1484,7 +1484,7 @@
"YoutubeDenied": "Video mag niet worden afgespeeld in een ingevoegde videospeler.",
"YoutubeNotFound": "Video niet gevonden.",
"YoutubePlaybackError": "De aangevraagde video kan niet worden afgespeeld.",
"YoutubeBadRequest": "Foute aanvraag.",
"YoutubeBadRequest": "Foutieve aanvraag.",
"LabelH265Crf": "H.265 encodering CRF:",
"LabelCreateHttpPortMapHelp": "Sta automatische port mapping toe om regels te maken voor HTTP verkeer naast HTTPS verkeer.",
"LabelAutoDiscoveryTracingHelp": "Als dit aan staat, worden alle packets die op de auto discovery port binnenkomen gelogged.",
@ -1508,7 +1508,7 @@
"Framerate": "Beeldsnelheid",
"DisablePlugin": "Uitschakelen",
"EnablePlugin": "Inschakelen",
"DirectPlayHelp": "Het bronbestand is volledig compatibel met deze client, en de sessie ontvangt het bestand zonder wijzigingen.",
"DirectPlayHelp": "Het bronbestand is volledig compatibel met deze client en de sessie ontvangt het bestand zonder wijzigingen.",
"HeaderContinueReading": "Verder lezen",
"LabelSyncPlaySettingsExtraTimeOffset": "Extra tijd offset:",
"LabelSyncPlaySettingsDescription": "Wijzig SyncPlay instellingen",
@ -1561,7 +1561,7 @@
"PreviousChapter": "Vorig hoofdstuk",
"Remixer": "Remixer",
"UseEpisodeImagesInNextUp": "Gebruik afleveringscovers in de secties 'Hierna' en 'Verder kijken'",
"EnableGamepadHelp": "Luister naar input van alle aangesloten controllers.",
"EnableGamepadHelp": "Luister naar input van alle aangesloten controllers. (Vereist weergavemodus 'Tv')",
"VideoCodecNotSupported": "De videocodec wordt niet ondersteund",
"AudioBitrateNotSupported": "De bitrate van de audio wordt niet ondersteund",
"AudioChannelsNotSupported": "Het aantal geluidskanalen wordt niet ondersteund",
@ -1583,7 +1583,7 @@
"Console": "Console",
"LabelAutomaticallyAddToCollection": "Automatisch toevoegen aan collectie",
"TypeOptionPluralVideo": "Video's",
"TypeOptionPluralSeries": "TV-series",
"TypeOptionPluralSeries": "Tv-series",
"TypeOptionPluralSeason": "Seizoenen",
"TypeOptionPluralMusicVideo": "Music Video's",
"TypeOptionPluralMusicArtist": "Muziek Artiesten",
@ -1660,8 +1660,8 @@
"MediaInfoVideoRangeType": "Type videobereik",
"LabelVideoRangeType": "Type videobereik:",
"VideoRangeTypeNotSupported": "Het bereiktype van de video wordt niet ondersteund",
"LabelVppTonemappingContrastHelp": "Pas contrastversterking toe in VPP tonemapping. De aanbevolen en standaardwaarden zijn 1.2 en 1.",
"LabelVppTonemappingContrast": "VPP Tone mapping contrastversterking:",
"LabelVppTonemappingContrastHelp": "Pas contrastversterking toe in VPP-tonemapping. De aanbevolen en standaardwaarden zijn 1.2 en 1.",
"LabelVppTonemappingContrast": "Contrastversterking VPP-tonemapping:",
"LabelVppTonemappingBrightnessHelp": "Pas helderheidsversterking toe in VPP-tonemapping Zowel de aanbevolen als de standaardwaarden zijn 0.",
"LabelVppTonemappingBrightness": "VPP Tone mapping helderheidsversterking:",
"EnableSplashScreen": "Opstartscherm inschakelen",
@ -1685,5 +1685,23 @@
"MessageRenameMediaFolder": "Wanneer u een mediabibliotheek hernoemt, zal alle metadata verloren gaan. Ga voorzichtig te werk.",
"Unreleased": "Nog niet uitgebracht",
"DownloadAll": "Alles downloaden",
"Experimental": "Experimenteel"
"Experimental": "Experimenteel",
"StereoDownmixAlgorithmHelp": "Algoritme dat gebruikt wordt om multikanaals geluid naar stereo te downmixen.",
"LabelStereoDownmixAlgorithm": "Stereo-downmix-algoritme",
"LabelChapterImageResolutionHelp": "De resolutie van de uitgepakte hoofdstukafbeeldingen.",
"LabelDummyChapterDuration": "Interval:",
"LabelDummyChapterCount": "Limiet:",
"LabelDummyChapterCountHelp": "Het maximum aantal hoofdstukafbeeldingen dat wordt opgehaald uit ieder mediabestand.",
"LabelChapterImageResolution": "Resolutie:",
"PreferEmbeddedExtrasTitlesOverFileNames": "Ingesloten titels boven bestandsnamen verkiezen voor extra's",
"PreferEmbeddedExtrasTitlesOverFileNamesHelp": "Extra's hebben vaak dezelfde ingesloten naam als de hoofdinhoud; vink dit aan om toch de ingesloten titels te gebruiken.",
"SaveRecordingImagesHelp": "Afbeeldingen uit EPG-vermeldingen naast media opslaan.",
"SaveRecordingNFO": "EPG-metadata in NFO opslaan",
"SaveRecordingNFOHelp": "Metadata uit de EPG-vermeldingen naast media opslaan.",
"SaveRecordingImages": "EPG-afbeeldingen opslaan",
"HeaderDummyChapter": "Hoofdstukafbeeldingen",
"LabelDummyChapterDurationHelp": "De extractieinterval voor hoofdstukafbeeldingen in seconden.",
"ResolutionMatchSource": "Gelijk aan bron",
"HeaderRecordingMetadataSaving": "Metadata opname",
"SecondarySubtitles": "Secundaire ondertiteling"
}

View file

@ -297,7 +297,7 @@
"HeaderImageOptions": "Opcje obrazu",
"HeaderImageSettings": "Ustawienia obrazów",
"HeaderInstall": "Instalacja",
"HeaderInstantMix": "Szybki remiks",
"HeaderInstantMix": "Szybki miks",
"HeaderKeepRecording": "Zachowaj nagranie",
"HeaderKeepSeries": "Zachowaj nagranie serialu",
"HeaderKodiMetadataHelp": "By aktywować lub dezaktywować metadane NFO, edytuj ustawienia biblioteki w sekcji 'dostawcy metadanych'.",
@ -411,7 +411,7 @@
"Images": "Obrazy",
"ImportFavoriteChannelsHelp": "Jeśli aktywne, tylko kanały oznaczone jako ulubione na tunerze, będą importowane.",
"InstallingPackage": "Instalowanie {0} (wersja {1})",
"InstantMix": "Szybki remiks",
"InstantMix": "Szybki miks",
"ItemCount": "{0} pozycje",
"Items": "Pozycje",
"Kids": "Dla dzieci",
@ -1510,7 +1510,7 @@
"EnablePlugin": "Włącz",
"DirectPlayHelp": "Plik źródłowy jest całkowicie zgodny z tym klientem, a sesja otrzymuje plik bez modyfikacji.",
"HeaderContinueReading": "Kontynuuj czytanie",
"EnableGamepadHelp": "Nasłuchuj sygnałów z każdego z podpiętych kontrolerów.",
"EnableGamepadHelp": "Nasłuchuj sygnałów z każdego z podpiętych kontrolerów. (Wymagane: tryb wyświetlania \"TV\")",
"LabelEnableGamepad": "Włącz obsługę kontrolera do gier",
"Controls": "Sterowanie",
"MessageSent": "Wiadomość została wysłana.",
@ -1686,5 +1686,20 @@
"MessageNoFavoritesAvailable": "Ulubione nie są obecnie dostępne.",
"OptionDateShowAdded": "Data dodania serialu",
"DownloadAll": "Pobierz wszystko",
"Experimental": "Eksperymentalne"
"Experimental": "Eksperymentalne",
"LabelStereoDownmixAlgorithm": "Algorytm Stereo Downmix",
"StereoDownmixAlgorithmHelp": "Algorytm używany do miksowania wielokanałowego dźwięku do stereo.",
"LabelDummyChapterCountHelp": "Maksymalna liczba obrazów rozdziałów, które zostaną wyodrębnione dla każdego pliku multimedialnego.",
"SaveRecordingNFOHelp": "Zapisz metadane od dostawcy list EPG wraz z mediami.",
"HeaderDummyChapter": "Obrazy rozdziału",
"LabelDummyChapterDuration": "Interwał:",
"LabelDummyChapterDurationHelp": "Interwał ekstrakcji obrazu rozdziału w sekundach.",
"LabelDummyChapterCount": "Limit:",
"LabelChapterImageResolution": "Rozdzielczość:",
"LabelChapterImageResolutionHelp": "Rozdzielczość wyodrębnionych obrazów rozdziałów.",
"ResolutionMatchSource": "Źródło dopasowania",
"SaveRecordingNFO": "Zapisz nagrane metadane EPG w NFO",
"SaveRecordingImages": "Zapisywanie obrazów EPG",
"SaveRecordingImagesHelp": "Zapisz obrazy od dostawcy list EPG razem z mediami.",
"HeaderRecordingMetadataSaving": "Nagrywanie metadanych"
}

View file

@ -91,5 +91,7 @@
"Default": "Normal-like",
"ButtonBackspace": "Mistake Erasing Button",
"ButtonClose": "Shut",
"Favorites": "Finest Loot"
"Favorites": "Finest Loot",
"Genres": "types o' booty",
"HeaderAlbumArtists": "Buccaneers o' the musical arts"
}

View file

@ -1536,7 +1536,7 @@
"SubtitleCodecNotSupported": "O codec de legenda não é suportado",
"ContainerNotSupported": "O container não é suportado",
"AudioCodecNotSupported": "O codec de áudio não é suportado",
"EnableGamepadHelp": "Receber comandos de entrada de qualquer controle conectado.",
"EnableGamepadHelp": "Receber comandos de entrada de qualquer controle conectado. (Requer: Modo de Exibição de 'TV')",
"LabelEnableGamepad": "Habilitar Controle",
"Controls": "Controles",
"UseEpisodeImagesInNextUpHelp": "As seções 'Veja a Seguir' e 'Continue Assistindo' utilizarão imagens de episódios como miniaturas ao invés da miniatura principal do vídeo.",
@ -1683,5 +1683,9 @@
"MessageNoItemsAvailable": "Nenhum item está disponível no momento.",
"MessageNoFavoritesAvailable": "Nenhum favorito está disponível no momento.",
"MessageRenameMediaFolder": "Renomear uma biblioteca de mídia fará com que todos metadados se perda, prossiga com cautela.",
"EnableCardLayout": "Exibir cartão visual"
"EnableCardLayout": "Exibir cartão visual",
"StereoDownmixAlgorithmHelp": "Algoritmo usado para fazer o downmix de áudio multicanal para estéreo.",
"LabelStereoDownmixAlgorithm": "Algoritmo Downmix Estéreo",
"Experimental": "Experimental",
"DownloadAll": "Baixar Tudo"
}

View file

@ -1558,7 +1558,7 @@
"SubtitleCodecNotSupported": "Este formato de legendas não é suportado",
"ContainerNotSupported": "Este contentor não é suportado",
"AudioCodecNotSupported": "Este codec de áudio não é suportado",
"EnableGamepadHelp": "Responder a quaisquer comandos de jogos ligados.",
"EnableGamepadHelp": "Responder a quaisquer comandos de jogos ligados. (Requer: Modo de visualização 'TV')",
"LabelEnableGamepad": "Ativar comandos de jogos",
"Controls": "Controlos",
"AllowVppTonemappingHelp": "Tone mapping completo dos drivers da Intel. Vídeos em HDR10 funcionam apenas em certas configurações de hardware. Tem maior prioridade quando comparado a outras implementações OpenCL.",
@ -1675,5 +1675,7 @@
"Interview": "Entrevista",
"DeletedScene": "Cenas removidas",
"BehindTheScenes": "Nos bastidores",
"DownloadAll": "Transferir Todas"
"DownloadAll": "Transferir Todas",
"MessageNoItemsAvailable": "Nenhum item disponível atualmente.",
"MessageNoFavoritesAvailable": "Nenhum favorito disponível atualmente."
}

View file

@ -1353,5 +1353,6 @@
"ButtonSpace": "Espaço",
"ButtonExitApp": "Sair da Aplicação",
"ButtonClose": "Fechar",
"AddToFavorites": "adicionar aos favoritos"
"AddToFavorites": "adicionar aos favoritos",
"DownloadAll": "Descarregar tudo"
}

View file

@ -30,7 +30,7 @@
"AlwaysPlaySubtitlesHelp": "Субтитры, соответствующие настройке языка, будут загружаться независимо от языка аудио.",
"AnyLanguage": "Любой язык",
"Anytime": "В любое время",
"AroundTime": "Около",
"AroundTime": "Около {0}",
"Art": "Вырезка",
"Artists": "Исполнители",
"AsManyAsPossible": "Как можно больше",
@ -79,20 +79,20 @@
"ButtonPreviousTrack": "Предыдущая дорожка",
"ButtonQuickStartGuide": "Руководство по запуску",
"ButtonRefreshGuideData": "Обновить данные телегида",
"ButtonRemove": "Изъять",
"ButtonRemove": "Удалить",
"ButtonRename": "Переименовать",
"ButtonResetEasyPassword": "Сбросить простой PIN-код",
"ButtonResume": "Возобновление",
"ButtonResume": "Возобновить",
"ButtonRevoke": "Отозвать",
"ButtonScanAllLibraries": "Сканировать все медиатеки",
"ButtonSelectDirectory": "Выбрать каталог",
"ButtonSelectView": "Выбрать представление",
"ButtonSend": "Отправить",
"ButtonShutdown": "Завершить работу",
"ButtonSignIn": "Вход",
"ButtonSignIn": "Войти",
"ButtonSignOut": "Выйти",
"ButtonStart": "Запустить",
"ButtonStop": "Стоп",
"ButtonStop": "Остановить",
"ButtonSubmit": "Подтвердить",
"ButtonTogglePlaylist": "Плей-лист",
"ButtonTrailer": "Трейлер",
@ -116,10 +116,10 @@
"ConfirmDeleteImage": "Удалить изображение?",
"ConfirmDeleteItem": "При удалении данного элемента, он удалится и из файловой системы, и из медиатеки. Вы действительно хотите продолжить?",
"ConfirmDeleteItems": "При удалении данных элементов, он удалится и из файловой системы, и из медиатеки. Вы действительно хотите продолжить?",
"ConfirmDeletion": "Подтверждение удаления",
"ConfirmDeletion": "Подтверить удаление",
"ConfirmEndPlayerSession": "Вы хотите завершить работу Jellyfin на {0}?",
"Connect": "Соединиться",
"ContinueWatching": "Продолжение просмотра",
"ContinueWatching": "Продолжить просмотр",
"Continuing": "Продолжаемое",
"Copied": "Скопировано",
"Copy": "Копировать",
@ -155,7 +155,7 @@
"Disconnect": "Разъединиться",
"Display": "Отображение",
"DisplayInMyMedia": "Показывать на главном экране",
"DisplayInOtherHomeScreenSections": "Показывать в разделах главного экрана как \"Новые медиаданные\", \"Продолжение просмотра\"",
"DisplayInOtherHomeScreenSections": "Показывать в разделах главного экрана как \"Новые медиаданные\", \"Продолжить просмотр\"",
"DisplayMissingEpisodesWithinSeasons": "Отображать отсутствующие эпизоды в пределах сезонов",
"DisplayMissingEpisodesWithinSeasonsHelp": "Это также должно быть включено для ТВ-медиатек в конфигурации сервера.",
"DisplayModeHelp": "Выберите желательный стиль разметки для интерфейса.",
@ -204,7 +204,7 @@
"Extras": "Допматериалы",
"FFmpegSavePathNotFound": "Мы не смогли найти FFmpeg по введённому вами пути. FFprobe также необходим и должен быть в той же самой папке. Эти компоненты обычно поставляются вместе в одном загрузочном пакете. Проверьте путь и повторите попытку.",
"FastForward": "Быстро вперёд",
"Favorite": "Избранное",
"Favorite": "Избранный",
"Favorites": "Избранное",
"Features": "Средства",
"File": "Файл",
@ -214,12 +214,12 @@
"Filters": "Фильтры",
"Folders": "Папки",
"FormatValue": "Формат: {0}",
"Friday": "пятница",
"Friday": "Пятница",
"Fullscreen": "Полный экран",
"General": "Общие",
"Genre": "Жанр",
"Genres": "Жанры",
"GroupBySeries": "Группирование по сериалам",
"GroupBySeries": "Сгруппировать по сериалам",
"GroupVersions": "Сгруппировать версии",
"GuestStar": "Приглашенный актёр",
"Guide": "Телегид",
@ -267,7 +267,7 @@
"HeaderContainerProfile": "Профиль контейнера",
"HeaderContainerProfileHelp": "Профили контейнеров обозначают ограничения устройства при воспроизведении определённых форматов. Если применяется ограничение, то медиаданные перекодируются, даже если формат настроен для прямого воспроизведения.",
"HeaderContinueListening": "Продолжение прослушивания",
"HeaderContinueWatching": "Продолжение просмотра",
"HeaderContinueWatching": "Продолжить просмотр",
"HeaderCustomDlnaProfiles": "Настраиваемые профили",
"HeaderDateIssued": "Дата выдачи",
"HeaderDefaultRecordingSettings": "Стандартные параметры записи",
@ -307,11 +307,11 @@
"HeaderKeepRecording": "Продолжать запись",
"HeaderKeepSeries": "Хранение сериала",
"HeaderKodiMetadataHelp": "Для включения или отключения NFO-метаданных, правьте медиатеку и найдите раздел \"Хранители метаданных\".",
"HeaderLatestEpisodes": "Новые эпизоды",
"HeaderLatestMedia": "Новые медиаданные",
"HeaderLatestMovies": "Новые фильмы",
"HeaderLatestMusic": "Новая музыка",
"HeaderLatestRecordings": "Новые записи",
"HeaderLatestEpisodes": "Недавно добавленные эпизоды",
"HeaderLatestMedia": "Недавно добавленные медиаданные",
"HeaderLatestMovies": "Недавно добавленные фильмы",
"HeaderLatestMusic": "Недавно добавленная музыка",
"HeaderLatestRecordings": "Недавно добавленные записи",
"HeaderLibraries": "Медиатеки",
"HeaderLibraryAccess": "Доступ к медиатеке",
"HeaderLibraryFolders": "Медиатечные папки",
@ -409,7 +409,7 @@
"HeaderYears": "Годы",
"Help": "Справка",
"Hide": "Скрыть",
"HideWatchedContentFromLatestMedia": "Скрыть просмотренное содержание в разделе «Новые медиаданные»",
"HideWatchedContentFromLatestMedia": "Скрыть просмотренное содержание в разделе «Недавно добавленные медиаданные»",
"Home": "Главное",
"Horizontal": "Горизонтально",
"HttpsRequiresCert": "Чтобы включить HTTPS для внешних подключений, вам нужно будет предоставить доверенный SSL-cертификат, например, Let's Encrypt. Предоставьте сертификат или отключите защищенные соединения.",
@ -743,7 +743,7 @@
"LabelffmpegPathHelp": "Путь к файлу приложения FFmpeg или к папке содержащей FFmpeg.",
"LanNetworksHelp": "Список разделённых запятыми IP-адресов или записей IP/netmask для сетей, которые будут считаться находящимися в локальной сети, когда принудительно ограничивается пропускная способность. Если так установлено, то все остальные IP-адреса будут считаться находящимися во внешней сети и будут подлежать ограничениям внешней полосы пропускания. Если не заполнять, то считается, что только подсеть сервера находится в локальной сети.",
"Large": "Крупный",
"LatestFromLibrary": "Новые: {0}",
"LatestFromLibrary": "Недавно добавленные в: {0}",
"LearnHowYouCanContribute": "Изучите, как вы можете внести свой вклад.",
"LibraryAccessHelp": "Выделите медиатеки, чтобы дать доступ этому пользователю. Администраторы могут изменять все папки с помощью «Диспетчера метаданных».",
"List": "Список",
@ -1060,7 +1060,7 @@
"ShowIndicatorsFor": "Показывать метки для:",
"ShowTitle": "Отображать название",
"ShowYear": "Отображать год",
"Shows": "Передачи",
"Shows": "Телешоу",
"Shuffle": "Перемешать",
"New": "Новое",
"Filter": "Фильтрать",
@ -1096,7 +1096,7 @@
"TabContainers": "Контейнеры",
"TabDashboard": "Панель",
"TabDirectPlay": "Прямое воспроизведение",
"TabLatest": "Новые",
"TabLatest": "Недавно добавленные",
"TabLogs": "Журналы",
"TabMusic": "Музыка",
"TabMyPlugins": "Мои плагины",
@ -1247,7 +1247,7 @@
"OptionForceRemoteSourceTranscoding": "Перекодировать принудительно удалённые источники медиаданных (нпр., эфирное ТВ)",
"NoCreatedLibraries": "Похоже, вы еще не создали ни одной медиатеки. {0}Желаете создать её сейчас?{1}",
"AskAdminToCreateLibrary": "Попросите администратора создать медиатеку.",
"AllowFfmpegThrottling": "Дросселировать перекодировки",
"AllowFfmpegThrottling": "Ограничить перекодировки",
"PlaybackErrorNoCompatibleStream": "Этот клиент несовместим с медиаданными, а сервер не отправляет медиаданные в совместимом формате.",
"AllowFfmpegThrottlingHelp": "Когда перекодировка или ремуксинг заметно опережают текущую позицию воспроизведения, процесс приостанавливается, чтобы потреблять меньше ресурсов. Это очень полезно, когда вы редко перематываете видео при просмотре. Выключите это, если возникают проблемы с воспроизведением.",
"OnWakeFromSleep": "При пробуждении ото сна",
@ -1281,7 +1281,7 @@
"UnsupportedPlayback": "Jellyfin не может расшифровать содержимое, защищенное DRM, но в любом случае будет предпринята попытка расшифровки всего содержимого, включая защищенные заголовки. Некоторые файлы могут выглядеть полностью черными из-за шифрования или других неподдерживаемых средств, таких как интерактивные заголовки.",
"LabelRequireHttpsHelp": "Если этот флажок установлен, сервер будет автоматически перенаправлять все запросы через HTTP на HTTPS. Это не имеет никакого эффекта, если сервер не слушает HTTPS.",
"LabelEnableHttpsHelp": "Прослушивается указанный HTTPS-порт. Чтобы это вступило в силу, также необходимо предоставить действительный сертификат.",
"ApiKeysCaption": "Список действующих текущих API-ключей",
"ApiKeysCaption": "Список действующих API-ключей",
"SaveChanges": "Изменить",
"LabelRequireHttps": "Требуется HTTPS",
"LabelStable": "Стабильная",
@ -1327,8 +1327,8 @@
"ShowLess": "Показать меньше",
"EnableBlurHashHelp": "Рисунки, которые всё ещё загружаются, будут отображаться с уникальным заполнением.",
"EnableBlurHash": "Включить размытые заполнители для изображений",
"ButtonSyncPlay": "SyncPlay",
"ButtonCast": "Трансляция на устройство",
"ButtonSyncPlay": "Совместный просмотр",
"ButtonCast": "Транслировать на устройство",
"TabRepositories": "Репозитории",
"MessageNoGenresAvailable": "Включаются какие-либо поставщики метаданных для получения жанров из интернета.",
"MessageAddRepository": "Если вы хотите добавить репозиторий, нажмите кнопку рядом с заголовком и заполните необходимую информацию.",
@ -1412,7 +1412,7 @@
"EnableQuickConnect": "Разрешить быстрое подключение",
"EnableAutoCast": "Задать по умолчанию",
"ButtonUseQuickConnect": "Использовать быстрое подключение",
"ButtonActivate": "Активация",
"ButtonActivate": "Активировать",
"Authorize": "Авторизовать",
"LabelUserMaxActiveSessions": "Максимальное количество одновременных пользовательских сессий:",
"OptionMaxActiveSessionsHelp": "Значение 0 отключит эту функцию.",
@ -1510,18 +1510,18 @@
"EnableEnhancedNvdecDecoder": "Включить улучшенный декодер NVDEC",
"DisablePlugin": "Отключить",
"EnablePlugin": "Включить",
"Framerate": -та кадров",
"Framerate": астота кадров",
"DirectPlayHelp": "Исходный файл полностью совместим с этим клиентом, а сеанс получает файл без изменений.",
"HeaderContinueReading": "Продолжение чтения",
"EnableGamepadHelp": "Слушать ввод от любых подключенных контроллеров.",
"EnableGamepadHelp": "Слушать ввод от любых подключенных контроллеров. (Необходим режим отображения \"TV\")",
"LabelEnableGamepad": "Включить Gamepad",
"Controls": "Управление",
"TextSent": "Текст отправлен.",
"MessageSent": "Сообщение отправлено.",
"LabelSlowResponseTime": "Время, после которого ответ считается медленным, мс:",
"LabelSlowResponseEnabled": "Журналировать предупреждающее сообщение, если сервер отвечал медленно",
"UseEpisodeImagesInNextUpHelp": "В разделах \"Следующие серии\" и \"Продолжение просмотра\" будут использоваться как эскизы рисунки эпизодов вместо головного эскиза сериала.",
"UseEpisodeImagesInNextUp": "Использовать рисунки эпизодов в разделах \"Следующие серии\" и \"Продолжение просмотра\"",
"UseEpisodeImagesInNextUpHelp": "В разделах \"Следующие серии\" и \"Продолжить просмотр\" будут использоваться как эскизы рисунки эпизодов вместо головного эскиза сериала.",
"UseEpisodeImagesInNextUp": "Использовать рисунки эпизодов в разделах \"Следующие серии\" и \"Продолжить просмотр\"",
"LabelLocalCustomCss": "Настраиваемый CSS-код для стилизации, применимый только к этому клиенту. Вы можете отключить настраиваемый CSS-код сервера.",
"LabelDisableCustomCss": "Отключает настраиваемый CSS-код для тематирования/брендирования, предоставляемый сервером.",
"DisableCustomCss": "Отключить предоставляемый сервером настраиваемый CSS-код",
@ -1588,7 +1588,7 @@
"Typewriter": "Машинописный",
"Print": "Типографский",
"Larger": "Очень крупный",
"Console": "Консольный",
"Console": "Консоль",
"Casual": "Неформальный",
"TypeOptionPluralVideo": "Видео элементы",
"TypeOptionPluralSeries": "ТВ-передачи",
@ -1603,7 +1603,7 @@
"TypeOptionPluralAudio": "Аудио элементы",
"LabelAutomaticallyAddToCollectionHelp": "Если хотя бы два фильма имеют одинаковое название коллекции, они будут автоматически добавлены в коллекцию.",
"LabelAutomaticallyAddToCollection": "Автоматически добавлять в коллекцию",
"Cursive": "Курсивный",
"Cursive": "Курсив",
"PreferSystemNativeHwDecoder": "Предпочитать из декодеров встроенный в ОС DXVA или аппаратный VA-API",
"LabelHardwareEncodingOptions": "Опции аппаратного кодирования:",
"IntelLowPowerEncHelp": "Энергосберегающее кодирование может оставить ненужную синхронизацию CPU-GPU. В Linux они должны быть отключены, если микропрограмма i915 HuC не настроена.",
@ -1625,7 +1625,7 @@
"BehindTheScenes": "За кадром",
"Trailer": "Трейлер",
"Clip": "Отрывок",
"ButtonExitApp": "Выход из приложения",
"ButtonExitApp": "Выйти из приложения",
"AllowEmbeddedSubtitlesAllowTextOption": "Разрешить текст",
"AllowEmbeddedSubtitlesAllowImageOption": "Разрешить рисунок",
"AllowEmbeddedSubtitlesAllowNoneOption": "Ничего не разрешать",
@ -1685,5 +1685,13 @@
"Unreleased": "Ещё не выпущен",
"OptionDateEpisodeAdded": "Дата добавления эпизода",
"OptionDateShowAdded": "Дата добавления сериала",
"DownloadAll": "Скачать все"
"DownloadAll": "Скачать все",
"StereoDownmixAlgorithmHelp": "Алгоритм используемый для смешивания многоканального аудио в стерео.",
"LabelStereoDownmixAlgorithm": "Алгоритм смешивания стерео",
"Experimental": "Экспериментальные",
"LabelDummyChapterDuration": "Интервал:",
"LabelChapterImageResolution": "Разрешение изображения:",
"HeaderDummyChapter": "Изображения глав",
"LabelDummyChapterCount": "Лимит:",
"HeaderRecordingMetadataSaving": "Метаданные записей"
}

4
src/strings/si.json Normal file
View file

@ -0,0 +1,4 @@
{
"Add": "එක් කරන්න",
"AllLanguages": "සියලු භාෂා"
}

View file

@ -1542,7 +1542,7 @@
"SubtitleCodecNotSupported": "Titulkový kodek nie je podporovaný",
"ContainerNotSupported": "Kontajner nie je podporovaný",
"AudioCodecNotSupported": "Zvukový kodek nie je podporovaný",
"EnableGamepadHelp": "Počúvať na vstupe z pripojených herných ovládačov.",
"EnableGamepadHelp": "Počúvať na vstupe z akýchkoľvek pripojených ovládačov. (Vyžaduje: režim zobrazenia „TV“)",
"LabelEnableGamepad": "Povoliť Gamepad",
"Controls": "Ovládanie",
"UseEpisodeImagesInNextUpHelp": "Sekcie 'Nasleduje' a 'Pokračovať v pozeraní' použijú obrázky epizód ako thumbnaily namiesto primárneho thumbnailu seriálu.",
@ -1684,5 +1684,22 @@
"EnableCardLayout": "Zobraziť vizuálny CardBox",
"MessageNoItemsAvailable": "Momentálne nie sú k dispozícii žiadne položky.",
"MessageNoFavoritesAvailable": "Momentálne nie sú k dispozícii žiadne obľúbené položky.",
"MessageRenameMediaFolder": "Premenovanie knižnice medií zapríčiní stratu všetkých metadát, postupujte s opatrnosťou."
"MessageRenameMediaFolder": "Premenovanie knižnice medií zapríčiní stratu všetkých metadát, postupujte s opatrnosťou.",
"StereoDownmixAlgorithmHelp": "Algoritmus používaný na prevod viackanálového zvuku na stereo.",
"Experimental": "Experimentálne",
"DownloadAll": "Stiahnuť všetko",
"LabelStereoDownmixAlgorithm": "Algoritmus prevodu na stereo",
"HeaderDummyChapter": "Obrázky kapitol",
"LabelDummyChapterDuration": "Interval:",
"LabelDummyChapterCount": "Limit:",
"LabelDummyChapterCountHelp": "Maximálny počet obrázkov kapitol, ktoré budú extrahované pre každý mediálny súbor.",
"LabelChapterImageResolution": "Rozlíšenie:",
"LabelChapterImageResolutionHelp": "Rozlíšenie extrahovaných obrázkov kapitol.",
"ResolutionMatchSource": "Rovnaké ako zdroj",
"SaveRecordingNFOHelp": "Uloží metadáta z EPG položiek sprievodcu spolu s médiami.",
"SaveRecordingImages": "Uložiť obrázky EPG nahrávky",
"LabelDummyChapterDurationHelp": "Interval extrakcie obrázkov kapitol v sekundách.",
"SaveRecordingNFO": "Uložiť metadáta nahrávky zo sprievodcu EPG do NFO",
"SaveRecordingImagesHelp": "Uloží obrázky z EPG položiek sprievodcu spolu s médiami.",
"HeaderRecordingMetadataSaving": "Metadáta nahrávok"
}

View file

@ -1686,5 +1686,18 @@
"StereoDownmixAlgorithmHelp": "Algoritem uporabljen za downmix večkanalnega zvoka v stereo.",
"Experimental": "Poskusno",
"LabelStereoDownmixAlgorithm": "Stereo Downmix algoritem",
"DownloadAll": "Prenesi vse"
"DownloadAll": "Prenesi vse",
"HeaderDummyChapter": "Slike poglavja",
"SaveRecordingNFO": "Shrani posnete EPG metapodatke v NFO",
"SaveRecordingImagesHelp": "Shrani prenešene slike v mapo datoteke.",
"PreferEmbeddedExtrasTitlesOverFileNames": "Raje uporabi vdelane naslove kot imena datotek",
"SaveRecordingNFOHelp": "Shrani metapodatke v isto mapo",
"LabelDummyChapterDuration": "interval:",
"LabelDummyChapterDurationHelp": "Interval ekstrakcije slike poglavja v sekundah.",
"LabelDummyChapterCount": "Limit:",
"LabelDummyChapterCountHelp": "Največje število slik poglavij, ki bodo ekstrahirane za vsako medijsko datoteko.",
"LabelChapterImageResolution": "Resolucija:",
"LabelChapterImageResolutionHelp": "Ločljivost slik poglavij.",
"ResolutionMatchSource": "ujemanje z virom",
"HeaderRecordingMetadataSaving": "Snemanje metapodatkov"
}

View file

@ -1528,7 +1528,7 @@
"SubtitleCodecNotSupported": "Undertextkodeken stöds ej",
"ContainerNotSupported": "Videobehållaren stöds ej",
"AudioCodecNotSupported": "Ljudkodeken stöds ej",
"EnableGamepadHelp": "Leta efter inmatning från vilken ansluten kontroller som helst.",
"EnableGamepadHelp": "Leta efter inmatning från vilken ansluten kontroller som helst. (Kräver: 'TV' Visningsläge)",
"LabelEnableGamepad": "Aktivera Gamepad",
"Controls": "Kontroller",
"UseEpisodeImagesInNextUpHelp": "Sektionerna \"Nästa på tur\" och \"Fortsätt titta på\" kommer att använda avsnittsbilder som miniatyrbilder istället för den primära miniatyrbilden för serien.",
@ -1684,5 +1684,21 @@
"EnableCardLayout": "Visa visuell CardBox",
"MessageNoFavoritesAvailable": "Inga favoriter är för närvarande tillgängliga.",
"MessageRenameMediaFolder": "Vid namnbyte av bibliotek kommer all metadata förloras, fortsätt med försiktighet.",
"DownloadAll": "Ladda ned alla"
"DownloadAll": "Ladda ned alla",
"StereoDownmixAlgorithmHelp": "Algoritm använd för att nedmixa multi-kanalig ljud till stereo.",
"Experimental": "Experimentell",
"LabelStereoDownmixAlgorithm": "Stereo-nedmixalgoritm",
"ResolutionMatchSource": "Matcha Källa",
"SaveRecordingNFO": "Spara inspelningens EPG metadata i NFO",
"SaveRecordingNFOHelp": "Spara metadata från EPG-listningsleverantören tillsammans med media.",
"SaveRecordingImages": "Spara EPG-bilder för inspelningar",
"SaveRecordingImagesHelp": "Spara bilder från EPG-listningsleverantören tillsammans med media.",
"HeaderDummyChapter": "Kapitelbilder",
"LabelDummyChapterDuration": "Intervall :",
"LabelDummyChapterDurationHelp": "Tid mellan insamling av kapitelbilder i sekunder.",
"LabelDummyChapterCount": "Gräns:",
"LabelDummyChapterCountHelp": "Största antal kapitelbilder som kommer hämtas in för varje enskild mediafil.",
"LabelChapterImageResolution": "Upplösning:",
"LabelChapterImageResolutionHelp": "Upplösning för inhämtade kapitelbilder.",
"HeaderRecordingMetadataSaving": "Metadata för inspelning"
}

View file

@ -1673,5 +1673,6 @@
"RememberSubtitleSelections": "Altyazı dilini önceki öğeye göre ayarla",
"TabContainers": "Barındırıcılar",
"OptionDateShowAdded": "Dizi Eklenme Tarihi",
"OptionDateEpisodeAdded": "Bölüm Eklenme Tarihi"
"OptionDateEpisodeAdded": "Bölüm Eklenme Tarihi",
"DownloadAll": "Hepsini indir"
}

View file

@ -8,10 +8,10 @@
"DeathDateValue": "Помер: {0}",
"Favorite": "Обране",
"HeaderDeleteDevice": "Видаліть пристрій",
"HeaderLatestEpisodes": "Нещодавно переглянуті епізоди",
"HeaderLatestMedia": "Нещодавно переглянуті",
"HeaderLatestMovies": "Нещодавні фільми",
"HeaderLatestMusic": "Остання музика",
"HeaderLatestEpisodes": "Нещодавно додані серії",
"HeaderLatestMedia": "Нещодавно додані медіа",
"HeaderLatestMovies": "Нещодавно додані фільми",
"HeaderLatestMusic": "Нещодавно додана музика",
"HeaderSeasons": "Сезони",
"HeaderTracks": "Доріжки",
"HeaderUsers": "Користувачі",
@ -274,7 +274,7 @@
"DrmChannelsNotImported": "Канали з DRM не імпортуватимуться.",
"DisplayModeHelp": "Виберіть бажаний стиль макету інтерфейсу.",
"DisplayMissingEpisodesWithinSeasonsHelp": "Також, це має бути включено для ТВ-медіатек у конфігурації сервера.",
"DisplayInOtherHomeScreenSections": "Показувати на головному екрані такі розділи як \"Останні медіа\" і \"Продовження перегляду\"",
"DisplayInOtherHomeScreenSections": "Відображення в розділах головного екрана, таких як «Нещодавно додані медіа» та «Продовжити перегляд»",
"DeleteDevicesConfirmation": "Ви впевнені, що хочете видалити всі пристрої? Усі інші сеанси будуть завершені. Пристрої знову з’являться, після того як користувач увійде в систему.",
"DeleteAll": "Видалити все",
"Data": "Дані",
@ -583,7 +583,7 @@
"Identify": "Ідентифікувати",
"Horizontal": "Горизонтально",
"Home": "Головна",
"HideWatchedContentFromLatestMedia": "Приховати переглянуте з останніх медіа",
"HideWatchedContentFromLatestMedia": "Приховати переглянутий вміст із «Нещодавно доданих медіа»",
"Hide": "Приховати",
"Help": "Допомога",
"HeaderYears": "Роки",
@ -723,7 +723,7 @@
"HeaderLibraryAccess": "Доступ до медіатеки",
"HeaderLibraryFolders": "Папки медіатеки",
"HeaderLibraryOrder": "Порядок медіатек",
"HeaderLatestRecordings": "Останні записи",
"HeaderLatestRecordings": "Нещодавно додані записи",
"HeaderKodiMetadataHelp": "Щоб увімкнути або вимкнути метадані NFO, відкрийте меню редагування медіатеки та знайдіть розділ \"Збереження метаданих\".",
"HeaderKeepSeries": "Зберегти серіал",
"HeaderKeepRecording": "Продовжуйте записувати",
@ -909,7 +909,7 @@
"LibraryAccessHelp": "Виберіть медіатеки, якими хочете поділитися з цим користувачем. Адміністратори зможуть редагувати всі папки за допомогою менеджера метаданих.",
"LeaveBlankToNotSetAPassword": "Ви можете залишити це поле порожнім, щоб не встановлювати пароль.",
"LearnHowYouCanContribute": "Дізнайтеся, як ви можете зробити свій внесок.",
"LatestFromLibrary": "Нове в {0}",
"LatestFromLibrary": "Нещодавно додано в {0}",
"LastSeen": "Востаннє був {0}",
"Larger": "Більший",
"LabelZipCode": "Індекс:",
@ -1049,7 +1049,7 @@
"LabelSelectFolderGroupsHelp": "Папки, для яких не встановлено прапорець, відображатимуться самі по собі у власному поданні.",
"LabelSeasonNumber": "Номер сезону:",
"LabelScreensaver": "Заставка:",
"LabelScheduledTaskLastRan": "Останній раз запускалося: {0}, час виконання: {1}.",
"LabelScheduledTaskLastRan": "Останній запуск: {0}, час виконання: {1}.",
"LabelSaveLocalMetadata": "Збережіть ілюстрацію в медіа-папках",
"LabelRuntimeMinutes": "Час виконання:",
"LabelRequireHttps": "Вимагати HTTPS",
@ -1284,7 +1284,7 @@
"PackageInstallFailed": "Помилка встановлення {0} (версія {1}).",
"PackageInstallCompleted": "Установлення {0} (версія {1}) завершено.",
"PackageInstallCancelled": "Установлення {0} (версія {1}) скасовано.",
"OtherArtist": "Інший художник",
"OtherArtist": "Інший виконавець",
"OriginalAirDateValue": "Початкова дата ефіру: {0}",
"OptionWakeFromSleep": "Пробудити",
"OptionUnairedEpisode": "Невипущені епізоди",
@ -1329,7 +1329,7 @@
"OptionEnableM2tsMode": "Увімкнути режим M2TS",
"OptionEnableForAllTuners": "Увімкнути для всіх пристроїв тюнера",
"OptionEnableExternalContentInSuggestionsHelp": "Дозволити включати інтернет-трейлери та телепрограми в прямому ефірі до запропонованого вмісту.",
"OptionCaptionInfoExSamsung": "Caption InfoEx (Samsung)",
"OptionCaptionInfoExSamsung": "Функція CaptionInfoEx (Samsung)",
"OptionEnableExternalContentInSuggestions": "Увімкнути зовнішній вміст у пропозиціях",
"OptionEnableAccessToAllLibraries": "Увімкнути доступ до всіх медіатек",
"OptionEnableAccessToAllChannels": "Увімкнути доступ до всіх каналів",
@ -1422,7 +1422,7 @@
"TabMyPlugins": "Мої плагіни",
"TabMusic": "Музика",
"TabLogs": "Журнали",
"TabLatest": "Останні",
"TabLatest": "Нещодавно додані",
"TabDashboard": "Панель",
"TabContainers": "Контейнери",
"TabCodecs": "Кодеки",
@ -1518,7 +1518,7 @@
"SubtitleCodecNotSupported": "Кодек субтитрів не підтримується",
"ContainerNotSupported": "Контейнер не підтримується",
"AudioCodecNotSupported": "Аудіокодек не підтримується",
"EnableGamepadHelp": "Слухайте вхід з будь-яких підключених контролерів.",
"EnableGamepadHelp": "Очікуйте вхідних даних від будь-яких підключених контролерів. (Вимагається: режим відображення «TV»)",
"LabelEnableGamepad": "Увімкнути геймпад",
"Controls": "Елементи керування",
"AllowVppTonemappingHelp": "Повне відображення тонів на основі драйверів Intel. Наразі працює лише на певному обладнанні з відео HDR10. Це має вищий пріоритет порівняно з іншою реалізацією OpenCL.",
@ -1559,8 +1559,8 @@
"XmlTvMovieCategoriesHelp": "Програми з цими категоріями відображатимуться як фільми. Розділіть множинні символом \"|\".",
"XmlTvKidsCategoriesHelp": "Програми з цими категоріями відображатимуться як програми для дітей. Розділіть множинні символом \"|\".",
"XmlDocumentAttributeListHelp": "Ці атрибути застосовуються до кореневого елемента кожної відповіді XML.",
"Writers": "Письменники",
"Writer": "Письменник",
"Writers": "Сценаристи",
"Writer": "Сценарист",
"WizardCompleted": "Це все, що нам зараз потрібно. Jellyfin почав збирати інформацію про вашу медіатеку. Перегляньте деякі з наших програм, а потім натисніть <b>Готово</b>, щоб переглянути <b>інформаційну панель</b>.",
"Whitelist": "Білий список",
"WelcomeToProject": "Ласкаво просимо до Jellyfin!",
@ -1682,5 +1682,23 @@
"MessageRenameMediaFolder": "Перейменування медіа-бібліотеки призведе до втрати всіх метаданих, будьте обережні.",
"EnableCardLayout": "Відобразити візуальний CardBox",
"MessageNoItemsAvailable": "Немає доступних елементив.",
"MessageNoFavoritesAvailable": "Зараз немає доступних улюблених."
"MessageNoFavoritesAvailable": "Зараз немає доступних улюблених.",
"Experimental": "Експериментальний",
"LabelStereoDownmixAlgorithm": "Stereo Downmix алгоритм",
"StereoDownmixAlgorithmHelp": "Алгоритм мікшування багатоканального аудіо у стерео.",
"LabelChapterImageResolutionHelp": "Роздільна здатність витягнутих зображень розділу.",
"PreferEmbeddedExtrasTitlesOverFileNames": "Віддавайте перевагу вбудованим назвам, а не назвам файлів для додаткових функцій",
"PreferEmbeddedExtrasTitlesOverFileNamesHelp": "Додатки часто мають таке ж вбудоване ім’я, що й батьківське, позначте це, щоб усе одно використовувати для них вбудовані заголовки.",
"ResolutionMatchSource": "Джерело відповідності",
"SaveRecordingNFO": "Збережіть метадані EPG запису в NFO",
"SaveRecordingNFOHelp": "Зберігайте метадані від постачальника списків EPG разом із бічними носіями.",
"SaveRecordingImages": "Зберегти записані зображення EPG",
"SaveRecordingImagesHelp": "Зберігайте зображення з постачальника списків EPG разом із носієм.",
"HeaderDummyChapter": "Зображення розділів",
"LabelDummyChapterDuration": "Інтервал:",
"LabelDummyChapterDurationHelp": "Інтервал вилучення зображення розділу в секундах.",
"LabelDummyChapterCount": "Ліміт:",
"LabelDummyChapterCountHelp": "Максимальна кількість зображень розділів, які буде видобуто для кожного медіафайлу.",
"LabelChapterImageResolution": "Роздільна здатність:",
"HeaderRecordingMetadataSaving": "Метадані запису"
}

View file

@ -17,8 +17,8 @@
"HeaderCustomDlnaProfiles": "Hồ sơ khách hàng",
"HeaderFeatureAccess": "Truy cập tính năng:",
"HeaderFrequentlyPlayed": "Phát thường xuyên",
"HeaderLatestEpisodes": "Tập phim mới nhất",
"HeaderLatestMovies": "Phim Gần Nhất",
"HeaderLatestEpisodes": "Tập Phim Thêm Gần Đây",
"HeaderLatestMovies": "Phim Thêm Gần Đây",
"HeaderRecentlyPlayed": "Phát gần đây",
"HeaderStatus": "Trạng thái",
"HeaderSystemDlnaProfiles": "Hồ sơ hệ thống",
@ -67,7 +67,7 @@
"SettingsSaved": "Lưu các cài đặt.",
"Sunday": "Chủ Nhật",
"TabCatalog": "Danh mục",
"TabLatest": "Mới nhất",
"TabLatest": "Thêm Gần Đây",
"TabMyPlugins": "Plugin Của Tôi",
"TabNetworks": "Mạng TV",
"TabProfiles": "Hồ sơ",
@ -214,7 +214,7 @@
"Album": "Album",
"DisplayMissingEpisodesWithinSeasonsHelp": "Cài đặt này phải được bật cho các thư viện TV trong cấu hình máy chủ.",
"DisplayMissingEpisodesWithinSeasons": "Hiển thị những tập phim bị thiếu trong mỗi phần",
"DisplayInOtherHomeScreenSections": "Hiển thị các phần màn hình trang chủ như 'Phương Tiện Mới Nhất' và 'Tiếp Tục Xem'",
"DisplayInOtherHomeScreenSections": "Hiển thị các phần màn hình trang chủ như 'Phương Tiện Thêm Gần Đây' và 'Tiếp Tục Xem'",
"DisplayInMyMedia": "Hiển thị trên trang chính",
"Display": "Hiển thị",
"Disconnect": "Ngắt kết nối",
@ -255,7 +255,7 @@
"HeaderContinueWatching": "Xem Tiếp",
"HeaderContinueListening": "Tiếp Tục Nghe",
"HeaderCodecProfileHelp": "Hồ sơ mã hóa chỉ ra những kiểu mã hoá nhất định mà một thiết bị có thể phát. Nếu một nội dung không thể phát, nó sẽ được chuyển mã, thậm chí nếu kiểu mã hoá đó được cấu hình để phát lại trực tiếp.",
"HeaderContainerProfileHelp": "Hồ sơ định dạng chỉ ra những định dạng nhất định mà một thiết bị có thể phát. Nếu nội dung có định dạng không thể phát, nội dung sẽ được chuyển đổi định dạng, kể cả khi định dạng đó được cấu hình để phát lại trực tiếp.",
"HeaderContainerProfileHelp": "Cấu hình vùng chứa cho biết các giới hạn của thiết bị khi phát các định dạng cụ thể. Nếu giới hạn được áp dụng thì phương tiện sẽ được chuyển mã, ngay cả khi định dạng được định cấu hình để phát lại trực tiếp.",
"HeaderContainerProfile": "Hồ Sơ Định Dạng",
"HeaderConnectionFailure": "Kế Nối Thất Bại",
"HeaderConnectToServer": "Kết Nối Đến Máy Chủ",
@ -382,9 +382,9 @@
"HeaderLibraryFolders": "Thư Mục Thư Viện",
"HeaderLibraryAccess": "Truy Cập Thư Viện",
"HeaderLibraries": "Thư viện",
"HeaderLatestRecordings": "Bản Ghi Âm/Ghi Hình Mới Nhất",
"HeaderLatestMusic": "Âm Nhạc Mới Nhất",
"HeaderLatestMedia": "Nội Dung Mới Nhất",
"HeaderLatestRecordings": "Bản Ghi Thêm Gần Đây",
"HeaderLatestMusic": "Nhạc Thêm Gần Đây",
"HeaderLatestMedia": "Phương Tiện Thêm Gần Đây",
"HeaderKodiMetadataHelp": "Để bật hoặc tắt dữ liệu mô tả NFO, hãy chỉnh sửa thư viện và tìm phần 'Lưu Dữ Liệu Mô Tả'.",
"HeaderKeepSeries": "Lưu Series",
"HeaderKeepRecording": "Tiếp Tục Ghi Âm/Ghi Hình",
@ -526,7 +526,7 @@
"HttpsRequiresCert": "Để bật kết nối bảo mật, bạn cần phải cung cấp một Chứng Chỉ SSL đáng tin cậy, ví dụ như \"Let's Encrypt\". Hãy cung cấp Chứng Chỉ SSL hoặc là tắt tính năng kết nối bảo mật.",
"Horizontal": "Nằm Ngang",
"Home": "Trang chủ",
"HideWatchedContentFromLatestMedia": "Ẩn nội dung đã xem khỏi 'Phương Tiện Mới Nhất'",
"HideWatchedContentFromLatestMedia": "Ẩn nội dung đã xem khỏi 'Phương Tiện Thêm Gần Đây'",
"Hide": "Ẩn",
"Help": "Trợ Giúp",
"HeaderYears": "Năm",
@ -957,7 +957,7 @@
"LibraryAccessHelp": "Chọn thư viện để chia sẻ với người dùng này. Quản trị viên có thể chỉnh sửa các thư mục bằng trình quản lý dữ liệu mô tả.",
"LeaveBlankToNotSetAPassword": "Bạn có thể để trống trường này để không đặt mật khẩu.",
"LearnHowYouCanContribute": "Tìm hiểu cách bạn có thể đóng góp.",
"LatestFromLibrary": "{0} mới nhất",
"LatestFromLibrary": "{0} Đã Thêm Vào Gần Đây",
"Large": "Lớn",
"LanNetworksHelp": "Danh sách địa chỉ IP được phân tách bằng dấu phẩy hoặc mục IP / Mặt nạ mạng cho các mạng sẽ được xem xét trên mạng cục bộ khi thực thi các hạn chế về băng thông. Nếu được đặt, tất cả các địa chỉ IP khác sẽ được coi là thuộc mạng bên ngoài và sẽ phải tuân theo các giới hạn băng thông bên ngoài. Nếu để trống, chỉ mạng con của máy chủ được coi là nằm trên mạng cục bộ.",
"LabelffmpegPathHelp": "Đường dẫn đến tệp ứng dụng FFmpeg hoặc thư mục chứa FFmpeg.",
@ -1510,7 +1510,7 @@
"Framerate": "Tỷ lệ khung hình",
"DirectPlayHelp": "Tệp nguồn hoàn toàn tương thích với ứng dụng khách này và phiên đang nhận tệp mà không có sửa đổi.",
"HeaderContinueReading": "Tiếp Tục Đọc",
"EnableGamepadHelp": "Nghe đầu vào từ bất kỳ bộ điều khiển được kết nối nào.",
"EnableGamepadHelp": "Nghe đầu vào từ bất kỳ bộ điều khiển được kết nối nào. (Yêu cầu: Chế độ hiển thị 'TV')",
"LabelEnableGamepad": "Bật Tay Cầm Chơi Game",
"Controls": "Điều khiển",
"TextSent": "Đã gửi văn bản.",
@ -1680,5 +1680,20 @@
"Experimental": "Trải nghiệm",
"DownloadAll": "Tải Xuống Tất Cả",
"LabelStereoDownmixAlgorithm": "Thuật Toán Trộn Âm Thanh Nổi",
"StereoDownmixAlgorithmHelp": "Thuật toán được sử dụng để trộn âm thanh đa kênh thành âm thanh nổi."
"StereoDownmixAlgorithmHelp": "Thuật toán được sử dụng để trộn âm thanh đa kênh thành âm thanh nổi.",
"LabelDummyChapterDurationHelp": "Khoảng thời gian trích xuất hình ảnh phân đoạn tính bằng giây.",
"LabelChapterImageResolutionHelp": "Độ phân giải của hình ảnh phân đoạn trích xuất.",
"SaveRecordingNFO": "Lưu bản ghi dữ liệu mô tả EPG trong NFO",
"SaveRecordingImagesHelp": "Lưu hình ảnh từ nhà cung cấp danh sách EPG bên cạnh phương tiện.",
"LabelDummyChapterDuration": "Khoảng thời gian:",
"LabelDummyChapterCount": "Giới hạn:",
"LabelDummyChapterCountHelp": "Số lượng hình ảnh phân đoạn tối đa sẽ được trích xuất cho mỗi tệp phương tiện.",
"LabelChapterImageResolution": "Độ phân giải:",
"ResolutionMatchSource": "Giống Như Nguồn",
"SaveRecordingNFOHelp": "Lưu dữ liệu mô tả từ nhà cung cấp danh sách EPG bên cạnh phương tiện.",
"SaveRecordingImages": "Lưu bản ghi hình ảnh EPG",
"PreferEmbeddedExtrasTitlesOverFileNames": "Ưu tiên tiêu đề được nhúng hơn tên tệp cho các tính năng bổ sung",
"PreferEmbeddedExtrasTitlesOverFileNamesHelp": "Phần bổ sung thường có cùng tên được nhúng với phần gốc, hãy kiểm tra điều này để sử dụng các tiêu đề được nhúng cho chúng.",
"HeaderDummyChapter": "Hình Ảnh Phân Đoạn",
"HeaderRecordingMetadataSaving": "Dữ Liệu Mô Tả Bản Ghi"
}

View file

@ -135,7 +135,7 @@
"Disconnect": "断开连接",
"Display": "显示",
"DisplayInMyMedia": "在主屏幕显示",
"DisplayInOtherHomeScreenSections": "在“新媒体”和“继续观看“等主屏幕模块中显示",
"DisplayInOtherHomeScreenSections": "在“媒体”和“继续观看“等主屏幕模块中显示",
"DisplayMissingEpisodesWithinSeasons": "显示每季里缺少的剧集",
"DisplayMissingEpisodesWithinSeasonsHelp": "必须在服务器的 TV 媒体库设置中也启用该功能。",
"DoNotRecord": "不录制",
@ -273,11 +273,11 @@
"HeaderInstall": "安装",
"HeaderInstantMix": "速成合辑",
"HeaderKodiMetadataHelp": "要启用或禁用 NFO 元数据,请编辑库并找到“元数据保护程序”部分。",
"HeaderLatestEpisodes": "新剧集",
"HeaderLatestMedia": "新媒体",
"HeaderLatestMovies": "新电影",
"HeaderLatestMusic": "新音乐",
"HeaderLatestRecordings": "最新录制的节目",
"HeaderLatestEpisodes": "剧集",
"HeaderLatestMedia": "媒体",
"HeaderLatestMovies": "电影",
"HeaderLatestMusic": "音乐",
"HeaderLatestRecordings": "新增录制",
"HeaderLibraries": "媒体库",
"HeaderLibraryAccess": "媒体库访问",
"HeaderLibraryFolders": "媒体文件夹",
@ -368,7 +368,7 @@
"HeaderYears": "年份",
"Help": "帮助",
"Hide": "隐藏",
"HideWatchedContentFromLatestMedia": "隐藏来自“新媒体”的观看内容",
"HideWatchedContentFromLatestMedia": "隐藏来自“媒体”的观看内容",
"Home": "首页",
"HttpsRequiresCert": "要启用安全连接, 您需要提供一个受信任的 SSL 证书, 如 \"Let's Encrypt\"。请提供证书或禁用安全连接。",
"Identify": "识别",
@ -705,7 +705,7 @@
"LabelffmpegPathHelp": "FFmpeg 应用文件或包含 FFmpeg 的文件夹的路径。",
"LanNetworksHelp": "在强制带宽限制时,认作本地网络上的 IP 地址或 IP/网络掩码条目的逗号分隔列表。如果设置此项,所有其它 IP 地址将被视为在外部网络上,并且将受到外部带宽限制。如果保留为空,则只将服务器的子网视为本地网络。",
"Large": "大",
"LatestFromLibrary": "最{0}",
"LatestFromLibrary": "最近添加于 {0}",
"LearnHowYouCanContribute": "了解如何贡献。",
"LibraryAccessHelp": "选择共享给此用户的媒体库。管理员有权使用媒体资料管理器来编辑所有文件夹。",
"List": "列表",
@ -1036,7 +1036,7 @@
"TabContainers": "媒体载体",
"TabDashboard": "控制台",
"TabDirectPlay": "直接播放",
"TabLatest": "新",
"TabLatest": "",
"TabLogs": "日志",
"TabMusic": "音乐",
"TabMyPlugins": "我的插件",
@ -1512,7 +1512,7 @@
"DirectPlayHelp": "源文件与此客户端完全兼容,会话正在接收文件而未做任何修改。",
"Framerate": "帧率",
"HeaderContinueReading": "继续阅读",
"EnableGamepadHelp": "监听来自任何连接的控制器输入。",
"EnableGamepadHelp": "监听来自任何连接的控制器输入。(需开启“电视”模式)",
"LabelEnableGamepad": "启用游戏手柄",
"Controls": "操控",
"TextSent": "文本已发送。",
@ -1686,5 +1686,23 @@
"MessageNoItemsAvailable": "没有可用的项。",
"Unreleased": "暂未发布",
"DownloadAll": "全部下载",
"Experimental": "实验功能"
"Experimental": "实验功能",
"LabelStereoDownmixAlgorithm": "立体声降混算法",
"StereoDownmixAlgorithmHelp": "用于将多声道下降混合为立体声的算法。",
"HeaderRecordingMetadataSaving": "记录元数据",
"LabelDummyChapterDuration": "间隔:",
"LabelDummyChapterDurationHelp": "章节图像提取间隔,以秒为单位。",
"PreferEmbeddedExtrasTitlesOverFileNames": "对额外内容优先使用内置的标题而不是文件名",
"PreferEmbeddedExtrasTitlesOverFileNamesHelp": "额外内容通常与父项有相同的内置标题,勾选此项来对它们使用内置标题。",
"SaveRecordingNFO": "在 NFO 中保存录制的 EPG 元数据",
"SaveRecordingNFOHelp": "将 EPG 列表提供者提供的元数据与媒体一起保存。",
"ResolutionMatchSource": "匹配来源",
"SaveRecordingImagesHelp": "将 EPG 列表提供者提供的图像与媒体一起保存。",
"SaveRecordingImages": "保存录制的 EPG 图像",
"HeaderDummyChapter": "章节图片",
"LabelDummyChapterCount": "限制:",
"LabelDummyChapterCountHelp": "每个媒体文件的最大章节图像提取数。",
"LabelChapterImageResolution": "分辨率:",
"LabelChapterImageResolutionHelp": "提取的章节图像的分辨率。",
"SecondarySubtitles": "次字幕"
}

View file

@ -570,9 +570,9 @@
"LabelAccessStart": "開始時間:",
"LabelAirDays": "播出日期:",
"LabelAirTime": "播出時間:",
"LabelAirsAfterSeason": "已播放劇集季度",
"LabelAirsBeforeEpisode": "集播出前",
"LabelAirsBeforeSeason": "尚未播放劇集季度",
"LabelAirsAfterSeason": "在季度後播出",
"LabelAirsBeforeEpisode": "在集數前播出",
"LabelAirsBeforeSeason": "在季度前播出",
"LabelAlbum": "專輯:",
"LabelAlbumArtHelp": "PN 在 upnp:albumArtURI 裡的 dlna:profileID 屬性用於專輯封面。某些設備不管圖像的尺寸大小,都會要求特定的值。",
"LabelAlbumArtMaxHeight": "專輯封面最大高度:",
@ -1169,7 +1169,7 @@
"LabelOptionalNetworkPathHelp": "如果這個資料夾在網路上分享,提供網路分享路徑可以供其他應用程式直接存取媒體檔案,例如 {0} 或者 {1}。",
"LabelOriginalAspectRatio": "原始長寬比:",
"LabelOverview": "內容概述:",
"LabelParentalRating": "家長分級:",
"LabelParentalRating": "分級:",
"LabelPasswordConfirm": "確認密碼:",
"LabelPasswordResetProvider": "密碼重設提供者:",
"LabelPasswordRecoveryPinCode": "PIN 碼:",
@ -1683,5 +1683,10 @@
"MediaInfoRpuPresentFlag": "杜比視界 rpu 存在標記",
"MediaInfoElPresentFlag": "杜比視界 el 存在標記",
"MediaInfoBlPresentFlag": "杜比視界 bl 存在標記",
"MediaInfoDvBlSignalCompatibilityId": "杜比視界 bl 訊號相容性 id"
"MediaInfoDvBlSignalCompatibilityId": "杜比視界 bl 訊號相容性 id",
"LabelStereoDownmixAlgorithm": "立體聲混縮算法 (Stereo Downmix Algorithm)",
"StereoDownmixAlgorithmHelp": "會將多聲道的音訊混縮為雙聲道的演算法。",
"DownloadAll": "下載全部",
"Experimental": "實驗性",
"HeaderDummyChapter": "章節影像"
}

View file

@ -146,7 +146,26 @@ const config = {
},
{
test: /\.(js|jsx)$/,
exclude: /node_modules[\\/](?!@uupaa[\\/]dynamic-import-polyfill|@jellyfin[\\/]sdk|@remix-run[\\/]router|axios|blurhash|compare-versions|date-fns|dom7|epubjs|flv.js|libarchive.js|marked|react-router|screenfull|ssr-window|swiper)/,
include: [
path.resolve(__dirname, 'node_modules/@jellyfin/libass-wasm'),
path.resolve(__dirname, 'node_modules/@jellyfin/sdk'),
path.resolve(__dirname, 'node_modules/@remix-run/router'),
path.resolve(__dirname, 'node_modules/@uupaa/dynamic-import-polyfill'),
path.resolve(__dirname, 'node_modules/axios'),
path.resolve(__dirname, 'node_modules/blurhash'),
path.resolve(__dirname, 'node_modules/compare-versions'),
path.resolve(__dirname, 'node_modules/date-fns'),
path.resolve(__dirname, 'node_modules/dom7'),
path.resolve(__dirname, 'node_modules/epubjs'),
path.resolve(__dirname, 'node_modules/flv.js'),
path.resolve(__dirname, 'node_modules/libarchive.js'),
path.resolve(__dirname, 'node_modules/marked'),
path.resolve(__dirname, 'node_modules/react-router'),
path.resolve(__dirname, 'node_modules/screenfull'),
path.resolve(__dirname, 'node_modules/ssr-window'),
path.resolve(__dirname, 'node_modules/swiper'),
path.resolve(__dirname, 'src')
],
use: [{
loader: 'babel-loader',
options: {
@ -172,7 +191,11 @@ const config = {
},
/* modules that Babel breaks when transforming to ESM */
{
test: /node_modules[\\/](pdfjs-dist|xmldom)[\\/].*\.js$/,
test: /\.js$/,
include: [
path.resolve(__dirname, 'node_modules/pdfjs-dist'),
path.resolve(__dirname, 'node_modules/xmldom')
],
use: [{
loader: 'babel-loader',
options: {