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 - name: Checkout repository
uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0 uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0
- name: Initialize CodeQL - name: Initialize CodeQL
uses: github/codeql-action/init@a34ca99b4610d924e04c68db79e503e1f79f9f02 # v2.1.39 uses: github/codeql-action/init@32dc499307d133bb5085bae78498c0ac2cf762d5 # v2.2.5
with: with:
languages: ${{ matrix.language }} languages: ${{ matrix.language }}
queries: +security-extended queries: +security-extended
- name: Autobuild - name: Autobuild
uses: github/codeql-action/autobuild@a34ca99b4610d924e04c68db79e503e1f79f9f02 # v2.1.39 uses: github/codeql-action/autobuild@32dc499307d133bb5085bae78498c0ac2cf762d5 # v2.2.5
- name: Perform CodeQL Analysis - 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 runs-on: ubuntu-latest
steps: steps:
- name: Notify as seen - 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: with:
token: ${{ secrets.JF_BOT_TOKEN }} token: ${{ secrets.JF_BOT_TOKEN }}
comment-id: ${{ github.event.comment.id }} 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/escape-html": "1.0.2",
"@types/loadable__component": "5.13.4", "@types/loadable__component": "5.13.4",
"@types/lodash-es": "4.17.6", "@types/lodash-es": "4.17.6",
"@types/react": "17.0.52", "@types/react": "17.0.53",
"@types/react-dom": "17.0.18", "@types/react-dom": "17.0.19",
"@typescript-eslint/eslint-plugin": "5.48.1", "@typescript-eslint/eslint-plugin": "5.52.0",
"@typescript-eslint/parser": "5.48.1", "@typescript-eslint/parser": "5.52.0",
"@uupaa/dynamic-import-polyfill": "1.0.2", "@uupaa/dynamic-import-polyfill": "1.0.2",
"autoprefixer": "10.4.13", "autoprefixer": "10.4.13",
"babel-loader": "9.1.2", "babel-loader": "9.1.2",
@ -30,15 +30,15 @@
"copy-webpack-plugin": "11.0.0", "copy-webpack-plugin": "11.0.0",
"cross-env": "7.0.3", "cross-env": "7.0.3",
"css-loader": "6.7.3", "css-loader": "6.7.3",
"cssnano": "5.1.14", "cssnano": "5.1.15",
"es-check": "7.0.1", "es-check": "7.1.0",
"eslint": "8.32.0", "eslint": "8.34.0",
"eslint-plugin-compat": "4.0.2", "eslint-plugin-compat": "4.1.2",
"eslint-plugin-eslint-comments": "3.2.0", "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-jsx-a11y": "6.7.1",
"eslint-plugin-promise": "6.1.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-react-hooks": "4.6.0",
"eslint-plugin-sonarjs": "0.18.0", "eslint-plugin-sonarjs": "0.18.0",
"expose-loader": "4.0.0", "expose-loader": "4.0.0",
@ -47,19 +47,19 @@
"mini-css-extract-plugin": "2.7.2", "mini-css-extract-plugin": "2.7.2",
"postcss": "8.4.21", "postcss": "8.4.21",
"postcss-loader": "7.0.2", "postcss-loader": "7.0.2",
"postcss-preset-env": "7.8.3", "postcss-preset-env": "8.0.1",
"postcss-scss": "4.0.6", "postcss-scss": "4.0.6",
"sass": "1.57.1", "sass": "1.58.1",
"sass-loader": "13.2.0", "sass-loader": "13.2.0",
"source-map-loader": "4.0.1", "source-map-loader": "4.0.1",
"style-loader": "3.3.1", "style-loader": "3.3.1",
"stylelint": "14.16.1", "stylelint": "14.16.1",
"stylelint-config-rational-order": "0.1.2", "stylelint-config-rational-order": "0.1.2",
"stylelint-no-browser-hacks": "1.2.1", "stylelint-no-browser-hacks": "1.2.1",
"stylelint-order": "6.0.1", "stylelint-order": "6.0.2",
"stylelint-scss": "4.3.0", "stylelint-scss": "4.4.0",
"ts-loader": "9.4.2", "ts-loader": "9.4.2",
"typescript": "4.9.4", "typescript": "4.9.5",
"webpack": "5.75.0", "webpack": "5.75.0",
"webpack-cli": "5.0.1", "webpack-cli": "5.0.1",
"webpack-dev-server": "4.11.1", "webpack-dev-server": "4.11.1",
@ -76,13 +76,13 @@
"@fontsource/noto-sans-tc": "4.5.12", "@fontsource/noto-sans-tc": "4.5.12",
"@jellyfin/libass-wasm": "4.1.1", "@jellyfin/libass-wasm": "4.1.1",
"@jellyfin/sdk": "unstable", "@jellyfin/sdk": "unstable",
"@loadable/component": "5.15.2", "@loadable/component": "5.15.3",
"blurhash": "2.0.4", "blurhash": "2.0.4",
"classlist.js": "https://github.com/eligrey/classList.js/archive/1.2.20180112.tar.gz", "classlist.js": "https://github.com/eligrey/classList.js/archive/1.2.20180112.tar.gz",
"classnames": "2.3.2", "classnames": "2.3.2",
"core-js": "3.27.1", "core-js": "3.28.0",
"date-fns": "2.29.3", "date-fns": "2.29.3",
"dompurify": "2.4.3", "dompurify": "2.4.4",
"epubjs": "0.4.2", "epubjs": "0.4.2",
"escape-html": "1.0.3", "escape-html": "1.0.3",
"fast-text-encoding": "1.0.6", "fast-text-encoding": "1.0.6",
@ -96,17 +96,17 @@
"jstree": "3.3.14", "jstree": "3.3.14",
"libarchive.js": "1.3.0", "libarchive.js": "1.3.0",
"lodash-es": "4.17.21", "lodash-es": "4.17.21",
"marked": "4.2.5", "marked": "4.2.12",
"material-design-icons-iconfont": "6.7.0", "material-design-icons-iconfont": "6.7.0",
"native-promise-only": "0.8.1", "native-promise-only": "0.8.1",
"pdfjs-dist": "2.16.105", "pdfjs-dist": "2.16.105",
"react": "17.0.2", "react": "17.0.2",
"react-dom": "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", "resize-observer-polyfill": "1.5.1",
"screenfull": "6.0.2", "screenfull": "6.0.2",
"sortablejs": "1.15.0", "sortablejs": "1.15.0",
"swiper": "8.4.5", "swiper": "8.4.7",
"webcomponents.js": "0.7.24", "webcomponents.js": "0.7.24",
"whatwg-fetch": "3.6.2", "whatwg-fetch": "3.6.2",
"workbox-core": "6.5.4", "workbox-core": "6.5.4",

View file

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

View file

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

View file

@ -23,6 +23,13 @@
</label> </label>
<div class="fieldDescription checkboxFieldDescription">${PreferEmbeddedTitlesOverFileNamesHelp}</div> <div class="fieldDescription checkboxFieldDescription">${PreferEmbeddedTitlesOverFileNamesHelp}</div>
</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"> <div class="checkboxContainer checkboxContainer-withDescription chkEnableEmbeddedEpisodeInfosContainer hide advanced">
<label> <label>
<input is="emby-checkbox" type="checkbox" id="chkEnableEmbeddedEpisodeInfos" /> <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); const imgUrl = options.imageSource === 'channel' ? getChannelImageUrl(item, downloadWidth) : getImageUrl(item, downloadWidth);
let imageClass = isLargeStyle ? 'listItemImage listItemImage-large' : 'listItemImage'; let imageClass = isLargeStyle ? 'listItemImage listItemImage-large' : 'listItemImage';
if (options.imageSource === 'channel') {
imageClass += ' listItemImage-channel';
}
if (isLargeStyle && layoutManager.tv) { if (isLargeStyle && layoutManager.tv) {
imageClass += ' listItemImage-large-tv'; imageClass += ' listItemImage-large-tv';
} }
@ -428,6 +432,7 @@ import ServerConnections from '../ServerConnections';
container: false, container: false,
episodeTitle: false, episodeTitle: false,
criticRating: false, criticRating: false,
officialRating: false,
endsAt: false endsAt: false
}); });

View file

@ -153,6 +153,10 @@
margin-right: 0.75em; margin-right: 0.75em;
} }
.listItemImage-channel {
background-size: contain;
}
.listItemImageButton { .listItemImageButton {
align-self: center; align-self: center;
justify-self: center; justify-self: center;
@ -316,3 +320,13 @@
.listItemCheckboxContainer { .listItemCheckboxContainer {
width: auto !important; 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 './mediainfo.scss';
import '../guide/programs.scss'; import '../guide/programs.scss';
import '../../elements/emby-button/emby-button'; import '../../elements/emby-button/emby-button';
import * as userSettings from '../../scripts/settings/userSettings';
/* eslint-disable indent */ /* eslint-disable indent */
function getTimerIndicator(item) { 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 { try {
date = datetime.parseISO8601Date(item.StartDate); 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 (options.programIndicator !== false) {
if (item.IsLive) { if (program.IsLive && userSettings.get('guide-indicator-live') === 'true') {
miscInfo.push({ miscInfo.push({
html: `<div class="mediaInfoProgramAttribute mediaInfoItem liveTvProgram">${globalize.translate('Live')}</div>` 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({ miscInfo.push({
html: `<div class="mediaInfoProgramAttribute mediaInfoItem premiereTvProgram">${globalize.translate('Premiere')}</div>` 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({ miscInfo.push({
html: `<div class="mediaInfoProgramAttribute mediaInfoItem newTvProgram">${globalize.translate('New')}</div>` 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({ miscInfo.push({
html: `<div class="mediaInfoProgramAttribute mediaInfoItem repeatTvProgram">${globalize.translate('Repeat')}</div>` html: `<div class="mediaInfoProgramAttribute mediaInfoItem repeatTvProgram">${globalize.translate('Repeat')}</div>`
}); });
} }
} }
if ((item.IsSeries || item.EpisodeTitle) && options.episodeTitle !== false) { if ((program.IsSeries || program.EpisodeTitle) && options.episodeTitle !== false) {
text = itemHelper.getDisplayName(item, { text = itemHelper.getDisplayName(program, {
includeIndexNumber: options.episodeTitleIndexNumber includeIndexNumber: options.episodeTitleIndexNumber
}); });
if (text) { if (text) {
miscInfo.push(escapeHtml(text)); miscInfo.push(escapeHtml(text));
} }
} else if (item.IsMovie && item.ProductionYear && options.originalAirDate !== false) { } else if (program.IsMovie && program.ProductionYear && options.originalAirDate !== false) {
miscInfo.push(item.ProductionYear); miscInfo.push(program.ProductionYear);
} else if (item.PremiereDate && options.originalAirDate !== false) { } else if (program.PremiereDate && options.originalAirDate !== false) {
try { try {
date = datetime.parseISO8601Date(item.PremiereDate); date = datetime.parseISO8601Date(program.PremiereDate);
text = globalize.translate('OriginalAirDateValue', datetime.toLocaleDateString(date)); text = globalize.translate('OriginalAirDateValue', datetime.toLocaleDateString(date));
miscInfo.push(text); miscInfo.push(text);
} catch (e) { } catch (e) {
console.error('error parsing date:', item.PremiereDate); console.error('error parsing date:', program.PremiereDate);
} }
} else if (item.ProductionYear) { } else if (program.ProductionYear && options.year !== false ) {
miscInfo.push(item.ProductionYear); 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') { if (item.Type === 'Audio') {
miscInfo.push(datetime.getDisplayRunningTime(item.RunTimeTicks)); miscInfo.push(datetime.getDisplayRunningTime(item.RunTimeTicks));
} else { } 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({ miscInfo.push({
text: item.OfficialRating, text: item.OfficialRating,
cssClass: 'mediaInfoOfficialRating' cssClass: 'mediaInfoOfficialRating'

View file

@ -422,7 +422,8 @@ function getPlaybackInfo(player,
enableDirectPlay, enableDirectPlay,
enableDirectStream, enableDirectStream,
allowVideoStreamCopy, allowVideoStreamCopy,
allowAudioStreamCopy) { allowAudioStreamCopy,
secondarySubtitleStreamIndex) {
if (!itemHelper.isLocalItem(item) && item.MediaType === 'Audio' && !player.useServerPlaybackInfoForAudio) { if (!itemHelper.isLocalItem(item) && item.MediaType === 'Audio' && !player.useServerPlaybackInfoForAudio) {
return Promise.resolve({ return Promise.resolve({
MediaSources: [ MediaSources: [
@ -462,6 +463,9 @@ function getPlaybackInfo(player,
if (subtitleStreamIndex != null) { if (subtitleStreamIndex != null) {
query.SubtitleStreamIndex = subtitleStreamIndex; query.SubtitleStreamIndex = subtitleStreamIndex;
} }
if (secondarySubtitleStreamIndex != null) {
query.SecondarySubtitleStreamIndex = secondarySubtitleStreamIndex;
}
if (enableDirectPlay != null) { if (enableDirectPlay != null) {
query.EnableDirectPlay = enableDirectPlay; 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) { if (!player) {
throw new Error('player cannot be null'); 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) { if (index == null || index === -1) {
return null; 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 self.subtitleTracks(player).filter(function (s) {
return s.Type === 'Subtitle' && s.Index === index; return s.Type === 'Subtitle' && s.Index === index;
})[0]; })[0];
} };
self.getPlaylist = function (player) { self.getPlaylist = function (player) {
player = player || self._currentPlayer; player = player || self._currentPlayer;
@ -1463,6 +1491,24 @@ class PlaybackManager {
return getPlayerData(player).subtitleStreamIndex; 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) { function getDeliveryMethod(subtitleStream) {
// This will be null for internal subs for local items // This will be null for internal subs for local items
if (subtitleStream.DeliveryMethod) { if (subtitleStream.DeliveryMethod) {
@ -1480,7 +1526,7 @@ class PlaybackManager {
const currentStream = getCurrentSubtitleStream(player); const currentStream = getCurrentSubtitleStream(player);
const newStream = getSubtitleStream(player, index); const newStream = self.getSubtitleStream(player, index);
if (!currentStream && !newStream) { if (!currentStream && !newStream) {
return; return;
@ -1522,9 +1568,48 @@ class PlaybackManager {
player.setSubtitleStreamIndex(selectedTrackElementIndex); 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; 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) { self.supportSubtitleOffset = function (player) {
player = player || self._currentPlayer; player = player || self._currentPlayer;
return player && 'setSubtitleOffset' in player; return player && 'setSubtitleOffset' in player;
@ -1548,7 +1633,7 @@ class PlaybackManager {
}; };
self.isSubtitleStreamExternal = function (index, player) { self.isSubtitleStreamExternal = function (index, player) {
const stream = getSubtitleStream(player, index); const stream = self.getSubtitleStream(player, index);
return stream ? getDeliveryMethod(stream) === 'External' : false; return stream ? getDeliveryMethod(stream) === 'External' : false;
}; };
@ -1639,6 +1724,7 @@ class PlaybackManager {
}).then(function (deviceProfile) { }).then(function (deviceProfile) {
const audioStreamIndex = params.AudioStreamIndex == null ? getPlayerData(player).audioStreamIndex : params.AudioStreamIndex; const audioStreamIndex = params.AudioStreamIndex == null ? getPlayerData(player).audioStreamIndex : params.AudioStreamIndex;
const subtitleStreamIndex = params.SubtitleStreamIndex == null ? getPlayerData(player).subtitleStreamIndex : params.SubtitleStreamIndex; 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); let currentMediaSource = self.currentMediaSource(player);
const apiClient = ServerConnections.getApiClient(currentItem.ServerId); const apiClient = ServerConnections.getApiClient(currentItem.ServerId);
@ -1665,6 +1751,7 @@ class PlaybackManager {
} }
getPlayerData(player).subtitleStreamIndex = subtitleStreamIndex; getPlayerData(player).subtitleStreamIndex = subtitleStreamIndex;
getPlayerData(player).secondarySubtitleStreamIndex = secondarySubtitleStreamIndex;
getPlayerData(player).audioStreamIndex = audioStreamIndex; getPlayerData(player).audioStreamIndex = audioStreamIndex;
getPlayerData(player).maxStreamingBitrate = maxBitrate; getPlayerData(player).maxStreamingBitrate = maxBitrate;
@ -1950,6 +2037,7 @@ class PlaybackManager {
state.PlayState.PlaybackRate = self.getPlaybackRate(player); state.PlayState.PlaybackRate = self.getPlaybackRate(player);
state.PlayState.SubtitleStreamIndex = self.getSubtitleStreamIndex(player); state.PlayState.SubtitleStreamIndex = self.getSubtitleStreamIndex(player);
state.PlayState.SecondarySubtitleStreamIndex = self.getSecondarySubtitleStreamIndex(player);
state.PlayState.AudioStreamIndex = self.getAudioStreamIndex(player); state.PlayState.AudioStreamIndex = self.getAudioStreamIndex(player);
state.PlayState.BufferedRanges = self.getBufferedRanges(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) { if (prevIndex == -1) {
console.debug(`AutoSet ${streamType} - No Stream Set`); console.debug(`AutoSet ${streamType} - No Stream Set`);
if (streamType == 'Subtitle') if (streamType == 'Subtitle') {
mediaSource.DefaultSubtitleStreamIndex = -1; if (isSecondarySubtitle) {
mediaSource.DefaultSecondarySubtitleStreamIndex = -1;
} else {
mediaSource.DefaultSubtitleStreamIndex = -1;
}
}
return; return;
} }
@ -2292,8 +2385,13 @@ class PlaybackManager {
if (bestStreamIndex != null) { if (bestStreamIndex != null) {
console.debug(`AutoSet ${streamType} - Using ${bestStreamIndex} score ${bestStreamScore}.`); console.debug(`AutoSet ${streamType} - Using ${bestStreamIndex} score ${bestStreamScore}.`);
if (streamType == 'Subtitle') if (streamType == 'Subtitle') {
mediaSource.DefaultSubtitleStreamIndex = bestStreamIndex; if (isSecondarySubtitle) {
mediaSource.DefaultSecondarySubtitleStreamIndex = bestStreamIndex;
} else {
mediaSource.DefaultSubtitleStreamIndex = bestStreamIndex;
}
}
if (streamType == 'Audio') if (streamType == 'Audio')
mediaSource.DefaultAudioStreamIndex = bestStreamIndex; mediaSource.DefaultAudioStreamIndex = bestStreamIndex;
} else { } else {
@ -2317,6 +2415,10 @@ class PlaybackManager {
if (subtitle && typeof prevSource.DefaultSubtitleStreamIndex == 'number') { if (subtitle && typeof prevSource.DefaultSubtitleStreamIndex == 'number') {
rankStreamType(prevSource.DefaultSubtitleStreamIndex, prevSource, mediaSource, 'Subtitle'); rankStreamType(prevSource.DefaultSubtitleStreamIndex, prevSource, mediaSource, 'Subtitle');
} }
if (subtitle && typeof prevSource.DefaultSecondarySubtitleStreamIndex == 'number') {
rankStreamType(prevSource.DefaultSecondarySubtitleStreamIndex, prevSource, mediaSource, 'Subtitle', true);
}
} catch (e) { } catch (e) {
console.error(`AutoSet - Caught unexpected error: ${e}`); console.error(`AutoSet - Caught unexpected error: ${e}`);
} }
@ -2384,6 +2486,19 @@ class PlaybackManager {
const user = await apiClient.getCurrentUser(); const user = await apiClient.getCurrentUser();
autoSetNextTracks(prevSource, mediaSource, user.Configuration.RememberAudioSelections, user.Configuration.RememberSubtitleSelections); 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); const streamInfo = createStreamInfo(apiClient, item.MediaType, item, mediaSource, startPosition, player);
streamInfo.fullscreen = playOptions.fullscreen; streamInfo.fullscreen = playOptions.fullscreen;
@ -2751,7 +2866,8 @@ class PlaybackManager {
return { return {
...prevSource, ...prevSource,
DefaultAudioStreamIndex: prevPlayerData.audioStreamIndex, DefaultAudioStreamIndex: prevPlayerData.audioStreamIndex,
DefaultSubtitleStreamIndex: prevPlayerData.subtitleStreamIndex DefaultSubtitleStreamIndex: prevPlayerData.subtitleStreamIndex,
DefaultSecondarySubtitleStreamIndex: prevPlayerData.secondarySubtitleStreamIndex
}; };
} }
@ -2910,9 +3026,11 @@ class PlaybackManager {
if (mediaSource) { if (mediaSource) {
playerData.audioStreamIndex = mediaSource.DefaultAudioStreamIndex; playerData.audioStreamIndex = mediaSource.DefaultAudioStreamIndex;
playerData.subtitleStreamIndex = mediaSource.DefaultSubtitleStreamIndex; playerData.subtitleStreamIndex = mediaSource.DefaultSubtitleStreamIndex;
playerData.secondarySubtitleStreamIndex = mediaSource.DefaultSecondarySubtitleStreamIndex;
} else { } else {
playerData.audioStreamIndex = null; playerData.audioStreamIndex = null;
playerData.subtitleStreamIndex = null; playerData.subtitleStreamIndex = null;
playerData.secondarySubtitleStreamIndex = null;
} }
self._playNextAfterEnded = true; self._playNextAfterEnded = true;

View file

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

View file

@ -203,8 +203,6 @@ import confirm from '../../components/confirm/confirm';
apiClient.getSystemInfo().then(function (systemInfo) { apiClient.getSystemInfo().then(function (systemInfo) {
view.querySelector('#serverName').innerText = globalize.translate('DashboardServerName', systemInfo.ServerName); view.querySelector('#serverName').innerText = globalize.translate('DashboardServerName', systemInfo.ServerName);
view.querySelector('#versionNumber').innerText = globalize.translate('DashboardVersionNumber', systemInfo.Version); 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) { if (systemInfo.CanSelfRestart) {
view.querySelector('#btnRestartServer').classList.remove('hide'); view.querySelector('#btnRestartServer').classList.remove('hide');

View file

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

View file

@ -1,4 +1,5 @@
import 'jquery'; import 'jquery';
import loading from '../../components/loading/loading'; import loading from '../../components/loading/loading';
import globalize from '../../scripts/globalize'; import globalize from '../../scripts/globalize';
import '../../elements/emby-checkbox/emby-checkbox'; import '../../elements/emby-checkbox/emby-checkbox';
@ -35,6 +36,7 @@ import alert from '../../components/alert';
config.MetadataPath = $('#txtMetadataPath', form).val(); config.MetadataPath = $('#txtMetadataPath', form).val();
config.MetadataNetworkPath = $('#txtMetadataNetworkPath', form).val(); config.MetadataNetworkPath = $('#txtMetadataNetworkPath', form).val();
config.QuickConnectAvailable = form.querySelector('#chkQuickConnectAvailable').checked; config.QuickConnectAvailable = form.querySelector('#chkQuickConnectAvailable').checked;
ApiClient.updateServerConfiguration(config).then(function() { ApiClient.updateServerConfiguration(config).then(function() {
ApiClient.getNamedConfiguration(brandingConfigKey).then(function(brandingConfig) { ApiClient.getNamedConfiguration(brandingConfigKey).then(function(brandingConfig) {
brandingConfig.LoginDisclaimer = form.querySelector('#txtLoginDisclaimer').value; 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 'jquery';
import loading from '../../components/loading/loading'; import loading from '../../components/loading/loading';
import libraryMenu from '../../scripts/libraryMenu'; import libraryMenu from '../../scripts/libraryMenu';
import globalize from '../../scripts/globalize'; import globalize from '../../scripts/globalize';
import '../../components/listview/listview.scss';
import Dashboard from '../../utils/dashboard'; 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 */ /* eslint-disable indent */
function populateLanguages(select) { function populateLanguages(select) {
@ -32,11 +57,21 @@ import Dashboard from '../../utils/dashboard';
} }
function loadPage(page) { 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) { Promise.all(promises).then(function(responses) {
const config = responses[0]; const config = responses[0];
page.querySelector('#selectLanguage').value = config.PreferredMetadataLanguage || ''; page.querySelector('#selectLanguage').value = config.PreferredMetadataLanguage || '';
page.querySelector('#selectCountry').value = config.MetadataCountryCode || ''; 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(); loading.hide();
}); });
} }
@ -47,6 +82,9 @@ import Dashboard from '../../utils/dashboard';
ApiClient.getServerConfiguration().then(function(config) { ApiClient.getServerConfiguration().then(function(config) {
config.PreferredMetadataLanguage = form.querySelector('#selectLanguage').value; config.PreferredMetadataLanguage = form.querySelector('#selectLanguage').value;
config.MetadataCountryCode = form.querySelector('#selectCountry').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); ApiClient.updateServerConfiguration(config).then(Dashboard.processServerConfigurationUpdateResult);
}); });
return false; return false;

View file

@ -5,19 +5,42 @@
<div class="content-primary"> <div class="content-primary">
<form class="metadataImagesConfigurationForm"> <form class="metadataImagesConfigurationForm">
<h2 style="margin-top:0;">${HeaderPreferredMetadataLanguage}</h2> <div class="verticalSection">
<h2 style="margin-top:0;">${HeaderPreferredMetadataLanguage}</h2>
<p style="margin:1.5em 0;">${DefaultMetadataLangaugeDescription}</p> <p style="margin:1.5em 0;">${DefaultMetadataLangaugeDescription}</p>
<div class="selectContainer"> <div class="selectContainer">
<select is="emby-select" id="selectLanguage" required="required" label="${LabelLanguage}"></select> <select is="emby-select" id="selectLanguage" required="required" label="${LabelLanguage}"></select>
</div>
<div class="selectContainer">
<select is="emby-select" id="selectCountry" required="required" label="${LabelCountry}"></select>
</div>
</div> </div>
<div class="selectContainer"> <div class="verticalSection">
<select is="emby-select" id="selectCountry" required="required" label="${LabelCountry}"></select> <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> </div>
<br /> <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> </form>
</div> </div>

View file

@ -143,13 +143,18 @@
<div class="writersLabel label"></div> <div class="writersLabel label"></div>
<div class="writers content focuscontainer-x"></div> <div class="writers content focuscontainer-x"></div>
</div> </div>
<div class="detailsGroupItem studiosGroup hide">
<div class="studiosLabel label"></div>
<div class="studios content focuscontainer-x"></div>
</div>
</div> </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> <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>
<div class="collectionItems hide"></div> <div class="collectionItems hide"></div>

View file

@ -96,33 +96,26 @@ function getContextMenuOptions(item, user, button) {
}; };
} }
function getProgramScheduleHtml(items) { function getProgramScheduleHtml(items, action = 'none') {
let html = ''; return listView.getListViewHtml({
html += '<div is="emby-itemscontainer" class="itemsContainer vertical-list" data-contextmenu="false">';
html += listView.getListViewHtml({
items: items, items: items,
enableUserDataButtons: false, enableUserDataButtons: false,
image: true, image: true,
imageSource: 'channel', imageSource: 'channel',
showProgramDateTime: true, showProgramDateTime: true,
showChannel: false, showChannel: false,
mediaInfo: false, mediaInfo: true,
action: 'none', runtime: false,
action,
moreButton: false, moreButton: false,
recordButton: false recordButton: false
}); });
html += '</div>';
return html;
} }
function renderSeriesTimerSchedule(page, apiClient, seriesTimerId) { function renderSeriesTimerSchedule(page, apiClient, seriesTimerId) {
apiClient.getLiveTvTimers({ apiClient.getLiveTvTimers({
UserId: apiClient.getCurrentUserId(), UserId: apiClient.getCurrentUserId(),
ImageTypeLimit: 1, ImageTypeLimit: 1,
EnableImageTypes: 'Primary,Backdrop,Thumb',
SortBy: 'StartDate', SortBy: 'StartDate',
EnableTotalRecordCount: false, EnableTotalRecordCount: false,
EnableUserData: false, EnableUserData: false,
@ -134,7 +127,7 @@ function renderSeriesTimerSchedule(page, apiClient, seriesTimerId) {
} }
const html = getProgramScheduleHtml(result.Items); const html = getProgramScheduleHtml(result.Items);
const scheduleTab = page.querySelector('.seriesTimerSchedule'); const scheduleTab = page.querySelector('#seriesTimerSchedule');
scheduleTab.innerHTML = html; scheduleTab.innerHTML = html;
imageLoader.lazyChildren(scheduleTab); 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); hideAll(page, 'btnCancelSeriesTimer', true);
renderSeriesTimerSchedule(page, apiClient, item.Id); renderSeriesTimerSchedule(page, apiClient, item.Id);
return; return;
} }
page.querySelector('.seriesTimerScheduleSection').classList.add('hide'); page.querySelector('#seriesTimerScheduleSection').classList.add('hide');
hideAll(page, 'btnCancelSeriesTimer'); hideAll(page, 'btnCancelSeriesTimer');
} }
@ -184,34 +177,7 @@ function renderTrackSelections(page, instance, item, forceReload) {
return; return;
} }
let mediaSources = item.MediaSources; const 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);
});
instance._currentPlaybackMediaSources = mediaSources; instance._currentPlaybackMediaSources = mediaSources;
page.querySelector('.trackSelections').classList.remove('hide'); 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) { function renderMiscInfo(page, item) {
const primaryItemMiscInfo = page.querySelectorAll('.itemMiscInfo-primary'); const primaryItemMiscInfo = page.querySelectorAll('.itemMiscInfo-primary');
@ -1079,6 +1068,7 @@ function renderDetails(page, item, apiClient, context, isStatic) {
renderMoreFromSeason(page, item, apiClient); renderMoreFromSeason(page, item, apiClient);
renderMoreFromArtist(page, item, apiClient); renderMoreFromArtist(page, item, apiClient);
renderDirector(page, item, context); renderDirector(page, item, context);
renderStudio(page, item, context);
renderWriter(page, item, context); renderWriter(page, item, context);
renderGenres(page, item, context); renderGenres(page, item, context);
renderChannelGuide(page, apiClient, item); renderChannelGuide(page, apiClient, item);
@ -1599,13 +1589,13 @@ function renderSeriesSchedule(page, item) {
const apiClient = ServerConnections.getApiClient(item.ServerId); const apiClient = ServerConnections.getApiClient(item.ServerId);
apiClient.getLiveTvPrograms({ apiClient.getLiveTvPrograms({
UserId: apiClient.getCurrentUserId(), UserId: apiClient.getCurrentUserId(),
ImageTypeLimit: 1,
HasAired: false, HasAired: false,
SortBy: 'StartDate', SortBy: 'StartDate',
EnableTotalRecordCount: false, EnableTotalRecordCount: false,
EnableImages: false,
ImageTypeLimit: 0,
Limit: 50, Limit: 50,
EnableUserData: false, EnableUserData: false,
Fields: 'ChannelInfo,ChannelImage',
LibrarySeriesId: item.Id LibrarySeriesId: item.Id
}).then(function (result) { }).then(function (result) {
if (result.Items.length) { if (result.Items.length) {
@ -1614,17 +1604,11 @@ function renderSeriesSchedule(page, item) {
page.querySelector('#seriesScheduleSection').classList.add('hide'); page.querySelector('#seriesScheduleSection').classList.add('hide');
} }
page.querySelector('#seriesScheduleList').innerHTML = listView.getListViewHtml({ const html = getProgramScheduleHtml(result.Items, 'programdialog');
items: result.Items, const scheduleTab = page.querySelector('#seriesScheduleList');
enableUserDataButtons: false, scheduleTab.innerHTML = html;
showParentTitle: false, imageLoader.lazyChildren(scheduleTab);
image: false,
showProgramDateTime: true,
mediaInfo: false,
showTitle: true,
moreButton: false,
action: 'programdialog'
});
loading.hide(); loading.hide();
}); });
} }

View file

@ -92,6 +92,25 @@
<div class="fieldDescription">${LabelPostProcessorArgumentsHelp}</div> <div class="fieldDescription">${LabelPostProcessorArgumentsHelp}</div>
</div> </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 /> <br />
<div> <div>
<button is="emby-button" type="submit" class="raised button-submit block"><span>${Save}</span></button> <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('#txtSeriesRecordingPath').value = config.SeriesRecordingPath || '';
page.querySelector('#txtPostProcessor').value = config.RecordingPostProcessor || ''; page.querySelector('#txtPostProcessor').value = config.RecordingPostProcessor || '';
page.querySelector('#txtPostProcessorArguments').value = config.RecordingPostProcessorArguments || ''; page.querySelector('#txtPostProcessorArguments').value = config.RecordingPostProcessorArguments || '';
page.querySelector('#chkSaveRecordingNFO').checked = config.SaveRecordingNFO;
page.querySelector('#chkSaveRecordingImages').checked = config.SaveRecordingImages;
loading.hide(); loading.hide();
} }
@ -36,6 +38,8 @@ function onSubmit() {
config.PostPaddingSeconds = 60 * $('#txtPostPaddingMinutes', form).val(); config.PostPaddingSeconds = 60 * $('#txtPostPaddingMinutes', form).val();
config.RecordingPostProcessor = $('#txtPostProcessor', form).val(); config.RecordingPostProcessor = $('#txtPostProcessor', form).val();
config.RecordingPostProcessorArguments = $('#txtPostProcessorArguments', 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 () { ApiClient.updateNamedConfiguration('livetv', config).then(function () {
Dashboard.processServerConfigurationUpdateResult(); Dashboard.processServerConfigurationUpdateResult();
showSaveMessage(recordingPathChanged); showSaveMessage(recordingPathChanged);

View file

@ -787,12 +787,18 @@ import { setBackdropTransparency, TRANSPARENCY_LEVEL } from '../../../components
nowPlayingPositionText.classList.add('hide'); nowPlayingPositionText.classList.add('hide');
} }
const leftTicks = runtimeTicks - positionTicks; if (userSettings.enableVideoRemainingTime()) {
if (leftTicks >= 0) { const leftTicks = runtimeTicks - positionTicks;
updateTimeText(nowPlayingDurationText, leftTicks); if (leftTicks >= 0) {
nowPlayingDurationText.classList.remove('hide'); updateTimeText(nowPlayingDurationText, leftTicks);
nowPlayingDurationText.innerHTML = '-' + nowPlayingDurationText.innerHTML;
nowPlayingDurationText.classList.remove('hide');
} else {
nowPlayingPositionText.classList.add('hide');
}
} else { } else {
nowPlayingPositionText.classList.add('hide'); updateTimeText(nowPlayingDurationText, runtimeTicks);
nowPlayingDurationText.classList.remove('hide');
} }
} }
} }
@ -871,6 +877,15 @@ import { setBackdropTransparency, TRANSPARENCY_LEVEL } from '../../../components
elem.innerHTML = html; 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() { function onSettingsButtonClick() {
const btn = this; 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() { function showSubtitleTrackSelection() {
const player = currentPlayer; const player = currentPlayer;
const streams = playbackManager.subtitleTracks(player); const streams = playbackManager.subtitleTracks(player);
const secondaryStreams = playbackManager.secondarySubtitleTracks(player);
let currentIndex = playbackManager.getSubtitleStreamIndex(player); let currentIndex = playbackManager.getSubtitleStreamIndex(player);
if (currentIndex == null) { if (currentIndex == null) {
@ -998,6 +1061,29 @@ import { setBackdropTransparency, TRANSPARENCY_LEVEL } from '../../../components
return opt; 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; const positionTo = this;
import('../../../components/actionSheet/actionSheet').then(({default: actionsheet}) => { import('../../../components/actionSheet/actionSheet').then(({default: actionsheet}) => {
@ -1006,10 +1092,18 @@ import { setBackdropTransparency, TRANSPARENCY_LEVEL } from '../../../components
items: menuItems, items: menuItems,
positionTo: positionTo positionTo: positionTo
}).then(function (id) { }).then(function (id) {
const index = parseInt(id); if (id === 'secondarysubtitle') {
try {
showSecondarySubtitlesMenu(actionsheet, positionTo);
} catch (e) {
console.error(e);
}
} else {
const index = parseInt(id);
if (index !== currentIndex) { if (index !== currentIndex) {
playbackManager.setSubtitleStreamIndex(index, player); playbackManager.setSubtitleStreamIndex(index, player);
}
} }
toggleSubtitleSync(); toggleSubtitleSync();
@ -1330,6 +1424,8 @@ import { setBackdropTransparency, TRANSPARENCY_LEVEL } from '../../../components
nowPlayingPositionSlider.classList.add('focusable'); nowPlayingPositionSlider.classList.add('focusable');
} }
nowPlayingDurationText.addEventListener('click', nowPlayingDurationTextClick);
view.addEventListener('viewbeforeshow', function () { view.addEventListener('viewbeforeshow', function () {
headerElement.classList.add('osdHeader'); headerElement.classList.add('osdHeader');
setBackdropTransparency(TRANSPARENCY_LEVEL.Full); setBackdropTransparency(TRANSPARENCY_LEVEL.Full);

View file

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

View file

@ -284,11 +284,11 @@ import './login.scss';
loading.hide(); loading.hide();
}); });
apiClient.getJSON(apiClient.getUrl('Branding/Configuration')).then(function (options) { 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.rel = 'noopener noreferrer';
elem.target = '_blank'; elem.target = '_blank';
elem.classList.add('button-link'); elem.classList.add('button-link');

View file

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

View file

@ -74,6 +74,7 @@ function init() {
autoFocuser.enable(); autoFocuser.enable();
Events.on(ServerConnections, 'localusersignedin', globalize.updateCurrentCulture); 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 = () => { const handleUserChange = () => {
handleStyleChange(); handleStyleChange();
handleLanguageChange();
}; };
Events.on(ServerConnections, 'localusersignedin', handleUserChange); Events.on(ServerConnections, 'localusersignedin', handleUserChange);
@ -243,8 +237,6 @@ async function onAppReady() {
Events.on(currentSettings, 'change', (e, prop) => { Events.on(currentSettings, 'change', (e, prop) => {
if (prop == 'disableCustomCss' || prop == 'customCss') { if (prop == 'disableCustomCss' || prop == 'customCss') {
handleStyleChange(); handleStyleChange();
} else if (prop == 'language') {
handleLanguageChange();
} }
}); });

View file

@ -155,6 +155,9 @@ function tryRemoveElement(elem) {
return profileBuilder({}); return profileBuilder({});
} }
const PRIMARY_TEXT_TRACK_INDEX = 0;
const SECONDARY_TEXT_TRACK_INDEX = 1;
export class HtmlVideoPlayer { export class HtmlVideoPlayer {
/** /**
* @type {string} * @type {string}
@ -178,7 +181,6 @@ function tryRemoveElement(elem) {
* @type {boolean} * @type {boolean}
*/ */
isFetching = false; isFetching = false;
/** /**
* @type {HTMLDivElement | null | undefined} * @type {HTMLDivElement | null | undefined}
*/ */
@ -187,6 +189,10 @@ function tryRemoveElement(elem) {
* @type {number | undefined} * @type {number | undefined}
*/ */
#subtitleTrackIndexToSetOnPlaying; #subtitleTrackIndexToSetOnPlaying;
/**
* @type {number | undefined}
*/
#secondarySubtitleTrackIndexToSetOnPlaying;
/** /**
* @type {number | null} * @type {number | null}
*/ */
@ -207,6 +213,10 @@ function tryRemoveElement(elem) {
* @type {number | undefined} * @type {number | undefined}
*/ */
#customTrackIndex; #customTrackIndex;
/**
* @type {number | undefined}
*/
#customSecondaryTrackIndex;
/** /**
* @type {boolean | undefined} * @type {boolean | undefined}
*/ */
@ -215,14 +225,26 @@ function tryRemoveElement(elem) {
* @type {number | undefined} * @type {number | undefined}
*/ */
#currentTrackOffset; #currentTrackOffset;
/**
* @type {HTMLElement | null | undefined}
*/
#secondaryTrackOffset;
/** /**
* @type {HTMLElement | null | undefined} * @type {HTMLElement | null | undefined}
*/ */
#videoSubtitlesElem; #videoSubtitlesElem;
/**
* @type {HTMLElement | null | undefined}
*/
#videoSecondarySubtitlesElem;
/** /**
* @type {any | null | undefined} * @type {any | null | undefined}
*/ */
#currentTrackEvents; #currentTrackEvents;
/**
* @type {any | null | undefined}
*/
#currentSecondaryTrackEvents;
/** /**
* @type {string[] | undefined} * @type {string[] | undefined}
*/ */
@ -448,18 +470,39 @@ function tryRemoveElement(elem) {
destroyFlvPlayer(this); destroyFlvPlayer(this);
destroyCastPlayer(this); destroyCastPlayer(this);
let secondaryTrackValid = true;
this.#subtitleTrackIndexToSetOnPlaying = options.mediaSource.DefaultSubtitleStreamIndex == null ? -1 : options.mediaSource.DefaultSubtitleStreamIndex; this.#subtitleTrackIndexToSetOnPlaying = options.mediaSource.DefaultSubtitleStreamIndex == null ? -1 : options.mediaSource.DefaultSubtitleStreamIndex;
if (this.#subtitleTrackIndexToSetOnPlaying != null && this.#subtitleTrackIndexToSetOnPlaying >= 0) { if (this.#subtitleTrackIndexToSetOnPlaying != null && this.#subtitleTrackIndexToSetOnPlaying >= 0) {
const initialSubtitleStream = options.mediaSource.MediaStreams[this.#subtitleTrackIndexToSetOnPlaying]; const initialSubtitleStream = options.mediaSource.MediaStreams[this.#subtitleTrackIndexToSetOnPlaying];
if (!initialSubtitleStream || initialSubtitleStream.DeliveryMethod === 'Encode') { if (!initialSubtitleStream || initialSubtitleStream.DeliveryMethod === 'Encode') {
this.#subtitleTrackIndexToSetOnPlaying = -1; 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.#audioTrackIndexToSetOnPlaying = options.playMethod === 'Transcode' ? null : options.mediaSource.DefaultAudioStreamIndex;
this._currentPlayOptions = options; 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); const crossOrigin = getCrossOriginValue(options.mediaSource);
if (crossOrigin) { if (crossOrigin) {
elem.crossOrigin = crossOrigin; elem.crossOrigin = crossOrigin;
@ -490,8 +533,13 @@ function tryRemoveElement(elem) {
this.setCurrentTrackElement(index); this.setCurrentTrackElement(index);
} }
setSecondarySubtitleStreamIndex(index) {
this.setCurrentTrackElement(index, SECONDARY_TEXT_TRACK_INDEX);
}
resetSubtitleOffset() { resetSubtitleOffset() {
this.#currentTrackOffset = 0; this.#currentTrackOffset = 0;
this.#secondaryTrackOffset = 0;
this.#showTrackOffset = false; this.#showTrackOffset = false;
} }
@ -510,11 +558,11 @@ function tryRemoveElement(elem) {
/** /**
* @private * @private
*/ */
getTextTrack() { getTextTracks() {
const videoElement = this.#mediaElement; const videoElement = this.#mediaElement;
if (videoElement) { if (videoElement) {
return Array.from(videoElement.textTracks) return Array.from(videoElement.textTracks)
.find(function (trackElement) { .filter(function (trackElement) {
// get showing .vtt textTack // get showing .vtt textTack
return trackElement.mode === 'showing'; return trackElement.mode === 'showing';
}); });
@ -523,9 +571,6 @@ function tryRemoveElement(elem) {
} }
} }
/**
* @private
*/
setSubtitleOffset(offset) { setSubtitleOffset(offset) {
const offsetValue = parseFloat(offset); const offsetValue = parseFloat(offset);
@ -534,12 +579,15 @@ function tryRemoveElement(elem) {
this.updateCurrentTrackOffset(offsetValue); this.updateCurrentTrackOffset(offsetValue);
this.#currentSubtitlesOctopus.timeOffset = (this._currentPlayOptions.transcodingOffsetTicks || 0) / 10000000 + offsetValue; this.#currentSubtitlesOctopus.timeOffset = (this._currentPlayOptions.transcodingOffsetTicks || 0) / 10000000 + offsetValue;
} else { } else {
const trackElement = this.getTextTrack(); const trackElements = this.getTextTracks();
// if .vtt currently rendering // if .vtt currently rendering
if (trackElement) { if (trackElements?.length > 0) {
this.setTextTrackSubtitleOffset(trackElement, offsetValue); trackElements.forEach((trackElement, index) => {
} else if (this.#currentTrackEvents) { this.setTextTrackSubtitleOffset(trackElement, offsetValue, index);
this.setTrackEventsSubtitleOffset(this.#currentTrackEvents, offsetValue); });
} 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 { } else {
console.debug('No available track, cannot apply offset: ', offsetValue); console.debug('No available track, cannot apply offset: ', offsetValue);
} }
@ -549,13 +597,25 @@ function tryRemoveElement(elem) {
/** /**
* @private * @private
*/ */
updateCurrentTrackOffset(offsetValue) { updateCurrentTrackOffset(offsetValue, currentTrackIndex = PRIMARY_TEXT_TRACK_INDEX) {
let offsetToCompare = this.#currentTrackOffset;
if (this.isSecondaryTrack(currentTrackIndex)) {
offsetToCompare = this.#secondaryTrackOffset;
}
let relativeOffset = offsetValue; let relativeOffset = offsetValue;
const newTrackOffset = offsetValue; const newTrackOffset = offsetValue;
if (this.#currentTrackOffset) {
relativeOffset -= this.#currentTrackOffset; if (offsetToCompare) {
relativeOffset -= offsetToCompare;
} }
this.#currentTrackOffset = newTrackOffset;
if (this.isSecondaryTrack(currentTrackIndex)) {
this.#secondaryTrackOffset = newTrackOffset;
} else {
this.#currentTrackOffset = newTrackOffset;
}
// relative to currentTrackOffset // relative to currentTrackOffset
return relativeOffset; return relativeOffset;
} }
@ -563,9 +623,12 @@ function tryRemoveElement(elem) {
/** /**
* @private * @private
*/ */
setTextTrackSubtitleOffset(currentTrack, offsetValue) { setTextTrackSubtitleOffset(currentTrack, offsetValue, currentTrackIndex) {
if (currentTrack.cues) { if (currentTrack.cues) {
offsetValue = this.updateCurrentTrackOffset(offsetValue); offsetValue = this.updateCurrentTrackOffset(offsetValue, currentTrackIndex);
if (offsetValue === 0) {
return;
}
Array.from(currentTrack.cues) Array.from(currentTrack.cues)
.forEach(function (cue) { .forEach(function (cue) {
cue.startTime -= offsetValue; cue.startTime -= offsetValue;
@ -577,9 +640,12 @@ function tryRemoveElement(elem) {
/** /**
* @private * @private
*/ */
setTrackEventsSubtitleOffset(trackEvents, offsetValue) { setTrackEventsSubtitleOffset(trackEvents, offsetValue, currentTrackIndex) {
if (Array.isArray(trackEvents)) { 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) { trackEvents.forEach(function (trackEvent) {
trackEvent.StartPositionTicks -= offsetValue; trackEvent.StartPositionTicks -= offsetValue;
trackEvent.EndPositionTicks -= offsetValue; trackEvent.EndPositionTicks -= offsetValue;
@ -591,6 +657,14 @@ function tryRemoveElement(elem) {
return this.#currentTrackOffset; return this.#currentTrackOffset;
} }
isPrimaryTrack(textTrackIndex) {
return textTrackIndex === PRIMARY_TEXT_TRACK_INDEX;
}
isSecondaryTrack(textTrackIndex) {
return textTrackIndex === SECONDARY_TEXT_TRACK_INDEX;
}
/** /**
* @private * @private
*/ */
@ -819,6 +893,16 @@ function tryRemoveElement(elem) {
if (this.#audioTrackIndexToSetOnPlaying != null && this.canSetAudioStreamIndex()) { if (this.#audioTrackIndexToSetOnPlaying != null && this.canSetAudioStreamIndex()) {
this.setAudioStreamIndex(this.#audioTrackIndexToSetOnPlaying); 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 * @private
*/ */
destroyCustomTrack(videoElement) { destroyCustomRenderedTrackElements(targetTrackIndex) {
if (this.#videoSubtitlesElem) { if (this.isPrimaryTrack(targetTrackIndex)) {
const subtitlesContainer = this.#videoSubtitlesElem.parentNode; if (this.#videoSubtitlesElem) {
if (subtitlesContainer) { tryRemoveElement(this.#videoSubtitlesElem);
tryRemoveElement(subtitlesContainer); 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.#videoSubtitlesElem = null;
} }
}
this.#currentTrackEvents = null; /**
* @private
*/
destroyNativeTracks(videoElement, targetTrackIndex) {
if (videoElement) { if (videoElement) {
const destroySingleTrack = typeof targetTrackIndex === 'number';
const allTracks = videoElement.textTracks || []; // get list of tracks 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')) { if (track.label.includes('manualTrack')) {
track.mode = 'disabled'; 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.#customTrackIndex = -1;
this.#currentClock = null; this.#currentClock = null;
this._currentAspectRatio = null; this._currentAspectRatio = null;
@ -1029,23 +1161,34 @@ function tryRemoveElement(elem) {
/** /**
* @private * @private
*/ */
setTrackForDisplay(videoElement, track) { setTrackForDisplay(videoElement, track, targetTextTrackIndex = PRIMARY_TEXT_TRACK_INDEX) {
if (!track) { 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; return;
} }
let targetTrackIndex = this.#customTrackIndex;
if (this.isSecondaryTrack(targetTextTrackIndex)) {
targetTrackIndex = this.#customSecondaryTrackIndex;
}
// skip if already playing this track // skip if already playing this track
if (this.#customTrackIndex === track.Index) { if (targetTrackIndex === track.Index) {
return; return;
} }
this.resetSubtitleOffset(); this.resetSubtitleOffset();
const item = this._currentPlayOptions.item; const item = this._currentPlayOptions.item;
this.destroyCustomTrack(videoElement); this.destroyCustomTrack(videoElement, targetTextTrackIndex);
this.#customTrackIndex = track.Index;
this.renderTracksEvents(videoElement, track, item); if (this.isSecondaryTrack(targetTextTrackIndex)) {
this.#customSecondaryTrackIndex = track.Index;
} else {
this.#customTrackIndex = track.Index;
}
this.renderTracksEvents(videoElement, track, item, targetTextTrackIndex);
} }
/** /**
@ -1155,16 +1298,39 @@ function tryRemoveElement(elem) {
/** /**
* @private * @private
*/ */
renderSubtitlesWithCustomElement(videoElement, track, item) { renderSubtitlesWithCustomElement(videoElement, track, item, targetTextTrackIndex) {
this.fetchSubtitles(track, item).then((data) => { Promise.all([import('../../scripts/settings/userSettings'), this.fetchSubtitles(track, item)]).then((results) => {
if (!this.#videoSubtitlesElem) { const [userSettings, subtitleData] = results;
const subtitlesContainer = document.createElement('div'); const subtitleAppearance = userSettings.getSubtitleAppearanceSettings();
subtitlesContainer.classList.add('videoSubtitles'); const subtitleVerticalPosition = parseInt(subtitleAppearance.verticalPosition, 10);
subtitlesContainer.innerHTML = '<div class="videoSubtitlesInner"></div>';
this.#videoSubtitlesElem = subtitlesContainer.querySelector('.videoSubtitlesInner'); if (!this.#videoSubtitlesElem && !this.isSecondaryTrack(targetTextTrackIndex)) {
let subtitlesContainer = document.querySelector('.videoSubtitles');
if (!subtitlesContainer) {
subtitlesContainer = document.createElement('div');
subtitlesContainer.classList.add('videoSubtitles');
}
const subtitlesElement = document.createElement('div');
subtitlesElement.classList.add('videoSubtitlesInner');
subtitlesContainer.appendChild(subtitlesElement);
this.#videoSubtitlesElem = subtitlesElement;
this.setSubtitleAppearance(subtitlesContainer, this.#videoSubtitlesElem); this.setSubtitleAppearance(subtitlesContainer, this.#videoSubtitlesElem);
videoElement.parentNode.appendChild(subtitlesContainer); 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 * @private
*/ */
renderTracksEvents(videoElement, track, item) { renderTracksEvents(videoElement, track, item, targetTextTrackIndex = PRIMARY_TEXT_TRACK_INDEX) {
if (!itemHelper.isLocalItem(item) || track.IsExternal) { if (!itemHelper.isLocalItem(item) || track.IsExternal) {
const format = (track.Codec || '').toLowerCase(); const format = (track.Codec || '').toLowerCase();
if (format === 'ssa' || format === 'ass') { if (format === 'ssa' || format === 'ass') {
@ -1220,15 +1386,15 @@ function tryRemoveElement(elem) {
} }
if (this.requiresCustomSubtitlesElement()) { if (this.requiresCustomSubtitlesElement()) {
this.renderSubtitlesWithCustomElement(videoElement, track, item); this.renderSubtitlesWithCustomElement(videoElement, track, item, targetTextTrackIndex);
return; return;
} }
} }
let trackElement = null; let trackElement = null;
if (videoElement.textTracks && videoElement.textTracks.length > 0) { const updatingTrack = videoElement.textTracks && videoElement.textTracks.length > (this.isSecondaryTrack(targetTextTrackIndex) ? 1 : 0);
trackElement = videoElement.textTracks[0]; if (updatingTrack) {
trackElement = videoElement.textTracks[targetTextTrackIndex];
// This throws an error in IE, but is fine in chrome // 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 // In IE it's not necessary anyway because changing the src seems to be enough
try { try {
@ -1288,24 +1454,29 @@ function tryRemoveElement(elem) {
return; return;
} }
const trackEvents = this.#currentTrackEvents; const allTrackEvents = [this.#currentTrackEvents, this.#currentSecondaryTrackEvents];
const subtitleTextElement = this.#videoSubtitlesElem; const subtitleTextElements = [this.#videoSubtitlesElem, this.#videoSecondarySubtitlesElem];
if (trackEvents && subtitleTextElement) { for (let i = 0; i < allTrackEvents.length; i++) {
const ticks = timeMs * 10000; const trackEvents = allTrackEvents[i];
let selectedTrackEvent; const subtitleTextElement = subtitleTextElements[i];
for (const trackEvent of trackEvents) {
if (trackEvent.StartPositionTicks <= ticks && trackEvent.EndPositionTicks >= ticks) { if (trackEvents && subtitleTextElement) {
selectedTrackEvent = trackEvent; const ticks = timeMs * 10000;
break; let selectedTrackEvent;
for (const trackEvent of trackEvents) {
if (trackEvent.StartPositionTicks <= ticks && trackEvent.EndPositionTicks >= ticks) {
selectedTrackEvent = trackEvent;
break;
}
} }
}
if (selectedTrackEvent && selectedTrackEvent.Text) { if (selectedTrackEvent && selectedTrackEvent.Text) {
subtitleTextElement.innerHTML = normalizeTrackEventText(selectedTrackEvent.Text, true); subtitleTextElement.innerHTML = normalizeTrackEventText(selectedTrackEvent.Text, true);
subtitleTextElement.classList.remove('hide'); subtitleTextElement.classList.remove('hide');
} else { } else {
subtitleTextElement.classList.add('hide'); subtitleTextElement.classList.add('hide');
}
} }
} }
} }
@ -1313,7 +1484,7 @@ function tryRemoveElement(elem) {
/** /**
* @private * @private
*/ */
setCurrentTrackElement(streamIndex) { setCurrentTrackElement(streamIndex, targetTextTrackIndex) {
console.debug(`setting new text track index to: ${streamIndex}`); console.debug(`setting new text track index to: ${streamIndex}`);
const mediaStreamTextTracks = getMediaStreamTextTracks(this._currentPlayOptions.mediaSource); const mediaStreamTextTracks = getMediaStreamTextTracks(this._currentPlayOptions.mediaSource);
@ -1322,7 +1493,7 @@ function tryRemoveElement(elem) {
return t.Index === streamIndex; return t.Index === streamIndex;
})[0]; })[0];
this.setTrackForDisplay(this.#mediaElement, track); this.setTrackForDisplay(this.#mediaElement, track, targetTextTrackIndex);
if (enableNativeTrackSupport(this.#currentSrc, track)) { if (enableNativeTrackSupport(this.#currentSrc, track)) {
if (streamIndex !== -1) { if (streamIndex !== -1) {
this.setCueAppearance(); this.setCueAppearance();
@ -1500,6 +1671,7 @@ function tryRemoveElement(elem) {
list.push('SetBrightness'); list.push('SetBrightness');
list.push('SetAspectRatio'); list.push('SetAspectRatio');
list.push('SecondarySubtitles');
return list; return list;
} }

View file

@ -65,13 +65,22 @@ video[controls]::-webkit-media-controls {
padding-left: env(safe-area-inset-left); padding-left: env(safe-area-inset-left);
padding-right: env(safe-area-inset-right); padding-right: env(safe-area-inset-right);
padding-bottom: env(safe-area-inset-bottom); padding-bottom: env(safe-area-inset-bottom);
display: flex;
flex-direction: column;
align-items: center;
} }
.videoSubtitlesInner { .videoSubtitlesInner {
max-width: 70%; max-width: 70%;
background-color: rgba(0, 0, 0, 0.8); 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 { @keyframes htmlvideoplayer-zoomin {

View file

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

View file

@ -182,6 +182,19 @@ export class UserSettings {
return toBoolean(this.get('enableNextVideoInfoOverlay', false), true); 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. * Get or set 'Theme Songs' state.
* @param {boolean|undefined} val - Flag to enable 'Theme Songs' or undefined. * @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 enableCinemaMode = currentSettings.enableCinemaMode.bind(currentSettings);
export const enableAudioNormalization = currentSettings.enableAudioNormalization.bind(currentSettings); export const enableAudioNormalization = currentSettings.enableAudioNormalization.bind(currentSettings);
export const enableNextVideoInfoOverlay = currentSettings.enableNextVideoInfoOverlay.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 enableThemeSongs = currentSettings.enableThemeSongs.bind(currentSettings);
export const enableThemeVideos = currentSettings.enableThemeVideos.bind(currentSettings); export const enableThemeVideos = currentSettings.enableThemeVideos.bind(currentSettings);
export const enableFastFadein = currentSettings.enableFastFadein.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", "ButtonPause": "Pozastavit",
"ButtonPreviousTrack": "Předchozí stopa", "ButtonPreviousTrack": "Předchozí stopa",
"ButtonQuickStartGuide": "Rychlý průvodce", "ButtonQuickStartGuide": "Rychlý průvodce",
"ButtonRefreshGuideData": "Obnovit data programového průvodce", "ButtonRefreshGuideData": "Aktualizovat data programového průvodce",
"ButtonRemove": "Odstranit", "ButtonRemove": "Odstranit",
"ButtonRename": "Přejmenovat", "ButtonRename": "Přejmenovat",
"ButtonResetEasyPassword": "Obnovit Easy PIN kód", "ButtonResetEasyPassword": "Obnovit Easy PIN kód",
@ -242,11 +242,11 @@
"HeaderInstantMix": "Rychlý mix", "HeaderInstantMix": "Rychlý mix",
"HeaderKeepRecording": "Udržet nahrávání", "HeaderKeepRecording": "Udržet nahrávání",
"HeaderKeepSeries": "Udržet seriál", "HeaderKeepSeries": "Udržet seriál",
"HeaderLatestEpisodes": "Nejnovější díly", "HeaderLatestEpisodes": "Nedávno přidané díly",
"HeaderLatestMedia": "Nejnovější média", "HeaderLatestMedia": "Nedávno přidaná média",
"HeaderLatestMovies": "Nejnovější filmy", "HeaderLatestMovies": "Nedávno přidané filmy",
"HeaderLatestMusic": "Nejnovější hudba", "HeaderLatestMusic": "Nedávno přidaná hudba",
"HeaderLatestRecordings": "Nejnovější nahrávky", "HeaderLatestRecordings": "Nedávno přidané nahrávky",
"HeaderLibraries": "Knihovny", "HeaderLibraries": "Knihovny",
"HeaderLibraryAccess": "Přístup ke knihovně", "HeaderLibraryAccess": "Přístup ke knihovně",
"HeaderLibraryFolders": "Složky knihovny", "HeaderLibraryFolders": "Složky knihovny",
@ -335,7 +335,7 @@
"HeaderYears": "Roky", "HeaderYears": "Roky",
"Help": "Nápověda", "Help": "Nápověda",
"Hide": "Skrýt", "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ů", "Home": "Domů",
"Identify": "Identifikovat", "Identify": "Identifikovat",
"Images": "Obrázky", "Images": "Obrázky",
@ -556,7 +556,7 @@
"LabelRecord": "Záznam:", "LabelRecord": "Záznam:",
"LabelRecordingPath": "Standardní složka pro nahrávání:", "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).", "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í:", "LabelReleaseDate": "Datum vydání:",
"LabelRemoteClientBitrateLimit": "Datový tok streamování do Internetu (Mbps):", "LabelRemoteClientBitrateLimit": "Datový tok streamování do Internetu (Mbps):",
"LabelRuntimeMinutes": "Délka:", "LabelRuntimeMinutes": "Délka:",
@ -627,7 +627,7 @@
"LabelffmpegPath": "FFmpeg - cesta:", "LabelffmpegPath": "FFmpeg - cesta:",
"LabelffmpegPathHelp": "Cesta k souboru aplikace FFmpeg nebo složka obsahující aplikaci FFmpeg.", "LabelffmpegPathHelp": "Cesta k souboru aplikace FFmpeg nebo složka obsahující aplikaci FFmpeg.",
"Large": "Velký", "Large": "Velký",
"LatestFromLibrary": "Nejnovější {0}", "LatestFromLibrary": "Nedávno přidáno v knihovně {0}",
"LearnHowYouCanContribute": "Zjistěte, jak můžete přispět.", "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.", "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", "List": "Seznam",
@ -840,7 +840,7 @@
"PlayAllFromHere": "Přehrát vše odsud", "PlayAllFromHere": "Přehrát vše odsud",
"PlayCount": "Počet přehrání", "PlayCount": "Počet přehrání",
"PlayFromBeginning": "Přehrát od začátku", "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", "PlayNextEpisodeAutomatically": "Automaticky přehrávat další epizodu",
"PlaybackErrorNoCompatibleStream": "Tento klient není kompatibilní s médiem a server neodesílá kompatibilní formát médií.", "PlaybackErrorNoCompatibleStream": "Tento klient není kompatibilní s médiem a server neodesílá kompatibilní formát médií.",
"Played": "Přehráno", "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í.", "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í.", "RecordingScheduled": "Plán nahrávání.",
"Recordings": "Nahrávky", "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.", "RefreshDialogHelp": "Metadata se aktualizují na základě nastavení a internetových služeb, které jsou povoleny na nástěnce.",
"RefreshMetadata": "Obnovit metadata", "RefreshMetadata": "Aktualizovat metadata",
"RefreshQueued": "Obnovení zařazeno.", "RefreshQueued": "Aktualizace zařazena do fronty.",
"ReleaseDate": "Datum vydání", "ReleaseDate": "Datum vydání",
"RememberMe": "Zapamatuj si mě", "RememberMe": "Zapamatuj si mě",
"RemoveFromCollection": "Odebrat z kolekce", "RemoveFromCollection": "Odebrat z kolekce",
@ -895,7 +895,7 @@
"Screenshots": "Snímky obrazovky", "Screenshots": "Snímky obrazovky",
"Search": "Vyhledávání", "Search": "Vyhledávání",
"SearchForCollectionInternetMetadata": "Vyhledat metadata a obrázky na Internetu", "SearchForCollectionInternetMetadata": "Vyhledat metadata a obrázky na Internetu",
"SearchForMissingMetadata": "Hledat chybějící metadata", "SearchForMissingMetadata": "Vyhledat chybějící metadata",
"SearchForSubtitles": "Vyhledat titulky", "SearchForSubtitles": "Vyhledat titulky",
"SearchResults": "Výsledky vyhledávání", "SearchResults": "Výsledky vyhledávání",
"SendMessage": "Poslat zprávu", "SendMessage": "Poslat zprávu",
@ -937,7 +937,7 @@
"TabCodecs": "Kodeky", "TabCodecs": "Kodeky",
"TabContainers": "Obaly", "TabContainers": "Obaly",
"TabDashboard": "Nástěnka", "TabDashboard": "Nástěnka",
"TabLatest": "Nejnovější", "TabLatest": "Nedávno přidáno",
"TabLogs": "Záznamy", "TabLogs": "Záznamy",
"TabMusic": "Hudba", "TabMusic": "Hudba",
"TabMyPlugins": "Moje zásuvné moduly", "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á.", "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", "Directors": "Režiséři",
"DisplayInMyMedia": "Zobrazit na domovské obrazovce", "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í", "DownloadsValue": "{0} ke stažení",
"EditMetadata": "Upravit metadata", "EditMetadata": "Upravit metadata",
"EnableExternalVideoPlayersHelp": "Při spuštění přehrávání videa se zobrazí nabídka externího přehrávače.", "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", "EnablePlugin": "Povolit",
"DirectPlayHelp": "Zdrojový soubor je s klientem plně kompatibilní a relaci je tak soubor posílán bez úprav.", "DirectPlayHelp": "Zdrojový soubor je s klientem plně kompatibilní a relaci je tak soubor posílán bez úprav.",
"HeaderContinueReading": "Pokračovat ve čtení", "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č", "LabelEnableGamepad": "Povolit herní ovladač",
"Controls": "Ovládání", "Controls": "Ovládání",
"TextSent": "Text odeslán.", "TextSent": "Text odeslán.",
@ -1623,7 +1623,7 @@
"BehindTheScenes": "Z natáčení", "BehindTheScenes": "Z natáčení",
"Trailer": "Upoutávka", "Trailer": "Upoutávka",
"Clip": "Krátký film", "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", "AllowEmbeddedSubtitlesAllowTextOption": "Povolit textové titulky",
"AllowEmbeddedSubtitlesAllowImageOption": "Povolit grafické titulky", "AllowEmbeddedSubtitlesAllowImageOption": "Povolit grafické titulky",
"AllowEmbeddedSubtitlesAllowAllOption": "Povolit všechny", "AllowEmbeddedSubtitlesAllowAllOption": "Povolit všechny",
@ -1688,5 +1688,21 @@
"DownloadAll": "Stáhnout vše", "DownloadAll": "Stáhnout vše",
"Experimental": "Experimentální", "Experimental": "Experimentální",
"LabelStereoDownmixAlgorithm": "Algoritmus převodu na stereo", "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", "Framerate": "Bildrate",
"DirectPlayHelp": "Die Quelldatei ist vollständig mit diesem Client kompatibel, und die Sitzung empfängt die Datei ohne Änderungen.", "DirectPlayHelp": "Die Quelldatei ist vollständig mit diesem Client kompatibel, und die Sitzung empfängt die Datei ohne Änderungen.",
"HeaderContinueReading": "Weiterlesen", "HeaderContinueReading": "Weiterlesen",
"EnableGamepadHelp": "Auf Eingaben aller verbundenen Controller hören.", "EnableGamepadHelp": "Auf Eingaben aller verbundenen Controller hören. (Erfordert: 'TV'-Anzeigemodus)",
"LabelEnableGamepad": "Gamepad aktivieren", "LabelEnableGamepad": "Gamepad aktivieren",
"Controls": "Steuerung", "Controls": "Steuerung",
"TextSent": "Text gesendet.", "TextSent": "Text gesendet.",
@ -1685,5 +1685,24 @@
"MessageNoFavoritesAvailable": "Es sind aktuell keine Favoriten verfügbar.", "MessageNoFavoritesAvailable": "Es sind aktuell keine Favoriten verfügbar.",
"Unreleased": "Noch nicht veröffentlicht", "Unreleased": "Noch nicht veröffentlicht",
"EnableCardLayout": "Visuelle CardBox anzeigen", "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", "Disconnect": "Disconnect",
"Display": "Display", "Display": "Display",
"DisplayInMyMedia": "Display on home screen", "DisplayInMyMedia": "Display on home screen",
"DisplayInOtherHomeScreenSections": "Display in home screen sections such as 'Latest Media' and 'Continue Watching'", "DisplayInOtherHomeScreenSections": "Display in home screen sections such as 'Recently Added Media' and 'Continue Watching'",
"DisplayMissingEpisodesWithinSeasons": "Display missing episodes within their series", "DisplayMissingEpisodesWithinSeasons": "Display missing episodes within their series",
"DisplayMissingEpisodesWithinSeasonsHelp": "This must also be enabled for TV libraries in the server configuration.", "DisplayMissingEpisodesWithinSeasonsHelp": "This must also be enabled for TV libraries in the server configuration.",
"DisplayModeHelp": "Select the layout style you want for the interface.", "DisplayModeHelp": "Select the layout style you want for the interface.",
@ -332,11 +332,11 @@
"HeaderKeepRecording": "Keep Recording", "HeaderKeepRecording": "Keep Recording",
"HeaderKeepSeries": "Keep Programme", "HeaderKeepSeries": "Keep Programme",
"HeaderKodiMetadataHelp": "To enable or disable NFO metadata, edit a library and find the 'Metadata savers' section.", "HeaderKodiMetadataHelp": "To enable or disable NFO metadata, edit a library and find the 'Metadata savers' section.",
"HeaderLatestEpisodes": "Latest Episodes", "HeaderLatestEpisodes": "Recently Added Episodes",
"HeaderLatestMedia": "Latest Media", "HeaderLatestMedia": "Recently Added Media",
"HeaderLatestMovies": "Latest Films", "HeaderLatestMovies": "Recently Added Films",
"HeaderLatestMusic": "Latest Music", "HeaderLatestMusic": "Recently Added Music",
"HeaderLatestRecordings": "Latest Recordings", "HeaderLatestRecordings": "Recently Added Recordings",
"HeaderLibraries": "Libraries", "HeaderLibraries": "Libraries",
"HeaderLibraryAccess": "Library Access", "HeaderLibraryAccess": "Library Access",
"HeaderLibraryFolders": "Library Folders", "HeaderLibraryFolders": "Library Folders",
@ -751,7 +751,7 @@
"MediaInfoCodec": "Codec", "MediaInfoCodec": "Codec",
"ManageRecording": "Manage recording", "ManageRecording": "Manage recording",
"LiveTV": "Live TV", "LiveTV": "Live TV",
"LatestFromLibrary": "Latest {0}", "LatestFromLibrary": "Recently Added in {0}",
"Large": "Large", "Large": "Large",
"LabelZipCode": "Postcode:", "LabelZipCode": "Postcode:",
"LabelYoureDone": "You're Done!", "LabelYoureDone": "You're Done!",
@ -817,7 +817,7 @@
"TabPlugins": "Plugins", "TabPlugins": "Plugins",
"TabNfoSettings": "NFO Settings", "TabNfoSettings": "NFO Settings",
"TabNetworking": "Networking", "TabNetworking": "Networking",
"TabLatest": "Latest", "TabLatest": "Recently Added",
"TabDashboard": "Dashboard", "TabDashboard": "Dashboard",
"TabContainers": "Containers", "TabContainers": "Containers",
"TabCodecs": "Codecs", "TabCodecs": "Codecs",
@ -1029,7 +1029,7 @@
"Identify": "Identify", "Identify": "Identify",
"Horizontal": "Horizontal", "Horizontal": "Horizontal",
"Home": "Home", "Home": "Home",
"HideWatchedContentFromLatestMedia": "Hide watched content from 'Latest Media'", "HideWatchedContentFromLatestMedia": "Hide watched content from 'Recently Added Media'",
"Hide": "Hide", "Hide": "Hide",
"Help": "Help", "Help": "Help",
"HeaderXmlSettings": "XML Settings", "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.", "MessageChromecastConnectionError": "Your Google Cast receiver is unable to contact the Jellyfin server. Please check the connection and try again.",
"Framerate": "Framerate", "Framerate": "Framerate",
"DirectPlayHelp": "The source file is entirely compatible with this client, and the session is receiving the file without modifications.", "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", "LabelEnableGamepad": "Enable Gamepad",
"Controls": "Controls", "Controls": "Controls",
"TextSent": "Text sent.", "TextSent": "Text sent.",
@ -1688,5 +1688,21 @@
"DownloadAll": "Download All", "DownloadAll": "Download All",
"Experimental": "Experimental", "Experimental": "Experimental",
"LabelStereoDownmixAlgorithm": "Stereo Downmix Algorithm", "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", "Cursive": "Cursive",
"CustomDlnaProfilesHelp": "Create a custom profile to target a new device or override a system profile.", "CustomDlnaProfilesHelp": "Create a custom profile to target a new device or override a system profile.",
"DailyAt": "Daily at {0}", "DailyAt": "Daily at {0}",
"DashboardArchitecture": "Architecture: {0}",
"DashboardOperatingSystem": "Operating System: {0}",
"DashboardServerName": "Server: {0}", "DashboardServerName": "Server: {0}",
"DashboardVersionNumber": "Version: {0}", "DashboardVersionNumber": "Version: {0}",
"Data": "Data", "Data": "Data",
@ -202,7 +200,7 @@
"Disconnect": "Disconnect", "Disconnect": "Disconnect",
"Display": "Display", "Display": "Display",
"DisplayInMyMedia": "Display on home screen", "DisplayInMyMedia": "Display on home screen",
"DisplayInOtherHomeScreenSections": "Display in home screen sections such as 'Latest Media' and 'Continue Watching'", "DisplayInOtherHomeScreenSections": "Display in home screen sections such as 'Recently Added Media' and 'Continue Watching'",
"DisplayMissingEpisodesWithinSeasons": "Display missing episodes within seasons", "DisplayMissingEpisodesWithinSeasons": "Display missing episodes within seasons",
"DisplayMissingEpisodesWithinSeasonsHelp": "This must also be enabled for TV libraries in the server configuration.", "DisplayMissingEpisodesWithinSeasonsHelp": "This must also be enabled for TV libraries in the server configuration.",
"DisplayModeHelp": "Select the layout style you want for the interface.", "DisplayModeHelp": "Select the layout style you want for the interface.",
@ -364,6 +362,7 @@
"HeaderDirectPlayProfile": "Direct Playback Profile", "HeaderDirectPlayProfile": "Direct Playback Profile",
"HeaderDirectPlayProfileHelp": "Add direct playback profiles to indicate which formats the device can handle natively.", "HeaderDirectPlayProfileHelp": "Add direct playback profiles to indicate which formats the device can handle natively.",
"HeaderDownloadSync": "Download & Sync", "HeaderDownloadSync": "Download & Sync",
"HeaderDummyChapter": "Chapter Images",
"HeaderDVR": "DVR", "HeaderDVR": "DVR",
"HeaderEasyPinCode": "Easy PIN Code", "HeaderEasyPinCode": "Easy PIN Code",
"HeaderEditImages": "Edit Images", "HeaderEditImages": "Edit Images",
@ -390,11 +389,11 @@
"HeaderKeepRecording": "Keep Recording", "HeaderKeepRecording": "Keep Recording",
"HeaderKeepSeries": "Keep Series", "HeaderKeepSeries": "Keep Series",
"HeaderKodiMetadataHelp": "To enable or disable NFO metadata, edit a library and find the 'Metadata savers' section.", "HeaderKodiMetadataHelp": "To enable or disable NFO metadata, edit a library and find the 'Metadata savers' section.",
"HeaderLatestEpisodes": "Latest Episodes", "HeaderLatestEpisodes": "Recently Added Episodes",
"HeaderLatestMedia": "Latest Media", "HeaderLatestMedia": "Recently Added Media",
"HeaderLatestMovies": "Latest Movies", "HeaderLatestMovies": "Recently Added Movies",
"HeaderLatestMusic": "Latest Music", "HeaderLatestMusic": "Recently Added Music",
"HeaderLatestRecordings": "Latest Recordings", "HeaderLatestRecordings": "Recently Added Recordings",
"HeaderLibraries": "Libraries", "HeaderLibraries": "Libraries",
"HeaderLibraryAccess": "Library Access", "HeaderLibraryAccess": "Library Access",
"HeaderLibraryFolders": "Library Folders", "HeaderLibraryFolders": "Library Folders",
@ -436,6 +435,7 @@
"HeaderProfileInformation": "Profile Information", "HeaderProfileInformation": "Profile Information",
"HeaderProfileServerSettingsHelp": "These values control how the server will present itself to clients.", "HeaderProfileServerSettingsHelp": "These values control how the server will present itself to clients.",
"HeaderRecentlyPlayed": "Recently Played", "HeaderRecentlyPlayed": "Recently Played",
"HeaderRecordingMetadataSaving": "Recording Metadata",
"HeaderRecordingOptions": "Recording Options", "HeaderRecordingOptions": "Recording Options",
"HeaderRecordingPostProcessing": "Recording Post Processing", "HeaderRecordingPostProcessing": "Recording Post Processing",
"HeaderRemoteAccessSettings": "Remote Access Settings", "HeaderRemoteAccessSettings": "Remote Access Settings",
@ -505,7 +505,7 @@
"HeaderYears": "Years", "HeaderYears": "Years",
"Help": "Help", "Help": "Help",
"Hide": "Hide", "Hide": "Hide",
"HideWatchedContentFromLatestMedia": "Hide watched content from 'Latest Media'", "HideWatchedContentFromLatestMedia": "Hide watched content from 'Recently Added Media'",
"Home": "Home", "Home": "Home",
"HomeVideosPhotos": "Home Videos and Photos", "HomeVideosPhotos": "Home Videos and Photos",
"Horizontal": "Horizontal", "Horizontal": "Horizontal",
@ -628,6 +628,12 @@
"LabelDroppedFrames": "Dropped frames:", "LabelDroppedFrames": "Dropped frames:",
"LabelDropShadow": "Drop shadow:", "LabelDropShadow": "Drop shadow:",
"LabelDropSubtitleHere": "Drop subtitle here, or click to browse.", "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:", "LabelDynamicExternalId": "{0} Id:",
"LabelEasyPinCode": "Easy PIN code:", "LabelEasyPinCode": "Easy PIN code:",
"LabelEmbedAlbumArtDidl": "Embed album art in DIDL", "LabelEmbedAlbumArtDidl": "Embed album art in DIDL",
@ -989,7 +995,7 @@
"Large": "Large", "Large": "Large",
"Larger": "Larger", "Larger": "Larger",
"LastSeen": "Last seen {0}", "LastSeen": "Last seen {0}",
"LatestFromLibrary": "Latest {0}", "LatestFromLibrary": "Recently Added in {0}",
"LearnHowYouCanContribute": "Learn how you can contribute.", "LearnHowYouCanContribute": "Learn how you can contribute.",
"LeaveBlankToNotSetAPassword": "You can leave this field blank to set no password.", "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.", "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", "PosterCard": "Poster Card",
"PreferEmbeddedEpisodeInfosOverFileNames": "Prefer embedded episode information over filenames", "PreferEmbeddedEpisodeInfosOverFileNames": "Prefer embedded episode information over filenames",
"PreferEmbeddedEpisodeInfosOverFileNamesHelp": "Use the episode information from the embedded metadata if available.", "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", "PreferEmbeddedTitlesOverFileNames": "Prefer embedded titles over filenames",
"PreferEmbeddedTitlesOverFileNamesHelp": "Determine the display title to use when no internet metadata or local metadata is available.", "PreferEmbeddedTitlesOverFileNamesHelp": "Determine the display title to use when no internet metadata or local metadata is available.",
"AllowEmbeddedSubtitles": "Disable different types of embedded subtitles", "AllowEmbeddedSubtitles": "Disable different types of embedded subtitles",
@ -1382,6 +1390,7 @@
"ReplaceAllMetadata": "Replace all metadata", "ReplaceAllMetadata": "Replace all metadata",
"ReplaceExistingImages": "Replace existing images", "ReplaceExistingImages": "Replace existing images",
"ResetPassword": "Reset Password", "ResetPassword": "Reset Password",
"ResolutionMatchSource": "Match Source",
"Restart": "Restart", "Restart": "Restart",
"ResumeAt": "Resume from {0}", "ResumeAt": "Resume from {0}",
"Rewind": "Rewind", "Rewind": "Rewind",
@ -1389,6 +1398,10 @@
"Saturday": "Saturday", "Saturday": "Saturday",
"Save": "Save", "Save": "Save",
"SaveChanges": "Save changes", "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", "SaveSubtitlesIntoMediaFolders": "Save subtitles into media folders",
"SaveSubtitlesIntoMediaFoldersHelp": "Storing subtitles next to video files will allow them to be more easily managed.", "SaveSubtitlesIntoMediaFoldersHelp": "Storing subtitles next to video files will allow them to be more easily managed.",
"ScanForNewAndUpdatedFiles": "Scan for new and updated files", "ScanForNewAndUpdatedFiles": "Scan for new and updated files",
@ -1401,6 +1414,7 @@
"SearchForSubtitles": "Search for Subtitles", "SearchForSubtitles": "Search for Subtitles",
"SearchResults": "Search Results", "SearchResults": "Search Results",
"Season": "Season", "Season": "Season",
"SecondarySubtitles": "Secondary Subtitles",
"SelectAdminUsername": "Please select a username for the admin account.", "SelectAdminUsername": "Please select a username for the admin account.",
"SelectServer": "Select Server", "SelectServer": "Select Server",
"SendMessage": "Send message", "SendMessage": "Send message",
@ -1467,7 +1481,7 @@
"TabContainers": "Containers", "TabContainers": "Containers",
"TabDashboard": "Dashboard", "TabDashboard": "Dashboard",
"TabDirectPlay": "Direct Playback", "TabDirectPlay": "Direct Playback",
"TabLatest": "Latest", "TabLatest": "Recently Added",
"TabLogs": "Logs", "TabLogs": "Logs",
"TabMusic": "Music", "TabMusic": "Music",
"TabMyPlugins": "My Plugins", "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.", "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", "Controls": "Controls",
"LabelEnableGamepad": "Enable Gamepad", "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", "AudioCodecNotSupported": "The audio codec is not supported",
"ContainerNotSupported": "The container is not supported", "ContainerNotSupported": "The container is not supported",
"SubtitleCodecNotSupported": "The subtitle codec is not supported", "SubtitleCodecNotSupported": "The subtitle codec is not supported",

View file

@ -154,7 +154,7 @@
"DateAdded": "Fecha agregada", "DateAdded": "Fecha agregada",
"DatePlayed": "Fecha de reproducción", "DatePlayed": "Fecha de reproducción",
"DeathDateValue": "Muerte: {0}", "DeathDateValue": "Muerte: {0}",
"Default": "Por Defecto", "Default": "Predeterminado",
"ErrorDefault": "Hubo un error procesando la solicitud. Por favor intentalo nuevamente mas tarde.", "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.", "DefaultMetadataLangaugeDescription": "Estos son tus predeterminados y pueden ser personalizados por librería únicamente.",
"Delete": "Borrar", "Delete": "Borrar",
@ -1235,7 +1235,7 @@
"TitleHostingSettings": "Configuraciones de alojamiento", "TitleHostingSettings": "Configuraciones de alojamiento",
"TitleHardwareAcceleration": "Aceleración por hardware", "TitleHardwareAcceleration": "Aceleración por hardware",
"Thursday": "Jueves", "Thursday": "Jueves",
"Thumb": "Pulgar", "Thumb": "Miniatura",
"TheseSettingsAffectSubtitlesOnThisDevice": "Esta configuración afecta los subtítulos en este dispositivo", "TheseSettingsAffectSubtitlesOnThisDevice": "Esta configuración afecta los subtítulos en este dispositivo",
"ThemeVideos": "Videos temáticos", "ThemeVideos": "Videos temáticos",
"ThemeSongs": "Canciones temáticas", "ThemeSongs": "Canciones temáticas",
@ -1353,7 +1353,7 @@
"NextTrack": "Pasar al siguiente", "NextTrack": "Pasar al siguiente",
"LabelUnstable": "Inestable", "LabelUnstable": "Inestable",
"Video": "Video", "Video": "Video",
"ThumbCard": "Tarjeta de pulgar", "ThumbCard": "Tarjeta de miniatura",
"Subtitle": "Subtítulo", "Subtitle": "Subtítulo",
"SpecialFeatures": "Características especiales", "SpecialFeatures": "Características especiales",
"SelectServer": "Seleccionar servidor", "SelectServer": "Seleccionar servidor",
@ -1517,7 +1517,7 @@
"MessageSent": "Mensaje enviado.", "MessageSent": "Mensaje enviado.",
"LabelSlowResponseTime": "Tiempo en ms después de lo cual una respuesta es considerada lenta:", "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", "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\"", "UseEpisodeImagesInNextUp": "Usar imágenes de los episodios en \"Siguiente\" y \"Continuar Viendo\"",
"LabelAutomaticallyAddToCollection": "Agregar automáticamente a la colección", "LabelAutomaticallyAddToCollection": "Agregar automáticamente a la colección",
"HeaderSyncPlayTimeSyncSettings": "Sincronización de tiempo", "HeaderSyncPlayTimeSyncSettings": "Sincronización de tiempo",
@ -1684,5 +1684,16 @@
"MessageNoItemsAvailable": "No hay artículos disponibles actualmente.", "MessageNoItemsAvailable": "No hay artículos disponibles actualmente.",
"MessageNoFavoritesAvailable": "No hay favoritos 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.", "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", "HeaderKeepRecording": "Mantener grabación",
"HeaderKeepSeries": "Mantener series", "HeaderKeepSeries": "Mantener series",
"HeaderKodiMetadataHelp": "Para habilitar o deshabilitar los metadatos NFO, edite una biblioteca y busque la sección 'Guardadores de metadatos'.", "HeaderKodiMetadataHelp": "Para habilitar o deshabilitar los metadatos NFO, edite una biblioteca y busque la sección 'Guardadores de metadatos'.",
"HeaderLatestEpisodes": "Últimos episodios", "HeaderLatestEpisodes": "Últimos episodios añadidos",
"HeaderLatestMedia": "Últimos", "HeaderLatestMedia": "Últimos elementos añadidos",
"HeaderLatestMovies": "Últimas películas", "HeaderLatestMovies": "Últimas películas añadidas",
"HeaderLatestMusic": "Última música", "HeaderLatestMusic": "Última música añadida",
"HeaderLatestRecordings": "Últimas grabaciones", "HeaderLatestRecordings": "Últimas grabaciones añadidas",
"HeaderLibraries": "Bibliotecas", "HeaderLibraries": "Bibliotecas",
"HeaderLibraryAccess": "Acceso a la biblioteca", "HeaderLibraryAccess": "Acceso a la biblioteca",
"HeaderLibraryFolders": "Carpetas de la biblioteca", "HeaderLibraryFolders": "Carpetas de la biblioteca",
@ -344,7 +344,7 @@
"HeaderYears": "Años", "HeaderYears": "Años",
"Help": "Ayuda", "Help": "Ayuda",
"Hide": "Ocultar", "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.", "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", "Identify": "Identificar",
"Images": "Imágenes", "Images": "Imágenes",
@ -1074,11 +1074,11 @@
"Descending": "Descendiente", "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.", "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.", "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", "Directors": "Directores",
"Display": "Visualización", "Display": "Visualización",
"DisplayInMyMedia": "Mostrar en la pantalla de inicio", "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", "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.", "DisplayMissingEpisodesWithinSeasonsHelp": "Esto también debe ser habilitado para la biblioteca de TV en la configuración del servidor.",
"DropShadow": "Eliminar sombra", "DropShadow": "Eliminar sombra",
@ -1532,7 +1532,7 @@
"SubtitleCodecNotSupported": "El códec de subtítulos no es compatible", "SubtitleCodecNotSupported": "El códec de subtítulos no es compatible",
"ContainerNotSupported": "El formato de archivo no es compatible", "ContainerNotSupported": "El formato de archivo no es compatible",
"AudioCodecNotSupported": "El códec de audio 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.", "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\"", "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:", "LabelSlowResponseTime": "Tiempo en ms a partir del cual una respuesta se considera lenta:",
@ -1635,7 +1635,7 @@
"Scene": "Escena", "Scene": "Escena",
"Interview": "Entrevista", "Interview": "Entrevista",
"DeletedScene": "Escena eliminada", "DeletedScene": "Escena eliminada",
"BehindTheScenes": "Detrás de cámaras", "BehindTheScenes": "Detrás de las cámaras",
"Trailer": "Trailer", "Trailer": "Trailer",
"Clip": "Mediometraje", "Clip": "Mediometraje",
"SelectAll": "Seleccionar todo", "SelectAll": "Seleccionar todo",
@ -1677,5 +1677,25 @@
"LabelStereoDownmixAlgorithm": "Algoritmo de mezcla estéreo", "LabelStereoDownmixAlgorithm": "Algoritmo de mezcla estéreo",
"StereoDownmixAlgorithmHelp": "Algoritmo utilizado para mezclar audio multicanal a estéreo.", "StereoDownmixAlgorithmHelp": "Algoritmo utilizado para mezclar audio multicanal a estéreo.",
"LabelVppTonemappingBrightness": "Ganancia de brillo de mapeo de tonos VPP:", "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:", "LabelEnableSSDPTracing": "Habilitar seguimiento SSDP:",
"LabelEnableIP6Help": "Habilita la funcionalidad IPv6.", "LabelEnableIP6Help": "Habilita la funcionalidad IPv6.",
"LabelEnableIP6": "Habilitar IPv6", "LabelEnableIP6": "Habilitar IPv6",
"LabelEnableIP4Help": "Habilita la funcionalidad IPv4.", "LabelEnableIP4Help": "Habilitar la funcionalidad IPv4.",
"LabelEnableIP4": "Habilitar IPv4", "LabelEnableIP4": "Habilitar IPv4",
"LabelDropSubtitleHere": "Suelta el subtitulo aqui, o haz clic para buscar.", "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.", "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": "انتخاب همه", "SelectAll": "انتخاب همه",
"ThemeSong": "آهنگ قالب", "ThemeSong": "آهنگ قالب",
"Sample": "نمونه", "Sample": "نمونه",
"ThemeVideo": "ویدئوی قالب" "ThemeVideo": "ویدئوی قالب",
"IgnoreDts": "نادیده‌گرفتن DTS (decoding timestamp)",
"HomeVideosPhotos": "ویدیو ها و تصاویر خانگی",
"Experimental": "آزمایشی",
"DownloadAll": "دانلود همه"
} }

View file

@ -176,7 +176,7 @@
"Disc": "Levy", "Disc": "Levy",
"Disconnect": "Katkaise yhteys", "Disconnect": "Katkaise yhteys",
"DisplayInMyMedia": "Näytä aloitusnäytöllä", "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", "DisplayMissingEpisodesWithinSeasons": "Näytä puuttuvat jaksot tuotantokausissa",
"DisplayMissingEpisodesWithinSeasonsHelp": "Tämä on aktivoitava sarjakirjastoille myös palvelimen asetuksista.", "DisplayMissingEpisodesWithinSeasonsHelp": "Tämä on aktivoitava sarjakirjastoille myös palvelimen asetuksista.",
"DisplayModeHelp": "Valitse ulkonäkö, jonka haluat käyttöliittymälle.", "DisplayModeHelp": "Valitse ulkonäkö, jonka haluat käyttöliittymälle.",
@ -343,7 +343,7 @@
"LabelAbortedByServerShutdown": "(Keskeytetty palvelimen sammutuksen takia)", "LabelAbortedByServerShutdown": "(Keskeytetty palvelimen sammutuksen takia)",
"Identify": "Tunnista", "Identify": "Tunnista",
"Horizontal": "Horisontaalinen", "Horizontal": "Horisontaalinen",
"HideWatchedContentFromLatestMedia": "Piilota toistettu sisältö 'Uusi media' -osiosta", "HideWatchedContentFromLatestMedia": "Piilota toistettu sisältö 'Hiljattain lisätty media' -osiosta",
"HeaderUpcomingOnTV": "Tulossa televisiosta", "HeaderUpcomingOnTV": "Tulossa televisiosta",
"HeaderTypeImageFetchers": "Kuvien lataajat ({0}):", "HeaderTypeImageFetchers": "Kuvien lataajat ({0}):",
"HeaderTranscodingProfile": "Transkoodausprofiili", "HeaderTranscodingProfile": "Transkoodausprofiili",
@ -411,11 +411,11 @@
"HeaderMediaFolders": "Mediakansiot", "HeaderMediaFolders": "Mediakansiot",
"HeaderMedia": "Media", "HeaderMedia": "Media",
"HeaderLibraryFolders": "Kirjaston kansiot", "HeaderLibraryFolders": "Kirjaston kansiot",
"HeaderLatestMedia": "Uusi media", "HeaderLatestMedia": "Hiljattain lisätty media",
"HeaderLatestRecordings": "Uudet tallenteet", "HeaderLatestRecordings": "Hiljattain lisätyt tallenteet",
"HeaderLatestMusic": "Uusi musiikki", "HeaderLatestMusic": "Hiljattain lisätty musiikki",
"HeaderLatestMovies": "Uudet elokuvat", "HeaderLatestMovies": "Hiljattain lisätyt elokuvat",
"HeaderLatestEpisodes": "Uudet jaksot", "HeaderLatestEpisodes": "Hiljattain lisätyt jaksot",
"HeaderInstall": "Asenna", "HeaderInstall": "Asenna",
"HeaderFrequentlyPlayed": "Usein toistetut", "HeaderFrequentlyPlayed": "Usein toistetut",
"HeaderFetcherSettings": "Lataajan asetukset", "HeaderFetcherSettings": "Lataajan asetukset",
@ -562,7 +562,7 @@
"TabMyPlugins": "Omat lisäosat", "TabMyPlugins": "Omat lisäosat",
"TabMusic": "Musiikki", "TabMusic": "Musiikki",
"TabLogs": "Lokit", "TabLogs": "Lokit",
"TabLatest": "Uudet", "TabLatest": "Hiljattain lisätyt",
"TabDirectPlay": "Muuntamaton toisto", "TabDirectPlay": "Muuntamaton toisto",
"TabDashboard": "Hallintapaneeli", "TabDashboard": "Hallintapaneeli",
"TabCatalog": "Luettelo", "TabCatalog": "Luettelo",
@ -1264,7 +1264,7 @@
"LabelMinAudiobookResumeHelp": "Kohteita pidetään toistamattomina, jos toisto keskeytetään ennen tätä aikaa.", "LabelMinAudiobookResumeHelp": "Kohteita pidetään toistamattomina, jos toisto keskeytetään ennen tätä aikaa.",
"LabelMaxStreamingBitrate": "Suoratoiston enimmäislaatu:", "LabelMaxStreamingBitrate": "Suoratoiston enimmäislaatu:",
"MoreFromValue": "Lisää kohteesta {0}", "MoreFromValue": "Lisää kohteesta {0}",
"LatestFromLibrary": "Uudet '{0}'", "LatestFromLibrary": "Hiljattain lisätty: '{0}'",
"LabelVideoRange": "Videon alue:", "LabelVideoRange": "Videon alue:",
"LabelVaapiDeviceHelp": "Tämä on renderöintinoodi, jota käytetään laitteistokiihdytykseen.", "LabelVaapiDeviceHelp": "Tämä on renderöintinoodi, jota käytetään laitteistokiihdytykseen.",
"LabelUserRemoteClientBitrateLimitHelp": "Korvaa globaali arvo asetusten kohdasta Ohjauspaneeli > Toisto > Suoratoisto.", "LabelUserRemoteClientBitrateLimitHelp": "Korvaa globaali arvo asetusten kohdasta Ohjauspaneeli > Toisto > Suoratoisto.",
@ -1306,7 +1306,7 @@
"LabelSlowResponseEnabled": "Kirjaa lokimerkintä, jos palvelin vastasi liian hitaasti", "LabelSlowResponseEnabled": "Kirjaa lokimerkintä, jos palvelin vastasi liian hitaasti",
"LabelSkipIfGraphicalSubsPresentHelp": "Tekstitysten säilytys tekstimuodossa mahdollistaa sujuvamman mediatoiston ja vähentää transkoodauksen todennäköisyyttä.", "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ä.", "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", "LabelEnableGamepad": "Ota käyttöön peliohjain",
"Controls": "Ohjaimet", "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.", "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", "DownloadAll": "Lataa kaikki",
"Experimental": "Kokeellinen", "Experimental": "Kokeellinen",
"LabelStereoDownmixAlgorithm": "Stereoäänen alasmiksausalgoritmi:", "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.", "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", "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.", "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", "HeaderBranding": "Slogan",
"LabelAudioSampleRate": "Taux déchantillonnage audio :", "LabelAudioSampleRate": "Taux déchantillonnage audio :",
"LabelAudioLanguagePreference": "Langue audio préférée :", "LabelAudioLanguagePreference": "Langue audio préférée :",
@ -1017,5 +1017,8 @@
"LabelLoginDisclaimerHelp": "Un message qui sera affiché au bas de la page de connexion.", "LabelLoginDisclaimerHelp": "Un message qui sera affiché au bas de la page de connexion.",
"LabelManufacturerUrl": "URL du fabricant :", "LabelManufacturerUrl": "URL du fabricant :",
"LabelMaxChromecastBitrate": "Qualité du streaming pour Google Cast :", "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", "HeaderKeepRecording": "Garder l'enregistrement",
"HeaderKeepSeries": "Garder la série", "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'.", "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", "HeaderLatestMedia": "Ajouts récents",
"HeaderLatestMovies": "Derniers films", "HeaderLatestMovies": "Ajouts récents",
"HeaderLatestMusic": "Dernières musiques", "HeaderLatestMusic": "Ajouts récents",
"HeaderLatestRecordings": "Derniers enregistrements", "HeaderLatestRecordings": "Ajouts récents",
"HeaderLibraries": "Médiathèques", "HeaderLibraries": "Médiathèques",
"HeaderLibraryAccess": "Accès à la médiathèque", "HeaderLibraryAccess": "Accès à la médiathèque",
"HeaderLibraryFolders": "Dossiers de la médiathèque", "HeaderLibraryFolders": "Dossiers de la médiathèque",
@ -1068,7 +1068,7 @@
"TabContainers": "Conteneurs", "TabContainers": "Conteneurs",
"TabDashboard": "Tableau de bord", "TabDashboard": "Tableau de bord",
"TabDirectPlay": "Lecture directe", "TabDirectPlay": "Lecture directe",
"TabLatest": "Derniers", "TabLatest": "Ajouts récents",
"TabLogs": "Journaux", "TabLogs": "Journaux",
"TabMusic": "Musiques", "TabMusic": "Musiques",
"TabMyPlugins": "Mes extensions", "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.", "DirectPlayHelp": "Le fichier source est entièrement compatible avec le client et la session reçoit le fichier sans modifications.",
"HeaderContinueReading": "Reprendre la lecture", "HeaderContinueReading": "Reprendre la lecture",
"TextSent": "Message envoyé.", "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", "LabelEnableGamepad": "Activer la manette de jeu",
"Controls": "Contrôles", "Controls": "Contrôles",
"MessageSent": "Message envoyé.", "MessageSent": "Message envoyé.",
@ -1628,7 +1628,7 @@
"AllowEmbeddedSubtitlesAllowNoneOption": "Ne rien accepter", "AllowEmbeddedSubtitlesAllowNoneOption": "Ne rien accepter",
"AllowEmbeddedSubtitlesAllowAllOption": "Tout 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.", "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", "ShowParentImages": "Afficher les images de la série",
"NextUpRewatching": "Revoir", "NextUpRewatching": "Revoir",
"MixedMoviesShows": "Films et séries mélangés", "MixedMoviesShows": "Films et séries mélangés",
@ -1688,5 +1688,21 @@
"DownloadAll": "Tout télécharger", "DownloadAll": "Tout télécharger",
"Experimental": "Expérimental", "Experimental": "Expérimental",
"StereoDownmixAlgorithmHelp": "Algorithme utilisé pour rééchantillonner laudio multicanal en stéréo.", "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", "Collections": "Sammlungen",
"Favorites": "Favoriten", "Favorites": "Favoriten",
"Folders": "Ordner", "Folders": "Ordner",
"Genres": "Genres", "Genres": "Genre",
"HeaderAlbumArtists": "Album-Künstler", "HeaderAlbumArtists": "Album-Künstler",
"HeaderContinueWatching": "weiter schauen", "HeaderContinueWatching": "weiter schauen",
"Movies": "Film", "Movies": "Film",

View file

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

View file

@ -17,16 +17,16 @@
"AddToCollection": "संग्रह में जोड़ें", "AddToCollection": "संग्रह में जोड़ें",
"Add": "जोड़ें", "Add": "जोड़ें",
"Actor": "अभिनेता", "Actor": "अभिनेता",
"AccessRestrictedTryAgainLater": "वर्तमान में पहुंच प्रतिबंधित है। कृपया बाद में पुनः प्रयास करें.", "AccessRestrictedTryAgainLater": "पहुंच प्रतिबंधित है। कृपया बाद में प्रयास करें.",
"AllowHWTranscodingHelp": "ट्यूनर को निरंतर रूप से धाराओं को ट्रांसकोड करने दें। यह सर्वर द्वारा ट्रांसकोडिंग को कम करने में मदद कर सकता है।", "AllowHWTranscodingHelp": "ट्यूनर को निरंतर रूप से धाराओं को ट्रांसकोड करने दें। यह सर्वर द्वारा ट्रांसकोडिंग को कम करने में मदद कर सकता है।",
"AllLanguages": "सभी भाषाएं", "AllLanguages": "सभी भाषाएं",
"AllEpisodes": "सभी प्रकरण", "AllEpisodes": "सभी प्रकरण",
"AllComplexFormats": "सभी जटिल प्रारूप (ASS, SSA, VobSub, PGS, SUB, IDX, …)", "AllComplexFormats": "सभी प्रारूप (ASS, SSA, VobSub, PGS, SUB, IDX, …)",
"AllChannels": "सभी चैनल्स", "AllChannels": "सभी चैनल्स",
"Alerts": "चेतावनियां", "Alerts": "चेतावनियां",
"Albums": "एल्बम", "Albums": "एल्बम",
"Aired": "प्रसारित हो चुका", "Aired": "प्रसारित हो चुका है",
"AdditionalNotificationServices": "अतिरिक्त सूचना सेवाओं को स्थापित करने के लिए प्लगइन सूची पर नज़र डालें।", "AdditionalNotificationServices": "दी गयी सूची में से प्लगिन इनस्टॉल करें|",
"AddedOnValue": "जोड़ दिया", "AddedOnValue": "जोड़ दिया",
"AddToPlaylist": "प्लेलिस्ट में जोड़ें", "AddToPlaylist": "प्लेलिस्ट में जोड़ें",
"AllowMediaConversionHelp": "मीडिया परिवर्तन के लिये अनुमति दें या इनकार करें.", "AllowMediaConversionHelp": "मीडिया परिवर्तन के लिये अनुमति दें या इनकार करें.",
@ -86,7 +86,7 @@
"AllowFfmpegThrottlingHelp": "जब एक ट्रांसकोड या रीमूक्स वर्तमान प्लेबैक स्थिति से काफी आगे हो जाता है, तो प्रक्रिया को रोकें ताकि यह कम संसाधनों का उपभोग करेगा। अक्सर मांग किए बिना देखने पर यह सबसे उपयोगी है। यदि आप प्लेबैक समस्याओं का अनुभव करते हैं तो इसे बंद कर दें।", "AllowFfmpegThrottlingHelp": "जब एक ट्रांसकोड या रीमूक्स वर्तमान प्लेबैक स्थिति से काफी आगे हो जाता है, तो प्रक्रिया को रोकें ताकि यह कम संसाधनों का उपभोग करेगा। अक्सर मांग किए बिना देखने पर यह सबसे उपयोगी है। यदि आप प्लेबैक समस्याओं का अनुभव करते हैं तो इसे बंद कर दें।",
"AllowFfmpegThrottling": "थ्रोटल ट्रांसकोड", "AllowFfmpegThrottling": "थ्रोटल ट्रांसकोड",
"AllowOnTheFlySubtitleExtractionHelp": "वीडियो ट्रांसकोडिंग को रोकने में मदद करने के लिए एंबेडेड सबटाइटल वीडियो से निकाले जा सकते हैं और सादे पाठ में ग्राहकों तक पहुंचाए जाते हैं। कुछ प्रणालियों पर यह एक लंबा समय ले सकता है और निष्कर्षण प्रक्रिया के दौरान वीडियो प्लेबैक को स्टाल करने का कारण बन सकता है। जब वे क्लाइंट डिवाइस द्वारा मूल रूप से समर्थित नहीं होते हैं, तो वीडियो ट्रांसकोडिंग के साथ जले हुए एम्बेडेड उपशीर्षक को अक्षम करें।", "AllowOnTheFlySubtitleExtractionHelp": "वीडियो ट्रांसकोडिंग को रोकने में मदद करने के लिए एंबेडेड सबटाइटल वीडियो से निकाले जा सकते हैं और सादे पाठ में ग्राहकों तक पहुंचाए जाते हैं। कुछ प्रणालियों पर यह एक लंबा समय ले सकता है और निष्कर्षण प्रक्रिया के दौरान वीडियो प्लेबैक को स्टाल करने का कारण बन सकता है। जब वे क्लाइंट डिवाइस द्वारा मूल रूप से समर्थित नहीं होते हैं, तो वीडियो ट्रांसकोडिंग के साथ जले हुए एम्बेडेड उपशीर्षक को अक्षम करें।",
"AlbumArtist": "चित्राधार कलाकार", "AlbumArtist": "एल्बम कलाकार",
"AllowOnTheFlySubtitleExtraction": "मक्खी पर उपशीर्षक निष्कर्षण की अनुमति दें", "AllowOnTheFlySubtitleExtraction": "मक्खी पर उपशीर्षक निष्कर्षण की अनुमति दें",
"Album": "एल्बम", "Album": "एल्बम",
"ButtonSyncPlay": "SyncPlay", "ButtonSyncPlay": "SyncPlay",
@ -129,5 +129,23 @@
"MusicVideos": "संगीत वीडियो", "MusicVideos": "संगीत वीडियो",
"OptionBluray": "BD", "OptionBluray": "BD",
"Playlists": "प्लेलिस्ट", "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", "Playlists": "Popisi za reprodukciju",
"AllowMediaConversionHelp": "Dopusti ili odbij pristup mogućnosti konverzije medija.", "AllowMediaConversionHelp": "Dopusti ili odbij pristup mogućnosti konverzije medija.",
"AllLibraries": "Sve biblioteke", "AllLibraries": "Sve biblioteke",
"Aired": "Emitirano", "Aired": "Prenošeno",
"AirDate": "Datum prikazivanja", "AirDate": "Datum prikazivanja",
"AddedOnValue": "Dodano {0}", "AddedOnValue": "Dodano {0}",
"Songs": "Pjesme", "Songs": "Pjesme",
@ -872,7 +872,7 @@
"AlwaysPlaySubtitles": "Uvijek pokreni titlove", "AlwaysPlaySubtitles": "Uvijek pokreni titlove",
"AllowRemoteAccessHelp": "Ako je odznačeno, svi udaljeni pristupi će biti blokirani.", "AllowRemoteAccessHelp": "Ako je odznačeno, svi udaljeni pristupi će biti blokirani.",
"AllowRemoteAccess": "Dopusti udaljene pristupe na ovaj server", "AllowRemoteAccess": "Dopusti udaljene pristupe na ovaj server",
"AllowOnTheFlySubtitleExtraction": "Dopusti izdvajanje titla tokom reprodukcije", "AllowOnTheFlySubtitleExtraction": "Dopusti izdvajanje titla tijekom reprodukcije",
"AllowMediaConversion": "Dopusti konverziju medija", "AllowMediaConversion": "Dopusti konverziju medija",
"AllLanguages": "Svi jezici", "AllLanguages": "Svi jezici",
"Alerts": "Upozorenja", "Alerts": "Upozorenja",
@ -1189,7 +1189,7 @@
"AgeValue": "(staro {0} godina)", "AgeValue": "(staro {0} godina)",
"MusicVideos": "Glazbeni spotovi", "MusicVideos": "Glazbeni spotovi",
"Subtitle": "Titl", "Subtitle": "Titl",
"AddToFavorites": "Dodaj u favorite", "AddToFavorites": "Dodaj u omiljene",
"Unreleased": "Još nije objavljeno", "Unreleased": "Još nije objavljeno",
"ButtonExitApp": "Izlaz iz aplikacije", "ButtonExitApp": "Izlaz iz aplikacije",
"Casual": "Ležerno", "Casual": "Ležerno",

View file

@ -154,7 +154,7 @@
"Movies": "Film", "Movies": "Film",
"Alerts": "Peringatan", "Alerts": "Peringatan",
"AddedOnValue": "{0} Ditambahkan", "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.", "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", "ButtonSyncPlay": "SyncPlay",
"EnablePhotosHelp": "Gambar akan terdeteksi dan ditampilkan bersama file media lainnya.", "EnablePhotosHelp": "Gambar akan terdeteksi dan ditampilkan bersama file media lainnya.",

View file

@ -250,7 +250,7 @@
"HeaderDeleteDevice": "Elimina dispositivo", "HeaderDeleteDevice": "Elimina dispositivo",
"HeaderDeleteItem": "Elimina Elemento", "HeaderDeleteItem": "Elimina Elemento",
"HeaderDeleteItems": "Elimina Elementi", "HeaderDeleteItems": "Elimina Elementi",
"HeaderDeleteProvider": "eliminare Provider", "HeaderDeleteProvider": "Eliminare Provider",
"HeaderDeleteTaskTrigger": "Elimina Operazione pianificata", "HeaderDeleteTaskTrigger": "Elimina Operazione pianificata",
"HeaderDetectMyDevices": "Rileva i miei dispositivi", "HeaderDetectMyDevices": "Rileva i miei dispositivi",
"HeaderDeveloperInfo": "Info sviluppatore", "HeaderDeveloperInfo": "Info sviluppatore",
@ -488,7 +488,7 @@
"LabelEpisodeNumber": "Numero espisodio:", "LabelEpisodeNumber": "Numero espisodio:",
"LabelEvent": "Evento:", "LabelEvent": "Evento:",
"LabelEveryXMinutes": "Tutti:", "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.", "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", "LabelFailed": "Fallito",
"LabelFileOrUrl": "File o URL:", "LabelFileOrUrl": "File o URL:",
@ -510,7 +510,7 @@
"LabelIconMaxHeight": "Altezza icona massima:", "LabelIconMaxHeight": "Altezza icona massima:",
"LabelIconMaxWidth": "Larghezza massima icona:", "LabelIconMaxWidth": "Larghezza massima icona:",
"LabelIdentificationFieldHelp": "Una stringa o espressione regex sensibile a maiuscole e minuscole.", "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:", "LabelImageType": "Tipo immagine:",
"LabelImportOnlyFavoriteChannels": "Limitare ai canali segnato come", "LabelImportOnlyFavoriteChannels": "Limitare ai canali segnato come",
"LabelInNetworkSignInWithEasyPassword": "Abilita l'accesso da rete locale tramite codice PIN Semplificato", "LabelInNetworkSignInWithEasyPassword": "Abilita l'accesso da rete locale tramite codice PIN Semplificato",
@ -551,7 +551,7 @@
"LabelMessageTitle": "Titolo messaggio:", "LabelMessageTitle": "Titolo messaggio:",
"LabelMetadata": "Metadati:", "LabelMetadata": "Metadati:",
"LabelMetadataDownloadLanguage": "Lingua preferita per lo scaricamento:", "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:", "LabelMetadataPath": "Percorso per i metadati:",
"LabelMetadataPathHelp": "Specificare un percorso personalizzato per le immagini e i metadati scaricati.", "LabelMetadataPathHelp": "Specificare un percorso personalizzato per le immagini e i metadati scaricati.",
"LabelMetadataReaders": "Lettori Metadati:", "LabelMetadataReaders": "Lettori Metadati:",
@ -698,7 +698,7 @@
"LabelffmpegPathHelp": "Il percorso dell'applicazione FFmpeg o della cartella che la contiene.", "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.", "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", "Large": "Grande",
"LatestFromLibrary": "Ultime {0}", "LatestFromLibrary": "{0} Recenti",
"LearnHowYouCanContribute": "Scopri come puoi contribuire.", "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.", "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", "List": "Lista",
@ -1513,7 +1513,7 @@
"MessageSent": "Messaggio inviato.", "MessageSent": "Messaggio inviato.",
"LabelEnableGamepad": "Abilita il Gamepad", "LabelEnableGamepad": "Abilita il Gamepad",
"TextSent": "Messaggio inviato.", "TextSent": "Messaggio inviato.",
"EnableGamepadHelp": "Ascolta per ingresso da ogni controller collegato.", "EnableGamepadHelp": "Attendi input da qualsiasi controller connesso. (Richiede: Modalità visualizzazione 'TV')",
"Controls": "Controlli", "Controls": "Controlli",
"UseEpisodeImagesInNextUpHelp": "Le sezioni 'Prossimo' e 'Continua a Guardare' useranno le immagini dell'episodio come miniature al posto della miniatura principale dello spettacolo.", "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'", "UseEpisodeImagesInNextUp": "Usa le immagini dell'episodio nelle sezioni 'Prossimo' e 'Continua a guardare'",

View file

@ -4,28 +4,28 @@
"Actor": "俳優", "Actor": "俳優",
"Add": "追加", "Add": "追加",
"AddToCollection": "コレクションに追加", "AddToCollection": "コレクションに追加",
"AddToPlayQueue": "再生リストに追加", "AddToPlayQueue": "再生キューに追加",
"AddToPlaylist": "プレイリストに追加", "AddToPlaylist": "プレイリストに追加",
"AddedOnValue": "{0}を追加しました", "AddedOnValue": "{0}を追加しました",
"AdditionalNotificationServices": "プラグインカタログから通知サービスを追加してください。", "AdditionalNotificationServices": "プラグインカタログから通知サービスを追加してください。",
"AirDate": "放送日", "AirDate": "放送日",
"Aired": "放映された", "Aired": "放映された",
"Albums": "アルバム", "Albums": "アルバム",
"Alerts": "アティスト", "Alerts": "アート",
"All": "すべて", "All": "すべて",
"AllChannels": "すべてのチャンネル", "AllChannels": "すべてのチャンネル",
"AllComplexFormats": "すべての複雑なフォーマット (ASS, SSA, VobSub, PGS, SUB, IDX など)", "AllComplexFormats": "すべての複雑なフォーマット (ASS, SSA, VobSub, PGS, SUB, IDX など)",
"AllEpisodes": "すべてのエピソード", "AllEpisodes": "すべてのエピソード",
"AllLanguages": "すべての言語", "AllLanguages": "すべての言語",
"AllLibraries": "すべてのライブラリ", "AllLibraries": "すべてのライブラリ",
"AllowHWTranscodingHelp": "チューナーによるストリームトランスコードを有効にする。 場合によってサーバーへのトランスコーディング負担を減らすことができます。", "AllowHWTranscodingHelp": "チューナーでのストリームトランスコードを有効にします。 有効にすることで、サーバーへのトランスコード要求を減少させられる場合があります。",
"AllowMediaConversion": "メディアの変換を許可する", "AllowMediaConversion": "メディアの変換を許可する",
"AllowMediaConversionHelp": "メディア変換機能へのアクセスを許可もしくは、拒否します。", "AllowMediaConversionHelp": "メディア変換機能へのアクセスを許可もしくは、拒否します。",
"AllowOnTheFlySubtitleExtraction": "字幕の抽出の許可/拒否", "AllowOnTheFlySubtitleExtraction": "字幕の抽出の許可/拒否",
"AllowOnTheFlySubtitleExtractionHelp": "埋め込まれた字幕は、ビデオのトランスコードを防ぐために、ビデオから抽出してプレーンテキストでクライアントに配信できます。 システムによっては、これに時間がかかり、抽出中にビデオの再生が止まることがあります。 これを無効にし、埋め込み字幕がクライアントデバイスでネイティブにサポートされていない場合、ビデオのトランスコードが強制されます。", "AllowOnTheFlySubtitleExtractionHelp": "埋め込まれた字幕は、ビデオのトランスコードを防ぐために、ビデオから抽出してプレーンテキストでクライアントに配信できます。 システムによっては、これに時間がかかり、抽出中にビデオの再生が止まることがあります。 これを無効にし、埋め込み字幕がクライアントデバイスでネイティブにサポートされていない場合、ビデオのトランスコードが強制されます。",
"AllowRemoteAccess": "サーバへのリモート接続の許可", "AllowRemoteAccess": "サーバへのリモート接続の許可",
"AllowRemoteAccessHelp": "チェックが入っていない場合すべてのリモート接続をブロックします。", "AllowRemoteAccessHelp": "チェックが入っていない場合すべてのリモート接続をブロックします。",
"AllowedRemoteAddressesHelp": "リモート接続を許可するネットワークのIPアドレスまたはIPアドレス/マスク長 空白のままにすると、すべてのリモートアドレスが許可されます。", "AllowedRemoteAddressesHelp": "リモート接続を許可するネットワークのIPアドレスまたはIPアドレス/ネットマスクをコンマ区切りのリストで指定できます。空白のままにすると、すべてのリモートアドレスが許可されます。",
"AlwaysPlaySubtitles": "常に有効", "AlwaysPlaySubtitles": "常に有効",
"AlwaysPlaySubtitlesHelp": "言語に合った字幕が音声言語に関係なく読み込まれます。", "AlwaysPlaySubtitlesHelp": "言語に合った字幕が音声言語に関係なく読み込まれます。",
"AnyLanguage": "任意の言語", "AnyLanguage": "任意の言語",
@ -144,8 +144,8 @@
"DirectStreamHelp1": "ビデオストリームは、お使いのデバイスとの互換性がありますが、DTS、Dolby TrueHDなどのオーディオフォーマットまたはオーディオチャンネル数で互換性がありません。ビデオストリームは、デバイスに送信される前に、ロスレスに再パッケージされ、音声ストリームのみをトランスコードします。", "DirectStreamHelp1": "ビデオストリームは、お使いのデバイスとの互換性がありますが、DTS、Dolby TrueHDなどのオーディオフォーマットまたはオーディオチャンネル数で互換性がありません。ビデオストリームは、デバイスに送信される前に、ロスレスに再パッケージされ、音声ストリームのみをトランスコードします。",
"DirectStreamHelp2": "ダイレクトストリーミングによって消費される電力はオーディオプロファイルによります。動画のストリームのみが可逆圧縮です。", "DirectStreamHelp2": "ダイレクトストリーミングによって消費される電力はオーディオプロファイルによります。動画のストリームのみが可逆圧縮です。",
"DirectStreaming": "ダイレクトストリーミング", "DirectStreaming": "ダイレクトストリーミング",
"Director": "ディレクター", "Director": "監督",
"Directors": "ディレクターズ", "Directors": "監督",
"Disc": "ディスク", "Disc": "ディスク",
"Disconnect": "切断", "Disconnect": "切断",
"Display": "ディスプレイ", "Display": "ディスプレイ",
@ -942,7 +942,7 @@
"LabelEnableBlastAliveMessages": "アライブメッセージを配信する", "LabelEnableBlastAliveMessages": "アライブメッセージを配信する",
"LabelDateAddedBehaviorHelp": "メタデータがある場合、これらのオプションの前に優先します。", "LabelDateAddedBehaviorHelp": "メタデータがある場合、これらのオプションの前に優先します。",
"AskAdminToCreateLibrary": "管理者にライブラリを作成する依頼をしてください。", "AskAdminToCreateLibrary": "管理者にライブラリを作成する依頼をしてください。",
"AllowFfmpegThrottling": "トランスコードをスロットルする", "AllowFfmpegThrottling": "トランスコードを制限",
"Episode": "エピソード", "Episode": "エピソード",
"ClientSettings": "クライアント設定", "ClientSettings": "クライアント設定",
"Artist": "アーティスト", "Artist": "アーティスト",
@ -1492,7 +1492,7 @@
"LabelDisableCustomCss": "サーバーから提供されるテーマ/ブランディングのためのカスタムCSSコードを無効にする。", "LabelDisableCustomCss": "サーバーから提供されるテーマ/ブランディングのためのカスタムCSSコードを無効にする。",
"DisableCustomCss": "サーバーが提供するカスタムCSSコードの無効化", "DisableCustomCss": "サーバーが提供するカスタムCSSコードの無効化",
"ErrorPlayerNotFound": "再生しようとしたメディア用のプレイヤーがありません。", "ErrorPlayerNotFound": "再生しようとしたメディア用のプレイヤーがありません。",
"AgeValue": "({0}年前)", "AgeValue": "({0})",
"OtherArtist": "その他のアーチスト", "OtherArtist": "その他のアーチスト",
"NextChapter": "次のチャプター", "NextChapter": "次のチャプター",
"Mixer": "ミキサー", "Mixer": "ミキサー",
@ -1630,5 +1630,59 @@
"LabelSelectAudioChannels": "チャンネル", "LabelSelectAudioChannels": "チャンネル",
"MessageChromecastConnectionError": "Google CastレシーバーがJellyfinサーバーに接続できません。接続を確認し、もう一度試してください。", "MessageChromecastConnectionError": "Google CastレシーバーがJellyfinサーバーに接続できません。接続を確認し、もう一度試してください。",
"MessagePlaybackError": "Google Cast レシーバーでこのファイルを再生する際にエラーが発生しました。", "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": "დამატება", "Add": "დამატება",
"Aired": "გამოვიდა", "Aired": "გამოვიდა",
"Albums": "ალბომები", "Albums": "ალბომები",
"All": "ყველა" "All": "ყველა",
"Collections": "კოლექციები",
"Default": "ნაგულისხმები",
"Genres": "ჟანრები",
"Artists": "შემსრულებლები",
"Books": "წიგნები",
"Channels": "არხები",
"HeaderAlbumArtists": "ალბომის შემსრულებლები",
"MusicVideos": "მუსიკის ვიდეოები",
"Playlists": "დასაკრავი სიები",
"Sync": "სინქრონიზაცია",
"ValueSpecialEpisodeName": "სპეციალური - {0}",
"HeaderContinueWatching": "ყურების გაგრძელება",
"Movies": "ფილმები",
"Shows": "სერიალები",
"Songs": "სიმღერები",
"Photos": "ფოტოები",
"Favorites": "რჩეულები",
"Folders": "საქაღალდეები"
} }

View file

@ -307,7 +307,7 @@
"LabelMetadataPath": "메타데이터 경로:", "LabelMetadataPath": "메타데이터 경로:",
"LabelMetadataPathHelp": "다운로드한 아트워크와 메타데이터를 저장할 위치를 지정합니다.", "LabelMetadataPathHelp": "다운로드한 아트워크와 메타데이터를 저장할 위치를 지정합니다.",
"LabelMetadataSavers": "메타데이터 저장기:", "LabelMetadataSavers": "메타데이터 저장기:",
"LabelMetadataSaversHelp": "메타 데이터를 저장할 때 사용할 파일 형식을 선택하십시오.", "LabelMetadataSaversHelp": "메타데이터를 저장할 때 사용할 파일 형식을 선택하십시오.",
"LabelMethod": "방법:", "LabelMethod": "방법:",
"LabelMinBackdropDownloadWidth": "다운로드할 배경 이미지 최소 넓이:", "LabelMinBackdropDownloadWidth": "다운로드할 배경 이미지 최소 넓이:",
"LabelMinScreenshotDownloadWidth": "다운로드할 스크린샷의 최소 너비:", "LabelMinScreenshotDownloadWidth": "다운로드할 스크린샷의 최소 너비:",
@ -326,7 +326,7 @@
"LabelNotificationEnabled": "이 알림 활성화", "LabelNotificationEnabled": "이 알림 활성화",
"LabelNumber": "번호:", "LabelNumber": "번호:",
"LabelNumberOfGuideDays": "일별 편성표 데이터 다운로드:", "LabelNumberOfGuideDays": "일별 편성표 데이터 다운로드:",
"LabelNumberOfGuideDaysHelp": "더 많은 기간의 편성표 데이터를 다운로드하는 것은 목록 및 예약 녹화의 범위가 늘어 나지만 다운로드하는 데 시간이 오래 걸릴 수 있습니다.", "LabelNumberOfGuideDaysHelp": "더 많은 기간의 편성표 데이터를 다운로드하면 더 많은 방송 일정 예약을 할 수 있고 볼 수 있는 목록이 늘어 나지만 다운로드하는 데 더 많은 시간이 소요됩니다. 자동은 채널 수에 따라 선택됩니다.",
"LabelOriginalAspectRatio": "원 화면비율:", "LabelOriginalAspectRatio": "원 화면비율:",
"LabelOverview": "줄거리:", "LabelOverview": "줄거리:",
"LabelParentalRating": "등급:", "LabelParentalRating": "등급:",
@ -742,7 +742,7 @@
"Sports": "스포츠", "Sports": "스포츠",
"SortChannelsBy": "채널 정렬:", "SortChannelsBy": "채널 정렬:",
"SortByValue": "{0} 정렬", "SortByValue": "{0} 정렬",
"Sort": "정", "Sort": "정",
"SkipEpisodesAlreadyInMyLibrary": "이미 라이브러리에 있는 에피소드는 녹화 안 함", "SkipEpisodesAlreadyInMyLibrary": "이미 라이브러리에 있는 에피소드는 녹화 안 함",
"SimultaneousConnectionLimitHelp": "최대 동시 스트림 갯수. 0은 제한없음입니다.", "SimultaneousConnectionLimitHelp": "최대 동시 스트림 갯수. 0은 제한없음입니다.",
"Shuffle": "셔플", "Shuffle": "셔플",
@ -1294,7 +1294,7 @@
"EnableFasterAnimations": "더 빠른 애니메이션", "EnableFasterAnimations": "더 빠른 애니메이션",
"LabelRequireHttpsHelp": "선택하면 서버가 HTTP를 통한 모든 요청을 HTTPS로 자동 리디렉션합니다. 서버가 HTTPS에서 수신하지 않는 경우에는 효과가 없습니다.", "LabelRequireHttpsHelp": "선택하면 서버가 HTTP를 통한 모든 요청을 HTTPS로 자동 리디렉션합니다. 서버가 HTTPS에서 수신하지 않는 경우에는 효과가 없습니다.",
"LabelRequireHttps": "HTTPS가 필요합니다", "LabelRequireHttps": "HTTPS가 필요합니다",
"LabelQuickConnectCode": "퀵커넥트 코드:", "LabelQuickConnectCode": "퀵 커넥트 코드:",
"LabelUnstable": "불안정", "LabelUnstable": "불안정",
"LabelStable": "안정", "LabelStable": "안정",
"LabelChromecastVersion": "구글 캐스트 버전", "LabelChromecastVersion": "구글 캐스트 버전",
@ -1322,7 +1322,7 @@
"Authorize": "승인", "Authorize": "승인",
"QuickConnectNotActive": "이 서버에서 퀵커넥트가 활성화되지 않았습니다", "QuickConnectNotActive": "이 서버에서 퀵커넥트가 활성화되지 않았습니다",
"Raised": "양각", "Raised": "양각",
"LabelMaxMuxingQueueSizeHelp": "모든 스트림이 초기화 될 때까지 기다리는 동안 버퍼링 할 수있는 최대 패킷 수입니다. ffmpeg 로그에서 \"출력 스트림에 대해 버퍼링 된 패킷이 너무 많음\"오류가 계속 발생하면이를 늘리십시오. 권장 값은 2048입니다.", "LabelMaxMuxingQueueSizeHelp": "모든 스트림이 초기화되기를 기다리는 동안 버퍼링할 수 있는 최대 패킷 수입니다. ffmpeg 로그에서 \"출력 스트림을 위해 버퍼링된 패킷이 너무 많습니다\" 오류가 계속 발생하면 값을 늘리십시오. 권장 값은 2048입니다.",
"LabelMaxMuxingQueueSize": "최대 muxing 대기열 크기 :", "LabelMaxMuxingQueueSize": "최대 muxing 대기열 크기 :",
"Preview": "미리보기", "Preview": "미리보기",
"SubtitleVerticalPositionHelp": "텍스트가 나타나는 줄 번호입니다. 양수는 하향식을 나타냅니다. 음수는 상향식을 나타냅니다.", "SubtitleVerticalPositionHelp": "텍스트가 나타나는 줄 번호입니다. 양수는 하향식을 나타냅니다. 음수는 상향식을 나타냅니다.",
@ -1351,7 +1351,7 @@
"Premieres": "첫날", "Premieres": "첫날",
"AllowTonemappingHelp": "톤 매핑은 원본 장면을 표현하는 데 매우 중요한 정보 인 이미지 세부 정보와 색상을 유지하면서 HDR에서 SDR로 비디오의 동적 범위를 변환 할 수 있습니다. 현재는 HDR10 또는 HLG 메타 데이터가 포함 된 비디오에만 작동합니다.", "AllowTonemappingHelp": "톤 매핑은 원본 장면을 표현하는 데 매우 중요한 정보 인 이미지 세부 정보와 색상을 유지하면서 HDR에서 SDR로 비디오의 동적 범위를 변환 할 수 있습니다. 현재는 HDR10 또는 HLG 메타 데이터가 포함 된 비디오에만 작동합니다.",
"EnableTonemapping": "톤 매핑 활성화", "EnableTonemapping": "톤 매핑 활성화",
"LabelOpenclDeviceHelp": "이것은 톤 매핑에 사용되는 OpenCL 장치입니다. 점의 왼쪽은 플랫폼 번호이고 오른쪽은 플랫폼의 장치 번호입니다. 기본값은 0.0입니다. OpenCL 하드웨어 가속 방법이 포함 된 ffmpeg 응용 프로그램 파일이 필요합니다.", "LabelOpenclDeviceHelp": "이것은 톤 매핑에 사용되는 OpenCL 장치입니다. 점의 왼쪽은 플랫폼 번호이고 오른쪽은 플랫폼의 장치 번호입니다. 기본값은 0.0입니다. OpenCL 하드웨어 가속 방법이 포함 된 ffmpeg 응용프로그램 파일이 필요합니다.",
"LabelOpenclDevice": "OpenCL 장치:", "LabelOpenclDevice": "OpenCL 장치:",
"LabelColorPrimaries": "원색:", "LabelColorPrimaries": "원색:",
"LabelColorTransfer": "색상 이동:", "LabelColorTransfer": "색상 이동:",
@ -1471,7 +1471,7 @@
"LabelSSDPTracingFilterHelp": "기록된 SSDP 트래픽을 필터링할 선택적 IP 주소입니다.", "LabelSSDPTracingFilterHelp": "기록된 SSDP 트래픽을 필터링할 선택적 IP 주소입니다.",
"LabelSSDPTracingFilter": "SSDP 필터:", "LabelSSDPTracingFilter": "SSDP 필터:",
"LabelSlowResponseTime": "응답이 느린 것으로 간주되는 시간(ms):", "LabelSlowResponseTime": "응답이 느린 것으로 간주되는 시간(ms):",
"LabelSlowResponseEnabled": "서버 응답이 느릴 경우 경고로그 기록", "LabelSlowResponseEnabled": "서버 응답이 느릴 경우 경고 로그 기록",
"LabelPublishedServerUriHelp": "인터페이스 또는 클라이언트 IP 주소를 기반으로 Jellyfin에서 사용하는 URI를 설정합니다.", "LabelPublishedServerUriHelp": "인터페이스 또는 클라이언트 IP 주소를 기반으로 Jellyfin에서 사용하는 URI를 설정합니다.",
"LabelPublishedServerUri": "공개 서버 URI:", "LabelPublishedServerUri": "공개 서버 URI:",
"HeaderContinueReading": "계속 읽기", "HeaderContinueReading": "계속 읽기",
@ -1495,7 +1495,7 @@
"SubtitleCodecNotSupported": "자막 코덱이 지원되지 않습니다", "SubtitleCodecNotSupported": "자막 코덱이 지원되지 않습니다",
"ContainerNotSupported": "컨테이너가 지원되지 않습니다", "ContainerNotSupported": "컨테이너가 지원되지 않습니다",
"AudioCodecNotSupported": "오디오 코덱이 지원되지 않습니다", "AudioCodecNotSupported": "오디오 코덱이 지원되지 않습니다",
"EnableGamepadHelp": "연결된 컨트롤러에서 입력을 수신합니다.", "EnableGamepadHelp": "연결된 컨트롤러에서 입력을 수신합니다. ('TV' 디스플레이 모드가 필요합니다)",
"LabelEnableGamepad": "게임패드 활성화", "LabelEnableGamepad": "게임패드 활성화",
"Controls": "컨트롤", "Controls": "컨트롤",
"EnableVppTonemapping": "VPP Tone 매핑 활성화", "EnableVppTonemapping": "VPP Tone 매핑 활성화",
@ -1589,5 +1589,19 @@
"IgnoreDtsHelp": "이 옵션을 비활성화하면 일부 문제가 해결될 수 있습니다. 예를 들어 별도의 오디오 및 비디오 스트림이 있는 채널에서 없는 오디오를 불러올 수 있습니다 .", "IgnoreDtsHelp": "이 옵션을 비활성화하면 일부 문제가 해결될 수 있습니다. 예를 들어 별도의 오디오 및 비디오 스트림이 있는 채널에서 없는 오디오를 불러올 수 있습니다 .",
"LabelMaxVideoResolution": "허용되는 최대 비디오 코덱 변경 해상도", "LabelMaxVideoResolution": "허용되는 최대 비디오 코덱 변경 해상도",
"HomeVideosPhotos": "홈 비디오 및 사진", "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", "Identify": "Identifikuoti",
"Images": "Atvaizdai", "Images": "Atvaizdai",
"InstallingPackage": "Diegiama {0} (versija {1})", "InstallingPackage": "Diegiama {0} (versija {1})",
"InstantMix": "Leisti miksą", "InstantMix": "Maišyti",
"ItemCount": "{0} elementų", "ItemCount": "{0} elementų",
"Kids": "Vaikams", "Kids": "Vaikams",
"Label3DFormat": "3D formatas:", "Label3DFormat": "3D formatas:",
@ -437,10 +437,10 @@
"AllLanguages": "Visos kalbos", "AllLanguages": "Visos kalbos",
"AllowMediaConversion": "Leisti medijos konvertavimą", "AllowMediaConversion": "Leisti medijos konvertavimą",
"AllowRemoteAccess": "Leisti nuotolinius prisijungimus prie šio Jellyfin serverio", "AllowRemoteAccess": "Leisti nuotolinius prisijungimus prie šio Jellyfin serverio",
"AnyLanguage": "Bet Kokia Kalba", "AnyLanguage": "Bet kuri kalba",
"Artists": "Atlikėjai", "Artists": "Atlikėjai",
"Audio": "Garsas", "Audio": "Garsas",
"Auto": "Auto", "Auto": "Automatinis",
"Backdrop": "Fonas", "Backdrop": "Fonas",
"BirthDateValue": "Gimė: {0}", "BirthDateValue": "Gimė: {0}",
"BirthPlaceValue": "Gimimo vieta: {0}", "BirthPlaceValue": "Gimimo vieta: {0}",
@ -495,7 +495,7 @@
"AirDate": "Išleidimo data", "AirDate": "Išleidimo data",
"Aired": "Išleista", "Aired": "Išleista",
"AllowOnTheFlySubtitleExtraction": "Leisti subtitrų ištraukimą grojimo metu", "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", "AllLibraries": "Visos bibliotekos",
"AllowMediaConversionHelp": "Leisti arba uždrausti medijos konvertavimą.", "AllowMediaConversionHelp": "Leisti arba uždrausti medijos konvertavimą.",
"AlwaysPlaySubtitles": "Visada rodyti subtitrus", "AlwaysPlaySubtitles": "Visada rodyti subtitrus",
@ -525,7 +525,7 @@
"Ascending": "Didėjančia tvarka", "Ascending": "Didėjančia tvarka",
"AllComplexFormats": "Visi Sudėtingi Formatai (ASS, SSA, VobSub, PGS, SUB, IDX, …)", "AllComplexFormats": "Visi Sudėtingi Formatai (ASS, SSA, VobSub, PGS, SUB, IDX, …)",
"AllowHWTranscodingHelp": "Leisti imtuvui perkoduoti srautus grojant. Tai gali sumažinti perkodavimus reikalingus serveriui.", "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.", "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", "HeaderMyMedia": "Mediateka",
"HeaderMyDevice": "Mano įrenginys", "HeaderMyDevice": "Mano įrenginys",
@ -564,11 +564,11 @@
"CopyStreamURLSuccess": "Srauto nuoroda nukopijuota.", "CopyStreamURLSuccess": "Srauto nuoroda nukopijuota.",
"DefaultMetadataLangaugeDescription": "Tai yra numatytieji nustatymai. Jie gali būti keičiami kiekvienai bibliotekai atskirai.", "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.", "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ų.", "DefaultSubtitlesHelp": "Subtitrai įkeliami atsižvelgiant į numatytuosius ir priverstinius žymenis įterptuose metaduomenyse. Kalbos nustatymai įvertinami, kai yra keletas variantų.",
"HeaderDeleteProvider": "Ištrinti paslaugos teikėją", "HeaderDeleteProvider": "Ištrinti paslaugos teikėją",
"HeaderDeleteTaskTrigger": "Ištrinti užduoties trigerį", "HeaderDeleteTaskTrigger": "Ištrinti užduoties trigerį",
"Absolute": "Visiškas", "Absolute": "Absoliutus",
"HeaderCastAndCrew": "Aktoriai", "HeaderCastAndCrew": "Aktoriai",
"Shows": "Laidos", "Shows": "Laidos",
"HeaderDeveloperInfo": "Kūrėjo informacija", "HeaderDeveloperInfo": "Kūrėjo informacija",
@ -687,7 +687,7 @@
"HeaderNextVideoPlayingInValue": "Kitas vaizdo įrašas rodomas už {0}", "HeaderNextVideoPlayingInValue": "Kitas vaizdo įrašas rodomas už {0}",
"HeaderPassword": "Slaptažodis", "HeaderPassword": "Slaptažodis",
"HeaderPasswordReset": "Slaptažodžio nustatymas iš naujo", "HeaderPasswordReset": "Slaptažodžio nustatymas iš naujo",
"LabelProfileCodecs": "Kodekas:", "LabelProfileCodecs": "Kodekai:",
"HeaderProfileServerSettingsHelp": "Šios reikšmės kontroliuoja kaip serveris bus pateikiamas prie klientų.", "HeaderProfileServerSettingsHelp": "Šios reikšmės kontroliuoja kaip serveris bus pateikiamas prie klientų.",
"LabelMetadataSavers": "Metaduomenų saugotojai:", "LabelMetadataSavers": "Metaduomenų saugotojai:",
"LabelMetadataSaversHelp": "Išrinkite failo formatą metaduomenų saugojimui.", "LabelMetadataSaversHelp": "Išrinkite failo formatą metaduomenų saugojimui.",
@ -740,7 +740,7 @@
"LabelReasonForTranscoding": "Perkodavimo priežastis:", "LabelReasonForTranscoding": "Perkodavimo priežastis:",
"LabelPreferredSubtitleLanguage": "Pageidautina titrų kalba:", "LabelPreferredSubtitleLanguage": "Pageidautina titrų kalba:",
"HeaderChannelAccess": "Prieiga prie kanalų", "HeaderChannelAccess": "Prieiga prie kanalų",
"LabelProfileAudioCodecs": "Garso takelio kodekas:", "LabelProfileAudioCodecs": "Garso takelio kodekai:",
"HeaderLiveTvTunerSetup": "Imtuvo nustatymai", "HeaderLiveTvTunerSetup": "Imtuvo nustatymai",
"FetchingData": "Gaunami papildomi duomenys", "FetchingData": "Gaunami papildomi duomenys",
"FileReadError": "Nuskaitant failą įvyko klaida.", "FileReadError": "Nuskaitant failą įvyko klaida.",
@ -809,7 +809,7 @@
"LabelProtocol": "Protokolas:", "LabelProtocol": "Protokolas:",
"LabelProtocolInfo": "Apie protokolą:", "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.", "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", "HeaderLibraryAccess": "Mediatekos prieigos teisės",
"HeaderLibraryOrder": "Mediatekos eiliškumas", "HeaderLibraryOrder": "Mediatekos eiliškumas",
"HeaderLibrarySettings": "Mediatekos nustatymai", "HeaderLibrarySettings": "Mediatekos nustatymai",
@ -838,7 +838,7 @@
"ClientSettings": "Kliento Nustatymai", "ClientSettings": "Kliento Nustatymai",
"ButtonTogglePlaylist": "Grojaraštis", "ButtonTogglePlaylist": "Grojaraštis",
"ButtonSplit": "Skirstyti", "ButtonSplit": "Skirstyti",
"AskAdminToCreateLibrary": "Prašyti administratoriaus, kad sukurtų mediateka.", "AskAdminToCreateLibrary": "Paprašykite administratoriaus sukurti biblioteką.",
"Album": "Albumas", "Album": "Albumas",
"ButtonSyncPlay": "SyncPlay", "ButtonSyncPlay": "SyncPlay",
"MusicVideos": "Muzikiniai vaizdo įrašai", "MusicVideos": "Muzikiniai vaizdo įrašai",
@ -977,9 +977,9 @@
"Cursive": "Kursyvus", "Cursive": "Kursyvus",
"ButtonSpace": "Tarpas", "ButtonSpace": "Tarpas",
"ButtonActivate": "Aktyvuoti", "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ų.", "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, 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.", "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": "Aranžuotojas", "Arranger": "Organizatorius",
"EnableBlurHashHelp": "Vaizdai, kurie vis dar įkeliami, bus rodomi su unikalia rezervuota vieta.", "EnableBlurHashHelp": "Vaizdai, kurie vis dar įkeliami, bus rodomi su unikalia rezervuota vieta.",
"EnableDetailsBannerHelp": "Rodyti reklamjuostės vaizdą elemento išsamios informacijos puslapio viršuje.", "EnableDetailsBannerHelp": "Rodyti reklamjuostės vaizdą elemento išsamios informacijos puslapio viršuje.",
"EnableCardLayout": "Rodyti vizualinį CardBox", "EnableCardLayout": "Rodyti vizualinį CardBox",
@ -992,5 +992,144 @@
"EnableAutoCast": "Nustatyti kaip numatytąjį", "EnableAutoCast": "Nustatyti kaip numatytąjį",
"EnableBlurHash": "Įgalinti neryškias vaizdų rezervuotas vietas", "EnableBlurHash": "Įgalinti neryškias vaizdų rezervuotas vietas",
"ButtonUseQuickConnect": "Naudoti Quick Connect", "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", "ButtonExitApp": "Iziet no lietotnes",
"ButtonClose": "Aizvērt", "ButtonClose": "Aizvērt",
"ButtonBackspace": "Atpakaļatkāpe", "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", "VideoFramerateNotSupported": "Videoens bildefrekvens støttes ikke",
"VideoBitDepthNotSupported": "Videoens bitdybde støttes ikke", "VideoBitDepthNotSupported": "Videoens bitdybde støttes ikke",
"RefFramesNotSupported": "Referanse-bilder 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", "LabelEnableGamepad": "Aktiver spillkontroller",
"AudioBitDepthNotSupported": "Lydens bitdybde støttes ikke", "AudioBitDepthNotSupported": "Lydens bitdybde støttes ikke",
"ThemeSong": "Tema-låt", "ThemeSong": "Tema-låt",
@ -1685,5 +1685,12 @@
"MessageNoItemsAvailable": "Ingen filer er tilgjengelige for øyeblikket.", "MessageNoItemsAvailable": "Ingen filer er tilgjengelige for øyeblikket.",
"OptionDateShowAdded": "Dato serien ble lagt til", "OptionDateShowAdded": "Dato serien ble lagt til",
"Experimental": "Eksperimentell", "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", "ButtonRevoke": "Herroepen",
"ButtonScanAllLibraries": "Alle bibliotheken scannen", "ButtonScanAllLibraries": "Alle bibliotheken scannen",
"ButtonSelectDirectory": "Selecteer map", "ButtonSelectDirectory": "Selecteer map",
"ButtonSelectView": "Selecteer weergave", "ButtonSelectView": "Weergave selecteren",
"ButtonSend": "Stuur", "ButtonSend": "Stuur",
"ButtonShutdown": "Afsluiten", "ButtonShutdown": "Afsluiten",
"ButtonSignIn": "Aanmelden", "ButtonSignIn": "Aanmelden",
@ -139,9 +139,9 @@
"Disconnect": "Loskoppelen", "Disconnect": "Loskoppelen",
"Display": "Weergave", "Display": "Weergave",
"DisplayInMyMedia": "Op het startscherm weergeven", "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", "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.", "DisplayModeHelp": "Selecteer het schermtype waar Jellyfin op draait.",
"DoNotRecord": "Niet opnemen", "DoNotRecord": "Niet opnemen",
"Down": "Omlaag", "Down": "Omlaag",
@ -160,8 +160,8 @@
"EnableExternalVideoPlayers": "Externe videospelers", "EnableExternalVideoPlayers": "Externe videospelers",
"EnableExternalVideoPlayersHelp": "Een menu voor externe spelers wordt getoond bij het afspelen van video's.", "EnableExternalVideoPlayersHelp": "Een menu voor externe spelers wordt getoond bij het afspelen van video's.",
"EnableHardwareEncoding": "Activeer hardwaredecodering", "EnableHardwareEncoding": "Activeer hardwaredecodering",
"EnableNextVideoInfoOverlay": "Laat volgende video zien tijdens het afspelen", "EnableNextVideoInfoOverlay": "Volgende video tonen tijdens afspelen",
"EnableNextVideoInfoOverlayHelp": "Toon informatie over de volgende video in de afspeellijst aan het einde van de video.", "EnableNextVideoInfoOverlayHelp": "Toon aan het einde van de video informatie over de volgende video in de afspeellijst.",
"EnablePhotos": "Foto's weergeven", "EnablePhotos": "Foto's weergeven",
"EnablePhotosHelp": "Afbeeldingen worden herkend en weergegeven naast andere mediabestanden.", "EnablePhotosHelp": "Afbeeldingen worden herkend en weergegeven naast andere mediabestanden.",
"EnableStreamLooping": "Livestreams automatisch herhalen", "EnableStreamLooping": "Livestreams automatisch herhalen",
@ -273,7 +273,7 @@
"HeaderFetcherSettings": "Fetcher-instellingen", "HeaderFetcherSettings": "Fetcher-instellingen",
"HeaderForKids": "Voor Kinderen", "HeaderForKids": "Voor Kinderen",
"HeaderFrequentlyPlayed": "Vaak afgespeeld", "HeaderFrequentlyPlayed": "Vaak afgespeeld",
"HeaderGuideProviders": "TV Gids data aanbieders", "HeaderGuideProviders": "Data-aanbieders tv-gids",
"HeaderIdentification": "Identificatie", "HeaderIdentification": "Identificatie",
"HeaderIdentificationCriteriaHelp": "Voer tenminste één identificatiecriterium in.", "HeaderIdentificationCriteriaHelp": "Voer tenminste één identificatiecriterium in.",
"HeaderIdentificationHeader": "Identificatie Header", "HeaderIdentificationHeader": "Identificatie Header",
@ -284,11 +284,11 @@
"HeaderKeepRecording": "Bewaar opname", "HeaderKeepRecording": "Bewaar opname",
"HeaderKeepSeries": "Series behouden", "HeaderKeepSeries": "Series behouden",
"HeaderKodiMetadataHelp": "Om NFO-metadata in of uit te schakelen, bewerk een bibliotheek en zoek in de metadata-downloaders sectie.", "HeaderKodiMetadataHelp": "Om NFO-metadata in of uit te schakelen, bewerk een bibliotheek en zoek in de metadata-downloaders sectie.",
"HeaderLatestEpisodes": "Nieuwste afleveringen", "HeaderLatestEpisodes": "Onlangs toegevoegde afleveringen",
"HeaderLatestMedia": "Nieuwste media", "HeaderLatestMedia": "Onlangs toegevoegde media",
"HeaderLatestMovies": "Nieuwste films", "HeaderLatestMovies": "Onlangs toegevoegde films",
"HeaderLatestMusic": "Nieuwste muziek", "HeaderLatestMusic": "Onlangs toegevoegde muziek",
"HeaderLatestRecordings": "Nieuwste opnames", "HeaderLatestRecordings": "Onlangs toegevoegde opnamen",
"HeaderLibraries": "Bibliotheken", "HeaderLibraries": "Bibliotheken",
"HeaderLibraryAccess": "Bibliotheek toegang", "HeaderLibraryAccess": "Bibliotheek toegang",
"HeaderLibraryFolders": "Bibliotheekmappen", "HeaderLibraryFolders": "Bibliotheekmappen",
@ -306,7 +306,7 @@
"HeaderNewApiKey": "Nieuwe API-sleutel", "HeaderNewApiKey": "Nieuwe API-sleutel",
"HeaderNewDevices": "Nieuwe Apparaten", "HeaderNewDevices": "Nieuwe Apparaten",
"HeaderNextEpisodePlayingInValue": "Volgende aflevering over {0}", "HeaderNextEpisodePlayingInValue": "Volgende aflevering over {0}",
"HeaderNextVideoPlayingInValue": "Volgende Afgespeeld over {0}", "HeaderNextVideoPlayingInValue": "Volgende video afspelen over {0}",
"HeaderOnNow": "Aan het spelen", "HeaderOnNow": "Aan het spelen",
"HeaderOtherItems": "Overige Items", "HeaderOtherItems": "Overige Items",
"HeaderParentalRatings": "Kijkwijzer", "HeaderParentalRatings": "Kijkwijzer",
@ -366,9 +366,9 @@
"HeaderTranscodingProfile": "Direct Afspelen Profiel", "HeaderTranscodingProfile": "Direct Afspelen Profiel",
"HeaderTranscodingProfileHelp": "Transcoding profielen toevoegen om aan te geven welke indelingen moeten worden gebruikt wanneer transcoding vereist is.", "HeaderTranscodingProfileHelp": "Transcoding profielen toevoegen om aan te geven welke indelingen moeten worden gebruikt wanneer transcoding vereist is.",
"HeaderTunerDevices": "Tuner apparaten", "HeaderTunerDevices": "Tuner apparaten",
"HeaderTypeImageFetchers": "Afbeelding downloaders ({0}):", "HeaderTypeImageFetchers": "Ophalers afbeeldingen ({0}):",
"HeaderTypeText": "Voer tekst in", "HeaderTypeText": "Voer tekst in",
"HeaderUpcomingOnTV": "Binnenkort op TV", "HeaderUpcomingOnTV": "Binnenkort op tv",
"HeaderUploadImage": "Afbeelding Uploaden", "HeaderUploadImage": "Afbeelding Uploaden",
"HeaderUser": "Gebruiker", "HeaderUser": "Gebruiker",
"HeaderUsers": "Gebruikers", "HeaderUsers": "Gebruikers",
@ -382,7 +382,7 @@
"HeaderYears": "Jaren", "HeaderYears": "Jaren",
"Help": "Hulp", "Help": "Hulp",
"Hide": "Verbergen", "Hide": "Verbergen",
"HideWatchedContentFromLatestMedia": "Verberg bekeken inhoud uit 'Nieuwste media'", "HideWatchedContentFromLatestMedia": "Bekeken inhoud verbergen uit 'Onlangs toegevoegde media'",
"Home": "Start", "Home": "Start",
"Horizontal": "Horizontaal", "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.", "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:", "LabelDiscNumber": "Disk nummer:",
"LabelDisplayLanguage": "Schermtaal:", "LabelDisplayLanguage": "Schermtaal:",
"LabelDisplayLanguageHelp": "Vertaling van Jellyfin is een voortdurend project.", "LabelDisplayLanguageHelp": "Vertaling van Jellyfin is een voortdurend project.",
"LabelDisplayMode": "Weergave mode:", "LabelDisplayMode": "Weergavemodus:",
"LabelDisplayName": "Weergave naam:", "LabelDisplayName": "Weergave naam:",
"LabelDisplayOrder": "Weergave volgorde:", "LabelDisplayOrder": "Weergave volgorde:",
"LabelDisplaySpecialsWithinSeasons": "Voeg specials toe aan het seizoen waarin ze uitgezonden zijn", "LabelDisplaySpecialsWithinSeasons": "Voeg specials toe aan het seizoen waarin ze uitgezonden zijn",
@ -488,7 +488,7 @@
"LabelEpisodeNumber": "Afleveringsnummer:", "LabelEpisodeNumber": "Afleveringsnummer:",
"LabelEvent": "Gebeurtenis:", "LabelEvent": "Gebeurtenis:",
"LabelEveryXMinutes": "Iedere:", "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.", "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", "LabelFailed": "Mislukt",
"LabelFileOrUrl": "Bestand of URL:", "LabelFileOrUrl": "Bestand of URL:",
@ -504,7 +504,7 @@
"LabelHardwareAccelerationType": "Hardware acceleratie:", "LabelHardwareAccelerationType": "Hardware acceleratie:",
"LabelHardwareAccelerationTypeHelp": "Hardwarematige versnelling vereist extra configuratie.", "LabelHardwareAccelerationTypeHelp": "Hardwarematige versnelling vereist extra configuratie.",
"LabelHomeNetworkQuality": "Thuisnetwerk kwaliteit:", "LabelHomeNetworkQuality": "Thuisnetwerk kwaliteit:",
"LabelHomeScreenSectionValue": "Beginscherm sectie {0}:", "LabelHomeScreenSectionValue": "Beginschermsectie {0}:",
"LabelHttpsPort": "Lokale HTTPS poort nummer:", "LabelHttpsPort": "Lokale HTTPS poort nummer:",
"LabelHttpsPortHelp": "Het TCP poort nummer voor de HTTPS server.", "LabelHttpsPortHelp": "Het TCP poort nummer voor de HTTPS server.",
"LabelIconMaxHeight": "Pictogram maximum hoogte:", "LabelIconMaxHeight": "Pictogram maximum hoogte:",
@ -694,7 +694,7 @@
"LabelffmpegPathHelp": "Het pad naar het FFmpeg applicatiebestand, of de folder die FFmpeg bevat.", "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.", "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", "Large": "Groot",
"LatestFromLibrary": "Nieuwste {0}", "LatestFromLibrary": "Onlangs toegevoegd in {0}",
"LearnHowYouCanContribute": "Lees meer over hoe u kunt bijdragen.", "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.", "LibraryAccessHelp": "Selecteer de bibliotheken om met deze gebruiker te delen. Beheerders kunnen alle mappen bewerken via de metadata-beheerder.",
"List": "Lijst", "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.", "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?", "MessageConfirmShutdown": "Weet u zeker dat u de server wilt afsluiten?",
"MessageContactAdminToResetPassword": "Neem contact op met de serverbeheerder om uw wachtwoord te resetten.", "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?", "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.", "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.", "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.", "MessageItemsAdded": "Items toegevoegd.",
"MessageLeaveEmptyToInherit": "Leeg laten om instellingen van bovenliggend item of de algemene waarde over te nemen.", "MessageLeaveEmptyToInherit": "Leeg laten om instellingen van bovenliggend item of de algemene waarde over te nemen.",
"MessageNoAvailablePlugins": "Geen beschikbare plug-ins.", "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.", "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.", "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.", "MessageNothingHere": "Lijst is leeg.",
@ -821,7 +821,7 @@
"OptionAutomaticallyGroupSeries": "Automatisch series samenvoegen die over meerdere mappen zijn verspreid", "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.", "OptionAutomaticallyGroupSeriesHelp": "Series die verspreid zijn over meerdere mappen binnen deze bibliotheek worden automatisch samengevoegd tot één serie.",
"OptionBluray": "BD", "OptionBluray": "BD",
"OptionCommunityRating": "Algemene Waardering", "OptionCommunityRating": "Beoordeling gemeenschap",
"OptionCriticRating": "Beoordeling door critici", "OptionCriticRating": "Beoordeling door critici",
"OptionCustomUsers": "Aangepast", "OptionCustomUsers": "Aangepast",
"OptionDaily": "Dagelijks", "OptionDaily": "Dagelijks",
@ -841,7 +841,7 @@
"OptionEnableAccessToAllChannels": "Toegang tot alle kanalen inschakelen", "OptionEnableAccessToAllChannels": "Toegang tot alle kanalen inschakelen",
"OptionEnableAccessToAllLibraries": "Toegang tot alle bibliotheken inschakelen", "OptionEnableAccessToAllLibraries": "Toegang tot alle bibliotheken inschakelen",
"OptionEnableExternalContentInSuggestions": "Externe inhoud in suggesties 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", "OptionEnableForAllTuners": "Inschakelen voor alle tuners",
"OptionEnableM2tsMode": "M2TS-modus inschakelen", "OptionEnableM2tsMode": "M2TS-modus inschakelen",
"OptionEnableM2tsModeHelp": "M2TS-modus bij het encoderen naar MPEG-TS inschakelen.", "OptionEnableM2tsModeHelp": "M2TS-modus bij het encoderen naar MPEG-TS inschakelen.",
@ -857,9 +857,9 @@
"OptionHlsSegmentedSubtitles": "HLS gesegmenteerde ondertiteling", "OptionHlsSegmentedSubtitles": "HLS gesegmenteerde ondertiteling",
"OptionIgnoreTranscodeByteRangeRequests": "Transcodeer byte range-aanvragen negeren", "OptionIgnoreTranscodeByteRangeRequests": "Transcodeer byte range-aanvragen negeren",
"OptionIgnoreTranscodeByteRangeRequestsHelp": "Deze verzoeken worden gehonoreerd, maar zal de byte bereik header worden genegeerd.", "OptionIgnoreTranscodeByteRangeRequestsHelp": "Deze verzoeken worden gehonoreerd, maar zal de byte bereik header worden genegeerd.",
"OptionImdbRating": "IMDb Waardering", "OptionImdbRating": "Beoordeling IMDb",
"OptionLikes": "Leuk", "OptionLikes": "Leuk",
"OptionMissingEpisode": "Ontbrekende Afleveringen", "OptionMissingEpisode": "Ontbrekende afleveringen",
"OptionNew": "Nieuw…", "OptionNew": "Nieuw…",
"OptionOnInterval": "Op interval", "OptionOnInterval": "Op interval",
"OptionParentalRating": "Kijkwijzerclassificatie", "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.", "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", "OptionSubstring": "Subtekenreeks",
"OptionTrackName": "Naam van Nummer", "OptionTrackName": "Naam van Nummer",
"OptionTvdbRating": "TheTVDB Waardering", "OptionTvdbRating": "Beoordeling TheTVDB",
"OptionUnairedEpisode": "Toekomstige Afleveringen", "OptionUnairedEpisode": "Toekomstige Afleveringen",
"OptionWakeFromSleep": "Uit slaapstand halen", "OptionWakeFromSleep": "Uit slaapstand halen",
"OptionWeekdays": "Week dagen", "OptionWeekdays": "Week dagen",
@ -928,8 +928,8 @@
"Raised": "Verhoogd", "Raised": "Verhoogd",
"Rate": "Waardeer", "Rate": "Waardeer",
"RecentlyWatched": "Onlangs bekeken", "RecentlyWatched": "Onlangs bekeken",
"RecommendationBecauseYouLike": "Omdat u {0} leuk vond", "RecommendationBecauseYouLike": "Omdat je {0} leuk vindt",
"RecommendationBecauseYouWatched": "Omdat u keek naar {0}", "RecommendationBecauseYouWatched": "Omdat je keek naar {0}",
"RecommendationDirectedBy": "Geregisseerd door {0}", "RecommendationDirectedBy": "Geregisseerd door {0}",
"RecommendationStarring": "In de hoofdrollen {0}", "RecommendationStarring": "In de hoofdrollen {0}",
"Record": "Opnemen", "Record": "Opnemen",
@ -941,7 +941,7 @@
"Refresh": "Vernieuwen", "Refresh": "Vernieuwen",
"RefreshDialogHelp": "Metadata wordt vernieuwd op basis van instellingen en internetservices die zijn ingeschakeld in het Dashboard.", "RefreshDialogHelp": "Metadata wordt vernieuwd op basis van instellingen en internetservices die zijn ingeschakeld in het Dashboard.",
"RefreshMetadata": "Metadata vernieuwen", "RefreshMetadata": "Metadata vernieuwen",
"RefreshQueued": "Verversen wachtrij.", "RefreshQueued": "Verversing in wachtrij.",
"ReleaseDate": "Uitgavedatum", "ReleaseDate": "Uitgavedatum",
"RememberMe": "Onthoud mij", "RememberMe": "Onthoud mij",
"RemoveFromCollection": "Verwijderen uit collectie", "RemoveFromCollection": "Verwijderen uit collectie",
@ -991,7 +991,7 @@
"Shuffle": "Willekeurig", "Shuffle": "Willekeurig",
"SimultaneousConnectionLimitHelp": "Het maximum aantal toegestane gelijktijdige streams. Geef 0 in voor geen limiet.", "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", "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", "Small": "Klein",
"SmallCaps": "Kleine letters", "SmallCaps": "Kleine letters",
"Smaller": "Kleiner", "Smaller": "Kleiner",
@ -1017,11 +1017,11 @@
"TabAdvanced": "Geavanceerd", "TabAdvanced": "Geavanceerd",
"TabCatalog": "Catalogus", "TabCatalog": "Catalogus",
"TabDirectPlay": "Direct Afspelen", "TabDirectPlay": "Direct Afspelen",
"TabLatest": "Nieuwste", "TabLatest": "Onlangs toegevoegd",
"TabLogs": "Logboeken", "TabLogs": "Logboeken",
"TabMusic": "Muziek", "TabMusic": "Muziek",
"TabMyPlugins": "Mijn plug-ins", "TabMyPlugins": "Mijn plug-ins",
"TabNetworks": "TV-Zenders", "TabNetworks": "Tv-zenders",
"TabNfoSettings": "NFO Instellingen", "TabNfoSettings": "NFO Instellingen",
"TabNotifications": "Meldingen", "TabNotifications": "Meldingen",
"TabOther": "Overig", "TabOther": "Overig",
@ -1029,7 +1029,7 @@
"TabProfiles": "Profielen", "TabProfiles": "Profielen",
"TabResponses": "Reacties", "TabResponses": "Reacties",
"TabScheduledTasks": "Geplande taken", "TabScheduledTasks": "Geplande taken",
"TabUpcoming": "Binnenkort op TV", "TabUpcoming": "Binnenkort",
"Tags": "Labels", "Tags": "Labels",
"TagsValue": "Labels: {0}", "TagsValue": "Labels: {0}",
"TellUsAboutYourself": "Vertel ons over uzelf", "TellUsAboutYourself": "Vertel ons over uzelf",
@ -1045,7 +1045,7 @@
"TrackCount": "{0} nummers", "TrackCount": "{0} nummers",
"Transcoding": "Transcoderen", "Transcoding": "Transcoderen",
"Tuesday": "Dinsdag", "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?", "UninstallPluginConfirmation": "Weet u zeker dat u {0} wilt deïnstalleren?",
"HeaderUninstallPlugin": "Plug-in deïnstalleren", "HeaderUninstallPlugin": "Plug-in deïnstalleren",
"Unmute": "Dempen opheffen", "Unmute": "Dempen opheffen",
@ -1059,31 +1059,31 @@
"ValueConditions": "Voorwaarden: {0}", "ValueConditions": "Voorwaarden: {0}",
"ValueEpisodeCount": "{0} afleveringen", "ValueEpisodeCount": "{0} afleveringen",
"ValueMovieCount": "{0} films", "ValueMovieCount": "{0} films",
"ValueMusicVideoCount": "{0} muziek video's", "ValueMusicVideoCount": "{0} muziekvideo's",
"ValueOneEpisode": "1 aflevering", "ValueOneEpisode": "1 aflevering",
"ValueOneMovie": "1 film", "ValueOneMovie": "1 film",
"ValueOneMusicVideo": "1 muziek video", "ValueOneMusicVideo": "1 muziekvideo",
"ValueOneSeries": "1 serie", "ValueOneSeries": "1 serie",
"ValueOneSong": "1 titel", "ValueOneSong": "1 titel",
"ValueSeconds": "{0} seconden", "ValueSeconds": "{0} seconden",
"ValueSongCount": "{0} titels", "ValueSongCount": "{0} titels",
"ValueSpecialEpisodeName": "Speciaal - {0}", "ValueSpecialEpisodeName": "Speciaal - {0}",
"ValueTimeLimitMultiHour": "Tijdslimiet: {0} uren", "ValueTimeLimitMultiHour": "Tijdslimiet: {0} uur",
"ValueTimeLimitSingleHour": "Tijdslimiet: 1 uur", "ValueTimeLimitSingleHour": "Tijdslimiet: 1 uur",
"Vertical": "Verticaal", "Vertical": "Verticaal",
"ViewAlbum": "Bekijk album", "ViewAlbum": "Album bekijken",
"ViewPlaybackInfo": "Bekijk afspelen info", "ViewPlaybackInfo": "Afspeelinfo bekijken",
"Watched": "Bekeken", "Watched": "Gekeken",
"Wednesday": "Woensdag", "Wednesday": "Woensdag",
"WelcomeToProject": "Welkom bij Jellyfin!", "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.", "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", "Writer": "Scenario",
"XmlDocumentAttributeListHelp": "Deze kenmerken worden toegepast op het hoofd-element van elk XML-antwoord.", "XmlDocumentAttributeListHelp": "Deze kenmerken worden toegepast op het hoofdelement van elk XML-antwoord.",
"XmlTvKidsCategoriesHelp": "Programma's met deze categorieën wordt weergegeven als programma's voor kinderen. Scheid meerdere met '|'.", "XmlTvKidsCategoriesHelp": "Programma's met deze categorieën worden weergegeven als programma's voor kinderen. Scheid meerdere met '|'.",
"XmlTvMovieCategoriesHelp": "Programma's met deze categorieën wordt weergegeven als films. Scheid meerdere met '|'.", "XmlTvMovieCategoriesHelp": "Programma's met deze categorieën worden weergegeven als films. Scheid meerdere met '|'.",
"XmlTvNewsCategoriesHelp": "Programma's met deze categorieën wordt weergegeven als nieuwsprogramma's. Scheid meerdere met '|'.", "XmlTvNewsCategoriesHelp": "Programma's met deze categorieën worden 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.", "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 wordt weergegeven als sportprogramma's. Scheid meerdere met '|'.", "XmlTvSportsCategoriesHelp": "Programma's met deze categorieën worden weergegeven als sportprogramma's. Scheid meerdere met '|'.",
"Yes": "Ja", "Yes": "Ja",
"Yesterday": "Gisteren", "Yesterday": "Gisteren",
"Albums": "Albums", "Albums": "Albums",
@ -1155,7 +1155,7 @@
"Live": "Live", "Live": "Live",
"OptionDvd": "DVD", "OptionDvd": "DVD",
"OptionResElement": "'res' element", "OptionResElement": "'res' element",
"TV": "TV", "TV": "Tv",
"LabelTypeMetadataDownloaders": "Metadata-downloaders ({0}):", "LabelTypeMetadataDownloaders": "Metadata-downloaders ({0}):",
"OptionLoginAttemptsBeforeLockout": "Bepaal hoeveel foutieve inlogpogingen kunnen plaatsvinden voordat de gebruiker buitengesloten wordt.", "OptionLoginAttemptsBeforeLockout": "Bepaal hoeveel foutieve inlogpogingen kunnen plaatsvinden voordat de gebruiker buitengesloten wordt.",
"Premiere": "Première", "Premiere": "Première",
@ -1265,7 +1265,7 @@
"EveryXMinutes": "Elke {0} minuten", "EveryXMinutes": "Elke {0} minuten",
"OnWakeFromSleep": "Op het wakker worden vanuit slaapstand", "OnWakeFromSleep": "Op het wakker worden vanuit slaapstand",
"WeeklyAt": "{0}s op {1}", "WeeklyAt": "{0}s op {1}",
"DailyAt": "Dagelijks op {0}", "DailyAt": "Dagelijks om {0}",
"LastSeen": "Laatst gezien {0}", "LastSeen": "Laatst gezien {0}",
"PersonRole": "als {0}", "PersonRole": "als {0}",
"ListPaging": "{0}-{1} van de {2}", "ListPaging": "{0}-{1} van de {2}",
@ -1292,7 +1292,7 @@
"MessageSyncPlayGroupDoesNotExist": "Kan niet deelnemen aan de groep omdat deze niet bestaat.", "MessageSyncPlayGroupDoesNotExist": "Kan niet deelnemen aan de groep omdat deze niet bestaat.",
"MessageSyncPlayPlaybackPermissionRequired": "Afspeelrechten vereist.", "MessageSyncPlayPlaybackPermissionRequired": "Afspeelrechten vereist.",
"MessageSyncPlayGroupWait": "{0} is aan het bufferen…", "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.", "MessageSyncPlayUserJoined": "{0} is lid geworden van de groep.",
"MessageSyncPlayDisabled": "SyncPlay uitgeschakeld.", "MessageSyncPlayDisabled": "SyncPlay uitgeschakeld.",
"MessageSyncPlayEnabled": "SyncPlay ingeschakeld.", "MessageSyncPlayEnabled": "SyncPlay ingeschakeld.",
@ -1310,7 +1310,7 @@
"LabelSyncPlayTimeOffset": "Tijd offset met de server:", "LabelSyncPlayTimeOffset": "Tijd offset met de server:",
"LabelRequireHttps": "HTTPS verplichten", "LabelRequireHttps": "HTTPS verplichten",
"LabelStable": "Stabiel", "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.", "LabelEnableHttpsHelp": "Luisteren op de geconfigureerde HTTPS-poort. Om dit te laten werken moet ook een geldig certificaat worden ingesteld.",
"LabelEnableHttps": "HTTPS inschakelen", "LabelEnableHttps": "HTTPS inschakelen",
"HeaderSyncPlayEnabled": "SyncPlay ingeschakeld", "HeaderSyncPlayEnabled": "SyncPlay ingeschakeld",
@ -1334,7 +1334,7 @@
"EnableBlurHashHelp": "Afbeeldingen die nog worden geladen, worden weergegeven met een unieke tijdelijke aanduiding.", "EnableBlurHashHelp": "Afbeeldingen die nog worden geladen, worden weergegeven met een unieke tijdelijke aanduiding.",
"EnableBlurHash": "Schakel wazige placeholders voor plaatjes in", "EnableBlurHash": "Schakel wazige placeholders voor plaatjes in",
"Writers": "Scenario", "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.", "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.", "LabelRepositoryNameHelp": "Een zelf te configureren naam om deze repository te kunnen onderscheiden van andere repositories.",
"LabelRepositoryName": "Repository naam", "LabelRepositoryName": "Repository naam",
@ -1421,8 +1421,8 @@
"Authorize": "Geef toestemming", "Authorize": "Geef toestemming",
"EnableFallbackFontHelp": "Aangepaste alternatieve lettertypen inschakelen. Dit kan foutief renderen van ondertiteling voorkomen.", "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.", "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", "EnableFallbackFont": "Terugvallettertypen inschakelen",
"LabelFallbackFontPath": "Fallback map pad:", "LabelFallbackFontPath": "Terugvalpad lettertypemap:",
"HeaderSelectFallbackFontPathHelp": "Blader of typ het pad naar de fallback lettertype map die gebruikt moet worden om ASS/SSA ondertitels te renderen.", "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", "HeaderSelectFallbackFontPath": "Kies fallback lettertype pad",
"OptionMaxActiveSessions": "Stel het maximum aantal gelijktijdige gebruikers sessies in.", "OptionMaxActiveSessions": "Stel het maximum aantal gelijktijdige gebruikers sessies in.",
@ -1443,14 +1443,14 @@
"PreferFmp4HlsContainer": "Geef de voorkeur aan fMP4-HLS-mediacontainers", "PreferFmp4HlsContainer": "Geef de voorkeur aan fMP4-HLS-mediacontainers",
"LabelSyncPlayInfo": "SyncPlay-informatie", "LabelSyncPlayInfo": "SyncPlay-informatie",
"LabelOriginalMediaInfo": "Informatie oorspronkelijke media", "LabelOriginalMediaInfo": "Informatie oorspronkelijke media",
"LabelRemuxingInfo": "Remuxing Informatie", "LabelRemuxingInfo": "Remux-informatie",
"LabelDirectStreamingInfo": "Direct Streaming Informatie", "LabelDirectStreamingInfo": "Informatie direct streamen",
"LabelTranscodingInfo": "Transcoderings informatie", "LabelTranscodingInfo": "Transcoderingsinformatie",
"LabelVideoInfo": "Video-informatie", "LabelVideoInfo": "Video-informatie",
"LabelAudioInfo": "Audio-informatie", "LabelAudioInfo": "Audio-informatie",
"LabelPlaybackInfo": "Afspeelinformatie", "LabelPlaybackInfo": "Afspeelinformatie",
"RemuxHelp2": "Remux gebruikt zeer weinig verwerkingskracht met een volledig verliesvrije mediakwaliteit.", "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", "Remuxing": "Remuxing",
"AspectRatioFill": "Vullen", "AspectRatioFill": "Vullen",
"AspectRatioCover": "Hoes", "AspectRatioCover": "Hoes",
@ -1484,7 +1484,7 @@
"YoutubeDenied": "Video mag niet worden afgespeeld in een ingevoegde videospeler.", "YoutubeDenied": "Video mag niet worden afgespeeld in een ingevoegde videospeler.",
"YoutubeNotFound": "Video niet gevonden.", "YoutubeNotFound": "Video niet gevonden.",
"YoutubePlaybackError": "De aangevraagde video kan niet worden afgespeeld.", "YoutubePlaybackError": "De aangevraagde video kan niet worden afgespeeld.",
"YoutubeBadRequest": "Foute aanvraag.", "YoutubeBadRequest": "Foutieve aanvraag.",
"LabelH265Crf": "H.265 encodering CRF:", "LabelH265Crf": "H.265 encodering CRF:",
"LabelCreateHttpPortMapHelp": "Sta automatische port mapping toe om regels te maken voor HTTP verkeer naast HTTPS verkeer.", "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.", "LabelAutoDiscoveryTracingHelp": "Als dit aan staat, worden alle packets die op de auto discovery port binnenkomen gelogged.",
@ -1508,7 +1508,7 @@
"Framerate": "Beeldsnelheid", "Framerate": "Beeldsnelheid",
"DisablePlugin": "Uitschakelen", "DisablePlugin": "Uitschakelen",
"EnablePlugin": "Inschakelen", "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", "HeaderContinueReading": "Verder lezen",
"LabelSyncPlaySettingsExtraTimeOffset": "Extra tijd offset:", "LabelSyncPlaySettingsExtraTimeOffset": "Extra tijd offset:",
"LabelSyncPlaySettingsDescription": "Wijzig SyncPlay instellingen", "LabelSyncPlaySettingsDescription": "Wijzig SyncPlay instellingen",
@ -1561,7 +1561,7 @@
"PreviousChapter": "Vorig hoofdstuk", "PreviousChapter": "Vorig hoofdstuk",
"Remixer": "Remixer", "Remixer": "Remixer",
"UseEpisodeImagesInNextUp": "Gebruik afleveringscovers in de secties 'Hierna' en 'Verder kijken'", "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", "VideoCodecNotSupported": "De videocodec wordt niet ondersteund",
"AudioBitrateNotSupported": "De bitrate van de audio wordt niet ondersteund", "AudioBitrateNotSupported": "De bitrate van de audio wordt niet ondersteund",
"AudioChannelsNotSupported": "Het aantal geluidskanalen wordt niet ondersteund", "AudioChannelsNotSupported": "Het aantal geluidskanalen wordt niet ondersteund",
@ -1583,7 +1583,7 @@
"Console": "Console", "Console": "Console",
"LabelAutomaticallyAddToCollection": "Automatisch toevoegen aan collectie", "LabelAutomaticallyAddToCollection": "Automatisch toevoegen aan collectie",
"TypeOptionPluralVideo": "Video's", "TypeOptionPluralVideo": "Video's",
"TypeOptionPluralSeries": "TV-series", "TypeOptionPluralSeries": "Tv-series",
"TypeOptionPluralSeason": "Seizoenen", "TypeOptionPluralSeason": "Seizoenen",
"TypeOptionPluralMusicVideo": "Music Video's", "TypeOptionPluralMusicVideo": "Music Video's",
"TypeOptionPluralMusicArtist": "Muziek Artiesten", "TypeOptionPluralMusicArtist": "Muziek Artiesten",
@ -1660,8 +1660,8 @@
"MediaInfoVideoRangeType": "Type videobereik", "MediaInfoVideoRangeType": "Type videobereik",
"LabelVideoRangeType": "Type videobereik:", "LabelVideoRangeType": "Type videobereik:",
"VideoRangeTypeNotSupported": "Het bereiktype van de video wordt niet ondersteund", "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.", "LabelVppTonemappingContrastHelp": "Pas contrastversterking toe in VPP-tonemapping. De aanbevolen en standaardwaarden zijn 1.2 en 1.",
"LabelVppTonemappingContrast": "VPP Tone mapping contrastversterking:", "LabelVppTonemappingContrast": "Contrastversterking VPP-tonemapping:",
"LabelVppTonemappingBrightnessHelp": "Pas helderheidsversterking toe in VPP-tonemapping Zowel de aanbevolen als de standaardwaarden zijn 0.", "LabelVppTonemappingBrightnessHelp": "Pas helderheidsversterking toe in VPP-tonemapping Zowel de aanbevolen als de standaardwaarden zijn 0.",
"LabelVppTonemappingBrightness": "VPP Tone mapping helderheidsversterking:", "LabelVppTonemappingBrightness": "VPP Tone mapping helderheidsversterking:",
"EnableSplashScreen": "Opstartscherm inschakelen", "EnableSplashScreen": "Opstartscherm inschakelen",
@ -1685,5 +1685,23 @@
"MessageRenameMediaFolder": "Wanneer u een mediabibliotheek hernoemt, zal alle metadata verloren gaan. Ga voorzichtig te werk.", "MessageRenameMediaFolder": "Wanneer u een mediabibliotheek hernoemt, zal alle metadata verloren gaan. Ga voorzichtig te werk.",
"Unreleased": "Nog niet uitgebracht", "Unreleased": "Nog niet uitgebracht",
"DownloadAll": "Alles downloaden", "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", "HeaderImageOptions": "Opcje obrazu",
"HeaderImageSettings": "Ustawienia obrazów", "HeaderImageSettings": "Ustawienia obrazów",
"HeaderInstall": "Instalacja", "HeaderInstall": "Instalacja",
"HeaderInstantMix": "Szybki remiks", "HeaderInstantMix": "Szybki miks",
"HeaderKeepRecording": "Zachowaj nagranie", "HeaderKeepRecording": "Zachowaj nagranie",
"HeaderKeepSeries": "Zachowaj nagranie serialu", "HeaderKeepSeries": "Zachowaj nagranie serialu",
"HeaderKodiMetadataHelp": "By aktywować lub dezaktywować metadane NFO, edytuj ustawienia biblioteki w sekcji 'dostawcy metadanych'.", "HeaderKodiMetadataHelp": "By aktywować lub dezaktywować metadane NFO, edytuj ustawienia biblioteki w sekcji 'dostawcy metadanych'.",
@ -411,7 +411,7 @@
"Images": "Obrazy", "Images": "Obrazy",
"ImportFavoriteChannelsHelp": "Jeśli aktywne, tylko kanały oznaczone jako ulubione na tunerze, będą importowane.", "ImportFavoriteChannelsHelp": "Jeśli aktywne, tylko kanały oznaczone jako ulubione na tunerze, będą importowane.",
"InstallingPackage": "Instalowanie {0} (wersja {1})", "InstallingPackage": "Instalowanie {0} (wersja {1})",
"InstantMix": "Szybki remiks", "InstantMix": "Szybki miks",
"ItemCount": "{0} pozycje", "ItemCount": "{0} pozycje",
"Items": "Pozycje", "Items": "Pozycje",
"Kids": "Dla dzieci", "Kids": "Dla dzieci",
@ -1510,7 +1510,7 @@
"EnablePlugin": "Włącz", "EnablePlugin": "Włącz",
"DirectPlayHelp": "Plik źródłowy jest całkowicie zgodny z tym klientem, a sesja otrzymuje plik bez modyfikacji.", "DirectPlayHelp": "Plik źródłowy jest całkowicie zgodny z tym klientem, a sesja otrzymuje plik bez modyfikacji.",
"HeaderContinueReading": "Kontynuuj czytanie", "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", "LabelEnableGamepad": "Włącz obsługę kontrolera do gier",
"Controls": "Sterowanie", "Controls": "Sterowanie",
"MessageSent": "Wiadomość została wysłana.", "MessageSent": "Wiadomość została wysłana.",
@ -1686,5 +1686,20 @@
"MessageNoFavoritesAvailable": "Ulubione nie są obecnie dostępne.", "MessageNoFavoritesAvailable": "Ulubione nie są obecnie dostępne.",
"OptionDateShowAdded": "Data dodania serialu", "OptionDateShowAdded": "Data dodania serialu",
"DownloadAll": "Pobierz wszystko", "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", "Default": "Normal-like",
"ButtonBackspace": "Mistake Erasing Button", "ButtonBackspace": "Mistake Erasing Button",
"ButtonClose": "Shut", "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", "SubtitleCodecNotSupported": "O codec de legenda não é suportado",
"ContainerNotSupported": "O container não é suportado", "ContainerNotSupported": "O container não é suportado",
"AudioCodecNotSupported": "O codec de áudio 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", "LabelEnableGamepad": "Habilitar Controle",
"Controls": "Controles", "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.", "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.", "MessageNoItemsAvailable": "Nenhum item está disponível no momento.",
"MessageNoFavoritesAvailable": "Nenhum favorito 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.", "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", "SubtitleCodecNotSupported": "Este formato de legendas não é suportado",
"ContainerNotSupported": "Este contentor não é suportado", "ContainerNotSupported": "Este contentor não é suportado",
"AudioCodecNotSupported": "Este codec de áudio 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", "LabelEnableGamepad": "Ativar comandos de jogos",
"Controls": "Controlos", "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.", "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", "Interview": "Entrevista",
"DeletedScene": "Cenas removidas", "DeletedScene": "Cenas removidas",
"BehindTheScenes": "Nos bastidores", "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", "ButtonSpace": "Espaço",
"ButtonExitApp": "Sair da Aplicação", "ButtonExitApp": "Sair da Aplicação",
"ButtonClose": "Fechar", "ButtonClose": "Fechar",
"AddToFavorites": "adicionar aos favoritos" "AddToFavorites": "adicionar aos favoritos",
"DownloadAll": "Descarregar tudo"
} }

View file

@ -30,7 +30,7 @@
"AlwaysPlaySubtitlesHelp": "Субтитры, соответствующие настройке языка, будут загружаться независимо от языка аудио.", "AlwaysPlaySubtitlesHelp": "Субтитры, соответствующие настройке языка, будут загружаться независимо от языка аудио.",
"AnyLanguage": "Любой язык", "AnyLanguage": "Любой язык",
"Anytime": "В любое время", "Anytime": "В любое время",
"AroundTime": "Около", "AroundTime": "Около {0}",
"Art": "Вырезка", "Art": "Вырезка",
"Artists": "Исполнители", "Artists": "Исполнители",
"AsManyAsPossible": "Как можно больше", "AsManyAsPossible": "Как можно больше",
@ -79,20 +79,20 @@
"ButtonPreviousTrack": "Предыдущая дорожка", "ButtonPreviousTrack": "Предыдущая дорожка",
"ButtonQuickStartGuide": "Руководство по запуску", "ButtonQuickStartGuide": "Руководство по запуску",
"ButtonRefreshGuideData": "Обновить данные телегида", "ButtonRefreshGuideData": "Обновить данные телегида",
"ButtonRemove": "Изъять", "ButtonRemove": "Удалить",
"ButtonRename": "Переименовать", "ButtonRename": "Переименовать",
"ButtonResetEasyPassword": "Сбросить простой PIN-код", "ButtonResetEasyPassword": "Сбросить простой PIN-код",
"ButtonResume": "Возобновление", "ButtonResume": "Возобновить",
"ButtonRevoke": "Отозвать", "ButtonRevoke": "Отозвать",
"ButtonScanAllLibraries": "Сканировать все медиатеки", "ButtonScanAllLibraries": "Сканировать все медиатеки",
"ButtonSelectDirectory": "Выбрать каталог", "ButtonSelectDirectory": "Выбрать каталог",
"ButtonSelectView": "Выбрать представление", "ButtonSelectView": "Выбрать представление",
"ButtonSend": "Отправить", "ButtonSend": "Отправить",
"ButtonShutdown": "Завершить работу", "ButtonShutdown": "Завершить работу",
"ButtonSignIn": "Вход", "ButtonSignIn": "Войти",
"ButtonSignOut": "Выйти", "ButtonSignOut": "Выйти",
"ButtonStart": "Запустить", "ButtonStart": "Запустить",
"ButtonStop": "Стоп", "ButtonStop": "Остановить",
"ButtonSubmit": "Подтвердить", "ButtonSubmit": "Подтвердить",
"ButtonTogglePlaylist": "Плей-лист", "ButtonTogglePlaylist": "Плей-лист",
"ButtonTrailer": "Трейлер", "ButtonTrailer": "Трейлер",
@ -116,10 +116,10 @@
"ConfirmDeleteImage": "Удалить изображение?", "ConfirmDeleteImage": "Удалить изображение?",
"ConfirmDeleteItem": "При удалении данного элемента, он удалится и из файловой системы, и из медиатеки. Вы действительно хотите продолжить?", "ConfirmDeleteItem": "При удалении данного элемента, он удалится и из файловой системы, и из медиатеки. Вы действительно хотите продолжить?",
"ConfirmDeleteItems": "При удалении данных элементов, он удалится и из файловой системы, и из медиатеки. Вы действительно хотите продолжить?", "ConfirmDeleteItems": "При удалении данных элементов, он удалится и из файловой системы, и из медиатеки. Вы действительно хотите продолжить?",
"ConfirmDeletion": "Подтверждение удаления", "ConfirmDeletion": "Подтверить удаление",
"ConfirmEndPlayerSession": "Вы хотите завершить работу Jellyfin на {0}?", "ConfirmEndPlayerSession": "Вы хотите завершить работу Jellyfin на {0}?",
"Connect": "Соединиться", "Connect": "Соединиться",
"ContinueWatching": "Продолжение просмотра", "ContinueWatching": "Продолжить просмотр",
"Continuing": "Продолжаемое", "Continuing": "Продолжаемое",
"Copied": "Скопировано", "Copied": "Скопировано",
"Copy": "Копировать", "Copy": "Копировать",
@ -155,7 +155,7 @@
"Disconnect": "Разъединиться", "Disconnect": "Разъединиться",
"Display": "Отображение", "Display": "Отображение",
"DisplayInMyMedia": "Показывать на главном экране", "DisplayInMyMedia": "Показывать на главном экране",
"DisplayInOtherHomeScreenSections": "Показывать в разделах главного экрана как \"Новые медиаданные\", \"Продолжение просмотра\"", "DisplayInOtherHomeScreenSections": "Показывать в разделах главного экрана как \"Новые медиаданные\", \"Продолжить просмотр\"",
"DisplayMissingEpisodesWithinSeasons": "Отображать отсутствующие эпизоды в пределах сезонов", "DisplayMissingEpisodesWithinSeasons": "Отображать отсутствующие эпизоды в пределах сезонов",
"DisplayMissingEpisodesWithinSeasonsHelp": "Это также должно быть включено для ТВ-медиатек в конфигурации сервера.", "DisplayMissingEpisodesWithinSeasonsHelp": "Это также должно быть включено для ТВ-медиатек в конфигурации сервера.",
"DisplayModeHelp": "Выберите желательный стиль разметки для интерфейса.", "DisplayModeHelp": "Выберите желательный стиль разметки для интерфейса.",
@ -204,7 +204,7 @@
"Extras": "Допматериалы", "Extras": "Допматериалы",
"FFmpegSavePathNotFound": "Мы не смогли найти FFmpeg по введённому вами пути. FFprobe также необходим и должен быть в той же самой папке. Эти компоненты обычно поставляются вместе в одном загрузочном пакете. Проверьте путь и повторите попытку.", "FFmpegSavePathNotFound": "Мы не смогли найти FFmpeg по введённому вами пути. FFprobe также необходим и должен быть в той же самой папке. Эти компоненты обычно поставляются вместе в одном загрузочном пакете. Проверьте путь и повторите попытку.",
"FastForward": "Быстро вперёд", "FastForward": "Быстро вперёд",
"Favorite": "Избранное", "Favorite": "Избранный",
"Favorites": "Избранное", "Favorites": "Избранное",
"Features": "Средства", "Features": "Средства",
"File": "Файл", "File": "Файл",
@ -214,12 +214,12 @@
"Filters": "Фильтры", "Filters": "Фильтры",
"Folders": "Папки", "Folders": "Папки",
"FormatValue": "Формат: {0}", "FormatValue": "Формат: {0}",
"Friday": "пятница", "Friday": "Пятница",
"Fullscreen": "Полный экран", "Fullscreen": "Полный экран",
"General": "Общие", "General": "Общие",
"Genre": "Жанр", "Genre": "Жанр",
"Genres": "Жанры", "Genres": "Жанры",
"GroupBySeries": "Группирование по сериалам", "GroupBySeries": "Сгруппировать по сериалам",
"GroupVersions": "Сгруппировать версии", "GroupVersions": "Сгруппировать версии",
"GuestStar": "Приглашенный актёр", "GuestStar": "Приглашенный актёр",
"Guide": "Телегид", "Guide": "Телегид",
@ -267,7 +267,7 @@
"HeaderContainerProfile": "Профиль контейнера", "HeaderContainerProfile": "Профиль контейнера",
"HeaderContainerProfileHelp": "Профили контейнеров обозначают ограничения устройства при воспроизведении определённых форматов. Если применяется ограничение, то медиаданные перекодируются, даже если формат настроен для прямого воспроизведения.", "HeaderContainerProfileHelp": "Профили контейнеров обозначают ограничения устройства при воспроизведении определённых форматов. Если применяется ограничение, то медиаданные перекодируются, даже если формат настроен для прямого воспроизведения.",
"HeaderContinueListening": "Продолжение прослушивания", "HeaderContinueListening": "Продолжение прослушивания",
"HeaderContinueWatching": "Продолжение просмотра", "HeaderContinueWatching": "Продолжить просмотр",
"HeaderCustomDlnaProfiles": "Настраиваемые профили", "HeaderCustomDlnaProfiles": "Настраиваемые профили",
"HeaderDateIssued": "Дата выдачи", "HeaderDateIssued": "Дата выдачи",
"HeaderDefaultRecordingSettings": "Стандартные параметры записи", "HeaderDefaultRecordingSettings": "Стандартные параметры записи",
@ -307,11 +307,11 @@
"HeaderKeepRecording": "Продолжать запись", "HeaderKeepRecording": "Продолжать запись",
"HeaderKeepSeries": "Хранение сериала", "HeaderKeepSeries": "Хранение сериала",
"HeaderKodiMetadataHelp": "Для включения или отключения NFO-метаданных, правьте медиатеку и найдите раздел \"Хранители метаданных\".", "HeaderKodiMetadataHelp": "Для включения или отключения NFO-метаданных, правьте медиатеку и найдите раздел \"Хранители метаданных\".",
"HeaderLatestEpisodes": "Новые эпизоды", "HeaderLatestEpisodes": "Недавно добавленные эпизоды",
"HeaderLatestMedia": "Новые медиаданные", "HeaderLatestMedia": "Недавно добавленные медиаданные",
"HeaderLatestMovies": "Новые фильмы", "HeaderLatestMovies": "Недавно добавленные фильмы",
"HeaderLatestMusic": "Новая музыка", "HeaderLatestMusic": "Недавно добавленная музыка",
"HeaderLatestRecordings": "Новые записи", "HeaderLatestRecordings": "Недавно добавленные записи",
"HeaderLibraries": "Медиатеки", "HeaderLibraries": "Медиатеки",
"HeaderLibraryAccess": "Доступ к медиатеке", "HeaderLibraryAccess": "Доступ к медиатеке",
"HeaderLibraryFolders": "Медиатечные папки", "HeaderLibraryFolders": "Медиатечные папки",
@ -409,7 +409,7 @@
"HeaderYears": "Годы", "HeaderYears": "Годы",
"Help": "Справка", "Help": "Справка",
"Hide": "Скрыть", "Hide": "Скрыть",
"HideWatchedContentFromLatestMedia": "Скрыть просмотренное содержание в разделе «Новые медиаданные»", "HideWatchedContentFromLatestMedia": "Скрыть просмотренное содержание в разделе «Недавно добавленные медиаданные»",
"Home": "Главное", "Home": "Главное",
"Horizontal": "Горизонтально", "Horizontal": "Горизонтально",
"HttpsRequiresCert": "Чтобы включить HTTPS для внешних подключений, вам нужно будет предоставить доверенный SSL-cертификат, например, Let's Encrypt. Предоставьте сертификат или отключите защищенные соединения.", "HttpsRequiresCert": "Чтобы включить HTTPS для внешних подключений, вам нужно будет предоставить доверенный SSL-cертификат, например, Let's Encrypt. Предоставьте сертификат или отключите защищенные соединения.",
@ -743,7 +743,7 @@
"LabelffmpegPathHelp": "Путь к файлу приложения FFmpeg или к папке содержащей FFmpeg.", "LabelffmpegPathHelp": "Путь к файлу приложения FFmpeg или к папке содержащей FFmpeg.",
"LanNetworksHelp": "Список разделённых запятыми IP-адресов или записей IP/netmask для сетей, которые будут считаться находящимися в локальной сети, когда принудительно ограничивается пропускная способность. Если так установлено, то все остальные IP-адреса будут считаться находящимися во внешней сети и будут подлежать ограничениям внешней полосы пропускания. Если не заполнять, то считается, что только подсеть сервера находится в локальной сети.", "LanNetworksHelp": "Список разделённых запятыми IP-адресов или записей IP/netmask для сетей, которые будут считаться находящимися в локальной сети, когда принудительно ограничивается пропускная способность. Если так установлено, то все остальные IP-адреса будут считаться находящимися во внешней сети и будут подлежать ограничениям внешней полосы пропускания. Если не заполнять, то считается, что только подсеть сервера находится в локальной сети.",
"Large": "Крупный", "Large": "Крупный",
"LatestFromLibrary": "Новые: {0}", "LatestFromLibrary": "Недавно добавленные в: {0}",
"LearnHowYouCanContribute": "Изучите, как вы можете внести свой вклад.", "LearnHowYouCanContribute": "Изучите, как вы можете внести свой вклад.",
"LibraryAccessHelp": "Выделите медиатеки, чтобы дать доступ этому пользователю. Администраторы могут изменять все папки с помощью «Диспетчера метаданных».", "LibraryAccessHelp": "Выделите медиатеки, чтобы дать доступ этому пользователю. Администраторы могут изменять все папки с помощью «Диспетчера метаданных».",
"List": "Список", "List": "Список",
@ -1060,7 +1060,7 @@
"ShowIndicatorsFor": "Показывать метки для:", "ShowIndicatorsFor": "Показывать метки для:",
"ShowTitle": "Отображать название", "ShowTitle": "Отображать название",
"ShowYear": "Отображать год", "ShowYear": "Отображать год",
"Shows": "Передачи", "Shows": "Телешоу",
"Shuffle": "Перемешать", "Shuffle": "Перемешать",
"New": "Новое", "New": "Новое",
"Filter": "Фильтрать", "Filter": "Фильтрать",
@ -1096,7 +1096,7 @@
"TabContainers": "Контейнеры", "TabContainers": "Контейнеры",
"TabDashboard": "Панель", "TabDashboard": "Панель",
"TabDirectPlay": "Прямое воспроизведение", "TabDirectPlay": "Прямое воспроизведение",
"TabLatest": "Новые", "TabLatest": "Недавно добавленные",
"TabLogs": "Журналы", "TabLogs": "Журналы",
"TabMusic": "Музыка", "TabMusic": "Музыка",
"TabMyPlugins": "Мои плагины", "TabMyPlugins": "Мои плагины",
@ -1247,7 +1247,7 @@
"OptionForceRemoteSourceTranscoding": "Перекодировать принудительно удалённые источники медиаданных (нпр., эфирное ТВ)", "OptionForceRemoteSourceTranscoding": "Перекодировать принудительно удалённые источники медиаданных (нпр., эфирное ТВ)",
"NoCreatedLibraries": "Похоже, вы еще не создали ни одной медиатеки. {0}Желаете создать её сейчас?{1}", "NoCreatedLibraries": "Похоже, вы еще не создали ни одной медиатеки. {0}Желаете создать её сейчас?{1}",
"AskAdminToCreateLibrary": "Попросите администратора создать медиатеку.", "AskAdminToCreateLibrary": "Попросите администратора создать медиатеку.",
"AllowFfmpegThrottling": "Дросселировать перекодировки", "AllowFfmpegThrottling": "Ограничить перекодировки",
"PlaybackErrorNoCompatibleStream": "Этот клиент несовместим с медиаданными, а сервер не отправляет медиаданные в совместимом формате.", "PlaybackErrorNoCompatibleStream": "Этот клиент несовместим с медиаданными, а сервер не отправляет медиаданные в совместимом формате.",
"AllowFfmpegThrottlingHelp": "Когда перекодировка или ремуксинг заметно опережают текущую позицию воспроизведения, процесс приостанавливается, чтобы потреблять меньше ресурсов. Это очень полезно, когда вы редко перематываете видео при просмотре. Выключите это, если возникают проблемы с воспроизведением.", "AllowFfmpegThrottlingHelp": "Когда перекодировка или ремуксинг заметно опережают текущую позицию воспроизведения, процесс приостанавливается, чтобы потреблять меньше ресурсов. Это очень полезно, когда вы редко перематываете видео при просмотре. Выключите это, если возникают проблемы с воспроизведением.",
"OnWakeFromSleep": "При пробуждении ото сна", "OnWakeFromSleep": "При пробуждении ото сна",
@ -1281,7 +1281,7 @@
"UnsupportedPlayback": "Jellyfin не может расшифровать содержимое, защищенное DRM, но в любом случае будет предпринята попытка расшифровки всего содержимого, включая защищенные заголовки. Некоторые файлы могут выглядеть полностью черными из-за шифрования или других неподдерживаемых средств, таких как интерактивные заголовки.", "UnsupportedPlayback": "Jellyfin не может расшифровать содержимое, защищенное DRM, но в любом случае будет предпринята попытка расшифровки всего содержимого, включая защищенные заголовки. Некоторые файлы могут выглядеть полностью черными из-за шифрования или других неподдерживаемых средств, таких как интерактивные заголовки.",
"LabelRequireHttpsHelp": "Если этот флажок установлен, сервер будет автоматически перенаправлять все запросы через HTTP на HTTPS. Это не имеет никакого эффекта, если сервер не слушает HTTPS.", "LabelRequireHttpsHelp": "Если этот флажок установлен, сервер будет автоматически перенаправлять все запросы через HTTP на HTTPS. Это не имеет никакого эффекта, если сервер не слушает HTTPS.",
"LabelEnableHttpsHelp": "Прослушивается указанный HTTPS-порт. Чтобы это вступило в силу, также необходимо предоставить действительный сертификат.", "LabelEnableHttpsHelp": "Прослушивается указанный HTTPS-порт. Чтобы это вступило в силу, также необходимо предоставить действительный сертификат.",
"ApiKeysCaption": "Список действующих текущих API-ключей", "ApiKeysCaption": "Список действующих API-ключей",
"SaveChanges": "Изменить", "SaveChanges": "Изменить",
"LabelRequireHttps": "Требуется HTTPS", "LabelRequireHttps": "Требуется HTTPS",
"LabelStable": "Стабильная", "LabelStable": "Стабильная",
@ -1327,8 +1327,8 @@
"ShowLess": "Показать меньше", "ShowLess": "Показать меньше",
"EnableBlurHashHelp": "Рисунки, которые всё ещё загружаются, будут отображаться с уникальным заполнением.", "EnableBlurHashHelp": "Рисунки, которые всё ещё загружаются, будут отображаться с уникальным заполнением.",
"EnableBlurHash": "Включить размытые заполнители для изображений", "EnableBlurHash": "Включить размытые заполнители для изображений",
"ButtonSyncPlay": "SyncPlay", "ButtonSyncPlay": "Совместный просмотр",
"ButtonCast": "Трансляция на устройство", "ButtonCast": "Транслировать на устройство",
"TabRepositories": "Репозитории", "TabRepositories": "Репозитории",
"MessageNoGenresAvailable": "Включаются какие-либо поставщики метаданных для получения жанров из интернета.", "MessageNoGenresAvailable": "Включаются какие-либо поставщики метаданных для получения жанров из интернета.",
"MessageAddRepository": "Если вы хотите добавить репозиторий, нажмите кнопку рядом с заголовком и заполните необходимую информацию.", "MessageAddRepository": "Если вы хотите добавить репозиторий, нажмите кнопку рядом с заголовком и заполните необходимую информацию.",
@ -1412,7 +1412,7 @@
"EnableQuickConnect": "Разрешить быстрое подключение", "EnableQuickConnect": "Разрешить быстрое подключение",
"EnableAutoCast": "Задать по умолчанию", "EnableAutoCast": "Задать по умолчанию",
"ButtonUseQuickConnect": "Использовать быстрое подключение", "ButtonUseQuickConnect": "Использовать быстрое подключение",
"ButtonActivate": "Активация", "ButtonActivate": "Активировать",
"Authorize": "Авторизовать", "Authorize": "Авторизовать",
"LabelUserMaxActiveSessions": "Максимальное количество одновременных пользовательских сессий:", "LabelUserMaxActiveSessions": "Максимальное количество одновременных пользовательских сессий:",
"OptionMaxActiveSessionsHelp": "Значение 0 отключит эту функцию.", "OptionMaxActiveSessionsHelp": "Значение 0 отключит эту функцию.",
@ -1510,18 +1510,18 @@
"EnableEnhancedNvdecDecoder": "Включить улучшенный декодер NVDEC", "EnableEnhancedNvdecDecoder": "Включить улучшенный декодер NVDEC",
"DisablePlugin": "Отключить", "DisablePlugin": "Отключить",
"EnablePlugin": "Включить", "EnablePlugin": "Включить",
"Framerate": -та кадров", "Framerate": астота кадров",
"DirectPlayHelp": "Исходный файл полностью совместим с этим клиентом, а сеанс получает файл без изменений.", "DirectPlayHelp": "Исходный файл полностью совместим с этим клиентом, а сеанс получает файл без изменений.",
"HeaderContinueReading": "Продолжение чтения", "HeaderContinueReading": "Продолжение чтения",
"EnableGamepadHelp": "Слушать ввод от любых подключенных контроллеров.", "EnableGamepadHelp": "Слушать ввод от любых подключенных контроллеров. (Необходим режим отображения \"TV\")",
"LabelEnableGamepad": "Включить Gamepad", "LabelEnableGamepad": "Включить Gamepad",
"Controls": "Управление", "Controls": "Управление",
"TextSent": "Текст отправлен.", "TextSent": "Текст отправлен.",
"MessageSent": "Сообщение отправлено.", "MessageSent": "Сообщение отправлено.",
"LabelSlowResponseTime": "Время, после которого ответ считается медленным, мс:", "LabelSlowResponseTime": "Время, после которого ответ считается медленным, мс:",
"LabelSlowResponseEnabled": "Журналировать предупреждающее сообщение, если сервер отвечал медленно", "LabelSlowResponseEnabled": "Журналировать предупреждающее сообщение, если сервер отвечал медленно",
"UseEpisodeImagesInNextUpHelp": "В разделах \"Следующие серии\" и \"Продолжение просмотра\" будут использоваться как эскизы рисунки эпизодов вместо головного эскиза сериала.", "UseEpisodeImagesInNextUpHelp": "В разделах \"Следующие серии\" и \"Продолжить просмотр\" будут использоваться как эскизы рисунки эпизодов вместо головного эскиза сериала.",
"UseEpisodeImagesInNextUp": "Использовать рисунки эпизодов в разделах \"Следующие серии\" и \"Продолжение просмотра\"", "UseEpisodeImagesInNextUp": "Использовать рисунки эпизодов в разделах \"Следующие серии\" и \"Продолжить просмотр\"",
"LabelLocalCustomCss": "Настраиваемый CSS-код для стилизации, применимый только к этому клиенту. Вы можете отключить настраиваемый CSS-код сервера.", "LabelLocalCustomCss": "Настраиваемый CSS-код для стилизации, применимый только к этому клиенту. Вы можете отключить настраиваемый CSS-код сервера.",
"LabelDisableCustomCss": "Отключает настраиваемый CSS-код для тематирования/брендирования, предоставляемый сервером.", "LabelDisableCustomCss": "Отключает настраиваемый CSS-код для тематирования/брендирования, предоставляемый сервером.",
"DisableCustomCss": "Отключить предоставляемый сервером настраиваемый CSS-код", "DisableCustomCss": "Отключить предоставляемый сервером настраиваемый CSS-код",
@ -1588,7 +1588,7 @@
"Typewriter": "Машинописный", "Typewriter": "Машинописный",
"Print": "Типографский", "Print": "Типографский",
"Larger": "Очень крупный", "Larger": "Очень крупный",
"Console": "Консольный", "Console": "Консоль",
"Casual": "Неформальный", "Casual": "Неформальный",
"TypeOptionPluralVideo": "Видео элементы", "TypeOptionPluralVideo": "Видео элементы",
"TypeOptionPluralSeries": "ТВ-передачи", "TypeOptionPluralSeries": "ТВ-передачи",
@ -1603,7 +1603,7 @@
"TypeOptionPluralAudio": "Аудио элементы", "TypeOptionPluralAudio": "Аудио элементы",
"LabelAutomaticallyAddToCollectionHelp": "Если хотя бы два фильма имеют одинаковое название коллекции, они будут автоматически добавлены в коллекцию.", "LabelAutomaticallyAddToCollectionHelp": "Если хотя бы два фильма имеют одинаковое название коллекции, они будут автоматически добавлены в коллекцию.",
"LabelAutomaticallyAddToCollection": "Автоматически добавлять в коллекцию", "LabelAutomaticallyAddToCollection": "Автоматически добавлять в коллекцию",
"Cursive": "Курсивный", "Cursive": "Курсив",
"PreferSystemNativeHwDecoder": "Предпочитать из декодеров встроенный в ОС DXVA или аппаратный VA-API", "PreferSystemNativeHwDecoder": "Предпочитать из декодеров встроенный в ОС DXVA или аппаратный VA-API",
"LabelHardwareEncodingOptions": "Опции аппаратного кодирования:", "LabelHardwareEncodingOptions": "Опции аппаратного кодирования:",
"IntelLowPowerEncHelp": "Энергосберегающее кодирование может оставить ненужную синхронизацию CPU-GPU. В Linux они должны быть отключены, если микропрограмма i915 HuC не настроена.", "IntelLowPowerEncHelp": "Энергосберегающее кодирование может оставить ненужную синхронизацию CPU-GPU. В Linux они должны быть отключены, если микропрограмма i915 HuC не настроена.",
@ -1625,7 +1625,7 @@
"BehindTheScenes": "За кадром", "BehindTheScenes": "За кадром",
"Trailer": "Трейлер", "Trailer": "Трейлер",
"Clip": "Отрывок", "Clip": "Отрывок",
"ButtonExitApp": "Выход из приложения", "ButtonExitApp": "Выйти из приложения",
"AllowEmbeddedSubtitlesAllowTextOption": "Разрешить текст", "AllowEmbeddedSubtitlesAllowTextOption": "Разрешить текст",
"AllowEmbeddedSubtitlesAllowImageOption": "Разрешить рисунок", "AllowEmbeddedSubtitlesAllowImageOption": "Разрешить рисунок",
"AllowEmbeddedSubtitlesAllowNoneOption": "Ничего не разрешать", "AllowEmbeddedSubtitlesAllowNoneOption": "Ничего не разрешать",
@ -1685,5 +1685,13 @@
"Unreleased": "Ещё не выпущен", "Unreleased": "Ещё не выпущен",
"OptionDateEpisodeAdded": "Дата добавления эпизода", "OptionDateEpisodeAdded": "Дата добавления эпизода",
"OptionDateShowAdded": "Дата добавления сериала", "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ý", "SubtitleCodecNotSupported": "Titulkový kodek nie je podporovaný",
"ContainerNotSupported": "Kontajner nie je podporovaný", "ContainerNotSupported": "Kontajner nie je podporovaný",
"AudioCodecNotSupported": "Zvukový kodek 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", "LabelEnableGamepad": "Povoliť Gamepad",
"Controls": "Ovládanie", "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.", "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", "EnableCardLayout": "Zobraziť vizuálny CardBox",
"MessageNoItemsAvailable": "Momentálne nie sú k dispozícii žiadne položky.", "MessageNoItemsAvailable": "Momentálne nie sú k dispozícii žiadne položky.",
"MessageNoFavoritesAvailable": "Momentálne nie sú k dispozícii žiadne obľúbené 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.", "StereoDownmixAlgorithmHelp": "Algoritem uporabljen za downmix večkanalnega zvoka v stereo.",
"Experimental": "Poskusno", "Experimental": "Poskusno",
"LabelStereoDownmixAlgorithm": "Stereo Downmix algoritem", "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", "SubtitleCodecNotSupported": "Undertextkodeken stöds ej",
"ContainerNotSupported": "Videobehållaren stöds ej", "ContainerNotSupported": "Videobehållaren stöds ej",
"AudioCodecNotSupported": "Ljudkodeken 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", "LabelEnableGamepad": "Aktivera Gamepad",
"Controls": "Kontroller", "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.", "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", "EnableCardLayout": "Visa visuell CardBox",
"MessageNoFavoritesAvailable": "Inga favoriter är för närvarande tillgängliga.", "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.", "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", "RememberSubtitleSelections": "Altyazı dilini önceki öğeye göre ayarla",
"TabContainers": "Barındırıcılar", "TabContainers": "Barındırıcılar",
"OptionDateShowAdded": "Dizi Eklenme Tarihi", "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}", "DeathDateValue": "Помер: {0}",
"Favorite": "Обране", "Favorite": "Обране",
"HeaderDeleteDevice": "Видаліть пристрій", "HeaderDeleteDevice": "Видаліть пристрій",
"HeaderLatestEpisodes": "Нещодавно переглянуті епізоди", "HeaderLatestEpisodes": "Нещодавно додані серії",
"HeaderLatestMedia": "Нещодавно переглянуті", "HeaderLatestMedia": "Нещодавно додані медіа",
"HeaderLatestMovies": "Нещодавні фільми", "HeaderLatestMovies": "Нещодавно додані фільми",
"HeaderLatestMusic": "Остання музика", "HeaderLatestMusic": "Нещодавно додана музика",
"HeaderSeasons": "Сезони", "HeaderSeasons": "Сезони",
"HeaderTracks": "Доріжки", "HeaderTracks": "Доріжки",
"HeaderUsers": "Користувачі", "HeaderUsers": "Користувачі",
@ -274,7 +274,7 @@
"DrmChannelsNotImported": "Канали з DRM не імпортуватимуться.", "DrmChannelsNotImported": "Канали з DRM не імпортуватимуться.",
"DisplayModeHelp": "Виберіть бажаний стиль макету інтерфейсу.", "DisplayModeHelp": "Виберіть бажаний стиль макету інтерфейсу.",
"DisplayMissingEpisodesWithinSeasonsHelp": "Також, це має бути включено для ТВ-медіатек у конфігурації сервера.", "DisplayMissingEpisodesWithinSeasonsHelp": "Також, це має бути включено для ТВ-медіатек у конфігурації сервера.",
"DisplayInOtherHomeScreenSections": "Показувати на головному екрані такі розділи як \"Останні медіа\" і \"Продовження перегляду\"", "DisplayInOtherHomeScreenSections": "Відображення в розділах головного екрана, таких як «Нещодавно додані медіа» та «Продовжити перегляд»",
"DeleteDevicesConfirmation": "Ви впевнені, що хочете видалити всі пристрої? Усі інші сеанси будуть завершені. Пристрої знову з’являться, після того як користувач увійде в систему.", "DeleteDevicesConfirmation": "Ви впевнені, що хочете видалити всі пристрої? Усі інші сеанси будуть завершені. Пристрої знову з’являться, після того як користувач увійде в систему.",
"DeleteAll": "Видалити все", "DeleteAll": "Видалити все",
"Data": "Дані", "Data": "Дані",
@ -583,7 +583,7 @@
"Identify": "Ідентифікувати", "Identify": "Ідентифікувати",
"Horizontal": "Горизонтально", "Horizontal": "Горизонтально",
"Home": "Головна", "Home": "Головна",
"HideWatchedContentFromLatestMedia": "Приховати переглянуте з останніх медіа", "HideWatchedContentFromLatestMedia": "Приховати переглянутий вміст із «Нещодавно доданих медіа»",
"Hide": "Приховати", "Hide": "Приховати",
"Help": "Допомога", "Help": "Допомога",
"HeaderYears": "Роки", "HeaderYears": "Роки",
@ -723,7 +723,7 @@
"HeaderLibraryAccess": "Доступ до медіатеки", "HeaderLibraryAccess": "Доступ до медіатеки",
"HeaderLibraryFolders": "Папки медіатеки", "HeaderLibraryFolders": "Папки медіатеки",
"HeaderLibraryOrder": "Порядок медіатек", "HeaderLibraryOrder": "Порядок медіатек",
"HeaderLatestRecordings": "Останні записи", "HeaderLatestRecordings": "Нещодавно додані записи",
"HeaderKodiMetadataHelp": "Щоб увімкнути або вимкнути метадані NFO, відкрийте меню редагування медіатеки та знайдіть розділ \"Збереження метаданих\".", "HeaderKodiMetadataHelp": "Щоб увімкнути або вимкнути метадані NFO, відкрийте меню редагування медіатеки та знайдіть розділ \"Збереження метаданих\".",
"HeaderKeepSeries": "Зберегти серіал", "HeaderKeepSeries": "Зберегти серіал",
"HeaderKeepRecording": "Продовжуйте записувати", "HeaderKeepRecording": "Продовжуйте записувати",
@ -909,7 +909,7 @@
"LibraryAccessHelp": "Виберіть медіатеки, якими хочете поділитися з цим користувачем. Адміністратори зможуть редагувати всі папки за допомогою менеджера метаданих.", "LibraryAccessHelp": "Виберіть медіатеки, якими хочете поділитися з цим користувачем. Адміністратори зможуть редагувати всі папки за допомогою менеджера метаданих.",
"LeaveBlankToNotSetAPassword": "Ви можете залишити це поле порожнім, щоб не встановлювати пароль.", "LeaveBlankToNotSetAPassword": "Ви можете залишити це поле порожнім, щоб не встановлювати пароль.",
"LearnHowYouCanContribute": "Дізнайтеся, як ви можете зробити свій внесок.", "LearnHowYouCanContribute": "Дізнайтеся, як ви можете зробити свій внесок.",
"LatestFromLibrary": "Нове в {0}", "LatestFromLibrary": "Нещодавно додано в {0}",
"LastSeen": "Востаннє був {0}", "LastSeen": "Востаннє був {0}",
"Larger": "Більший", "Larger": "Більший",
"LabelZipCode": "Індекс:", "LabelZipCode": "Індекс:",
@ -1049,7 +1049,7 @@
"LabelSelectFolderGroupsHelp": "Папки, для яких не встановлено прапорець, відображатимуться самі по собі у власному поданні.", "LabelSelectFolderGroupsHelp": "Папки, для яких не встановлено прапорець, відображатимуться самі по собі у власному поданні.",
"LabelSeasonNumber": "Номер сезону:", "LabelSeasonNumber": "Номер сезону:",
"LabelScreensaver": "Заставка:", "LabelScreensaver": "Заставка:",
"LabelScheduledTaskLastRan": "Останній раз запускалося: {0}, час виконання: {1}.", "LabelScheduledTaskLastRan": "Останній запуск: {0}, час виконання: {1}.",
"LabelSaveLocalMetadata": "Збережіть ілюстрацію в медіа-папках", "LabelSaveLocalMetadata": "Збережіть ілюстрацію в медіа-папках",
"LabelRuntimeMinutes": "Час виконання:", "LabelRuntimeMinutes": "Час виконання:",
"LabelRequireHttps": "Вимагати HTTPS", "LabelRequireHttps": "Вимагати HTTPS",
@ -1284,7 +1284,7 @@
"PackageInstallFailed": "Помилка встановлення {0} (версія {1}).", "PackageInstallFailed": "Помилка встановлення {0} (версія {1}).",
"PackageInstallCompleted": "Установлення {0} (версія {1}) завершено.", "PackageInstallCompleted": "Установлення {0} (версія {1}) завершено.",
"PackageInstallCancelled": "Установлення {0} (версія {1}) скасовано.", "PackageInstallCancelled": "Установлення {0} (версія {1}) скасовано.",
"OtherArtist": "Інший художник", "OtherArtist": "Інший виконавець",
"OriginalAirDateValue": "Початкова дата ефіру: {0}", "OriginalAirDateValue": "Початкова дата ефіру: {0}",
"OptionWakeFromSleep": "Пробудити", "OptionWakeFromSleep": "Пробудити",
"OptionUnairedEpisode": "Невипущені епізоди", "OptionUnairedEpisode": "Невипущені епізоди",
@ -1329,7 +1329,7 @@
"OptionEnableM2tsMode": "Увімкнути режим M2TS", "OptionEnableM2tsMode": "Увімкнути режим M2TS",
"OptionEnableForAllTuners": "Увімкнути для всіх пристроїв тюнера", "OptionEnableForAllTuners": "Увімкнути для всіх пристроїв тюнера",
"OptionEnableExternalContentInSuggestionsHelp": "Дозволити включати інтернет-трейлери та телепрограми в прямому ефірі до запропонованого вмісту.", "OptionEnableExternalContentInSuggestionsHelp": "Дозволити включати інтернет-трейлери та телепрограми в прямому ефірі до запропонованого вмісту.",
"OptionCaptionInfoExSamsung": "Caption InfoEx (Samsung)", "OptionCaptionInfoExSamsung": "Функція CaptionInfoEx (Samsung)",
"OptionEnableExternalContentInSuggestions": "Увімкнути зовнішній вміст у пропозиціях", "OptionEnableExternalContentInSuggestions": "Увімкнути зовнішній вміст у пропозиціях",
"OptionEnableAccessToAllLibraries": "Увімкнути доступ до всіх медіатек", "OptionEnableAccessToAllLibraries": "Увімкнути доступ до всіх медіатек",
"OptionEnableAccessToAllChannels": "Увімкнути доступ до всіх каналів", "OptionEnableAccessToAllChannels": "Увімкнути доступ до всіх каналів",
@ -1422,7 +1422,7 @@
"TabMyPlugins": "Мої плагіни", "TabMyPlugins": "Мої плагіни",
"TabMusic": "Музика", "TabMusic": "Музика",
"TabLogs": "Журнали", "TabLogs": "Журнали",
"TabLatest": "Останні", "TabLatest": "Нещодавно додані",
"TabDashboard": "Панель", "TabDashboard": "Панель",
"TabContainers": "Контейнери", "TabContainers": "Контейнери",
"TabCodecs": "Кодеки", "TabCodecs": "Кодеки",
@ -1518,7 +1518,7 @@
"SubtitleCodecNotSupported": "Кодек субтитрів не підтримується", "SubtitleCodecNotSupported": "Кодек субтитрів не підтримується",
"ContainerNotSupported": "Контейнер не підтримується", "ContainerNotSupported": "Контейнер не підтримується",
"AudioCodecNotSupported": "Аудіокодек не підтримується", "AudioCodecNotSupported": "Аудіокодек не підтримується",
"EnableGamepadHelp": "Слухайте вхід з будь-яких підключених контролерів.", "EnableGamepadHelp": "Очікуйте вхідних даних від будь-яких підключених контролерів. (Вимагається: режим відображення «TV»)",
"LabelEnableGamepad": "Увімкнути геймпад", "LabelEnableGamepad": "Увімкнути геймпад",
"Controls": "Елементи керування", "Controls": "Елементи керування",
"AllowVppTonemappingHelp": "Повне відображення тонів на основі драйверів Intel. Наразі працює лише на певному обладнанні з відео HDR10. Це має вищий пріоритет порівняно з іншою реалізацією OpenCL.", "AllowVppTonemappingHelp": "Повне відображення тонів на основі драйверів Intel. Наразі працює лише на певному обладнанні з відео HDR10. Це має вищий пріоритет порівняно з іншою реалізацією OpenCL.",
@ -1559,8 +1559,8 @@
"XmlTvMovieCategoriesHelp": "Програми з цими категоріями відображатимуться як фільми. Розділіть множинні символом \"|\".", "XmlTvMovieCategoriesHelp": "Програми з цими категоріями відображатимуться як фільми. Розділіть множинні символом \"|\".",
"XmlTvKidsCategoriesHelp": "Програми з цими категоріями відображатимуться як програми для дітей. Розділіть множинні символом \"|\".", "XmlTvKidsCategoriesHelp": "Програми з цими категоріями відображатимуться як програми для дітей. Розділіть множинні символом \"|\".",
"XmlDocumentAttributeListHelp": "Ці атрибути застосовуються до кореневого елемента кожної відповіді XML.", "XmlDocumentAttributeListHelp": "Ці атрибути застосовуються до кореневого елемента кожної відповіді XML.",
"Writers": "Письменники", "Writers": "Сценаристи",
"Writer": "Письменник", "Writer": "Сценарист",
"WizardCompleted": "Це все, що нам зараз потрібно. Jellyfin почав збирати інформацію про вашу медіатеку. Перегляньте деякі з наших програм, а потім натисніть <b>Готово</b>, щоб переглянути <b>інформаційну панель</b>.", "WizardCompleted": "Це все, що нам зараз потрібно. Jellyfin почав збирати інформацію про вашу медіатеку. Перегляньте деякі з наших програм, а потім натисніть <b>Готово</b>, щоб переглянути <b>інформаційну панель</b>.",
"Whitelist": "Білий список", "Whitelist": "Білий список",
"WelcomeToProject": "Ласкаво просимо до Jellyfin!", "WelcomeToProject": "Ласкаво просимо до Jellyfin!",
@ -1682,5 +1682,23 @@
"MessageRenameMediaFolder": "Перейменування медіа-бібліотеки призведе до втрати всіх метаданих, будьте обережні.", "MessageRenameMediaFolder": "Перейменування медіа-бібліотеки призведе до втрати всіх метаданих, будьте обережні.",
"EnableCardLayout": "Відобразити візуальний CardBox", "EnableCardLayout": "Відобразити візуальний CardBox",
"MessageNoItemsAvailable": "Немає доступних елементив.", "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", "HeaderCustomDlnaProfiles": "Hồ sơ khách hàng",
"HeaderFeatureAccess": "Truy cập tính năng:", "HeaderFeatureAccess": "Truy cập tính năng:",
"HeaderFrequentlyPlayed": "Phát thường xuyên", "HeaderFrequentlyPlayed": "Phát thường xuyên",
"HeaderLatestEpisodes": "Tập phim mới nhất", "HeaderLatestEpisodes": "Tập Phim Thêm Gần Đây",
"HeaderLatestMovies": "Phim Gần Nhất", "HeaderLatestMovies": "Phim Thêm Gần Đây",
"HeaderRecentlyPlayed": "Phát gần đây", "HeaderRecentlyPlayed": "Phát gần đây",
"HeaderStatus": "Trạng thái", "HeaderStatus": "Trạng thái",
"HeaderSystemDlnaProfiles": "Hồ sơ hệ thống", "HeaderSystemDlnaProfiles": "Hồ sơ hệ thống",
@ -67,7 +67,7 @@
"SettingsSaved": "Lưu các cài đặt.", "SettingsSaved": "Lưu các cài đặt.",
"Sunday": "Chủ Nhật", "Sunday": "Chủ Nhật",
"TabCatalog": "Danh mục", "TabCatalog": "Danh mục",
"TabLatest": "Mới nhất", "TabLatest": "Thêm Gần Đây",
"TabMyPlugins": "Plugin Của Tôi", "TabMyPlugins": "Plugin Của Tôi",
"TabNetworks": "Mạng TV", "TabNetworks": "Mạng TV",
"TabProfiles": "Hồ sơ", "TabProfiles": "Hồ sơ",
@ -214,7 +214,7 @@
"Album": "Album", "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ủ.", "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", "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", "DisplayInMyMedia": "Hiển thị trên trang chính",
"Display": "Hiển thị", "Display": "Hiển thị",
"Disconnect": "Ngắt kết nối", "Disconnect": "Ngắt kết nối",
@ -255,7 +255,7 @@
"HeaderContinueWatching": "Xem Tiếp", "HeaderContinueWatching": "Xem Tiếp",
"HeaderContinueListening": "Tiếp Tục Nghe", "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.", "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", "HeaderContainerProfile": "Hồ Sơ Định Dạng",
"HeaderConnectionFailure": "Kế Nối Thất Bại", "HeaderConnectionFailure": "Kế Nối Thất Bại",
"HeaderConnectToServer": "Kết Nối Đến Máy Chủ", "HeaderConnectToServer": "Kết Nối Đến Máy Chủ",
@ -382,9 +382,9 @@
"HeaderLibraryFolders": "Thư Mục Thư Viện", "HeaderLibraryFolders": "Thư Mục Thư Viện",
"HeaderLibraryAccess": "Truy Cập Thư Viện", "HeaderLibraryAccess": "Truy Cập Thư Viện",
"HeaderLibraries": "Thư viện", "HeaderLibraries": "Thư viện",
"HeaderLatestRecordings": "Bản Ghi Âm/Ghi Hình Mới Nhất", "HeaderLatestRecordings": "Bản Ghi Thêm Gần Đây",
"HeaderLatestMusic": "Âm Nhạc Mới Nhất", "HeaderLatestMusic": "Nhạc Thêm Gần Đây",
"HeaderLatestMedia": "Nội Dung Mới Nhất", "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ả'.", "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", "HeaderKeepSeries": "Lưu Series",
"HeaderKeepRecording": "Tiếp Tục Ghi Âm/Ghi Hình", "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.", "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", "Horizontal": "Nằm Ngang",
"Home": "Trang chủ", "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", "Hide": "Ẩn",
"Help": "Trợ Giúp", "Help": "Trợ Giúp",
"HeaderYears": "Năm", "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ả.", "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.", "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.", "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", "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ộ.", "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.", "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", "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.", "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", "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", "LabelEnableGamepad": "Bật Tay Cầm Chơi Game",
"Controls": "Điều khiển", "Controls": "Điều khiển",
"TextSent": "Đã gửi văn bản.", "TextSent": "Đã gửi văn bản.",
@ -1680,5 +1680,20 @@
"Experimental": "Trải nghiệm", "Experimental": "Trải nghiệm",
"DownloadAll": "Tải Xuống Tất Cả", "DownloadAll": "Tải Xuống Tất Cả",
"LabelStereoDownmixAlgorithm": "Thuật Toán Trộn Âm Thanh Nổi", "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": "断开连接", "Disconnect": "断开连接",
"Display": "显示", "Display": "显示",
"DisplayInMyMedia": "在主屏幕显示", "DisplayInMyMedia": "在主屏幕显示",
"DisplayInOtherHomeScreenSections": "在“新媒体”和“继续观看“等主屏幕模块中显示", "DisplayInOtherHomeScreenSections": "在“媒体”和“继续观看“等主屏幕模块中显示",
"DisplayMissingEpisodesWithinSeasons": "显示每季里缺少的剧集", "DisplayMissingEpisodesWithinSeasons": "显示每季里缺少的剧集",
"DisplayMissingEpisodesWithinSeasonsHelp": "必须在服务器的 TV 媒体库设置中也启用该功能。", "DisplayMissingEpisodesWithinSeasonsHelp": "必须在服务器的 TV 媒体库设置中也启用该功能。",
"DoNotRecord": "不录制", "DoNotRecord": "不录制",
@ -273,11 +273,11 @@
"HeaderInstall": "安装", "HeaderInstall": "安装",
"HeaderInstantMix": "速成合辑", "HeaderInstantMix": "速成合辑",
"HeaderKodiMetadataHelp": "要启用或禁用 NFO 元数据,请编辑库并找到“元数据保护程序”部分。", "HeaderKodiMetadataHelp": "要启用或禁用 NFO 元数据,请编辑库并找到“元数据保护程序”部分。",
"HeaderLatestEpisodes": "新剧集", "HeaderLatestEpisodes": "剧集",
"HeaderLatestMedia": "新媒体", "HeaderLatestMedia": "媒体",
"HeaderLatestMovies": "新电影", "HeaderLatestMovies": "电影",
"HeaderLatestMusic": "新音乐", "HeaderLatestMusic": "音乐",
"HeaderLatestRecordings": "最新录制的节目", "HeaderLatestRecordings": "新增录制",
"HeaderLibraries": "媒体库", "HeaderLibraries": "媒体库",
"HeaderLibraryAccess": "媒体库访问", "HeaderLibraryAccess": "媒体库访问",
"HeaderLibraryFolders": "媒体文件夹", "HeaderLibraryFolders": "媒体文件夹",
@ -368,7 +368,7 @@
"HeaderYears": "年份", "HeaderYears": "年份",
"Help": "帮助", "Help": "帮助",
"Hide": "隐藏", "Hide": "隐藏",
"HideWatchedContentFromLatestMedia": "隐藏来自“新媒体”的观看内容", "HideWatchedContentFromLatestMedia": "隐藏来自“媒体”的观看内容",
"Home": "首页", "Home": "首页",
"HttpsRequiresCert": "要启用安全连接, 您需要提供一个受信任的 SSL 证书, 如 \"Let's Encrypt\"。请提供证书或禁用安全连接。", "HttpsRequiresCert": "要启用安全连接, 您需要提供一个受信任的 SSL 证书, 如 \"Let's Encrypt\"。请提供证书或禁用安全连接。",
"Identify": "识别", "Identify": "识别",
@ -705,7 +705,7 @@
"LabelffmpegPathHelp": "FFmpeg 应用文件或包含 FFmpeg 的文件夹的路径。", "LabelffmpegPathHelp": "FFmpeg 应用文件或包含 FFmpeg 的文件夹的路径。",
"LanNetworksHelp": "在强制带宽限制时,认作本地网络上的 IP 地址或 IP/网络掩码条目的逗号分隔列表。如果设置此项,所有其它 IP 地址将被视为在外部网络上,并且将受到外部带宽限制。如果保留为空,则只将服务器的子网视为本地网络。", "LanNetworksHelp": "在强制带宽限制时,认作本地网络上的 IP 地址或 IP/网络掩码条目的逗号分隔列表。如果设置此项,所有其它 IP 地址将被视为在外部网络上,并且将受到外部带宽限制。如果保留为空,则只将服务器的子网视为本地网络。",
"Large": "大", "Large": "大",
"LatestFromLibrary": "最{0}", "LatestFromLibrary": "最近添加于 {0}",
"LearnHowYouCanContribute": "了解如何贡献。", "LearnHowYouCanContribute": "了解如何贡献。",
"LibraryAccessHelp": "选择共享给此用户的媒体库。管理员有权使用媒体资料管理器来编辑所有文件夹。", "LibraryAccessHelp": "选择共享给此用户的媒体库。管理员有权使用媒体资料管理器来编辑所有文件夹。",
"List": "列表", "List": "列表",
@ -1036,7 +1036,7 @@
"TabContainers": "媒体载体", "TabContainers": "媒体载体",
"TabDashboard": "控制台", "TabDashboard": "控制台",
"TabDirectPlay": "直接播放", "TabDirectPlay": "直接播放",
"TabLatest": "新", "TabLatest": "",
"TabLogs": "日志", "TabLogs": "日志",
"TabMusic": "音乐", "TabMusic": "音乐",
"TabMyPlugins": "我的插件", "TabMyPlugins": "我的插件",
@ -1512,7 +1512,7 @@
"DirectPlayHelp": "源文件与此客户端完全兼容,会话正在接收文件而未做任何修改。", "DirectPlayHelp": "源文件与此客户端完全兼容,会话正在接收文件而未做任何修改。",
"Framerate": "帧率", "Framerate": "帧率",
"HeaderContinueReading": "继续阅读", "HeaderContinueReading": "继续阅读",
"EnableGamepadHelp": "监听来自任何连接的控制器输入。", "EnableGamepadHelp": "监听来自任何连接的控制器输入。(需开启“电视”模式)",
"LabelEnableGamepad": "启用游戏手柄", "LabelEnableGamepad": "启用游戏手柄",
"Controls": "操控", "Controls": "操控",
"TextSent": "文本已发送。", "TextSent": "文本已发送。",
@ -1686,5 +1686,23 @@
"MessageNoItemsAvailable": "没有可用的项。", "MessageNoItemsAvailable": "没有可用的项。",
"Unreleased": "暂未发布", "Unreleased": "暂未发布",
"DownloadAll": "全部下载", "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": "開始時間:", "LabelAccessStart": "開始時間:",
"LabelAirDays": "播出日期:", "LabelAirDays": "播出日期:",
"LabelAirTime": "播出時間:", "LabelAirTime": "播出時間:",
"LabelAirsAfterSeason": "已播放劇集季度", "LabelAirsAfterSeason": "在季度後播出",
"LabelAirsBeforeEpisode": "集播出前", "LabelAirsBeforeEpisode": "在集數前播出",
"LabelAirsBeforeSeason": "尚未播放劇集季度", "LabelAirsBeforeSeason": "在季度前播出",
"LabelAlbum": "專輯:", "LabelAlbum": "專輯:",
"LabelAlbumArtHelp": "PN 在 upnp:albumArtURI 裡的 dlna:profileID 屬性用於專輯封面。某些設備不管圖像的尺寸大小,都會要求特定的值。", "LabelAlbumArtHelp": "PN 在 upnp:albumArtURI 裡的 dlna:profileID 屬性用於專輯封面。某些設備不管圖像的尺寸大小,都會要求特定的值。",
"LabelAlbumArtMaxHeight": "專輯封面最大高度:", "LabelAlbumArtMaxHeight": "專輯封面最大高度:",
@ -1169,7 +1169,7 @@
"LabelOptionalNetworkPathHelp": "如果這個資料夾在網路上分享,提供網路分享路徑可以供其他應用程式直接存取媒體檔案,例如 {0} 或者 {1}。", "LabelOptionalNetworkPathHelp": "如果這個資料夾在網路上分享,提供網路分享路徑可以供其他應用程式直接存取媒體檔案,例如 {0} 或者 {1}。",
"LabelOriginalAspectRatio": "原始長寬比:", "LabelOriginalAspectRatio": "原始長寬比:",
"LabelOverview": "內容概述:", "LabelOverview": "內容概述:",
"LabelParentalRating": "家長分級:", "LabelParentalRating": "分級:",
"LabelPasswordConfirm": "確認密碼:", "LabelPasswordConfirm": "確認密碼:",
"LabelPasswordResetProvider": "密碼重設提供者:", "LabelPasswordResetProvider": "密碼重設提供者:",
"LabelPasswordRecoveryPinCode": "PIN 碼:", "LabelPasswordRecoveryPinCode": "PIN 碼:",
@ -1683,5 +1683,10 @@
"MediaInfoRpuPresentFlag": "杜比視界 rpu 存在標記", "MediaInfoRpuPresentFlag": "杜比視界 rpu 存在標記",
"MediaInfoElPresentFlag": "杜比視界 el 存在標記", "MediaInfoElPresentFlag": "杜比視界 el 存在標記",
"MediaInfoBlPresentFlag": "杜比視界 bl 存在標記", "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)$/, 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: [{ use: [{
loader: 'babel-loader', loader: 'babel-loader',
options: { options: {
@ -172,7 +191,11 @@ const config = {
}, },
/* modules that Babel breaks when transforming to ESM */ /* 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: [{ use: [{
loader: 'babel-loader', loader: 'babel-loader',
options: { options: {