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 cast-with-localhost-server

This commit is contained in:
Sky High 2023-09-10 20:28:15 +02:00 committed by GitHub
commit 61a6d6e8f0
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
56 changed files with 1079 additions and 370 deletions

View file

@ -0,0 +1,185 @@
import React, { FC, useCallback } from 'react';
import IconButton from '@mui/material/IconButton';
import MenuItem from '@mui/material/MenuItem';
import Popover from '@mui/material/Popover';
import Typography from '@mui/material/Typography';
import Divider from '@mui/material/Divider';
import Box from '@mui/material/Box';
import InputLabel from '@mui/material/InputLabel';
import FormControl from '@mui/material/FormControl';
import Select, { SelectChangeEvent } from '@mui/material/Select';
import SortByAlphaIcon from '@mui/icons-material/SortByAlpha';
import globalize from 'scripts/globalize';
import { LibraryViewSettings } from 'types/library';
import { LibraryTab } from 'types/libraryTab';
import { ItemSortBy } from '@jellyfin/sdk/lib/models/api/item-sort-by';
import { SortOrder } from '@jellyfin/sdk/lib/generated-client';
const sortMenuOptions = [
{ label: 'Name', value: ItemSortBy.SortName },
{ label: 'OptionRandom', value: ItemSortBy.Random },
{ label: 'OptionImdbRating', value: ItemSortBy.CommunityRating },
{ label: 'OptionCriticRating', value: ItemSortBy.CriticRating },
{ label: 'OptionDateAdded', value: ItemSortBy.DateCreated },
{ label: 'OptionDatePlayed', value: ItemSortBy.DatePlayed },
{ label: 'OptionParentalRating', value: ItemSortBy.OfficialRating },
{ label: 'OptionPlayCount', value: ItemSortBy.PlayCount },
{ label: 'OptionReleaseDate', value: ItemSortBy.PremiereDate },
{ label: 'Runtime', value: ItemSortBy.Runtime }
];
const sortOrderMenuOptions = [
{ label: 'Ascending', value: SortOrder.Ascending },
{ label: 'Descending', value: SortOrder.Descending }
];
interface SortButtonProps {
viewType: LibraryTab;
libraryViewSettings: LibraryViewSettings;
setLibraryViewSettings: React.Dispatch<
React.SetStateAction<LibraryViewSettings>
>;
}
const SortButton: FC<SortButtonProps> = ({
viewType,
libraryViewSettings,
setLibraryViewSettings
}) => {
const [anchorEl, setAnchorEl] = React.useState<null | HTMLElement>(null);
const open = Boolean(anchorEl);
const id = open ? 'sort-popover' : undefined;
const handleClick = useCallback((event: React.MouseEvent<HTMLElement>) => {
setAnchorEl(event.currentTarget);
}, []);
const handleClose = useCallback(() => {
setAnchorEl(null);
}, []);
const onSelectChange = useCallback(
(event: SelectChangeEvent) => {
const name = event.target.name;
setLibraryViewSettings((prevState) => ({
...prevState,
StartIndex: 0,
[name]: event.target.value
}));
},
[setLibraryViewSettings]
);
const getVisibleSortMenu = () => {
const visibleSortMenu: ItemSortBy[] = [ItemSortBy.SortName, ItemSortBy.Random, ItemSortBy.DateCreated];
if (
viewType !== LibraryTab.Photos
&& viewType !== LibraryTab.Videos
&& viewType !== LibraryTab.Books
) {
visibleSortMenu.push(ItemSortBy.CommunityRating);
visibleSortMenu.push(ItemSortBy.CriticRating);
visibleSortMenu.push(ItemSortBy.DatePlayed);
visibleSortMenu.push(ItemSortBy.OfficialRating);
visibleSortMenu.push(ItemSortBy.PlayCount);
visibleSortMenu.push(ItemSortBy.PremiereDate);
visibleSortMenu.push(ItemSortBy.Runtime);
}
return visibleSortMenu;
};
return (
<Box>
<IconButton
title={globalize.translate('Sort')}
sx={{ ml: 2 }}
aria-describedby={id}
className='paper-icon-button-light btnShuffle autoSize'
onClick={handleClick}
>
<SortByAlphaIcon />
</IconButton>
<Popover
id={id}
open={open}
anchorEl={anchorEl}
onClose={handleClose}
anchorOrigin={{
vertical: 'bottom',
horizontal: 'center'
}}
transformOrigin={{
vertical: 'top',
horizontal: 'center'
}}
sx={{
'& .MuiFormControl-root': { m: 1, width: 200 }
}}
>
<FormControl fullWidth>
<InputLabel id='select-sort-label'>
<Typography component='span'>
{globalize.translate('LabelSortBy')}
</Typography>
</InputLabel>
<Select
labelId='select-sort-label'
id='selectSortBy'
value={libraryViewSettings.SortBy}
label={globalize.translate('LabelSortBy')}
name='SortBy'
onChange={onSelectChange}
>
{sortMenuOptions
.filter((option) => getVisibleSortMenu().includes(option.value))
.map((option) => (
<MenuItem
key={option.value}
value={option.value}
>
<Typography component='span'>
{globalize.translate(option.label)}
</Typography>
</MenuItem>
))}
</Select>
</FormControl>
<Divider />
<FormControl fullWidth>
<InputLabel id='select-sortorder-label'>
<Typography component='span'>
{globalize.translate('LabelSortOrder')}
</Typography>
</InputLabel>
<Select
labelId='select-sortorder-label'
id='selectSortOrder'
value={libraryViewSettings.SortOrder}
label={globalize.translate('LabelSortOrder')}
name='SortOrder'
onChange={onSelectChange}
>
{sortOrderMenuOptions.map((option) => (
<MenuItem
key={option.value}
value={option.value}
>
<Typography component='span'>
{option.label}
</Typography>
</MenuItem>
))}
</Select>
</FormControl>
</Popover>
</Box>
);
};
export default SortButton;

View file

@ -90,8 +90,10 @@ function loadForm(context, user, userSettings) {
if (appHost.supports('screensaver')) { if (appHost.supports('screensaver')) {
context.querySelector('.selectScreensaverContainer').classList.remove('hide'); context.querySelector('.selectScreensaverContainer').classList.remove('hide');
context.querySelector('.txtBackdropScreensaverIntervalContainer').classList.remove('hide');
} else { } else {
context.querySelector('.selectScreensaverContainer').classList.add('hide'); context.querySelector('.selectScreensaverContainer').classList.add('hide');
context.querySelector('.txtBackdropScreensaverIntervalContainer').classList.add('hide');
} }
if (datetime.supportsLocalization()) { if (datetime.supportsLocalization()) {
@ -105,6 +107,8 @@ function loadForm(context, user, userSettings) {
loadScreensavers(context, userSettings); loadScreensavers(context, userSettings);
context.querySelector('#txtBackdropScreensaverInterval').value = userSettings.backdropScreensaverInterval();
context.querySelector('.chkDisplayMissingEpisodes').checked = user.Configuration.DisplayMissingEpisodes || false; context.querySelector('.chkDisplayMissingEpisodes').checked = user.Configuration.DisplayMissingEpisodes || false;
context.querySelector('#chkThemeSong').checked = userSettings.enableThemeSongs(); context.querySelector('#chkThemeSong').checked = userSettings.enableThemeSongs();
@ -147,6 +151,7 @@ function saveUser(context, user, userSettingsInstance, apiClient) {
userSettingsInstance.theme(context.querySelector('#selectTheme').value); userSettingsInstance.theme(context.querySelector('#selectTheme').value);
userSettingsInstance.dashboardTheme(context.querySelector('#selectDashboardTheme').value); userSettingsInstance.dashboardTheme(context.querySelector('#selectDashboardTheme').value);
userSettingsInstance.screensaver(context.querySelector('.selectScreensaver').value); userSettingsInstance.screensaver(context.querySelector('.selectScreensaver').value);
userSettingsInstance.backdropScreensaverInterval(context.querySelector('#txtBackdropScreensaverInterval').value);
userSettingsInstance.libraryPageSize(context.querySelector('#txtLibraryPageSize').value); userSettingsInstance.libraryPageSize(context.querySelector('#txtLibraryPageSize').value);

View file

@ -203,6 +203,11 @@
<select is="emby-select" class="selectScreensaver" label="${LabelScreensaver}"></select> <select is="emby-select" class="selectScreensaver" label="${LabelScreensaver}"></select>
</div> </div>
<div class="inputContainer hide txtBackdropScreensaverIntervalContainer inputContainer-withDescription">
<input is="emby-input" type="number" id="txtBackdropScreensaverInterval" pattern="[0-9]*" required="required" min="1" max="3600" step="1" label="${LabelBackdropScreensaverInterval}" />
<div class="fieldDescription">${LabelBackdropScreensaverIntervalHelp}</div>
</div>
<div class="checkboxContainer checkboxContainer-withDescription"> <div class="checkboxContainer checkboxContainer-withDescription">
<label> <label>
<input type="checkbox" is="emby-checkbox" id="chkFadein" /> <input type="checkbox" is="emby-checkbox" id="chkFadein" />

View file

@ -416,7 +416,7 @@ export function setContentType(parent, contentType) {
} }
} }
parent.querySelector('.chkEnableLUFSScan').classList.toggle('hide', contentType !== 'music'); parent.querySelector('.chkEnableLUFSScanContainer').classList.toggle('hide', contentType !== 'music');
if (contentType === 'tvshows') { if (contentType === 'tvshows') {
parent.querySelector('.chkEnableEmbeddedEpisodeInfosContainer').classList.remove('hide'); parent.querySelector('.chkEnableEmbeddedEpisodeInfosContainer').classList.remove('hide');

View file

@ -55,7 +55,7 @@
<div class="fieldDescription checkboxFieldDescription">${LabelEnableRealtimeMonitorHelp}</div> <div class="fieldDescription checkboxFieldDescription">${LabelEnableRealtimeMonitorHelp}</div>
</div> </div>
<div class="checkboxContainer checkboxContainer-withDescription advanced"> <div class="checkboxContainer checkboxContainer-withDescription chkEnableLUFSScanContainer advanced">
<label> <label>
<input type="checkbox" is="emby-checkbox" class="chkEnableLUFSScan" checked /> <input type="checkbox" is="emby-checkbox" class="chkEnableLUFSScan" checked />
<span>${LabelEnableLUFSScan}</span> <span>${LabelEnableLUFSScan}</span>

View file

@ -30,6 +30,7 @@ let volumeSlider;
let volumeSliderContainer; let volumeSliderContainer;
let playPauseButtons; let playPauseButtons;
let positionSlider; let positionSlider;
let toggleAirPlayButton;
let toggleRepeatButton; let toggleRepeatButton;
let toggleRepeatButtonIcon; let toggleRepeatButtonIcon;
@ -78,6 +79,8 @@ function getNowPlayingBarHtml() {
html += '<input type="range" is="emby-slider" pin step="1" min="0" max="100" value="0" class="slider-medium-thumb nowPlayingBarVolumeSlider"/>'; html += '<input type="range" is="emby-slider" pin step="1" min="0" max="100" value="0" class="slider-medium-thumb nowPlayingBarVolumeSlider"/>';
html += '</div>'; html += '</div>';
html += '<button is="paper-icon-button-light" class="btnAirPlay mediaButton"><span class="material-icons airplay" aria-hidden="true"></span></button>';
html += '<button is="paper-icon-button-light" class="toggleRepeatButton mediaButton"><span class="material-icons repeat" aria-hidden="true"></span></button>'; html += '<button is="paper-icon-button-light" class="toggleRepeatButton mediaButton"><span class="material-icons repeat" aria-hidden="true"></span></button>';
html += '<button is="paper-icon-button-light" class="btnShuffleQueue mediaButton"><span class="material-icons shuffle" aria-hidden="true"></span></button>'; html += '<button is="paper-icon-button-light" class="btnShuffleQueue mediaButton"><span class="material-icons shuffle" aria-hidden="true"></span></button>';
@ -192,6 +195,13 @@ function bindEvents(elem) {
} }
}); });
toggleAirPlayButton = elem.querySelector('.btnAirPlay');
toggleAirPlayButton.addEventListener('click', function () {
if (currentPlayer) {
playbackManager.toggleAirPlay(currentPlayer);
}
});
elem.querySelector('.btnShuffleQueue').addEventListener('click', function () { elem.querySelector('.btnShuffleQueue').addEventListener('click', function () {
if (currentPlayer) { if (currentPlayer) {
playbackManager.toggleQueueShuffleMode(); playbackManager.toggleQueueShuffleMode();
@ -328,6 +338,9 @@ function updatePlayerStateInternal(event, state, player) {
toggleRepeatButton.classList.remove('hide'); toggleRepeatButton.classList.remove('hide');
} }
const hideAirPlayButton = supportedCommands.indexOf('AirPlay') === -1;
toggleAirPlayButton.classList.toggle('hide', hideAirPlayButton);
updateRepeatModeDisplay(playbackManager.getRepeatMode()); updateRepeatModeDisplay(playbackManager.getRepeatMode());
onQueueShuffleModeChange(); onQueueShuffleModeChange();

View file

@ -352,7 +352,7 @@ export default function (options) {
minRatio: 1, minRatio: 1,
toggle: true toggle: true
}, },
autoplay: !swiperOptions.interactive || !!swiperOptions.autoplay, autoplay: swiperOptions.autoplay ?? !swiperOptions.interactive,
keyboard: { keyboard: {
enabled: true enabled: true
}, },

View file

@ -54,7 +54,7 @@ function init(instance) {
playbackManager.setSubtitleOffset(inputOffset, player); playbackManager.setSubtitleOffset(inputOffset, player);
// synchronize with slider value // synchronize with slider value
subtitleSyncSlider.updateOffset( subtitleSyncSlider.updateOffset(
getPercentageFromOffset(inputOffset)); getSliderValueFromOffset(inputOffset));
} else { } else {
this.textContent = (playbackManager.getPlayerSubtitleOffset(player) || 0) + 's'; this.textContent = (playbackManager.getPlayerSubtitleOffset(player) || 0) + 's';
} }
@ -79,17 +79,17 @@ function init(instance) {
} }
}; };
subtitleSyncSlider.updateOffset = function (percent) { subtitleSyncSlider.updateOffset = function (sliderValue) {
// default value is 0s = 50% // default value is 0s = 0ms
this.value = percent === undefined ? 50 : percent; this.value = sliderValue === undefined ? 0 : sliderValue;
}; };
subtitleSyncSlider.addEventListener('change', function () { subtitleSyncSlider.addEventListener('change', function () {
// set new offset // set new offset
playbackManager.setSubtitleOffset(getOffsetFromPercentage(this.value), player); playbackManager.setSubtitleOffset(getOffsetFromSliderValue(this.value), player);
// synchronize with textField value // synchronize with textField value
subtitleSyncTextField.updateOffset( subtitleSyncTextField.updateOffset(
getOffsetFromPercentage(this.value)); getOffsetFromSliderValue(this.value));
}); });
subtitleSyncSlider.getBubbleHtml = function (value) { subtitleSyncSlider.getBubbleHtml = function (value) {
@ -108,20 +108,22 @@ function init(instance) {
} }
function getOffsetFromPercentage(value) { function getOffsetFromPercentage(value) {
// convert percent to fraction // convert percentage to fraction
let offset = (value - 50) / 50; let offset = (value - 50) / 50;
// multiply by offset min/max range value (-x to +x) : // multiply by offset min/max range value (-x to +x) :
offset *= 30; offset *= 30;
return offset.toFixed(1); return offset.toFixed(1);
} }
function getPercentageFromOffset(value) { function getOffsetFromSliderValue(value) {
// divide by offset min/max range value (-x to +x) : // convert slider value to offset
let percentValue = value / 30; const offset = value / 10;
// convert fraction to percent return offset.toFixed(1);
percentValue *= 50; }
percentValue += 50;
return Math.min(100, Math.max(0, percentValue.toFixed(1))); function getSliderValueFromOffset(value) {
const sliderValue = value * 10;
return Math.min(300, Math.max(-300, sliderValue.toFixed(1)));
} }
class SubtitleSync { class SubtitleSync {
@ -155,8 +157,8 @@ class SubtitleSync {
if (playbackManager.isShowingSubtitleOffsetEnabled(player) && playbackManager.canHandleOffsetOnCurrentSubtitle(player)) { if (playbackManager.isShowingSubtitleOffsetEnabled(player) && playbackManager.canHandleOffsetOnCurrentSubtitle(player)) {
// if no subtitle offset is defined or element has focus (offset being defined) // if no subtitle offset is defined or element has focus (offset being defined)
if (!(playbackManager.getPlayerSubtitleOffset(player) || subtitleSyncTextField.hasFocus)) { if (!(playbackManager.getPlayerSubtitleOffset(player) || subtitleSyncTextField.hasFocus)) {
// set default offset to '0' = 50% // set default offset to '0' = 0ms
subtitleSyncSlider.value = '50'; subtitleSyncSlider.value = '0';
subtitleSyncTextField.textContent = '0s'; subtitleSyncTextField.textContent = '0s';
playbackManager.setSubtitleOffset(0, player); playbackManager.setSubtitleOffset(0, player);
} }

View file

@ -3,7 +3,7 @@
<button type="button" is="paper-icon-button-light" class="subtitleSync-closeButton"><span class="material-icons close" aria-hidden="true"></span></button> <button type="button" is="paper-icon-button-light" class="subtitleSync-closeButton"><span class="material-icons close" aria-hidden="true"></span></button>
<div class="subtitleSyncTextField" contenteditable="true" spellcheck="false">0s</div> <div class="subtitleSyncTextField" contenteditable="true" spellcheck="false">0s</div>
<div class="sliderContainer subtitleSyncSliderContainer"> <div class="sliderContainer subtitleSyncSliderContainer">
<input is="emby-slider" type="range" step=".1" min="0" max="100" value="50" class="subtitleSyncSlider" data-slider-keep-progress="true" /> <input is="emby-slider" type="range" step="1" min="-300" max="300" value="0" class="subtitleSyncSlider" data-slider-keep-progress="true" />
</div> </div>
</div> </div>
</div> </div>

View file

@ -24,7 +24,7 @@ export default function (view, params, tabContent) {
EnableImageTypes: 'Primary,Backdrop,Banner,Thumb', EnableImageTypes: 'Primary,Backdrop,Banner,Thumb',
StartIndex: 0 StartIndex: 0
}, },
view: libraryBrowser.getSavedView(key) || 'Poster' view: userSettings.getSavedView(key) || 'Poster'
}; };
if (userSettings.libraryPageSize() > 0) { if (userSettings.libraryPageSize() > 0) {
@ -32,7 +32,7 @@ export default function (view, params, tabContent) {
} }
pageData.query.ParentId = params.topParentId; pageData.query.ParentId = params.topParentId;
libraryBrowser.loadSavedQueryValues(key, pageData.query); userSettings.loadQuerySettings(key, pageData.query);
} }
return pageData; return pageData;
@ -183,7 +183,7 @@ export default function (view, params, tabContent) {
const itemsContainer = tabContent.querySelector('.itemsContainer'); const itemsContainer = tabContent.querySelector('.itemsContainer');
itemsContainer.innerHTML = html; itemsContainer.innerHTML = html;
imageLoader.lazyChildren(itemsContainer); imageLoader.lazyChildren(itemsContainer);
libraryBrowser.saveQueryValues(getSavedQueryKey(), query); userSettings.saveQuerySettings(getSavedQueryKey(), query);
loading.hide(); loading.hide();
isLoading = false; isLoading = false;
@ -234,7 +234,7 @@ export default function (view, params, tabContent) {
btnSelectView.addEventListener('layoutchange', function (e) { btnSelectView.addEventListener('layoutchange', function (e) {
const viewStyle = e.detail.viewStyle; const viewStyle = e.detail.viewStyle;
getPageData().view = viewStyle; getPageData().view = viewStyle;
libraryBrowser.saveViewSetting(getSavedQueryKey(), viewStyle); userSettings.saveViewSetting(getSavedQueryKey(), viewStyle);
getQuery().StartIndex = 0; getQuery().StartIndex = 0;
onViewStyleChange(); onViewStyleChange();
reloadItems(tabElement); reloadItems(tabElement);

View file

@ -1,7 +1,7 @@
import escapeHtml from 'escape-html'; import escapeHtml from 'escape-html';
import layoutManager from '../../components/layoutManager'; import layoutManager from '../../components/layoutManager';
import loading from '../../components/loading/loading'; import loading from '../../components/loading/loading';
import libraryBrowser from '../../scripts/libraryBrowser'; import * as userSettings from '../../scripts/settings/userSettings';
import cardBuilder from '../../components/cardbuilder/cardBuilder'; import cardBuilder from '../../components/cardbuilder/cardBuilder';
import lazyLoader from '../../components/lazyLoader/lazyLoaderIntersectionObserver'; import lazyLoader from '../../components/lazyLoader/lazyLoaderIntersectionObserver';
import globalize from '../../scripts/globalize'; import globalize from '../../scripts/globalize';
@ -22,10 +22,10 @@ export default function (view, params, tabContent) {
Recursive: true, Recursive: true,
EnableTotalRecordCount: false EnableTotalRecordCount: false
}, },
view: 'Poster' view: userSettings.getSavedView(key) || 'Poster'
}; };
pageData.query.ParentId = params.topParentId; pageData.query.ParentId = params.topParentId;
libraryBrowser.loadSavedQueryValues(key, pageData.query); userSettings.loadQuerySettings(key, pageData.query);
} }
return pageData; return pageData;
@ -181,7 +181,7 @@ export default function (view, params, tabContent) {
elem.innerHTML = html; elem.innerHTML = html;
lazyLoader.lazyChildren(elem, fillItemsContainer); lazyLoader.lazyChildren(elem, fillItemsContainer);
libraryBrowser.saveQueryValues(getSavedQueryKey(), query); userSettings.saveQuerySettings(getSavedQueryKey(), query);
loading.hide(); loading.hide();
}); });
} }
@ -203,7 +203,7 @@ export default function (view, params, tabContent) {
this.setCurrentViewStyle = function (viewStyle) { this.setCurrentViewStyle = function (viewStyle) {
getPageData().view = viewStyle; getPageData().view = viewStyle;
libraryBrowser.saveViewSetting(getSavedQueryKey(), viewStyle); userSettings.saveViewSetting(getSavedQueryKey(), viewStyle);
fullyReload(); fullyReload();
}; };

View file

@ -27,14 +27,14 @@ export default function (view, params, tabContent) {
EnableImageTypes: 'Primary,Backdrop,Banner,Thumb', EnableImageTypes: 'Primary,Backdrop,Banner,Thumb',
StartIndex: 0 StartIndex: 0
}, },
view: libraryBrowser.getSavedView(key) || 'Poster' view: userSettings.getSavedView(key) || 'Poster'
}; };
if (userSettings.libraryPageSize() > 0) { if (userSettings.libraryPageSize() > 0) {
pageData.query['Limit'] = userSettings.libraryPageSize(); pageData.query['Limit'] = userSettings.libraryPageSize();
} }
libraryBrowser.loadSavedQueryValues(key, pageData.query); userSettings.loadQuerySettings(key, pageData.query);
} }
return pageData; return pageData;
@ -172,7 +172,7 @@ export default function (view, params, tabContent) {
const itemsContainer = tabContent.querySelector('.itemsContainer'); const itemsContainer = tabContent.querySelector('.itemsContainer');
itemsContainer.innerHTML = html; itemsContainer.innerHTML = html;
imageLoader.lazyChildren(itemsContainer); imageLoader.lazyChildren(itemsContainer);
libraryBrowser.saveQueryValues(getSavedQueryKey(), query); userSettings.saveQuerySettings(getSavedQueryKey(), query);
loading.hide(); loading.hide();
isLoading = false; isLoading = false;
}); });

View file

@ -42,7 +42,7 @@ export default function (view, params, tabContent) {
EnableImageTypes: 'Primary,Backdrop,Banner,Thumb', EnableImageTypes: 'Primary,Backdrop,Banner,Thumb',
StartIndex: 0 StartIndex: 0
}, },
view: libraryBrowser.getSavedView(key) || 'Poster' view: userSettings.getSavedView(key) || 'Poster'
}; };
if (userSettings.libraryPageSize() > 0) { if (userSettings.libraryPageSize() > 0) {
@ -50,7 +50,7 @@ export default function (view, params, tabContent) {
} }
pageData.query.ParentId = params.topParentId; pageData.query.ParentId = params.topParentId;
libraryBrowser.loadSavedQueryValues(key, pageData.query); userSettings.loadQuerySettings(key, pageData.query);
} }
return pageData; return pageData;
@ -61,11 +61,7 @@ export default function (view, params, tabContent) {
} }
function getSavedQueryKey() { function getSavedQueryKey() {
if (!savedQueryKey) { return `${params.topParentId}-musicalbums`;
savedQueryKey = libraryBrowser.getSavedQueryKey('musicalbums');
}
return savedQueryKey;
} }
const onViewStyleChange = () => { const onViewStyleChange = () => {
@ -174,7 +170,7 @@ export default function (view, params, tabContent) {
const itemsContainer = tabContent.querySelector('.itemsContainer'); const itemsContainer = tabContent.querySelector('.itemsContainer');
itemsContainer.innerHTML = html; itemsContainer.innerHTML = html;
imageLoader.lazyChildren(itemsContainer); imageLoader.lazyChildren(itemsContainer);
libraryBrowser.saveQueryValues(getSavedQueryKey(), query); userSettings.saveQuerySettings(getSavedQueryKey(), query);
loading.hide(); loading.hide();
isLoading = false; isLoading = false;
@ -184,7 +180,6 @@ export default function (view, params, tabContent) {
}); });
}; };
let savedQueryKey;
let pageData; let pageData;
let isLoading = false; let isLoading = false;
@ -280,7 +275,7 @@ export default function (view, params, tabContent) {
btnSelectView.addEventListener('layoutchange', function (e) { btnSelectView.addEventListener('layoutchange', function (e) {
const viewStyle = e.detail.viewStyle; const viewStyle = e.detail.viewStyle;
getPageData().view = viewStyle; getPageData().view = viewStyle;
libraryBrowser.saveViewSetting(getSavedQueryKey(), viewStyle); userSettings.saveViewSetting(getSavedQueryKey(), viewStyle);
getQuery().StartIndex = 0; getQuery().StartIndex = 0;
onViewStyleChange(); onViewStyleChange();
reloadItems(); reloadItems();

View file

@ -10,8 +10,8 @@ import Events from '../../utils/events.ts';
import '../../elements/emby-itemscontainer/emby-itemscontainer'; import '../../elements/emby-itemscontainer/emby-itemscontainer';
export default function (view, params, tabContent) { export default function (view, params, tabContent) {
function getPageData(context) { function getPageData() {
const key = getSavedQueryKey(context); const key = getSavedQueryKey();
let pageData = data[key]; let pageData = data[key];
if (!pageData) { if (!pageData) {
@ -31,27 +31,23 @@ export default function (view, params, tabContent) {
pageData = data[key] = { pageData = data[key] = {
query: queryValues, query: queryValues,
view: libraryBrowser.getSavedView(key) || 'Poster' view: userSettings.getSavedView(key) || 'Poster'
}; };
pageData.query.ParentId = params.topParentId; pageData.query.ParentId = params.topParentId;
libraryBrowser.loadSavedQueryValues(key, pageData.query); userSettings.loadQuerySettings(key, pageData.query);
} }
return pageData; return pageData;
} }
function getQuery(context) { function getQuery() {
return getPageData(context).query; return getPageData().query;
} }
const getSavedQueryKey = (context) => { function getSavedQueryKey() {
if (!context.savedQueryKey) { return `${params.topParentId}-${this.mode}`;
context.savedQueryKey = libraryBrowser.getSavedQueryKey(this.mode);
} }
return context.savedQueryKey;
};
const onViewStyleChange = () => { const onViewStyleChange = () => {
const viewStyle = this.getCurrentViewStyle(); const viewStyle = this.getCurrentViewStyle();
const itemsContainer = tabContent.querySelector('.itemsContainer'); const itemsContainer = tabContent.querySelector('.itemsContainer');
@ -67,10 +63,10 @@ export default function (view, params, tabContent) {
itemsContainer.innerHTML = ''; itemsContainer.innerHTML = '';
}; };
const reloadItems = (page) => { const reloadItems = () => {
loading.show(); loading.show();
isLoading = true; isLoading = true;
const query = getQuery(page); const query = getQuery();
const promise = this.mode == 'albumartists' ? const promise = this.mode == 'albumartists' ?
ApiClient.getAlbumArtists(ApiClient.getCurrentUserId(), query) : ApiClient.getAlbumArtists(ApiClient.getCurrentUserId(), query) :
ApiClient.getArtists(ApiClient.getCurrentUserId(), query); ApiClient.getArtists(ApiClient.getCurrentUserId(), query);
@ -83,7 +79,7 @@ export default function (view, params, tabContent) {
if (userSettings.libraryPageSize() > 0) { if (userSettings.libraryPageSize() > 0) {
query.StartIndex += query.Limit; query.StartIndex += query.Limit;
} }
reloadItems(tabContent); reloadItems();
} }
function onPreviousPageClick() { function onPreviousPageClick() {
@ -94,7 +90,7 @@ export default function (view, params, tabContent) {
if (userSettings.libraryPageSize() > 0) { if (userSettings.libraryPageSize() > 0) {
query.StartIndex = Math.max(0, query.StartIndex - query.Limit); query.StartIndex = Math.max(0, query.StartIndex - query.Limit);
} }
reloadItems(tabContent); reloadItems();
} }
window.scrollTo(0, 0); window.scrollTo(0, 0);
@ -156,7 +152,7 @@ export default function (view, params, tabContent) {
const itemsContainer = tabContent.querySelector('.itemsContainer'); const itemsContainer = tabContent.querySelector('.itemsContainer');
itemsContainer.innerHTML = html; itemsContainer.innerHTML = html;
imageLoader.lazyChildren(itemsContainer); imageLoader.lazyChildren(itemsContainer);
libraryBrowser.saveQueryValues(getSavedQueryKey(page), query); userSettings.saveQuerySettings(getSavedQueryKey(), query);
loading.hide(); loading.hide();
isLoading = false; isLoading = false;
@ -172,20 +168,20 @@ export default function (view, params, tabContent) {
this.showFilterMenu = function () { this.showFilterMenu = function () {
import('../../components/filterdialog/filterdialog').then(({ default: FilterDialog }) => { import('../../components/filterdialog/filterdialog').then(({ default: FilterDialog }) => {
const filterDialog = new FilterDialog({ const filterDialog = new FilterDialog({
query: getQuery(tabContent), query: getQuery(),
mode: this.mode, mode: this.mode,
serverId: ApiClient.serverId() serverId: ApiClient.serverId()
}); });
Events.on(filterDialog, 'filterchange', function () { Events.on(filterDialog, 'filterchange', function () {
getQuery(tabContent).StartIndex = 0; getQuery().StartIndex = 0;
reloadItems(tabContent); reloadItems();
}); });
filterDialog.show(); filterDialog.show();
}); });
}; };
this.getCurrentViewStyle = function () { this.getCurrentViewStyle = function () {
return getPageData(tabContent).view; return getPageData().view;
}; };
const initPage = (tabElement) => { const initPage = (tabElement) => {
@ -194,7 +190,7 @@ export default function (view, params, tabContent) {
alphaPickerElement.addEventListener('alphavaluechanged', function (e) { alphaPickerElement.addEventListener('alphavaluechanged', function (e) {
const newValue = e.detail.value; const newValue = e.detail.value;
const query = getQuery(tabElement); const query = getQuery();
if (newValue === '#') { if (newValue === '#') {
query.NameLessThan = 'A'; query.NameLessThan = 'A';
delete query.NameStartsWith; delete query.NameStartsWith;
@ -203,7 +199,7 @@ export default function (view, params, tabContent) {
delete query.NameLessThan; delete query.NameLessThan;
} }
query.StartIndex = 0; query.StartIndex = 0;
reloadItems(tabElement); reloadItems();
}); });
this.alphaPicker = new AlphaPicker({ this.alphaPicker = new AlphaPicker({
element: alphaPickerElement, element: alphaPickerElement,
@ -223,11 +219,11 @@ export default function (view, params, tabContent) {
}); });
btnSelectView.addEventListener('layoutchange', function (e) { btnSelectView.addEventListener('layoutchange', function (e) {
const viewStyle = e.detail.viewStyle; const viewStyle = e.detail.viewStyle;
getPageData(tabElement).view = viewStyle; getPageData().view = viewStyle;
libraryBrowser.saveViewSetting(getSavedQueryKey(tabElement), viewStyle); userSettings.saveViewSetting(getSavedQueryKey(), viewStyle);
getQuery(tabElement).StartIndex = 0; getQuery().StartIndex = 0;
onViewStyleChange(); onViewStyleChange();
reloadItems(tabElement); reloadItems();
}); });
}; };
@ -235,8 +231,8 @@ export default function (view, params, tabContent) {
onViewStyleChange(); onViewStyleChange();
this.renderTab = () => { this.renderTab = () => {
reloadItems(tabContent); reloadItems();
this.alphaPicker?.updateControls(getQuery(tabContent)); this.alphaPicker?.updateControls(getQuery());
}; };
} }

View file

@ -1,4 +1,4 @@
import libraryBrowser from '../../scripts/libraryBrowser'; import * as userSettings from '../../scripts/settings/userSettings';
import cardBuilder from '../../components/cardbuilder/cardBuilder'; import cardBuilder from '../../components/cardbuilder/cardBuilder';
import imageLoader from '../../components/images/imageLoader'; import imageLoader from '../../components/images/imageLoader';
import loading from '../../components/loading/loading'; import loading from '../../components/loading/loading';
@ -17,10 +17,10 @@ export default function (view, params, tabContent) {
Fields: 'PrimaryImageAspectRatio,ItemCounts', Fields: 'PrimaryImageAspectRatio,ItemCounts',
StartIndex: 0 StartIndex: 0
}, },
view: libraryBrowser.getSavedView(key) || 'Poster' view: userSettings.getSavedView(key) || 'Poster'
}; };
pageData.query.ParentId = params.topParentId; pageData.query.ParentId = params.topParentId;
libraryBrowser.loadSavedQueryValues(key, pageData.query); userSettings.loadQuerySettings(key, pageData.query);
} }
return pageData; return pageData;
@ -31,7 +31,7 @@ export default function (view, params, tabContent) {
} }
function getSavedQueryKey() { function getSavedQueryKey() {
return libraryBrowser.getSavedQueryKey('genres'); return `${params.topParentId}-genres`;
} }
function getPromise() { function getPromise() {
@ -87,7 +87,7 @@ export default function (view, params, tabContent) {
const elem = context.querySelector('#items'); const elem = context.querySelector('#items');
elem.innerHTML = html; elem.innerHTML = html;
imageLoader.lazyChildren(elem); imageLoader.lazyChildren(elem);
libraryBrowser.saveQueryValues(getSavedQueryKey(), query); userSettings.saveQuerySettings(getSavedQueryKey(), query);
loading.hide(); loading.hide();
import('../../components/autoFocuser').then(({ default: autoFocuser }) => { import('../../components/autoFocuser').then(({ default: autoFocuser }) => {
@ -113,7 +113,7 @@ export default function (view, params, tabContent) {
this.setCurrentViewStyle = function (viewStyle) { this.setCurrentViewStyle = function (viewStyle) {
getPageData().view = viewStyle; getPageData().view = viewStyle;
libraryBrowser.saveViewSetting(getSavedQueryKey(), viewStyle); userSettings.saveViewSetting(getSavedQueryKey(), viewStyle);
fullyReload(); fullyReload();
}; };

View file

@ -1,4 +1,4 @@
import libraryBrowser from '../../scripts/libraryBrowser'; import * as userSettings from '../../scripts/settings/userSettings';
import cardBuilder from '../../components/cardbuilder/cardBuilder'; import cardBuilder from '../../components/cardbuilder/cardBuilder';
import imageLoader from '../../components/images/imageLoader'; import imageLoader from '../../components/images/imageLoader';
import loading from '../../components/loading/loading'; import loading from '../../components/loading/loading';
@ -18,10 +18,10 @@ export default function (view, params, tabContent) {
Fields: 'PrimaryImageAspectRatio,SortName,CanDelete', Fields: 'PrimaryImageAspectRatio,SortName,CanDelete',
StartIndex: 0 StartIndex: 0
}, },
view: libraryBrowser.getSavedView(key) || 'Poster' view: userSettings.getSavedView(key) || 'Poster'
}; };
pageData.query.ParentId = params.topParentId; pageData.query.ParentId = params.topParentId;
libraryBrowser.loadSavedQueryValues(key, pageData.query); userSettings.loadQuerySettings(key, pageData.query);
} }
return pageData; return pageData;
@ -32,7 +32,7 @@ export default function (view, params, tabContent) {
} }
function getSavedQueryKey() { function getSavedQueryKey() {
return libraryBrowser.getSavedQueryKey('genres'); return `${params.topParentId}-musicplaylists`;
} }
function getPromise() { function getPromise() {
@ -58,7 +58,7 @@ export default function (view, params, tabContent) {
const elem = context.querySelector('#items'); const elem = context.querySelector('#items');
elem.innerHTML = html; elem.innerHTML = html;
imageLoader.lazyChildren(elem); imageLoader.lazyChildren(elem);
libraryBrowser.saveQueryValues(getSavedQueryKey(), query); userSettings.saveQuerySettings(getSavedQueryKey(), query);
loading.hide(); loading.hide();
import('../../components/autoFocuser').then(({ default: autoFocuser }) => { import('../../components/autoFocuser').then(({ default: autoFocuser }) => {

View file

@ -12,8 +12,8 @@ import Events from '../../utils/events.ts';
import '../../elements/emby-itemscontainer/emby-itemscontainer'; import '../../elements/emby-itemscontainer/emby-itemscontainer';
export default function (view, params, tabContent) { export default function (view, params, tabContent) {
function getPageData(context) { function getPageData() {
const key = getSavedQueryKey(context); const key = getSavedQueryKey();
let pageData = data[key]; let pageData = data[key];
if (!pageData) { if (!pageData) {
@ -35,28 +35,24 @@ export default function (view, params, tabContent) {
} }
pageData.query.ParentId = params.topParentId; pageData.query.ParentId = params.topParentId;
libraryBrowser.loadSavedQueryValues(key, pageData.query); userSettings.loadQuerySettings(key, pageData.query);
} }
return pageData; return pageData;
} }
function getQuery(context) { function getQuery() {
return getPageData(context).query; return getPageData().query;
} }
function getSavedQueryKey(context) { function getSavedQueryKey() {
if (!context.savedQueryKey) { return `${params.topParentId}-songs`;
context.savedQueryKey = libraryBrowser.getSavedQueryKey('songs');
}
return context.savedQueryKey;
} }
function reloadItems(page) { function reloadItems(page) {
loading.show(); loading.show();
isLoading = true; isLoading = true;
const query = getQuery(page); const query = getQuery();
ApiClient.getItems(Dashboard.getCurrentUserId(), query).then(function (result) { ApiClient.getItems(Dashboard.getCurrentUserId(), query).then(function (result) {
function onNextPageClick() { function onNextPageClick() {
if (isLoading) { if (isLoading) {
@ -117,7 +113,7 @@ export default function (view, params, tabContent) {
const itemsContainer = tabContent.querySelector('.itemsContainer'); const itemsContainer = tabContent.querySelector('.itemsContainer');
itemsContainer.innerHTML = html; itemsContainer.innerHTML = html;
imageLoader.lazyChildren(itemsContainer); imageLoader.lazyChildren(itemsContainer);
libraryBrowser.saveQueryValues(getSavedQueryKey(page), query); userSettings.saveQuerySettings(getSavedQueryKey(), query);
tabContent.querySelector('.btnShuffle').classList.toggle('hide', result.TotalRecordCount < 1); tabContent.querySelector('.btnShuffle').classList.toggle('hide', result.TotalRecordCount < 1);
@ -137,13 +133,13 @@ export default function (view, params, tabContent) {
self.showFilterMenu = function () { self.showFilterMenu = function () {
import('../../components/filterdialog/filterdialog').then(({ default: FilterDialog }) => { import('../../components/filterdialog/filterdialog').then(({ default: FilterDialog }) => {
const filterDialog = new FilterDialog({ const filterDialog = new FilterDialog({
query: getQuery(tabContent), query: getQuery(),
mode: 'songs', mode: 'songs',
serverId: ApiClient.serverId() serverId: ApiClient.serverId()
}); });
Events.on(filterDialog, 'filterchange', function () { Events.on(filterDialog, 'filterchange', function () {
getQuery(tabContent).StartIndex = 0; getQuery().StartIndex = 0;
reloadItems(tabContent); reloadItems();
}); });
filterDialog.show(); filterDialog.show();
}); });
@ -156,7 +152,7 @@ export default function (view, params, tabContent) {
} }
self.getCurrentViewStyle = function () { self.getCurrentViewStyle = function () {
return getPageData(tabContent).view; return getPageData().view;
}; };
function initPage(tabElement) { function initPage(tabElement) {
@ -197,10 +193,10 @@ export default function (view, params, tabContent) {
id: 'Random,SortName' id: 'Random,SortName'
}], }],
callback: function () { callback: function () {
getQuery(tabElement).StartIndex = 0; getQuery().StartIndex = 0;
reloadItems(tabElement); reloadItems();
}, },
query: getQuery(tabElement), query: getQuery(),
button: e.target button: e.target
}); });
}); });

View file

@ -11,8 +11,8 @@ import Events from '../../utils/events.ts';
import '../../elements/emby-itemscontainer/emby-itemscontainer'; import '../../elements/emby-itemscontainer/emby-itemscontainer';
export default function (view, params, tabContent) { export default function (view, params, tabContent) {
function getPageData(context) { function getPageData() {
const key = getSavedQueryKey(context); const key = getSavedQueryKey();
let pageData = data[key]; let pageData = data[key];
if (!pageData) { if (!pageData) {
@ -28,7 +28,7 @@ export default function (view, params, tabContent) {
EnableImageTypes: 'Primary,Backdrop,Thumb', EnableImageTypes: 'Primary,Backdrop,Thumb',
StartIndex: 0 StartIndex: 0
}, },
view: libraryBrowser.getSavedView(key) || 'Poster' view: userSettings.getSavedView(key) || 'Poster'
}; };
if (userSettings.libraryPageSize() > 0) { if (userSettings.libraryPageSize() > 0) {
@ -36,22 +36,18 @@ export default function (view, params, tabContent) {
} }
pageData.query.ParentId = params.topParentId; pageData.query.ParentId = params.topParentId;
libraryBrowser.loadSavedQueryValues(key, pageData.query); userSettings.loadQuerySettings(key, pageData.query);
} }
return pageData; return pageData;
} }
function getQuery(context) { function getQuery() {
return getPageData(context).query; return getPageData().query;
} }
function getSavedQueryKey(context) { function getSavedQueryKey() {
if (!context.savedQueryKey) { return `${params.topParentId}-episodes`;
context.savedQueryKey = libraryBrowser.getSavedQueryKey('episodes');
}
return context.savedQueryKey;
} }
function onViewStyleChange() { function onViewStyleChange() {
@ -72,7 +68,7 @@ export default function (view, params, tabContent) {
function reloadItems(page) { function reloadItems(page) {
loading.show(); loading.show();
isLoading = true; isLoading = true;
const query = getQuery(page); const query = getQuery();
ApiClient.getItems(Dashboard.getCurrentUserId(), query).then(function (result) { ApiClient.getItems(Dashboard.getCurrentUserId(), query).then(function (result) {
function onNextPageClick() { function onNextPageClick() {
if (isLoading) { if (isLoading) {
@ -156,7 +152,7 @@ export default function (view, params, tabContent) {
itemsContainer.innerHTML = html; itemsContainer.innerHTML = html;
imageLoader.lazyChildren(itemsContainer); imageLoader.lazyChildren(itemsContainer);
libraryBrowser.saveQueryValues(getSavedQueryKey(page), query); userSettings.saveQuerySettings(getSavedQueryKey(), query);
loading.hide(); loading.hide();
isLoading = false; isLoading = false;
@ -173,7 +169,7 @@ export default function (view, params, tabContent) {
self.showFilterMenu = function () { self.showFilterMenu = function () {
import('../../components/filterdialog/filterdialog').then(({ default: FilterDialog }) => { import('../../components/filterdialog/filterdialog').then(({ default: FilterDialog }) => {
const filterDialog = new FilterDialog({ const filterDialog = new FilterDialog({
query: getQuery(tabContent), query: getQuery(),
mode: 'episodes', mode: 'episodes',
serverId: ApiClient.serverId() serverId: ApiClient.serverId()
}); });
@ -185,7 +181,7 @@ export default function (view, params, tabContent) {
}; };
self.getCurrentViewStyle = function () { self.getCurrentViewStyle = function () {
return getPageData(tabContent).view; return getPageData().view;
}; };
function initPage(tabElement) { function initPage(tabElement) {
@ -222,7 +218,7 @@ export default function (view, params, tabContent) {
callback: function () { callback: function () {
reloadItems(tabElement); reloadItems(tabElement);
}, },
query: getQuery(tabElement), query: getQuery(),
button: e.target button: e.target
}); });
}); });
@ -232,8 +228,8 @@ export default function (view, params, tabContent) {
}); });
btnSelectView.addEventListener('layoutchange', function (e) { btnSelectView.addEventListener('layoutchange', function (e) {
const viewStyle = e.detail.viewStyle; const viewStyle = e.detail.viewStyle;
getPageData(tabElement).view = viewStyle; getPageData().view = viewStyle;
libraryBrowser.saveViewSetting(getSavedQueryKey(tabElement), viewStyle); userSettings.saveViewSetting(getSavedQueryKey(), viewStyle);
onViewStyleChange(); onViewStyleChange();
reloadItems(tabElement); reloadItems(tabElement);
}); });

View file

@ -1,7 +1,7 @@
import escapeHtml from 'escape-html'; import escapeHtml from 'escape-html';
import layoutManager from '../../components/layoutManager'; import layoutManager from '../../components/layoutManager';
import loading from '../../components/loading/loading'; import loading from '../../components/loading/loading';
import libraryBrowser from '../../scripts/libraryBrowser'; import * as userSettings from '../../scripts/settings/userSettings';
import cardBuilder from '../../components/cardbuilder/cardBuilder'; import cardBuilder from '../../components/cardbuilder/cardBuilder';
import lazyLoader from '../../components/lazyLoader/lazyLoaderIntersectionObserver'; import lazyLoader from '../../components/lazyLoader/lazyLoaderIntersectionObserver';
import globalize from '../../scripts/globalize'; import globalize from '../../scripts/globalize';
@ -25,7 +25,7 @@ export default function (view, params, tabContent) {
view: 'Poster' view: 'Poster'
}; };
pageData.query.ParentId = params.topParentId; pageData.query.ParentId = params.topParentId;
libraryBrowser.loadSavedQueryValues(key, pageData.query); userSettings.loadQuerySettings(key, pageData.query);
} }
return pageData; return pageData;
@ -36,7 +36,7 @@ export default function (view, params, tabContent) {
} }
function getSavedQueryKey() { function getSavedQueryKey() {
return libraryBrowser.getSavedQueryKey('seriesgenres'); return `${params.topParentId}-seriesgenres`;
} }
function getPromise() { function getPromise() {
@ -176,7 +176,7 @@ export default function (view, params, tabContent) {
elem.innerHTML = html; elem.innerHTML = html;
lazyLoader.lazyChildren(elem, fillItemsContainer); lazyLoader.lazyChildren(elem, fillItemsContainer);
libraryBrowser.saveQueryValues(getSavedQueryKey(), query); userSettings.saveQuerySettings(getSavedQueryKey(), query);
loading.hide(); loading.hide();
}); });
} }
@ -199,7 +199,7 @@ export default function (view, params, tabContent) {
self.setCurrentViewStyle = function (viewStyle) { self.setCurrentViewStyle = function (viewStyle) {
getPageData().view = viewStyle; getPageData().view = viewStyle;
libraryBrowser.saveViewSetting(getSavedQueryKey(), viewStyle); userSettings.saveViewSetting(getSavedQueryKey(), viewStyle);
fullyReload(); fullyReload();
}; };

View file

@ -11,8 +11,8 @@ import Events from '../../utils/events.ts';
import '../../elements/emby-itemscontainer/emby-itemscontainer'; import '../../elements/emby-itemscontainer/emby-itemscontainer';
export default function (view, params, tabContent) { export default function (view, params, tabContent) {
function getPageData(context) { function getPageData() {
const key = getSavedQueryKey(context); const key = getSavedQueryKey();
let pageData = data[key]; let pageData = data[key];
if (!pageData) { if (!pageData) {
@ -27,7 +27,7 @@ export default function (view, params, tabContent) {
EnableImageTypes: 'Primary,Backdrop,Banner,Thumb', EnableImageTypes: 'Primary,Backdrop,Banner,Thumb',
StartIndex: 0 StartIndex: 0
}, },
view: libraryBrowser.getSavedView(key) || 'Poster' view: userSettings.getSavedView(key) || 'Poster'
}; };
if (userSettings.libraryPageSize() > 0) { if (userSettings.libraryPageSize() > 0) {
@ -35,22 +35,18 @@ export default function (view, params, tabContent) {
} }
pageData.query.ParentId = params.topParentId; pageData.query.ParentId = params.topParentId;
libraryBrowser.loadSavedQueryValues(key, pageData.query); userSettings.loadQuerySettings(key, pageData.query);
} }
return pageData; return pageData;
} }
function getQuery(context) { function getQuery() {
return getPageData(context).query; return getPageData().query;
} }
function getSavedQueryKey(context) { function getSavedQueryKey() {
if (!context.savedQueryKey) { return `${params.topParentId}-series`;
context.savedQueryKey = libraryBrowser.getSavedQueryKey('series');
}
return context.savedQueryKey;
} }
const onViewStyleChange = () => { const onViewStyleChange = () => {
@ -71,7 +67,7 @@ export default function (view, params, tabContent) {
const reloadItems = (page) => { const reloadItems = (page) => {
loading.show(); loading.show();
isLoading = true; isLoading = true;
const query = getQuery(page); const query = getQuery();
ApiClient.getItems(ApiClient.getCurrentUserId(), query).then((result) => { ApiClient.getItems(ApiClient.getCurrentUserId(), query).then((result) => {
function onNextPageClick() { function onNextPageClick() {
if (isLoading) { if (isLoading) {
@ -185,7 +181,7 @@ export default function (view, params, tabContent) {
const itemsContainer = tabContent.querySelector('.itemsContainer'); const itemsContainer = tabContent.querySelector('.itemsContainer');
itemsContainer.innerHTML = html; itemsContainer.innerHTML = html;
imageLoader.lazyChildren(itemsContainer); imageLoader.lazyChildren(itemsContainer);
libraryBrowser.saveQueryValues(getSavedQueryKey(page), query); userSettings.saveQuerySettings(getSavedQueryKey(), query);
loading.hide(); loading.hide();
isLoading = false; isLoading = false;
@ -201,12 +197,12 @@ export default function (view, params, tabContent) {
this.showFilterMenu = function () { this.showFilterMenu = function () {
import('../../components/filterdialog/filterdialog').then(({ default: FilterDialog }) => { import('../../components/filterdialog/filterdialog').then(({ default: FilterDialog }) => {
const filterDialog = new FilterDialog({ const filterDialog = new FilterDialog({
query: getQuery(tabContent), query: getQuery(),
mode: 'series', mode: 'series',
serverId: ApiClient.serverId() serverId: ApiClient.serverId()
}); });
Events.on(filterDialog, 'filterchange', function () { Events.on(filterDialog, 'filterchange', function () {
getQuery(tabContent).StartIndex = 0; getQuery().StartIndex = 0;
reloadItems(tabContent); reloadItems(tabContent);
}); });
filterDialog.show(); filterDialog.show();
@ -214,7 +210,7 @@ export default function (view, params, tabContent) {
}; };
this.getCurrentViewStyle = function () { this.getCurrentViewStyle = function () {
return getPageData(tabContent).view; return getPageData().view;
}; };
const initPage = (tabElement) => { const initPage = (tabElement) => {
@ -223,7 +219,7 @@ export default function (view, params, tabContent) {
alphaPickerElement.addEventListener('alphavaluechanged', function (e) { alphaPickerElement.addEventListener('alphavaluechanged', function (e) {
const newValue = e.detail.value; const newValue = e.detail.value;
const query = getQuery(tabElement); const query = getQuery();
if (newValue === '#') { if (newValue === '#') {
query.NameLessThan = 'A'; query.NameLessThan = 'A';
delete query.NameStartsWith; delete query.NameStartsWith;
@ -274,10 +270,10 @@ export default function (view, params, tabContent) {
id: 'PremiereDate,SortName' id: 'PremiereDate,SortName'
}], }],
callback: function () { callback: function () {
getQuery(tabElement).StartIndex = 0; getQuery().StartIndex = 0;
reloadItems(tabElement); reloadItems(tabElement);
}, },
query: getQuery(tabElement), query: getQuery(),
button: e.target button: e.target
}); });
}); });
@ -287,9 +283,9 @@ export default function (view, params, tabContent) {
}); });
btnSelectView.addEventListener('layoutchange', function (e) { btnSelectView.addEventListener('layoutchange', function (e) {
const viewStyle = e.detail.viewStyle; const viewStyle = e.detail.viewStyle;
getPageData(tabElement).view = viewStyle; getPageData().view = viewStyle;
libraryBrowser.saveViewSetting(getSavedQueryKey(tabElement), viewStyle); userSettings.saveViewSetting(getSavedQueryKey(), viewStyle);
getQuery(tabElement).StartIndex = 0; getQuery().StartIndex = 0;
onViewStyleChange(); onViewStyleChange();
reloadItems(tabElement); reloadItems(tabElement);
}); });
@ -300,7 +296,7 @@ export default function (view, params, tabContent) {
this.renderTab = () => { this.renderTab = () => {
reloadItems(tabContent); reloadItems(tabContent);
this.alphaPicker?.updateControls(getQuery(tabContent)); this.alphaPicker?.updateControls(getQuery());
}; };
} }

View file

@ -1,9 +1,8 @@
import loading from '../../components/loading/loading'; import loading from '../../components/loading/loading';
import libraryBrowser from '../../scripts/libraryBrowser';
import cardBuilder from '../../components/cardbuilder/cardBuilder'; import cardBuilder from '../../components/cardbuilder/cardBuilder';
function getQuery(params) { function getQuery(params) {
const key = getSavedQueryKey(); const key = getSavedQueryKey(params);
let pageData = data[key]; let pageData = data[key];
if (!pageData) { if (!pageData) {
@ -23,8 +22,8 @@ function getQuery(params) {
return pageData.query; return pageData.query;
} }
function getSavedQueryKey() { function getSavedQueryKey(params) {
return libraryBrowser.getSavedQueryKey('studios'); return `${params.topParentId}-studios`;
} }
function getPromise(context, params) { function getPromise(context, params) {

View file

@ -1,6 +1,7 @@
import ServerConnections from '../../components/ServerConnections'; import ServerConnections from '../../components/ServerConnections';
import { PluginType } from '../../types/plugin.ts'; import { PluginType } from '../../types/plugin.ts';
import * as userSettings from '../../scripts/settings/userSettings';
class BackdropScreensaver { class BackdropScreensaver {
constructor() { constructor() {
@ -29,7 +30,10 @@ class BackdropScreensaver {
const newSlideShow = new Slideshow({ const newSlideShow = new Slideshow({
showTitle: true, showTitle: true,
cover: true, cover: true,
items: result.Items items: result.Items,
autoplay: {
delay: userSettings.backdropScreensaverInterval() * 1000
}
}); });
newSlideShow.show(); newSlideShow.show();

View file

@ -379,6 +379,10 @@ class HtmlAudioPlayer {
return getDefaultProfile(); return getDefaultProfile();
} }
toggleAirPlay() {
return this.setAirPlayEnabled(!this.isAirPlayEnabled());
}
// Save this for when playback stops, because querying the time at that point might return 0 // Save this for when playback stops, because querying the time at that point might return 0
currentTime(val) { currentTime(val) {
const mediaElement = this._mediaElement; const mediaElement = this._mediaElement;
@ -520,6 +524,33 @@ class HtmlAudioPlayer {
return false; return false;
} }
isAirPlayEnabled() {
if (document.AirPlayEnabled) {
return !!document.AirplayElement;
}
return false;
}
setAirPlayEnabled(isEnabled) {
const mediaElement = this._mediaElement;
if (mediaElement) {
if (document.AirPlayEnabled) {
if (isEnabled) {
mediaElement.requestAirPlay().catch(function(err) {
console.error('Error requesting AirPlay', err);
});
} else {
document.exitAirPLay().catch(function(err) {
console.error('Error exiting AirPlay', err);
});
}
} else {
mediaElement.webkitShowPlaybackTargetPicker();
}
}
}
supports(feature) { supports(feature) {
if (!supportedFeatures) { if (!supportedFeatures) {
supportedFeatures = getSupportedFeatures(); supportedFeatures = getSupportedFeatures();
@ -539,6 +570,10 @@ function getSupportedFeatures() {
list.push('PlaybackRate'); list.push('PlaybackRate');
} }
if (browser.safari) {
list.push('AirPlay');
}
return list; return list;
} }

View file

@ -1,43 +1,5 @@
import * as userSettings from './settings/userSettings';
import globalize from './globalize'; import globalize from './globalize';
export function getSavedQueryKey(modifier) {
return window.location.href.split('#')[0] + (modifier || '');
}
export function loadSavedQueryValues(key, query) {
let values = userSettings.get(key);
if (values) {
values = JSON.parse(values);
return Object.assign(query, values);
}
return query;
}
export function saveQueryValues(key, query) {
const values = {};
if (query.SortBy) {
values.SortBy = query.SortBy;
}
if (query.SortOrder) {
values.SortOrder = query.SortOrder;
}
userSettings.set(key, JSON.stringify(values));
}
export function saveViewSetting (key, value) {
userSettings.set(key + '-_view', value);
}
export function getSavedView (key) {
return userSettings.get(key + '-_view');
}
export function showLayoutMenu (button, currentLayout, views) { export function showLayoutMenu (button, currentLayout, views) {
let dispatchEvent = true; let dispatchEvent = true;
@ -204,11 +166,6 @@ export function showSortMenu (options) {
} }
const libraryBrowser = { const libraryBrowser = {
getSavedQueryKey,
loadSavedQueryValues,
saveQueryValues,
saveViewSetting,
getSavedView,
showLayoutMenu, showLayoutMenu,
getQueryPagingHtml, getQueryPagingHtml,
showSortMenu showSortMenu

View file

@ -9,8 +9,8 @@ import '../elements/emby-itemscontainer/emby-itemscontainer';
import Dashboard from '../utils/dashboard'; import Dashboard from '../utils/dashboard';
export default function (view) { export default function (view) {
function getPageData(context) { function getPageData() {
const key = getSavedQueryKey(context); const key = getSavedQueryKey();
let pageData = data[key]; let pageData = data[key];
if (!pageData) { if (!pageData) {
@ -23,7 +23,7 @@ export default function (view) {
Fields: 'PrimaryImageAspectRatio,SortName,CumulativeRunTimeTicks,CanDelete', Fields: 'PrimaryImageAspectRatio,SortName,CumulativeRunTimeTicks,CanDelete',
StartIndex: 0 StartIndex: 0
}, },
view: libraryBrowser.getSavedView(key) || 'Poster' view: userSettings.getSavedView(key) || 'Poster'
}; };
if (userSettings.libraryPageSize() > 0) { if (userSettings.libraryPageSize() > 0) {
@ -31,22 +31,18 @@ export default function (view) {
} }
pageData.query.ParentId = libraryMenu.getTopParentId(); pageData.query.ParentId = libraryMenu.getTopParentId();
libraryBrowser.loadSavedQueryValues(key, pageData.query); userSettings.loadQuerySettings(key, pageData.query);
} }
return pageData; return pageData;
} }
function getQuery(context) { function getQuery() {
return getPageData(context).query; return getPageData().query;
} }
function getSavedQueryKey(context) { function getSavedQueryKey() {
if (!context.savedQueryKey) { return `${libraryMenu.getTopParentId()}-playlists`;
context.savedQueryKey = libraryBrowser.getSavedQueryKey();
}
return context.savedQueryKey;
} }
function showLoadingMessage() { function showLoadingMessage() {
@ -58,7 +54,7 @@ export default function (view) {
} }
function onViewStyleChange() { function onViewStyleChange() {
const viewStyle = getPageData(view).view; const viewStyle = getPageData().view;
const itemsContainer = view.querySelector('.itemsContainer'); const itemsContainer = view.querySelector('.itemsContainer');
if (viewStyle == 'List') { if (viewStyle == 'List') {
@ -74,7 +70,7 @@ export default function (view) {
function reloadItems() { function reloadItems() {
showLoadingMessage(); showLoadingMessage();
const query = getQuery(view); const query = getQuery();
const promise1 = ApiClient.getItems(Dashboard.getCurrentUserId(), query); const promise1 = ApiClient.getItems(Dashboard.getCurrentUserId(), query);
// TODO: promise2 is unused, check if necessary. // TODO: promise2 is unused, check if necessary.
const promise2 = Dashboard.getCurrentUser(); const promise2 = Dashboard.getCurrentUser();
@ -83,7 +79,7 @@ export default function (view) {
// TODO: Is the scroll necessary? // TODO: Is the scroll necessary?
window.scrollTo(0, 0); window.scrollTo(0, 0);
let html = ''; let html = '';
const viewStyle = getPageData(view).view; const viewStyle = getPageData().view;
view.querySelector('.listTopPaging').innerHTML = libraryBrowser.getQueryPagingHtml({ view.querySelector('.listTopPaging').innerHTML = libraryBrowser.getQueryPagingHtml({
startIndex: query.StartIndex, startIndex: query.StartIndex,
limit: query.Limit, limit: query.Limit,
@ -172,14 +168,14 @@ export default function (view) {
if (btnChangeLayout) { if (btnChangeLayout) {
btnChangeLayout.addEventListener('layoutchange', function (e) { btnChangeLayout.addEventListener('layoutchange', function (e) {
const layout = e.detail.viewStyle; const layout = e.detail.viewStyle;
getPageData(view).view = layout; getPageData().view = layout;
libraryBrowser.saveViewSetting(getSavedQueryKey(view), layout); userSettings.saveViewSetting(getSavedQueryKey(), layout);
onViewStyleChange(); onViewStyleChange();
reloadItems(); reloadItems();
}); });
} }
libraryBrowser.saveQueryValues(getSavedQueryKey(view), query); userSettings.saveQuerySettings(getSavedQueryKey(), query);
hideLoadingMessage(); hideLoadingMessage();
}); });
} }

View file

@ -429,6 +429,19 @@ export class UserSettings {
return this.get('screensaver', false); return this.get('screensaver', false);
} }
/**
* Get or set the interval between backdrops when using the backdrop screensaver.
* @param {number|undefined} val - The interval between backdrops in seconds.
* @return {number} The interval between backdrops in seconds.
*/
backdropScreensaverInterval(val) {
if (val !== undefined) {
return this.set('backdropScreensaverInterval', val.toString(), false);
}
return parseInt(this.get('backdropScreensaverInterval', false), 10) || 5;
}
/** /**
* Get or set library page size. * Get or set library page size.
* @param {number|undefined} val - Library page size. * @param {number|undefined} val - Library page size.
@ -436,7 +449,7 @@ export class UserSettings {
*/ */
libraryPageSize(val) { libraryPageSize(val) {
if (val !== undefined) { if (val !== undefined) {
return this.set('libraryPageSize', parseInt(val, 10), false); return this.set('libraryPageSize', val.toString(), false);
} }
const libraryPageSize = parseInt(this.get('libraryPageSize', false), 10); const libraryPageSize = parseInt(this.get('libraryPageSize', false), 10);
@ -455,7 +468,7 @@ export class UserSettings {
*/ */
maxDaysForNextUp(val) { maxDaysForNextUp(val) {
if (val !== undefined) { if (val !== undefined) {
return this.set('maxDaysForNextUp', parseInt(val, 10), false); return this.set('maxDaysForNextUp', val.toString(), false);
} }
const maxDaysForNextUp = parseInt(this.get('maxDaysForNextUp', false), 10); const maxDaysForNextUp = parseInt(this.get('maxDaysForNextUp', false), 10);
@ -474,7 +487,7 @@ export class UserSettings {
*/ */
enableRewatchingInNextUp(val) { enableRewatchingInNextUp(val) {
if (val !== undefined) { if (val !== undefined) {
return this.set('enableRewatchingInNextUp', val, false); return this.set('enableRewatchingInNextUp', val.toString(), false);
} }
return toBoolean(this.get('enableRewatchingInNextUp', false), false); return toBoolean(this.get('enableRewatchingInNextUp', false), false);
@ -533,6 +546,24 @@ export class UserSettings {
return this.set(key, JSON.stringify(values)); return this.set(key, JSON.stringify(values));
} }
/**
* Get view layout setting.
* @param {string} key - View Setting key.
* @return {string} View Setting value.
*/
getSavedView(key) {
return this.get(key + '-_view');
}
/**
* Set view layout setting.
* @param {string} key - View Setting key.
* @param {string} value - View Setting value.
*/
saveViewSetting(key, value) {
return this.set(key + '-_view', value);
}
/** /**
* Get subtitle appearance settings. * Get subtitle appearance settings.
* @param {string|undefined} key - Settings key. * @param {string|undefined} key - Settings key.
@ -624,6 +655,7 @@ export const dashboardTheme = currentSettings.dashboardTheme.bind(currentSetting
export const skin = currentSettings.skin.bind(currentSettings); export const skin = currentSettings.skin.bind(currentSettings);
export const theme = currentSettings.theme.bind(currentSettings); export const theme = currentSettings.theme.bind(currentSettings);
export const screensaver = currentSettings.screensaver.bind(currentSettings); export const screensaver = currentSettings.screensaver.bind(currentSettings);
export const backdropScreensaverInterval = currentSettings.backdropScreensaverInterval.bind(currentSettings);
export const libraryPageSize = currentSettings.libraryPageSize.bind(currentSettings); export const libraryPageSize = currentSettings.libraryPageSize.bind(currentSettings);
export const maxDaysForNextUp = currentSettings.maxDaysForNextUp.bind(currentSettings); export const maxDaysForNextUp = currentSettings.maxDaysForNextUp.bind(currentSettings);
export const enableRewatchingInNextUp = currentSettings.enableRewatchingInNextUp.bind(currentSettings); export const enableRewatchingInNextUp = currentSettings.enableRewatchingInNextUp.bind(currentSettings);
@ -638,3 +670,5 @@ export const setFilter = currentSettings.setFilter.bind(currentSettings);
export const getFilter = currentSettings.getFilter.bind(currentSettings); export const getFilter = currentSettings.getFilter.bind(currentSettings);
export const customCss = currentSettings.customCss.bind(currentSettings); export const customCss = currentSettings.customCss.bind(currentSettings);
export const disableCustomCss = currentSettings.disableCustomCss.bind(currentSettings); export const disableCustomCss = currentSettings.disableCustomCss.bind(currentSettings);
export const getSavedView = currentSettings.getSavedView.bind(currentSettings);
export const saveViewSetting = currentSettings.saveViewSetting.bind(currentSettings);

View file

@ -40,7 +40,7 @@
"ButtonRemove": "إزالة", "ButtonRemove": "إزالة",
"ButtonRename": "إعادة التسمية", "ButtonRename": "إعادة التسمية",
"ButtonResetEasyPassword": "إعادة تهيئة الرمز الشخصي البسيط", "ButtonResetEasyPassword": "إعادة تهيئة الرمز الشخصي البسيط",
"ButtonResume": "مواصلة", "ButtonResume": "استئناف المشاهدة",
"ButtonRevoke": "أرفض", "ButtonRevoke": "أرفض",
"ButtonSelectDirectory": "إختر المجلد", "ButtonSelectDirectory": "إختر المجلد",
"ButtonSelectView": "إختر طريقة عرض", "ButtonSelectView": "إختر طريقة عرض",
@ -104,7 +104,7 @@
"HeaderAdmin": "الادارة", "HeaderAdmin": "الادارة",
"HeaderAlert": "تنبيه", "HeaderAlert": "تنبيه",
"HeaderAllowMediaDeletionFrom": "السماح بحذف الوسائط من قبل", "HeaderAllowMediaDeletionFrom": "السماح بحذف الوسائط من قبل",
"HeaderApiKey": "مفتاح API", "HeaderApiKey": "مفتاح الـ API",
"HeaderApiKeys": "مفاتيح API", "HeaderApiKeys": "مفاتيح API",
"HeaderApiKeysHelp": "التطبيقات الخارجية تحتاج أن تمتلك مفتاح API لكي تتصل بالخادم. هذه المفاتيح تُصدر عن طريق تسجيل الدخول بمستخدم عادي، أو عن طريق منح التطبيق مفتاحاً أصدر يدوياً.", "HeaderApiKeysHelp": "التطبيقات الخارجية تحتاج أن تمتلك مفتاح API لكي تتصل بالخادم. هذه المفاتيح تُصدر عن طريق تسجيل الدخول بمستخدم عادي، أو عن طريق منح التطبيق مفتاحاً أصدر يدوياً.",
"HeaderApp": "التطبيق", "HeaderApp": "التطبيق",
@ -121,7 +121,7 @@
"HeaderConnectionFailure": "فشل في الاتصال", "HeaderConnectionFailure": "فشل في الاتصال",
"HeaderContainerProfile": "عريضة الحاوية", "HeaderContainerProfile": "عريضة الحاوية",
"HeaderContainerProfileHelp": "تشير ملفات تعريف الحاوية إلى قيود الجهاز عند تشغيل تنسيقات معينة. إذا تم تطبيق قيود ، فسيتم تحويل ترميز الوسائط ، حتى إذا تم تكوين التنسيق للتشغيل المباشر.", "HeaderContainerProfileHelp": "تشير ملفات تعريف الحاوية إلى قيود الجهاز عند تشغيل تنسيقات معينة. إذا تم تطبيق قيود ، فسيتم تحويل ترميز الوسائط ، حتى إذا تم تكوين التنسيق للتشغيل المباشر.",
"HeaderContinueWatching": "أستئناف المشاهدة", "HeaderContinueWatching": "استئناف المشاهدة",
"HeaderCustomDlnaProfiles": "الحسابات المخصوصة", "HeaderCustomDlnaProfiles": "الحسابات المخصوصة",
"HeaderDateIssued": "تاريخ الإصدار", "HeaderDateIssued": "تاريخ الإصدار",
"HeaderDefaultRecordingSettings": "إعدادات التسجيل الافتراضية", "HeaderDefaultRecordingSettings": "إعدادات التسجيل الافتراضية",
@ -312,8 +312,8 @@
"LabelGroupMoviesIntoCollectionsHelp": "سيتم عرض الأفلام في المجموعة كعنصر مجمع عند عرض قوائم الأفلام.", "LabelGroupMoviesIntoCollectionsHelp": "سيتم عرض الأفلام في المجموعة كعنصر مجمع عند عرض قوائم الأفلام.",
"LabelH264Crf": "قيمة CRF لتشفير H264", "LabelH264Crf": "قيمة CRF لتشفير H264",
"LabelEncoderPreset": "إعداد التشفير", "LabelEncoderPreset": "إعداد التشفير",
"LabelHardwareAccelerationType": "التسريع بعتاد الحاسب", "LabelHardwareAccelerationType": "استخدام كرت الشاشة",
"LabelHardwareAccelerationTypeHelp": "التسريع بعتاد الحاسب يتطلب اعدادات اضافية.", "LabelHardwareAccelerationTypeHelp": "يتطلب استخدام كرت الشاشة إلى إعدادات إضافية.",
"LabelHttpsPort": "رقم منفذ HTTPS المحلي", "LabelHttpsPort": "رقم منفذ HTTPS المحلي",
"LabelHttpsPortHelp": "رقم منفذ TCP للخادم ببروتوكول HTTPS.", "LabelHttpsPortHelp": "رقم منفذ TCP للخادم ببروتوكول HTTPS.",
"LabelIconMaxHeight": "الارتفاع الأقصى للأيقونة", "LabelIconMaxHeight": "الارتفاع الأقصى للأيقونة",
@ -469,7 +469,7 @@
"LabelZipCode": "الرمز البريدي", "LabelZipCode": "الرمز البريدي",
"LabelffmpegPath": "مسار ffmpeg", "LabelffmpegPath": "مسار ffmpeg",
"LabelffmpegPathHelp": "المسار الدال على ملف تطبيق ffmpeg أو المجلد الذي يحتوي ffmpeg.", "LabelffmpegPathHelp": "المسار الدال على ملف تطبيق ffmpeg أو المجلد الذي يحتوي ffmpeg.",
"LatestFromLibrary": "أخر ما أضيف في {0}", "LatestFromLibrary": "آخر ما أضيف في {0}",
"LibraryAccessHelp": "حدد المكتبات لمشاركتها مع هذا المستخدم. سيتمكن المسؤولون من تحرير جميع المجلدات باستخدام مدير البيانات الوصفية.", "LibraryAccessHelp": "حدد المكتبات لمشاركتها مع هذا المستخدم. سيتمكن المسؤولون من تحرير جميع المجلدات باستخدام مدير البيانات الوصفية.",
"MapChannels": "توفيق القنوات", "MapChannels": "توفيق القنوات",
"MaxParentalRatingHelp": "المحتويات ذات التصنيف الأبوي الأعلى ستخفى عن هذا المستخدم.", "MaxParentalRatingHelp": "المحتويات ذات التصنيف الأبوي الأعلى ستخفى عن هذا المستخدم.",
@ -690,7 +690,7 @@
"Thursday": "الخميس", "Thursday": "الخميس",
"TitleHardwareAcceleration": "تسريع بعتاد الحاسوب", "TitleHardwareAcceleration": "تسريع بعتاد الحاسوب",
"TitleHostingSettings": "إعدادات الاستضافة", "TitleHostingSettings": "إعدادات الاستضافة",
"TitlePlayback": "تشغيل", "TitlePlayback": "التشغيل",
"Tuesday": "الثلاثاء", "Tuesday": "الثلاثاء",
"UninstallPluginConfirmation": "هل انت متاكد انك تريد إزالة تثبيت {0}؟", "UninstallPluginConfirmation": "هل انت متاكد انك تريد إزالة تثبيت {0}؟",
"HeaderUninstallPlugin": "الغاء الملحق", "HeaderUninstallPlugin": "الغاء الملحق",
@ -803,7 +803,7 @@
"ConfirmDeleteItems": "حذف هذه العناصر سوف يحذفها من نظام الملفات ومن مكتبة الوسائط. هل ترغب حقاً فى الاستمرار؟", "ConfirmDeleteItems": "حذف هذه العناصر سوف يحذفها من نظام الملفات ومن مكتبة الوسائط. هل ترغب حقاً فى الاستمرار؟",
"EveryNDays": "كل {0} يوم", "EveryNDays": "كل {0} يوم",
"ConfirmDeleteItem": "حذف هذا العنصر سوف يحذفه من نظام الملفات ومن مكتبة الوسائط. هل ترغب حقاً فى الاستمرار؟", "ConfirmDeleteItem": "حذف هذا العنصر سوف يحذفه من نظام الملفات ومن مكتبة الوسائط. هل ترغب حقاً فى الاستمرار؟",
"DropShadow": "ظل خلفي‏", "DropShadow": "إضافة ظل خلفي‏",
"LabelDropShadow": "اسقاط الظل", "LabelDropShadow": "اسقاط الظل",
"EditSubtitles": "تعديل الترجمات", "EditSubtitles": "تعديل الترجمات",
"EditMetadata": "تعديل البيانات التعريفية", "EditMetadata": "تعديل البيانات التعريفية",
@ -864,8 +864,8 @@
"Disc": "القرص", "Disc": "القرص",
"Directors": "المخرجون", "Directors": "المخرجون",
"Director": "المخرج", "Director": "المخرج",
"DirectPlaying": "البث المباشر", "DirectPlaying": "بث مباشر",
"DirectStreaming": "البث المباشر", "DirectStreaming": "بث مباشر مع تحويل الحاوية",
"DirectStreamHelp2": "استهلاك الطاقة عن طريق البث المباشر عادةً يعتمد على ملف الصوت . فقط بث الفديو لن يشهد أي تغيير في الجودة.", "DirectStreamHelp2": "استهلاك الطاقة عن طريق البث المباشر عادةً يعتمد على ملف الصوت . فقط بث الفديو لن يشهد أي تغيير في الجودة.",
"DirectStreamHelp1": "يَدعم جهازك تشغيل هذا النوع من المقاطع المرئية، ولكن إما ١. جهازك لا يدعم تشغيل إحدى المقاطع الصوتية التالية: (DTS، Dolby، TrueHD، إلخ)، أو، ٢. جهازك لا يدعم تشغيل هذا العدد من القنوات الصوتية. سيُنسخ المقطع المرئي إلى حاوية أخرى دون إعادة ترميزه، ولكن سيُعاد ترميز المقطع الصوتي ترميزا متناسب مع جهازك، ومن ثم سيُرسل إليك لمشاهدته.", "DirectStreamHelp1": "يَدعم جهازك تشغيل هذا النوع من المقاطع المرئية، ولكن إما ١. جهازك لا يدعم تشغيل إحدى المقاطع الصوتية التالية: (DTS، Dolby، TrueHD، إلخ)، أو، ٢. جهازك لا يدعم تشغيل هذا العدد من القنوات الصوتية. سيُنسخ المقطع المرئي إلى حاوية أخرى دون إعادة ترميزه، ولكن سيُعاد ترميز المقطع الصوتي ترميزا متناسب مع جهازك، ومن ثم سيُرسل إليك لمشاهدته.",
"DetectingDevices": "يتم الكشف عن الأجهزة", "DetectingDevices": "يتم الكشف عن الأجهزة",
@ -886,7 +886,7 @@
"ButtonTogglePlaylist": "قائمة التشغيل", "ButtonTogglePlaylist": "قائمة التشغيل",
"BoxSet": "طقم", "BoxSet": "طقم",
"ButtonSplit": "تقسيم", "ButtonSplit": "تقسيم",
"AllowFfmpegThrottlingHelp": "عندما يتقدم تحويل الشفرة (transcode) أو remux بدرجة كافية من موضع التشغيل الحالي، تتوقف العملية مؤقتا حتى تستهلك موارد أقل. هذا مفيد للغاية عند المشاهدة دون القفز كثيرا. قم بإقاف تشغيل هذه الخاصية أذا واجهت مشاكل في تشغيل الفديو.", "AllowFfmpegThrottlingHelp": "عند تفعيلها؛ فسوف تتوقف عملية الترميز transcoding توقفا مؤقتا كلما تقدمت العملية عن موضع التشغيل بنسبة كافية، تهدف هذه الخاصية إلى التقليل من استهلاك الطاقة، وتكون ذات منفعة كبيرة عندما تتم عملية المشاهدة بانتظام دون القفز عدة دقائق في المشاهدة ما بين الحينة والأخرى. كما ينطبق الأمر ذاته على عملية نسخ الملف إلى حاوية أخرى لتتوافق مع الجهاز remuxing.",
"InstallingPackage": "تثبيت {0} (الإصدار {1})", "InstallingPackage": "تثبيت {0} (الإصدار {1})",
"Images": "الصور", "Images": "الصور",
"Identify": "التعرف على الوسائط", "Identify": "التعرف على الوسائط",
@ -902,7 +902,7 @@
"HeaderEnabledFieldsHelp": "قم بإلغاء تحديد حقل لقفله ومنع تغيير بياناته.", "HeaderEnabledFieldsHelp": "قم بإلغاء تحديد حقل لقفله ومنع تغيير بياناته.",
"HeaderEnabledFields": "الحقول الممكّنة", "HeaderEnabledFields": "الحقول الممكّنة",
"HeaderEditImages": "تحرير الصور", "HeaderEditImages": "تحرير الصور",
"HeaderDVR": "جهاز DVR", "HeaderDVR": "جهاز الـ DVR",
"HeaderDownloadSync": "تنزيل ومزامنة", "HeaderDownloadSync": "تنزيل ومزامنة",
"HeaderDetectMyDevices": "كشف أجهزتي", "HeaderDetectMyDevices": "كشف أجهزتي",
"HeaderDeleteItems": "حذف العناصر", "HeaderDeleteItems": "حذف العناصر",
@ -923,7 +923,7 @@
"GroupVersions": "إصدارات المجموعة", "GroupVersions": "إصدارات المجموعة",
"GroupBySeries": "تجميع حسب السلسلة", "GroupBySeries": "تجميع حسب السلسلة",
"Genre": "التصنيف الأدبي", "Genre": "التصنيف الأدبي",
"General": "الاعدادات العامة", "General": "الإعدادات العامة",
"FormatValue": "صيغة الملف: {0}", "FormatValue": "صيغة الملف: {0}",
"Filters": "مرشحات", "Filters": "مرشحات",
"File": "ملف", "File": "ملف",
@ -937,7 +937,7 @@
"EnableThemeSongsHelp": "قم بتشغيل اللحن الرئيسي في الخلفية أثناء تصفح المكتبة.", "EnableThemeSongsHelp": "قم بتشغيل اللحن الرئيسي في الخلفية أثناء تصفح المكتبة.",
"EnableStreamLoopingHelp": "قم بتمكين هذا إذا كانت عمليات البث المباشر تحتوي فقط على بضع ثوان من البيانات وتحتاج إلى إعادة طلب مستمر. قد يؤدي تمكين هذا عندما لا تكون هناك حاجة إلى مشاكل.", "EnableStreamLoopingHelp": "قم بتمكين هذا إذا كانت عمليات البث المباشر تحتوي فقط على بضع ثوان من البيانات وتحتاج إلى إعادة طلب مستمر. قد يؤدي تمكين هذا عندما لا تكون هناك حاجة إلى مشاكل.",
"EnableStreamLooping": "تكرار البث المباشر", "EnableStreamLooping": "تكرار البث المباشر",
"EnableHardwareEncoding": "تمكين تشفير الأجهزة", "EnableHardwareEncoding": "لتفعيل ترميز الأجهزة",
"EnableExternalVideoPlayersHelp": "سيتم عرض قائمة مشغل خارجي عند بدء تشغيل الفيديو.", "EnableExternalVideoPlayersHelp": "سيتم عرض قائمة مشغل خارجي عند بدء تشغيل الفيديو.",
"EnableExternalVideoPlayers": "مشغلات الفيديو الخارجية", "EnableExternalVideoPlayers": "مشغلات الفيديو الخارجية",
"EnableDisplayMirroring": "اعرض شاشتك على شاشة أخرى", "EnableDisplayMirroring": "اعرض شاشتك على شاشة أخرى",
@ -1011,7 +1011,7 @@
"LabelBaseUrl": "عنوان الرابط الاساسي", "LabelBaseUrl": "عنوان الرابط الاساسي",
"LabelEnableHttpsHelp": "استمع لمنفذ HTTPS المعد. يجب توفير شهادة معتمدة لتعمل الخصية.", "LabelEnableHttpsHelp": "استمع لمنفذ HTTPS المعد. يجب توفير شهادة معتمدة لتعمل الخصية.",
"LabelEnableHttps": "تفعيل HTTPS", "LabelEnableHttps": "تفعيل HTTPS",
"LabelEnableHardwareDecodingFor": "تفعيل فك الترميز عن طريق العتاد الصلب ل", "LabelEnableHardwareDecodingFor": "فعل استخدام كرت الشاشة لما يلي",
"LabelCurrentStatus": "الحاله الحالية", "LabelCurrentStatus": "الحاله الحالية",
"LabelAlbumArtMaxResHelp": "الدقة القصوى لصورة الألبوم المعروضة عبر خاصية \"upnp: AlbumArtURI\".", "LabelAlbumArtMaxResHelp": "الدقة القصوى لصورة الألبوم المعروضة عبر خاصية \"upnp: AlbumArtURI\".",
"KnownProxiesHelp": "قائمة مفصولة بفواصل لعناوين IP أو أسماء المضيفين للخوادم الوكيلة المعروفة المستخدمة عند الاتصال بمثيل Jellyfin الخاص بك. هذا مطلوب للاستفادة المناسبة من رؤوس \"X-Forwarded-For\". يتطلب إعادة التشغيل بعد الحفظ.", "KnownProxiesHelp": "قائمة مفصولة بفواصل لعناوين IP أو أسماء المضيفين للخوادم الوكيلة المعروفة المستخدمة عند الاتصال بمثيل Jellyfin الخاص بك. هذا مطلوب للاستفادة المناسبة من رؤوس \"X-Forwarded-For\". يتطلب إعادة التشغيل بعد الحفظ.",
@ -1057,7 +1057,7 @@
"ButtonCast": "إرسال وسائط إلى جهاز", "ButtonCast": "إرسال وسائط إلى جهاز",
"HeaderSyncPlayTimeSyncSettings": "تزامن الوقت", "HeaderSyncPlayTimeSyncSettings": "تزامن الوقت",
"HeaderSyncPlaySettings": "إعدادات SyncPlay", "HeaderSyncPlaySettings": "إعدادات SyncPlay",
"HeaderContinueReading": "مواصلة القراءة", "HeaderContinueReading": "استئناف القراءة",
"DisablePlugin": "غير مفعل", "DisablePlugin": "غير مفعل",
"EnablePlugin": "مفعل", "EnablePlugin": "مفعل",
"AgeValue": "({0} سنة مضت)", "AgeValue": "({0} سنة مضت)",
@ -1207,14 +1207,14 @@
"MarkPlayed": "وضع علامة على أنه تم تشغيله", "MarkPlayed": "وضع علامة على أنه تم تشغيله",
"Lyricist": "شاعر غنائي", "Lyricist": "شاعر غنائي",
"Logo": "شعار", "Logo": "شعار",
"LiveTV": "بث تلفزيوني مباشر", "LiveTV": "البث التلفزيوني المباشر",
"LiveBroadcasts": "البث المباشر", "LiveBroadcasts": "البث المباشر",
"Live": "مباشر", "Live": "مباشر",
"ListPaging": "{0} - {1} من {2}", "ListPaging": "{0} - {1} من {2}",
"List": "قائمة", "List": "قائمة",
"LeaveBlankToNotSetAPassword": "يمكنك ترك هذا فارغًا لعدم تعيين كلمة مرور.", "LeaveBlankToNotSetAPassword": "يمكنك ترك هذا فارغًا لعدم تعيين كلمة مرور.",
"LearnHowYouCanContribute": "تعلم كيف يمكنك المساهمة.", "LearnHowYouCanContribute": "تعلم كيف يمكنك المساهمة.",
"LastSeen": "اخر ظهور {0}", "LastSeen": "آخر ظهور {0}",
"LabelYear": "عام", "LabelYear": "عام",
"LabelWeb": "الويب", "LabelWeb": "الويب",
"LabelVideoResolution": "دقة الفيديو", "LabelVideoResolution": "دقة الفيديو",
@ -1228,7 +1228,7 @@
"LabelUDPPortRangeHelp": "تقييد Jellyfin لاستخدام نطاق المنفذ هذا عند إجراء اتصالات UDP. (الافتراضي هو 1024 - 65535). <br/> ملاحظة: تتطلب وظيفة معينة منافذ ثابتة قد تكون خارج هذا النطاق.", "LabelUDPPortRangeHelp": "تقييد Jellyfin لاستخدام نطاق المنفذ هذا عند إجراء اتصالات UDP. (الافتراضي هو 1024 - 65535). <br/> ملاحظة: تتطلب وظيفة معينة منافذ ثابتة قد تكون خارج هذا النطاق.",
"LabelUDPPortRange": "نطاق اتصالات UDP", "LabelUDPPortRange": "نطاق اتصالات UDP",
"LabelTranscodingFramerate": "معدل إطارات التحويل", "LabelTranscodingFramerate": "معدل إطارات التحويل",
"LabelTranscodePath": "مسار التحويل", "LabelTranscodePath": "مسار المُرمِّز",
"LabelTrackNumber": "رقم مسار", "LabelTrackNumber": "رقم مسار",
"LabelTitle": "عنوان", "LabelTitle": "عنوان",
"LabelTheme": "سمة", "LabelTheme": "سمة",
@ -1299,7 +1299,7 @@
"LabelSelectStereo": "ستيريو", "LabelSelectStereo": "ستيريو",
"LabelSelectAudioChannels": "القنوات", "LabelSelectAudioChannels": "القنوات",
"LabelAllowedAudioChannels": "الحد الأقصى لقنوات الصوت المسموح بها", "LabelAllowedAudioChannels": "الحد الأقصى لقنوات الصوت المسموح بها",
"AllowHevcEncoding": "السماح بالتشفير بتنسيق HEVC", "AllowHevcEncoding": "للسماح بالترميز باستخدام خوارزمية (HEVC)",
"PreferFmp4HlsContainerHelp": "يُفضل استخدام fMP4 كحاوية افتراضية ل HLS ، مما يجعل من الممكن توجيه محتوى HEVC على الأجهزة المدعومة.", "PreferFmp4HlsContainerHelp": "يُفضل استخدام fMP4 كحاوية افتراضية ل HLS ، مما يجعل من الممكن توجيه محتوى HEVC على الأجهزة المدعومة.",
"PreferFmp4HlsContainer": "يُفضل حاوية وسائط fMP4-HLS", "PreferFmp4HlsContainer": "يُفضل حاوية وسائط fMP4-HLS",
"LabelSyncPlayInfo": "معلومات SyncPlay", "LabelSyncPlayInfo": "معلومات SyncPlay",
@ -1467,7 +1467,7 @@
"UseDoubleRateDeinterlacingHelp": "يستخدم هذا الإعداد معدل المجال عند إزالة التداخل ، والذي يشار إليه غالبًا باسم \"bob deinterlacing\" ، والذي يضاعف معدل الإطارات للفيديو لتوفير حركة كاملة مثل ما قد تراه عند مشاهدة الفيديو المتشابك على التلفزيون.", "UseDoubleRateDeinterlacingHelp": "يستخدم هذا الإعداد معدل المجال عند إزالة التداخل ، والذي يشار إليه غالبًا باسم \"bob deinterlacing\" ، والذي يضاعف معدل الإطارات للفيديو لتوفير حركة كاملة مثل ما قد تراه عند مشاهدة الفيديو المتشابك على التلفزيون.",
"UseDoubleRateDeinterlacing": "ضاعف معدل الإطارات عند إزالة التداخل", "UseDoubleRateDeinterlacing": "ضاعف معدل الإطارات عند إزالة التداخل",
"Up": "إلى أعلى", "Up": "إلى أعلى",
"TonemappingRangeHelp": "حدد نطاق لون الإخراج. Auto هو نفس نطاق الإدخال.", "TonemappingRangeHelp": "حدد نطاق لون الإخراج، ويعتبر خيار (تلقائي) نطاق الإدخال.",
"ThemeVideos": "مقاطع فيديو موضوعية", "ThemeVideos": "مقاطع فيديو موضوعية",
"TabRepositories": "مستودعات", "TabRepositories": "مستودعات",
"Smaller": "الأصغر", "Smaller": "الأصغر",
@ -1505,7 +1505,7 @@
"LabelUserRemoteClientBitrateLimitHelp": "تجاوز القيمة العامة الافتراضية المعينة في إعدادات الخادم ، راجع لوحة الاعدادت> التشغيل> تدفق.", "LabelUserRemoteClientBitrateLimitHelp": "تجاوز القيمة العامة الافتراضية المعينة في إعدادات الخادم ، راجع لوحة الاعدادت> التشغيل> تدفق.",
"LabelTVHomeScreen": "الشاشة الرئيسية الخاصة بوضع التلفزيون", "LabelTVHomeScreen": "الشاشة الرئيسية الخاصة بوضع التلفزيون",
"LabelTranscodingProgress": "تقدم المرمز", "LabelTranscodingProgress": "تقدم المرمز",
"LabelTranscodes": "تحويل الشفرات", "LabelTranscodes": "الترميزات",
"LabelTonemappingDesatHelp": "قم بتطبيق إزالة التشبع على الإبرازات التي تتجاوز هذا المستوى من السطوع. كلما ارتفعت المعلمة ، سيتم الاحتفاظ بمزيد من معلومات الألوان. يساعد هذا الإعداد في منع الألوان غير الطبيعية للحصول على إبرازات فائقة ، من خلال التحول (بسلاسة) إلى اللون الأبيض بدلاً من ذلك. هذا يجعل الصور تبدو طبيعية أكثر ، على حساب تقليل المعلومات حول الألوان خارج النطاق. القيم الموصى بها والافتراضية هي 0 و 0.5.", "LabelTonemappingDesatHelp": "قم بتطبيق إزالة التشبع على الإبرازات التي تتجاوز هذا المستوى من السطوع. كلما ارتفعت المعلمة ، سيتم الاحتفاظ بمزيد من معلومات الألوان. يساعد هذا الإعداد في منع الألوان غير الطبيعية للحصول على إبرازات فائقة ، من خلال التحول (بسلاسة) إلى اللون الأبيض بدلاً من ذلك. هذا يجعل الصور تبدو طبيعية أكثر ، على حساب تقليل المعلومات حول الألوان خارج النطاق. القيم الموصى بها والافتراضية هي 0 و 0.5.",
"LabelSyncPlayResumePlaybackDescription": "انضم إلى إعادة تشغيل المجموعة", "LabelSyncPlayResumePlaybackDescription": "انضم إلى إعادة تشغيل المجموعة",
"LabelSyncPlayResumePlayback": "استئناف التشغيل المحلي", "LabelSyncPlayResumePlayback": "استئناف التشغيل المحلي",
@ -1557,7 +1557,7 @@
"LabelDashboardTheme": "قالب لوحة تحكم الخادم", "LabelDashboardTheme": "قالب لوحة تحكم الخادم",
"LabelTonemappingParamHelp": "ضبط خوارزمية تعيين النغمة. القيم الموصى بها والافتراضية هي NaN. اتركه فارغًا بشكل عام.", "LabelTonemappingParamHelp": "ضبط خوارزمية تعيين النغمة. القيم الموصى بها والافتراضية هي NaN. اتركه فارغًا بشكل عام.",
"LabelTonemappingParam": "معلمة تعيين النغمة", "LabelTonemappingParam": "معلمة تعيين النغمة",
"LabelTonemappingDesat": "تم حفظ تعيين النغمة", "LabelTonemappingDesat": "مُعدل تعيين النغمة",
"LabelTonemappingAlgorithm": "حدد خوارزمية تعيين النغمة لاستخدامها", "LabelTonemappingAlgorithm": "حدد خوارزمية تعيين النغمة لاستخدامها",
"LabelOpenclDeviceHelp": "هذا هو جهاز OpenCL المستخدم لتعيين النغمة. الجانب الأيسر من النقطة هو رقم النظام الأساسي ، والجانب الأيمن هو رقم الجهاز على النظام الأساسي. القيمة الافتراضية هي 0.0. مطلوب ملف تطبيق FFmpeg الذي يحتوي على طريقة تسريع أجهزة OpenCL.", "LabelOpenclDeviceHelp": "هذا هو جهاز OpenCL المستخدم لتعيين النغمة. الجانب الأيسر من النقطة هو رقم النظام الأساسي ، والجانب الأيمن هو رقم الجهاز على النظام الأساسي. القيمة الافتراضية هي 0.0. مطلوب ملف تطبيق FFmpeg الذي يحتوي على طريقة تسريع أجهزة OpenCL.",
"LabelAutomaticallyAddToCollectionHelp": "عندما يكون لفيلمين على الأقل نفس اسم المجموعة ، فسيتم إضافتهما تلقائيًا إلى المجموعة.", "LabelAutomaticallyAddToCollectionHelp": "عندما يكون لفيلمين على الأقل نفس اسم المجموعة ، فسيتم إضافتهما تلقائيًا إلى المجموعة.",
@ -1639,7 +1639,7 @@
"ButtonSpace": "مساحة", "ButtonSpace": "مساحة",
"ButtonClose": "أغلق", "ButtonClose": "أغلق",
"AddToFavorites": "أضفه إلى المفضلة", "AddToFavorites": "أضفه إلى المفضلة",
"EnableEnhancedNvdecDecoderHelp": "تنفيذ NVDEC التجريبي ، لا تقم بتمكين هذا الخيار إلا إذا واجهت أخطاء في فك التشفير.", "EnableEnhancedNvdecDecoderHelp": "استخدام (NVDEC) التجريبي، لا تُفعل هذا الخيار حتى تواجه أخطاء في عملية فك الترميز.",
"StoryArc": "قصة القوس", "StoryArc": "قصة القوس",
"Production": "إنتاج", "Production": "إنتاج",
"OriginalAirDate": "تاريخ البث الأصلي", "OriginalAirDate": "تاريخ البث الأصلي",
@ -1695,5 +1695,6 @@
"LabelDummyChapterCountHelp": "العدد الأقصى لصور الفصول التي سيتم استئصالها من كل ملف للوسائط.", "LabelDummyChapterCountHelp": "العدد الأقصى لصور الفصول التي سيتم استئصالها من كل ملف للوسائط.",
"LabelChapterImageResolution": "الدقة", "LabelChapterImageResolution": "الدقة",
"LabelEnableAudioVbr": "فعل تشفير VBR الصوتي", "LabelEnableAudioVbr": "فعل تشفير VBR الصوتي",
"AllowCollectionManagement": "السماح لهذا المستخدم بإدارة المجموعات" "AllowCollectionManagement": "السماح لهذا المستخدم بإدارة المجموعات",
"Notifications": "الإشعارات"
} }

View file

@ -1469,5 +1469,10 @@
"LabelDummyChapterDuration": "Интервал", "LabelDummyChapterDuration": "Интервал",
"LabelDummyChapterCount": "Граница", "LabelDummyChapterCount": "Граница",
"LabelEnableAudioVbrHelp": "Динамичният битрейт предлага по-добро съотношение между качество и среден битрейт, но в някои редки случаи може да причини проблеми с буферирането и съвместимостта.", "LabelEnableAudioVbrHelp": "Динамичният битрейт предлага по-добро съотношение между качество и среден битрейт, но в някои редки случаи може да причини проблеми с буферирането и съвместимостта.",
"LabelIconMaxResHelp": "Максимална резолюция на изображенията предоставена чрез \"upnp:icon\" полето." "LabelIconMaxResHelp": "Максимална резолюция на изображенията предоставена чрез \"upnp:icon\" полето.",
"AllowSegmentDeletion": "Изтриване на сегменти",
"AllowSegmentDeletionHelp": "Изтриване на сегментите след изпращане към клиента. Това предотвратява нуждата за съхраняване на целия транскодиран файл на диска. Работи само с включено подтискане. Изключете тази функция ако изпитате проблеми с възпоизвеждането.",
"LabelThrottleDelaySecondsHelp": "Време в секунди след което транскодера ще бъде подтиснат. Трябва да е достатъчно голям за клиента да поддържа здрав буфер. Работи само ако подтискането е включено.",
"LabelSegmentKeepSeconds": "Време в което да се запазят сегменти",
"LabelSegmentKeepSecondsHelp": "Време в секунди за което сегментите трябва да се пазят след презаписване. Трябва да е повече от \"Подтискане след\". Работи само ако 'Изтриване на сегменти' е включено."
} }

View file

@ -638,7 +638,7 @@
"MarkPlayed": "Označit přehrané", "MarkPlayed": "Označit přehrané",
"MarkUnplayed": "Označit nepřehrané", "MarkUnplayed": "Označit nepřehrané",
"MaxParentalRatingHelp": "Obsah s vyšším hodnocením bude tomuto uživateli blokován.", "MaxParentalRatingHelp": "Obsah s vyšším hodnocením bude tomuto uživateli blokován.",
"MediaInfoAnamorphic": "Anamorfní nastavení", "MediaInfoAnamorphic": "Anamorfní",
"MediaInfoAspectRatio": "Poměr stran", "MediaInfoAspectRatio": "Poměr stran",
"MediaInfoBitDepth": "Počet bitů na pixel", "MediaInfoBitDepth": "Počet bitů na pixel",
"MediaInfoBitrate": "Datový tok", "MediaInfoBitrate": "Datový tok",
@ -654,7 +654,7 @@
"MediaInfoLayout": "Rozvržení", "MediaInfoLayout": "Rozvržení",
"MediaInfoLevel": "Úroveň", "MediaInfoLevel": "Úroveň",
"MediaInfoPath": "Cesta k souboru", "MediaInfoPath": "Cesta k souboru",
"MediaInfoPixelFormat": "Pixel formát", "MediaInfoPixelFormat": "Formát pixelu",
"MediaInfoProfile": "Profil", "MediaInfoProfile": "Profil",
"MediaInfoRefFrames": "Ref snímky", "MediaInfoRefFrames": "Ref snímky",
"MediaInfoResolution": "Rozlišení", "MediaInfoResolution": "Rozlišení",
@ -1120,7 +1120,7 @@
"LabelUserRemoteClientBitrateLimitHelp": "Přepíše výchozí globální hodnotu nastavenou v nastavení serveru, viz Nástěnka > Přehrávání > Streamování.", "LabelUserRemoteClientBitrateLimitHelp": "Přepíše výchozí globální hodnotu nastavenou v nastavení serveru, viz Nástěnka > Přehrávání > Streamování.",
"LabelVideoCodec": "Video kodek", "LabelVideoCodec": "Video kodek",
"LeaveBlankToNotSetAPassword": "Můžete ponechat prázdné pro nastavení bez hesla.", "LeaveBlankToNotSetAPassword": "Můžete ponechat prázdné pro nastavení bez hesla.",
"LiveTV": "Televize", "LiveTV": "Živý přenos",
"Logo": "Logo", "Logo": "Logo",
"ManageLibrary": "Spravovat knihovnu", "ManageLibrary": "Spravovat knihovnu",
"MediaInfoDefault": "Výchozí", "MediaInfoDefault": "Výchozí",
@ -1386,7 +1386,7 @@
"LabelTonemappingRange": "Rozsah mapování tónů", "LabelTonemappingRange": "Rozsah mapování tónů",
"TonemappingAlgorithmHelp": "Mapování tonů je možné dále ladit. Pokud možnostem zde nerozumíte, je možné ponechat vše ve výchozím nastavení. Doporučená hodnota je 'BT.2390'.", "TonemappingAlgorithmHelp": "Mapování tonů je možné dále ladit. Pokud možnostem zde nerozumíte, je možné ponechat vše ve výchozím nastavení. Doporučená hodnota je 'BT.2390'.",
"LabelTonemappingAlgorithm": "Algoritmus mapování tónů", "LabelTonemappingAlgorithm": "Algoritmus mapování tónů",
"AllowTonemappingHelp": "Mapování tónů umožňuje změnit dynamický rozsah videa z HDR na SDR bez ztráty detailů a barev, tj. důležitých informací původního obrazu. Tato funkce momentálně funguje pouze u videí, které obsahují 10bitové HDR10, HLG nebo Dolby Vision. Funkce rovněž vyžaduje OpenCL nebo CUDA.", "AllowTonemappingHelp": "Mapování tónů umožňuje změnit dynamický rozsah videa z HDR na SDR bez ztráty důležitých informací původního obrazu, jako jsou detaily a barvy. Tato funkce momentálně funguje pouze u videí, které obsahují 10bitové HDR10, HLG nebo Dolby Vision. Funkce rovněž vyžaduje OpenCL nebo CUDA.",
"EnableTonemapping": "Zapnout mapování tónů", "EnableTonemapping": "Zapnout mapování tónů",
"LabelOpenclDeviceHelp": "Zařízení OpenCL použité pro mapování tónů. Nalevo od tečky je číslo platformy, napravo pak číslo zařízení na této platformě. Výchozí hodnota je 0.0. Soubor aplikace FFmpeg, který obsahuje metodu pro hardwarovou akceleraci OpenCL, je povinný.", "LabelOpenclDeviceHelp": "Zařízení OpenCL použité pro mapování tónů. Nalevo od tečky je číslo platformy, napravo pak číslo zařízení na této platformě. Výchozí hodnota je 0.0. Soubor aplikace FFmpeg, který obsahuje metodu pro hardwarovou akceleraci OpenCL, je povinný.",
"LabelOpenclDevice": "Zařízení OpenCL", "LabelOpenclDevice": "Zařízení OpenCL",
@ -1761,5 +1761,7 @@
"LabelThrottleDelaySeconds": "Omezit po", "LabelThrottleDelaySeconds": "Omezit po",
"LabelThrottleDelaySecondsHelp": "Čas v sekundách po kterém bude překódování pozastaveno. Musí být dost velké na to, aby měl klient dostatečné množství přehrávaného souboru v záloze. Funguje pouze se zapnutou funkcí Omezit překódování.", "LabelThrottleDelaySecondsHelp": "Čas v sekundách po kterém bude překódování pozastaveno. Musí být dost velké na to, aby měl klient dostatečné množství přehrávaného souboru v záloze. Funguje pouze se zapnutou funkcí Omezit překódování.",
"LabelSegmentKeepSeconds": "Doba ponechání částí", "LabelSegmentKeepSeconds": "Doba ponechání částí",
"LabelSegmentKeepSecondsHelp": "Čas v sekundách, po který budou části překódovaného souboru uloženy. Musí být delší než čas určený v \"Omezit po\". Funguje pouze při zapnuté funkci Odstranění částí." "LabelSegmentKeepSecondsHelp": "Čas v sekundách, po který budou části překódovaného souboru uloženy. Musí být delší než čas určený v \"Omezit po\". Funguje pouze při zapnuté funkci Odstranění částí.",
"LabelBackdropScreensaverInterval": "Interval šetřiče \"Pozadí\"",
"LabelBackdropScreensaverIntervalHelp": "Čas v sekundách mezi změnou pozadí při použití šetřiče \"Pozadí\"."
} }

View file

@ -38,7 +38,7 @@
"AllowOnTheFlySubtitleExtractionHelp": "Embedded subtitles can be extracted from videos and delivered to clients in plain text, in order to help prevent video transcoding. On some systems this can take a long time and cause video playback to stall during the extraction process. Disable this to have embedded subtitles burned in with video transcoding when they are not natively supported by the client device.", "AllowOnTheFlySubtitleExtractionHelp": "Embedded subtitles can be extracted from videos and delivered to clients in plain text, in order to help prevent video transcoding. On some systems this can take a long time and cause video playback to stall during the extraction process. Disable this to have embedded subtitles burned in with video transcoding when they are not natively supported by the client device.",
"AllowRemoteAccess": "Allow remote connections to this server", "AllowRemoteAccess": "Allow remote connections to this server",
"AllowRemoteAccessHelp": "If unchecked, all remote connections will be blocked.", "AllowRemoteAccessHelp": "If unchecked, all remote connections will be blocked.",
"AllowTonemappingHelp": "Tone-mapping can transform the dynamic range of a video from HDR to SDR while maintaining image details and colors, which are very important information for representing the original scene. Currently works only with 10bit HDR10HLG and DoVi videos. This requires the corresponding OpenCL or CUDA runtime.", "AllowTonemappingHelp": "Tone-mapping can transform the dynamic range of a video from HDR to SDR while maintaining image details and colors, which are very important information for representing the original scene. Currently works only with 10bit HDR10, HLG and DoVi videos. This requires the corresponding OpenCL or CUDA runtime.",
"AlwaysPlaySubtitles": "Always Play", "AlwaysPlaySubtitles": "Always Play",
"AlwaysPlaySubtitlesHelp": "Subtitles matching the language preference will be loaded regardless of the audio language.", "AlwaysPlaySubtitlesHelp": "Subtitles matching the language preference will be loaded regardless of the audio language.",
"AnyLanguage": "Any Language", "AnyLanguage": "Any Language",
@ -566,6 +566,8 @@
"LabelAutomaticDiscoveryHelp": "Allow applications to automatically detect Jellyfin by using UDP port 7359.", "LabelAutomaticDiscoveryHelp": "Allow applications to automatically detect Jellyfin by using UDP port 7359.",
"LabelBaseUrl": "Base URL", "LabelBaseUrl": "Base URL",
"LabelBaseUrlHelp": "Add a custom subdirectory to the server URL. For example: <code>http://example.com/<b>&lt;baseurl&gt;</b></code>", "LabelBaseUrlHelp": "Add a custom subdirectory to the server URL. For example: <code>http://example.com/<b>&lt;baseurl&gt;</b></code>",
"LabelBackdropScreensaverInterval": "Backdrop Screensaver Interval",
"LabelBackdropScreensaverIntervalHelp": "The time in seconds between different backdrops when using the backdrop screensaver.",
"LabelBindToLocalNetworkAddress": "Bind to local network address", "LabelBindToLocalNetworkAddress": "Bind to local network address",
"LabelBindToLocalNetworkAddressHelp": "Override the local IP address for the HTTP server. If left empty, the server will bind to all available addresses. Changing this value requires a restart.", "LabelBindToLocalNetworkAddressHelp": "Override the local IP address for the HTTP server. If left empty, the server will bind to all available addresses. Changing this value requires a restart.",
"LabelBirthDate": "Birth date", "LabelBirthDate": "Birth date",

View file

@ -1753,5 +1753,11 @@
"MediaInfoVideoRangeType": "Tipo de rango de vídeo", "MediaInfoVideoRangeType": "Tipo de rango de vídeo",
"MediaInfoDvVersionMinor": "Versión DV menor", "MediaInfoDvVersionMinor": "Versión DV menor",
"TonemappingModeHelp": "Seleccione el modo de mapeado de tono. Si experimenta sobreiluminación intente cambiar al modo RGB.", "TonemappingModeHelp": "Seleccione el modo de mapeado de tono. Si experimenta sobreiluminación intente cambiar al modo RGB.",
"AllowSegmentDeletion": "Borrar segmentos" "AllowSegmentDeletion": "Borrar segmentos",
"HeaderEpisodesStatus": "Estatus de los Episodios",
"AllowSegmentDeletionHelp": "Borrar los viejos segmentos después de que hayan sido enviados al cliente. Esto previene que se tenga almacenado la totalidad de la transcodificación en el disco. Esto funciona unicamente cuando se tenga habilitado el throttling. Apagar esta opción cuando se tengan problemas de reproducción.",
"LabelThrottleDelaySeconds": "Acelerar después",
"LabelThrottleDelaySecondsHelp": "Tiempo en segundos después de que la transcodificación entre en throttled. Deben ser los suficientes para que el buffer del cliente siga operando. Unicamente funciona si el throtting está habilitdo.",
"LabelSegmentKeepSeconds": "Tiempo para que permanescan los segmentos",
"LabelSegmentKeepSecondsHelp": "Tiempo en segundos en los que los segmentos deben permanecer antes de que sean sobrescritos. Estos deben de ser mayores a los indicados en \"Acelerar despues de\". Esto funciona unicamente si esta habilitada la opción de eliminar el segmento."
} }

View file

@ -1761,5 +1761,7 @@
"LabelThrottleDelaySecondsHelp": "Tiempo en segundos después del cual se acelerará el transcodificador. Debe ser lo suficientemente grande para que el cliente mantenga un búfer saludable. Solo funciona si el estrangulamiento \"throttling\" está habilitada.", "LabelThrottleDelaySecondsHelp": "Tiempo en segundos después del cual se acelerará el transcodificador. Debe ser lo suficientemente grande para que el cliente mantenga un búfer saludable. Solo funciona si el estrangulamiento \"throttling\" está habilitada.",
"LabelSegmentKeepSeconds": "Tiempo que se mantendrán los segmentos", "LabelSegmentKeepSeconds": "Tiempo que se mantendrán los segmentos",
"LabelThrottleDelaySeconds": "Limitar trás", "LabelThrottleDelaySeconds": "Limitar trás",
"LabelSegmentKeepSecondsHelp": "Tiempo en segundos durante el cual se deben conservar los segmentos antes de que se sobrescriban. Debe ser mayor que \"Acelerar después\". Solo funciona si la eliminación de segmentos está habilitada." "LabelSegmentKeepSecondsHelp": "Tiempo en segundos durante el cual se deben conservar los segmentos antes de que se sobrescriban. Debe ser mayor que \"Acelerar después\". Solo funciona si la eliminación de segmentos está habilitada.",
"LabelBackdropScreensaverInterval": "Intervalo del fondo protector de pantalla",
"LabelBackdropScreensaverIntervalHelp": "El tiempo en segundos entre diferentes fondos cuando se utiliza el fondo protector de pantalla."
} }

View file

@ -917,7 +917,7 @@
"MessagePleaseWait": "Palun oota. See võib veidi aega võtta.", "MessagePleaseWait": "Palun oota. See võib veidi aega võtta.",
"MessagePleaseEnsureInternetMetadata": "Veendu, et interneti metaandmete allalaadimine on lubatud.", "MessagePleaseEnsureInternetMetadata": "Veendu, et interneti metaandmete allalaadimine on lubatud.",
"MessagePlayAccessRestricted": "Selle sisu taasesitamine on praegu piiratud. Lisateabe saamiseks võta ühendust oma serveri administraatoriga.", "MessagePlayAccessRestricted": "Selle sisu taasesitamine on praegu piiratud. Lisateabe saamiseks võta ühendust oma serveri administraatoriga.",
"MessagePasswordResetForUsers": "Järgmiste kasutajate paroolid on lähtestatud. Nüüd saavad nad sisse logida LIHTNE PIN koodidega, mida kasutati lähtestamiseks.", "MessagePasswordResetForUsers": "Järgmiste kasutajate paroolid on lähtestatud. Nüüd saavad nad sisse logida PIN koodidega, mida kasutati lähtestamiseks.",
"MessageNoTrailersFound": "Paigalda treilerite kanal ja paranda oma filmikogemust lisades interneti treilerite kogu.", "MessageNoTrailersFound": "Paigalda treilerite kanal ja paranda oma filmikogemust lisades interneti treilerite kogu.",
"MessageNothingHere": "Siin pole midagi.", "MessageNothingHere": "Siin pole midagi.",
"MessageNoServersAvailable": "Automaatse serveriotsingu abil ei leitud ühtegi serverit.", "MessageNoServersAvailable": "Automaatse serveriotsingu abil ei leitud ühtegi serverit.",

View file

@ -1062,7 +1062,7 @@
"LabelDownMixAudioScale": "Äänen tehostus alasmiksatessa", "LabelDownMixAudioScale": "Äänen tehostus alasmiksatessa",
"LabelDateAddedBehavior": "Uudelle sisällölle käytettävä päiväys", "LabelDateAddedBehavior": "Uudelle sisällölle käytettävä päiväys",
"LabelBlastMessageInterval": "Hereiläolo-viestin väli", "LabelBlastMessageInterval": "Hereiläolo-viestin väli",
"LabelBindToLocalNetworkAddress": "Kiinnitä verkko-osoitteeseen", "LabelBindToLocalNetworkAddress": "Sido lähiverkon osoitteeseen",
"LabelAirsBeforeSeason": "Lähetetään ennen kautta", "LabelAirsBeforeSeason": "Lähetetään ennen kautta",
"LabelAirsBeforeEpisode": "Lähetetään ennen jaksoa", "LabelAirsBeforeEpisode": "Lähetetään ennen jaksoa",
"LabelAirsAfterSeason": "Lähetetään kauden jälkeen", "LabelAirsAfterSeason": "Lähetetään kauden jälkeen",
@ -1759,5 +1759,7 @@
"LabelThrottleDelaySeconds": "Rauhoita kun on kulunut", "LabelThrottleDelaySeconds": "Rauhoita kun on kulunut",
"LabelThrottleDelaySecondsHelp": "Aika sekunneissa, jonka kuluttua transkooderi rauhoitetaan. Tämän on oltava riittävän suuri, jotta päätelaite kykenee ylläpitämään reilua puskuria. Toimii vain rauhoituksen ollessa käytössä.", "LabelThrottleDelaySecondsHelp": "Aika sekunneissa, jonka kuluttua transkooderi rauhoitetaan. Tämän on oltava riittävän suuri, jotta päätelaite kykenee ylläpitämään reilua puskuria. Toimii vain rauhoituksen ollessa käytössä.",
"LabelSegmentKeepSeconds": "Osioiden säilytysaika", "LabelSegmentKeepSeconds": "Osioiden säilytysaika",
"LabelSegmentKeepSecondsHelp": "Aika sekunteina, jonka osiot säilytetään ennen päällekirjoitusta. Oltava \"Rahoita kun on kulunut\" -aikaa suurempi. Toimii vain osioiden poiston ollessa käytössä." "LabelSegmentKeepSecondsHelp": "Aika sekunteina, jonka osiot säilytetään ennen päällekirjoitusta. Oltava \"Rahoita kun on kulunut\" -aikaa suurempi. Toimii vain osioiden poiston ollessa käytössä.",
"LabelBackdropScreensaverInterval": "Taustanäytönsäästäjän ajoitus",
"LabelBackdropScreensaverIntervalHelp": "Aika sekuntteina, jonka kuluttua kuva vaihtuu taustanäytönsäästäjää käytettäessä."
} }

View file

@ -1761,5 +1761,7 @@
"AllowSegmentDeletion": "Supprimer les segments", "AllowSegmentDeletion": "Supprimer les segments",
"LabelThrottleDelaySecondsHelp": "Durée en secondes après laquelle le débit du transcodage sera ajusté. Doit être suffisamment grande pour que le client puisse conserver une mémoire tampon saine. Ne fonctionne que si l'adaptation de la vitesse de transcodage est activée.", "LabelThrottleDelaySecondsHelp": "Durée en secondes après laquelle le débit du transcodage sera ajusté. Doit être suffisamment grande pour que le client puisse conserver une mémoire tampon saine. Ne fonctionne que si l'adaptation de la vitesse de transcodage est activée.",
"LabelSegmentKeepSeconds": "Durée de conservation des segments", "LabelSegmentKeepSeconds": "Durée de conservation des segments",
"LabelSegmentKeepSecondsHelp": "Durée en secondes de conservation des segments avant écrasement. La valeur doit être supérieure au délai d'ajustement. Ne fonctionne que si la suppression des segments est activée." "LabelSegmentKeepSecondsHelp": "Durée en secondes de conservation des segments avant écrasement. La valeur doit être supérieure au délai d'ajustement. Ne fonctionne que si la suppression des segments est activée.",
"LabelBackdropScreensaverIntervalHelp": "Le temps en secondes entre différents fonds d'écran lors de l'utilisation de l'économiseur d'écran à fonds d'écran.",
"LabelBackdropScreensaverInterval": "Intervalle de l'économiseur d'écran à fonds d'écran"
} }

View file

@ -1176,5 +1176,10 @@
"LabelModelUrl": "כתובת דגם", "LabelModelUrl": "כתובת דגם",
"Restart": "הפעלה מחדש", "Restart": "הפעלה מחדש",
"TabStreaming": "הזרמה", "TabStreaming": "הזרמה",
"Metadata": "נתוני על" "Metadata": "נתוני על",
"AllowSegmentDeletion": "מחק אותות",
"AllowSegmentDeletionHelp": "מחק אותות ישנים אחרי שהם נשלחו ללקוח. זה ימנע שמירת כל הקובץ המפוענח על הדיסק. עובד רק כאשר מצב חנק פעיל. כבה אפשרות זו אם הינך חווה בעיות בנגן.",
"LabelThrottleDelaySeconds": "חנוק אחרי",
"LabelSegmentKeepSeconds": "זמן שמירת אותות",
"LabelSegmentKeepSecondsHelp": "זמן בשניות שבהן הקטעים צריכים להישאר לפני שהם נדרסים. צריך להיות גדול מ\"חנוק אחרי\". עובד רק כאשר מחיקת אות מאופשרת."
} }

View file

@ -1370,5 +1370,50 @@
"HeaderRecordingMetadataSaving": "Snimanje metapodataka", "HeaderRecordingMetadataSaving": "Snimanje metapodataka",
"LabelChapterImageResolution": "Rezolucija", "LabelChapterImageResolution": "Rezolucija",
"AllowCollectionManagement": "Dozvoli ovom korisniku da upravlja kolekcijama", "AllowCollectionManagement": "Dozvoli ovom korisniku da upravlja kolekcijama",
"LabelDummyChapterDuration": "Interval" "LabelDummyChapterDuration": "Interval",
"UnknownVideoStreamInfo": "Informacije o video zapisu su nepoznate",
"LabelTonemappingMode": "Način mapiranja tonova",
"MediaInfoDvProfile": "DV profil",
"SelectAll": "Odaberi Sve",
"LabelVppTonemappingContrast": "Pojačanje kontrasta u VPP mapiranju tonova",
"LabelVppTonemappingBrightnessHelp": "Postavi pojačanje svjetline u VPP mapiranju tonova. Preporučene i zadane vrijednosti su 16 i 0.",
"MediaInfoDvVersionMinor": "Minor DV verzija",
"MediaInfoVideoRangeType": "Vrsta raspona videa",
"LabelVideoRangeType": "Vrsta raspona videa",
"VideoRangeTypeNotSupported": "Vrsta raspona videa nije podržana",
"LabelHardwareEncodingOptions": "Opcije hardverskog kodiranja",
"VideoBitrateNotSupported": "Bitrate videa nije podržan",
"AudioIsExternal": "Audio zapis je vanjski",
"DeletedScene": "Obrisana Scena",
"BehindTheScenes": "Iza kulisa",
"ContainerBitrateExceedsLimit": "Bitrate videa premašuje ograničenje",
"LabelVppTonemappingContrastHelp": "Postavi pojačanje kontrasta u VPP mapiranju tonova. Preporučene i zadane vrijednosti su 1.",
"MediaInfoRpuPresentFlag": "Zastavica DV rpu predloška",
"Interview": "Intervju",
"TonemappingModeHelp": "Odaberite način mapiranja tonova. Ako primijetite preintenzivne svijetle dijelove, pokušajte prebaciti na RGB način.",
"MediaInfoBlPresentFlag": "Zastavica DV bl predloška",
"MediaInfoDvLevel": "DV razina",
"Unknown": "Nepoznato",
"UnknownAudioStreamInfo": "Informacije o audio zapisu su nepoznate",
"DirectPlayError": "Došlo je do greške prilikom pokretanja izravne reprodukcije",
"ThemeVideo": "",
"Scene": "Scena",
"Sample": "Uzorak",
"MediaInfoDvVersionMajor": "Major DV verzija",
"MediaInfoElPresentFlag": "Zastavica DV el predloška",
"EnableIntelLowPowerHevcHwEncoder": "Omogući Intel HEVC hardversko kodiranje s niskom potrošnjom",
"MediaInfoDvBlSignalCompatibilityId": "ID kompatibilnost DV bl signala",
"ThemeSong": "Glavna Pjesma",
"Select": "Odabir",
"Trailer": "Trailer",
"Clip": "Klip",
"Short": "Kratki film",
"Featurette": "Kratki prilog",
"EnableIntelLowPowerH264HwEncoder": "Omogući Intel H.264 hardversko kodiranje s niskom potrošnjom",
"LabelVppTonemappingBrightness": "Pojačanje svjetline u VPP mapiranju tonova",
"EnableEnhancedNvdecDecoderHelp": "Eksperimentalna NVDEC implementacija, ne omogućujte ovu opciju osim ako ne naiđete na greške pri dekodiranju.",
"MediaInfoDoViTitle": "DV naslov",
"IntelLowPowerEncHelp": "Kodiranje s niskom potrošnjom može zadržati nepotrebnu sinkronizaciju CPU-GPU. Na Linuxu moraju biti onemogućeni ako i915 HuC firmware nije konfiguriran",
"PreferSystemNativeHwDecoder": "Preferiraj izvorne DXVA ili VA-API hardverske dekodere operativnog sustava",
"EnableSplashScreen": "Omogući početni ekran"
} }

View file

@ -1761,5 +1761,7 @@
"LogLevel.None": "Egyik sem", "LogLevel.None": "Egyik sem",
"MessageRepositoryInstallDisclaimer": "FIGYELMEZTETÉS: Harmadik féltől származó beépülő modulok tárolójának telepítése kockázatokkal jár. Instabil vagy rosszindulatú kódot tartalmazhat, és bármikor megváltozhat. Csak olyan szerzők tárolóit telepítse, akikben megbízik.", "MessageRepositoryInstallDisclaimer": "FIGYELMEZTETÉS: Harmadik féltől származó beépülő modulok tárolójának telepítése kockázatokkal jár. Instabil vagy rosszindulatú kódot tartalmazhat, és bármikor megváltozhat. Csak olyan szerzők tárolóit telepítse, akikben megbízik.",
"TonemappingModeHelp": "Válassza ki a tónus leképezési módot. Ha kiégett fénypontokat tapasztal, próbáljon átváltani RGB módra.", "TonemappingModeHelp": "Válassza ki a tónus leképezési módot. Ha kiégett fénypontokat tapasztal, próbáljon átváltani RGB módra.",
"Unknown": "Ismeretlen" "Unknown": "Ismeretlen",
"LabelBackdropScreensaverInterval": "Háttér Képernyővédő intervallum",
"LabelBackdropScreensaverIntervalHelp": "A különböző hátterek közötti idő másodpercben a háttér képernyővédő használatakor."
} }

View file

@ -20,7 +20,7 @@
"AllLibraries": "Semua pustaka", "AllLibraries": "Semua pustaka",
"AllowMediaConversion": "Membolehkan penukaran media", "AllowMediaConversion": "Membolehkan penukaran media",
"AllowMediaConversionHelp": "Memberi atau menolak akses penukaran ciri media.", "AllowMediaConversionHelp": "Memberi atau menolak akses penukaran ciri media.",
"Albums": "Album-album", "Albums": "Albums",
"Alerts": "Amaran", "Alerts": "Amaran",
"AllChannels": "Semua saluran", "AllChannels": "Semua saluran",
"AllComplexFormats": "Semua format kompleks (ASS, SSA, VobSub, PGS, SUB, IDX, …)", "AllComplexFormats": "Semua format kompleks (ASS, SSA, VobSub, PGS, SUB, IDX, …)",

View file

@ -641,12 +641,12 @@
"MessageNoPluginsInstalled": "Du har ingen programtillegg installert.", "MessageNoPluginsInstalled": "Du har ingen programtillegg installert.",
"MessageNoTrailersFound": "Installer trailer-tilleggskanalen for å forbedre filmopplevelsen ved å legge til et bibliotek med trailere fra Internett.", "MessageNoTrailersFound": "Installer trailer-tilleggskanalen for å forbedre filmopplevelsen ved å legge til et bibliotek med trailere fra Internett.",
"MessageNothingHere": "Ingenting her.", "MessageNothingHere": "Ingenting her.",
"MessagePasswordResetForUsers": "Følgende brukere har fått passordet sitt tilbakestilt. De kan nå logge inn med Enkel PIN-kode som ble brukt til å utføre tilbakestillingen.", "MessagePasswordResetForUsers": "Følgende brukere har fått passordet sitt tilbakestilt. De kan nå logge inn med PIN-kodene som ble brukt til å utføre tilbakestillingen.",
"MessagePlayAccessRestricted": "Avspilling av dette innholdet er for tiden begrenset. Ta kontakt med tjenerens administrator for mer informasjon.", "MessagePlayAccessRestricted": "Avspilling av dette innholdet er for tiden begrenset. Ta kontakt med tjenerens administrator for mer informasjon.",
"MessagePleaseEnsureInternetMetadata": "Vennligst sørg for at nedlasting av metadata fra internett er slått på.", "MessagePleaseEnsureInternetMetadata": "Vennligst sørg for at nedlasting av metadata fra internett er slått på.",
"MessagePleaseWait": "Vennligst vent. Dette kan ta noe tid.", "MessagePleaseWait": "Vennligst vent. Dette kan ta noe tid.",
"MessagePluginConfigurationRequiresLocalAccess": "Logg inn direkte på din lokale tjener for å konfigurere dette programtillegget.", "MessagePluginConfigurationRequiresLocalAccess": "Logg inn direkte på din lokale tjener for å konfigurere dette programtillegget.",
"MessagePluginInstallDisclaimer": "Programtillegg utviklet av brukersamfunnet er en god måte å forbedre opplevelsen din gjennom ekstra funksjoner og fordeler. Før installasjon bør du være klar over virkningen de kan ha på tjeneren din, som lengre skanning av bibliotek, ekstra bakgrunnsbehandling og redusert systemstabilitet.", "MessagePluginInstallDisclaimer": "ADVARSEL: Installering av tretjeparts-programtillegg medfører risiko. De kan inneholde ustabil eller ondsinnet kode, og kan endre seg når som helst. Kun installer tillegg fra utviklere du stoler på, og vær klar over potensielle virkninger de kan ha, inkludert eksterne tjenesteoppslag, lengre skannetid av bibliotek, eller ekstra bakgrunnsbehandling.",
"MessageReenableUser": "Se under for å reaktivere", "MessageReenableUser": "Se under for å reaktivere",
"MessageTheFollowingLocationWillBeRemovedFromLibrary": "Følgende medieplassering vil bli fjernet fra biblioteket ditt", "MessageTheFollowingLocationWillBeRemovedFromLibrary": "Følgende medieplassering vil bli fjernet fra biblioteket ditt",
"MessageUnableToConnectToServer": "Vi klarte ikke å koble til den valgte tjeneren akkurat nå. Vennligst sørg for at den kjører og prøv på nytt.", "MessageUnableToConnectToServer": "Vi klarte ikke å koble til den valgte tjeneren akkurat nå. Vennligst sørg for at den kjører og prøv på nytt.",
@ -1508,7 +1508,7 @@
"Framerate": "Bildefrekvens", "Framerate": "Bildefrekvens",
"DisablePlugin": "Deaktiver", "DisablePlugin": "Deaktiver",
"EnablePlugin": "Aktiver", "EnablePlugin": "Aktiver",
"DirectPlayHelp": "Kildefilen er helt kompatibel med denne klienten, og økten mottar filen uten endringer.", "DirectPlayHelp": "Kildefilen er helt kompatibel med denne klienten, og sesjonen mottar filen uten endringer.",
"Controls": "Kontroller", "Controls": "Kontroller",
"TextSent": "Tekst sendt.", "TextSent": "Tekst sendt.",
"MessageSent": "Melding sendt.", "MessageSent": "Melding sendt.",
@ -1737,5 +1737,28 @@
"LabelEnableLUFSScanHelp": "Slå på LUFS-skanning for musikk (dette vil ta lengre tid og mere ressurser).", "LabelEnableLUFSScanHelp": "Slå på LUFS-skanning for musikk (dette vil ta lengre tid og mere ressurser).",
"ResolutionMatchSource": "Bruk kildetreff", "ResolutionMatchSource": "Bruk kildetreff",
"SaveRecordingNFOHelp": "Lagre metadata fra EPG-listekilde sammen med media.", "SaveRecordingNFOHelp": "Lagre metadata fra EPG-listekilde sammen med media.",
"AllowCollectionManagement": "La denne brukeren organisere samlinger" "AllowCollectionManagement": "La denne brukeren organisere samlinger",
"MessageRepositoryInstallDisclaimer": "ADVARSEL: Installering av tredjeparts-pluginbibliotek har risikoer. De kan inneholde ustabil eller ondsinnet kode, og kan endre seg når som helst. Kun installer bibliotek fra forfattere du stoler på.",
"LabelDate": "Dato",
"LabelSystem": "System",
"LogLevel.Trace": "Spor",
"HeaderEpisodesStatus": "Episodestatus",
"PleaseConfirmRepositoryInstallation": "Vennligst trykk OK for å bekrefte at du har lest teksten over og ønker å fortsette med pluginbibliotek-installasjonen.",
"Unknown": "Ukjent",
"LabelMediaDetails": "Mediedetaljer",
"HeaderConfirmRepositoryInstallation": "Bekreft Tillegslager-Installasjon",
"LabelDeveloper": "Utvikler",
"LogLevel.Debug": "Feilsøk",
"LogLevel.Information": "Informasjon",
"LogLevel.Warning": "Advarsel",
"LogLevel.Error": "Feil",
"LogLevel.Critical": "Kritisk",
"LogLevel.None": "Ingen",
"AllowSegmentDeletion": "Slett segmenter",
"AllowSegmentDeletionHelp": "Slett gamle segmenter etter de har blitt sendt til klienten. Dette forhindrer at hele den transkodede filen må lagres på disken. Kommer kun til å funke med begrensning aktivert. Slå dette av om du opplever avspillingsproblemer.",
"LabelThrottleDelaySeconds": "Begrens etter",
"LabelThrottleDelaySecondsHelp": "Tid i sekunder hvoretter transkoderen vil bli begrenset. Må være stor nok til at klienten kan opprettholde en sunn buffer. Funker kun om begrensning er påskrudd.",
"LabelSegmentKeepSeconds": "Tid å beholde segmenter",
"LabelSegmentKeepSecondsHelp": "Tid i sekunder som segmenter skal beholdes for før de blir overskrevet. Må være større enn \"Begrens etter\". Funker kun om segmentsletting er påskrudd.",
"LabelLevel": "Nivå"
} }

View file

@ -382,7 +382,7 @@
"HeaderYears": "Jaren", "HeaderYears": "Jaren",
"Help": "Hulp", "Help": "Hulp",
"Hide": "Verbergen", "Hide": "Verbergen",
"HideWatchedContentFromLatestMedia": "Bekeken inhoud verbergen uit 'Onlangs toegevoegde media'", "HideWatchedContentFromLatestMedia": "Gekeken 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.",
@ -474,7 +474,7 @@
"LabelEnableDlnaClientDiscoveryInterval": "Interval voor het zoeken naar clients", "LabelEnableDlnaClientDiscoveryInterval": "Interval voor het zoeken naar clients",
"LabelEnableDlnaClientDiscoveryIntervalHelp": "Bepaalt de duur in seconden tussen twee SSDP-zoekopdrachten.", "LabelEnableDlnaClientDiscoveryIntervalHelp": "Bepaalt de duur in seconden tussen twee SSDP-zoekopdrachten.",
"LabelEnableDlnaDebugLogging": "DLNA-foutopsporingslogboek inschakelen", "LabelEnableDlnaDebugLogging": "DLNA-foutopsporingslogboek inschakelen",
"LabelEnableDlnaDebugLoggingHelp": "Genereer grote logboekbestanden en is alleen bedoeld voor het troubleshooting doeleinden.", "LabelEnableDlnaDebugLoggingHelp": "Genereert grote logboekbestanden en is alleen bedoeld voor troubleshooting-doeleinden.",
"LabelEnableDlnaPlayTo": "'Play to' DLNA-functie inschakelen", "LabelEnableDlnaPlayTo": "'Play to' DLNA-functie inschakelen",
"LabelEnableDlnaPlayToHelp": "Apparaten detecteren binnen uw netwerk en maak het mogelijk om ze op afstand te gebruiken.", "LabelEnableDlnaPlayToHelp": "Apparaten detecteren binnen uw netwerk en maak het mogelijk om ze op afstand te gebruiken.",
"LabelEnableDlnaServer": "DLNA-server inschakelen", "LabelEnableDlnaServer": "DLNA-server inschakelen",
@ -927,7 +927,7 @@
"Quality": "Kwaliteit", "Quality": "Kwaliteit",
"Raised": "Verhoogd", "Raised": "Verhoogd",
"Rate": "Beoordelen", "Rate": "Beoordelen",
"RecentlyWatched": "Onlangs bekeken", "RecentlyWatched": "Onlangs gekeken",
"RecommendationBecauseYouLike": "Omdat je {0} leuk vindt", "RecommendationBecauseYouLike": "Omdat je {0} leuk vindt",
"RecommendationBecauseYouWatched": "Omdat je {0} hebt gekeken", "RecommendationBecauseYouWatched": "Omdat je {0} hebt gekeken",
"RecommendationDirectedBy": "Geregisseerd door {0}", "RecommendationDirectedBy": "Geregisseerd door {0}",
@ -1760,5 +1760,7 @@
"AllowSegmentDeletion": "Segmenten verwijderen", "AllowSegmentDeletion": "Segmenten verwijderen",
"LabelThrottleDelaySeconds": "Afknijpen na", "LabelThrottleDelaySeconds": "Afknijpen na",
"LabelThrottleDelaySecondsHelp": "Tijd in seconden waarna de transcoder wordt afgeknepen. Deze tijd moet voldoende lang zijn zodat de cliënt een gezonde buffer in stand kan houden. Werkt alleen als afknijpen is ingeschakeld.", "LabelThrottleDelaySecondsHelp": "Tijd in seconden waarna de transcoder wordt afgeknepen. Deze tijd moet voldoende lang zijn zodat de cliënt een gezonde buffer in stand kan houden. Werkt alleen als afknijpen is ingeschakeld.",
"LabelSegmentKeepSeconds": "Bewaartijd segmenten" "LabelSegmentKeepSeconds": "Bewaartijd segmenten",
"LabelBackdropScreensaverIntervalHelp": "Het aantal seconden dat een achtergrondafbeelding wordt getoond als onderdeel van de schermbeveiliging.",
"LabelBackdropScreensaverInterval": "Interval schermbeveiliging"
} }

View file

@ -311,7 +311,7 @@
"HeaderLibraryFolders": "Foldery biblioteki", "HeaderLibraryFolders": "Foldery biblioteki",
"HeaderLibraryOrder": "Kolejność biblioteki", "HeaderLibraryOrder": "Kolejność biblioteki",
"HeaderLibrarySettings": "Ustawienia biblioteki", "HeaderLibrarySettings": "Ustawienia biblioteki",
"HeaderLiveTvTunerSetup": "Konfiguracja tunera telewizyjnego", "HeaderLiveTvTunerSetup": "Konfiguracja tunera TV",
"HeaderLoginFailure": "Niepowodzenie logowania", "HeaderLoginFailure": "Niepowodzenie logowania",
"HeaderMedia": "Multimedia", "HeaderMedia": "Multimedia",
"HeaderMediaFolders": "Foldery mediów", "HeaderMediaFolders": "Foldery mediów",
@ -1396,7 +1396,7 @@
"HeaderAddUser": "Dodaj użytkownika", "HeaderAddUser": "Dodaj użytkownika",
"HeaderAddUpdateSubtitle": "Dodaj/Zaktualizuj napisy", "HeaderAddUpdateSubtitle": "Dodaj/Zaktualizuj napisy",
"EnableTonemapping": "Włącz Tone mapping", "EnableTonemapping": "Włącz Tone mapping",
"AllowTonemappingHelp": "Mapowanie tonalne może przekształcić zakres dynamiczny wideo z HDR na SDR, zachowując jednocześnie szczegóły obrazu i kolory, które są bardzo ważnymi informacjami dla odwzorowania oryginalnej sceny. Obecnie działa tylko z filmami 10bit HDR10, HLG i DoVi. Wymaga to odpowiedniego środowiska uruchomieniowego OpenCL lub CUDA.", "AllowTonemappingHelp": "Mapowanie tonalne może przekształcić zakres dynamiczny wideo z HDR na SDR, zachowując jednocześnie szczegóły obrazu i kolory, które są bardzo ważnymi informacjami dla odwzorowania oryginalnej sceny. Obecnie działa tylko z 10-bitowymi filmami HDR10, HLG i DoVi. Wymaga to odpowiedniego środowiska wykonawczego OpenCL lub CUDA.",
"TonemappingAlgorithmHelp": "Mapowanie tonów może zostać dostrojone. Jeśli nie znasz tych opcji, pozostaw domyślne wartości. Domyślna wartość to 'BT.2390'.", "TonemappingAlgorithmHelp": "Mapowanie tonów może zostać dostrojone. Jeśli nie znasz tych opcji, pozostaw domyślne wartości. Domyślna wartość to 'BT.2390'.",
"PreferFmp4HlsContainerHelp": "Preferuj fMP4 jako domyślny format dla HLS, pozwalając na bezpośrednie odtwarzanie zawartości HEVC na wspieranych urządzeniach.", "PreferFmp4HlsContainerHelp": "Preferuj fMP4 jako domyślny format dla HLS, pozwalając na bezpośrednie odtwarzanie zawartości HEVC na wspieranych urządzeniach.",
"PreferFmp4HlsContainer": "Preferuj format fMP4-HLS", "PreferFmp4HlsContainer": "Preferuj format fMP4-HLS",
@ -1761,5 +1761,7 @@
"LabelSegmentKeepSeconds": "Czas przechowywania segmentów", "LabelSegmentKeepSeconds": "Czas przechowywania segmentów",
"LabelSegmentKeepSecondsHelp": "Czas w sekundach, przez który segmenty powinny być przechowywane, zanim zostaną nadpisane. Musi być większy niż „Ograniczaj po”. Działa tylko wtedy, gdy włączone jest usuwanie segmentów.", "LabelSegmentKeepSecondsHelp": "Czas w sekundach, przez który segmenty powinny być przechowywane, zanim zostaną nadpisane. Musi być większy niż „Ograniczaj po”. Działa tylko wtedy, gdy włączone jest usuwanie segmentów.",
"LabelThrottleDelaySeconds": "Ograniczaj po", "LabelThrottleDelaySeconds": "Ograniczaj po",
"LabelThrottleDelaySecondsHelp": "Czas w sekundach, po którym transkoder zostanie ograniczony. Musi być wystarczająco duży, aby klient mógł utrzymać właściwy bufor. Działa tylko wtedy, gdy włączone jest ograniczanie." "LabelThrottleDelaySecondsHelp": "Czas w sekundach, po którym transkoder zostanie ograniczony. Musi być wystarczająco duży, aby klient mógł utrzymać właściwy bufor. Działa tylko wtedy, gdy włączone jest ograniczanie.",
"LabelBackdropScreensaverIntervalHelp": "Czas w sekundach między różnymi fototapetami podczas korzystania z wygaszacza ekranu z fototapetami.",
"LabelBackdropScreensaverInterval": "Interwał fototapet wygaszacza ekranu"
} }

View file

@ -93,5 +93,13 @@
"ButtonClose": "Shut", "ButtonClose": "Shut",
"Favorites": "Finest Loot", "Favorites": "Finest Loot",
"Genres": "types o' booty", "Genres": "types o' booty",
"HeaderAlbumArtists": "Buccaneers o' the musical arts" "HeaderAlbumArtists": "Buccaneers o' the musical arts",
"AllLibraries": "All Tomes",
"AllowedRemoteAddressesHelp": "List o' IP ports or IP/netmask regions fer ships that be allowed to dock remotely. If ye leave it empty, all remote vessels be welcome.",
"AllLanguages": "All Tongues",
"AllEpisodes": "All tales",
"AllComplexFormats": "All Fancy Codecs (ARR, SSA, BootySub, Pirate GoldS, Swabby, Charts, …)",
"AllowFfmpegThrottling": "Rein in Code Scurvy",
"Channels": "Channels",
"AllowCollectionManagement": "Permit this scallywag to handle treasures"
} }

View file

@ -442,7 +442,7 @@
"MessageNoPluginsInstalled": "Não existe nenhuma extensão instalada.", "MessageNoPluginsInstalled": "Não existe nenhuma extensão instalada.",
"MessageNoTrailersFound": "Instale o canal de trailers para melhorar a sua experiência, adicionando uma biblioteca de trailers da internet.", "MessageNoTrailersFound": "Instale o canal de trailers para melhorar a sua experiência, adicionando uma biblioteca de trailers da internet.",
"MessageNothingHere": "Nada aqui.", "MessageNothingHere": "Nada aqui.",
"MessagePasswordResetForUsers": "As palavras-passe dos seguintes utilizadores foram repostas. Deverão utilizar os 'Easy PIN' que foram usados para realizar a reposição para iniciar sessão.", "MessagePasswordResetForUsers": "As palavras-passe dos seguintes utilizadores foram repostas. Deverão utilizar os PINs que foram usados para realizar a reposição para iniciar sessão.",
"MessagePleaseEnsureInternetMetadata": "Certifique-se que a transferência de metadados da Internet está ativa.", "MessagePleaseEnsureInternetMetadata": "Certifique-se que a transferência de metadados da Internet está ativa.",
"MessageReenableUser": "Veja abaixo para reativar", "MessageReenableUser": "Veja abaixo para reativar",
"MessageTheFollowingLocationWillBeRemovedFromLibrary": "As seguintes pastas multimédia serão removidas da Biblioteca", "MessageTheFollowingLocationWillBeRemovedFromLibrary": "As seguintes pastas multimédia serão removidas da Biblioteca",
@ -1413,7 +1413,7 @@
"SmallCaps": "Maiúsculas reduzidas", "SmallCaps": "Maiúsculas reduzidas",
"LabelTonemappingRange": "Alcance do Tone Mapping", "LabelTonemappingRange": "Alcance do Tone Mapping",
"TonemappingAlgorithmHelp": "O Tone Mapping pode ser afinado. Se não estiver familiarizado com estas opções, mantenha-as nas opções padrão. O valor recomendado é 'BT.2390'.", "TonemappingAlgorithmHelp": "O Tone Mapping pode ser afinado. Se não estiver familiarizado com estas opções, mantenha-as nas opções padrão. O valor recomendado é 'BT.2390'.",
"AllowTonemappingHelp": "O processo de Tone Mapping transforma o Dynamic Range de um vídeo HDR em SDR, mantendo os detalhes e as cores, sendo estes bastante importantes para preservar a cena original. Atualmente funciona apenas com vídeos HDR10 ou HLG. Esta opção requer os executáveis CUDA ou OpenCL correspondentes.", "AllowTonemappingHelp": "O processo de Tone Mapping transforma o Dynamic Range de um vídeo HDR em SDR, mantendo os detalhes e as cores, sendo estes bastante importantes para preservar a cena original. Atualmente funciona apenas com vídeos HDR10 10bit, HLG e DoVi. Esta opção requer os executáveis CUDA ou OpenCL correspondentes.",
"LabelMaxMuxingQueueSizeHelp": "Número máximo de pacotes armazenados em <i>buffer</i> enquanto aguardam que todas as transmissões iniciem. Tente aumentá-lo caso se depare com o seguinte erro nos <i>registos</i> do FFmpeg \"Too many packets buffered for output stream\". O valor recomendado é 2048.", "LabelMaxMuxingQueueSizeHelp": "Número máximo de pacotes armazenados em <i>buffer</i> enquanto aguardam que todas as transmissões iniciem. Tente aumentá-lo caso se depare com o seguinte erro nos <i>registos</i> do FFmpeg \"Too many packets buffered for output stream\". O valor recomendado é 2048.",
"DeleteAll": "Apagar tudo", "DeleteAll": "Apagar tudo",
"DeleteDevicesConfirmation": "Tem a certeza que deseja remover todos os dispositivos? Todas as outras sessões serão terminadas. Os dispositivos reaparecerão da próxima vez que um utilizador iniciar sessão.", "DeleteDevicesConfirmation": "Tem a certeza que deseja remover todos os dispositivos? Todas as outras sessões serão terminadas. Os dispositivos reaparecerão da próxima vez que um utilizador iniciar sessão.",
@ -1640,9 +1640,9 @@
"MediaInfoDvVersionMajor": "Versão DV (Major)", "MediaInfoDvVersionMajor": "Versão DV (Major)",
"MediaInfoDoViTitle": "Título DV", "MediaInfoDoViTitle": "Título DV",
"VideoRangeTypeNotSupported": "O tipo de intervalo deste vídeo não é suportado", "VideoRangeTypeNotSupported": "O tipo de intervalo deste vídeo não é suportado",
"LabelVppTonemappingContrastHelp": "Aplicar ganho de contrate ao Tone Mapping VPP. Os valores recomendados e padrão são 1.2 e 1.", "LabelVppTonemappingContrastHelp": "Aplicar ganho de contrate ao Tone Mapping VPP. O valor recomendado e padrão é 1.",
"LabelVppTonemappingContrast": "Ganho de contraste para Tone Mapping VPP", "LabelVppTonemappingContrast": "Ganho de contraste para Tone Mapping VPP",
"LabelVppTonemappingBrightnessHelp": "Aplicar ganho de brilho no Tone Mapping VPP. Os valores recomendados e padrão são 0.", "LabelVppTonemappingBrightnessHelp": "Aplicar ganho de brilho no Tone Mapping VPP. Os valores recomendados e padrão são 16 e 0.",
"LabelVppTonemappingBrightness": "Ganho de brilho para Tone Mapping VPP", "LabelVppTonemappingBrightness": "Ganho de brilho para Tone Mapping VPP",
"EnableSplashScreen": "Ativar ecrã de lançamento", "EnableSplashScreen": "Ativar ecrã de lançamento",
"EnableEnhancedNvdecDecoderHelp": "Implementação experimental do NVDEC, não ative esta opção a não ser que encontre erros.", "EnableEnhancedNvdecDecoderHelp": "Implementação experimental do NVDEC, não ative esta opção a não ser que encontre erros.",
@ -1725,5 +1725,28 @@
"Experimental": "Experimental", "Experimental": "Experimental",
"MessageRenameMediaFolder": "Renomear uma biblioteca de multimédia fará com que todos os metadados sejam perdidos, proceda com cautela.", "MessageRenameMediaFolder": "Renomear uma biblioteca de multimédia fará com que todos os metadados sejam perdidos, proceda com cautela.",
"EnableCardLayout": "Mostrar em formato mosaico", "EnableCardLayout": "Mostrar em formato mosaico",
"OptionDateShowAdded": "Data de adição da Série" "OptionDateShowAdded": "Data de adição da Série",
"LabelLevel": "Nível",
"LabelSystem": "Sistema",
"LogLevel.Debug": "Debug",
"LabelDeveloper": "Desenvolvedor",
"LabelTonemappingMode": "Modo de Tone Mapping",
"LabelDate": "Data",
"LogLevel.Information": "Informação",
"Unknown": "Desconhecido",
"HeaderEpisodesStatus": "Estado do Episódio",
"LabelMediaDetails": "Detalhes Multimédia",
"LogLevel.Trace": "Vestígio",
"LogLevel.Error": "Erro",
"LogLevel.Critical": "Crítico",
"LogLevel.None": "Nenhum",
"LogLevel.Warning": "Aviso",
"HeaderConfirmRepositoryInstallation": "Confirmar a Instalação do Repositório de Plugins",
"AllowSegmentDeletion": "Apagar segmentos",
"AllowSegmentDeletionHelp": "Apagar segmentos velhos depois de terem sido enviados para o cliente. Isto previne o ter de guardar todo o ficheiro transcodificado no disco. Funcionará apenas com o estrangulamento ligado. Desliga esta opção se tiveres problemas de reprodução.",
"LabelThrottleDelaySeconds": "Estrangular depois",
"LabelThrottleDelaySecondsHelp": "Tempo em segundos depois o qual o transcodificador irá ser estrangulado. Deve ser suficientemente grande para o cliente manter um buffer saudável. Só funciona se o estrangulamento estiver ligado.",
"LabelSegmentKeepSeconds": "Tempo para guardar segmentos",
"LabelSegmentKeepSecondsHelp": "Tempo em segundos no qual os segmentos deve ser guardados antes de serem gravados por cima. Deve ser superior a \"Estrangular depois\". Só funciona se a eliminação de segmentos estiver ligada.",
"LabelStereoDownmixAlgorithm": "Algoritmo para reduzir a mistura para Stereo"
} }

View file

@ -83,7 +83,7 @@
"Screenshot": "Captura de Ecrã", "Screenshot": "Captura de Ecrã",
"Schedule": "Agendamentos", "Schedule": "Agendamentos",
"ScanForNewAndUpdatedFiles": "Procurar ficheiros novos ou actualizados", "ScanForNewAndUpdatedFiles": "Procurar ficheiros novos ou actualizados",
"SaveSubtitlesIntoMediaFoldersHelp": "Salvar arquivos de legendas junto aos arquivos vídeo facilita o gerenciamento.", "SaveSubtitlesIntoMediaFoldersHelp": "Guardar ficheiros de legendas junto aos ficheiros vídeo facilita a sua gestão.",
"SaveSubtitlesIntoMediaFolders": "Guardar legendas nas pastas multimédia", "SaveSubtitlesIntoMediaFolders": "Guardar legendas nas pastas multimédia",
"Save": "Guardar", "Save": "Guardar",
"Saturday": "Sábado", "Saturday": "Sábado",
@ -1053,7 +1053,7 @@
"NoNewDevicesFound": "Não foram encontrados novos dispositivos. Para adicionar um novo sintonizador, feche esta caixa de diálogo e insira as informações do dispositivo manualmente.", "NoNewDevicesFound": "Não foram encontrados novos dispositivos. Para adicionar um novo sintonizador, feche esta caixa de diálogo e insira as informações do dispositivo manualmente.",
"NoCreatedLibraries": "Parece que você ainda não criou nenhuma biblioteca. {0} Deseja criar um agora? {1}", "NoCreatedLibraries": "Parece que você ainda não criou nenhuma biblioteca. {0} Deseja criar um agora? {1}",
"No": "Não", "No": "Não",
"Mobile": "Celular", "Mobile": "Telemóvel",
"MetadataSettingChangeHelp": "Alterar as configurações de metadados afetará o novo conteúdo adicionado daqui para frente. Para atualizar o conteúdo existente, abra a tela de detalhes e clique no botão atualizar ou execute atualizações em massa usando o gerenciador de metadados.", "MetadataSettingChangeHelp": "Alterar as configurações de metadados afetará o novo conteúdo adicionado daqui para frente. Para atualizar o conteúdo existente, abra a tela de detalhes e clique no botão atualizar ou execute atualizações em massa usando o gerenciador de metadados.",
"MetadataManager": "Gestor de metadados", "MetadataManager": "Gestor de metadados",
"Metadata": "Metadados", "Metadata": "Metadados",
@ -1063,12 +1063,12 @@
"MessagePlayAccessRestricted": "A reprodução deste conteúdo está atualmente restrita. Entre em contato com o administrador do servidor para obter mais informações.", "MessagePlayAccessRestricted": "A reprodução deste conteúdo está atualmente restrita. Entre em contato com o administrador do servidor para obter mais informações.",
"MessageNoServersAvailable": "Nenhum servidor foi encontrado usando a descoberta automática de servidores.", "MessageNoServersAvailable": "Nenhum servidor foi encontrado usando a descoberta automática de servidores.",
"MessageNoCollectionsAvailable": "As coleções permitem que você desfrute de agrupamentos personalizados de filmes, séries e álbuns. Clique no botão + para começar a criar coleções.", "MessageNoCollectionsAvailable": "As coleções permitem que você desfrute de agrupamentos personalizados de filmes, séries e álbuns. Clique no botão + para começar a criar coleções.",
"MessageConfirmAppExit": "Você quer sair?", "MessageConfirmAppExit": "Deseja sair?",
"MediaInfoLayout": "Layout", "MediaInfoLayout": "Layout",
"MediaInfoLanguage": "Língua", "MediaInfoLanguage": "Idioma",
"MediaInfoInterlaced": "Entrelaçada", "MediaInfoInterlaced": "Entrelaçado",
"MediaInfoFramerate": "Taxa de quadros", "MediaInfoFramerate": "Taxa de quadros",
"MediaInfoForced": "Forçar", "MediaInfoForced": "Forçado",
"MediaInfoExternal": "Externo", "MediaInfoExternal": "Externo",
"MediaInfoDefault": "Padrão", "MediaInfoDefault": "Padrão",
"MediaInfoCodecTag": "Codec tag", "MediaInfoCodecTag": "Codec tag",
@ -1076,7 +1076,7 @@
"MediaInfoBitrate": "Taxa de bits", "MediaInfoBitrate": "Taxa de bits",
"MediaInfoBitDepth": "Profundidade de bits", "MediaInfoBitDepth": "Profundidade de bits",
"MediaInfoAspectRatio": "Proporção da tela", "MediaInfoAspectRatio": "Proporção da tela",
"ManageRecording": "Gerenciar gravações", "ManageRecording": "Gerenciar gravação",
"Logo": "Logo", "Logo": "Logo",
"List": "Lista", "List": "Lista",
"LeaveBlankToNotSetAPassword": "Você pode deixar esse campo em branco para definir nenhuma senha.", "LeaveBlankToNotSetAPassword": "Você pode deixar esse campo em branco para definir nenhuma senha.",
@ -1084,22 +1084,22 @@
"Large": "Ampla", "Large": "Ampla",
"LanNetworksHelp": "Lista separada por vírgula de endereços IP ou entradas de máscara de rede/IP para redes que serão consideradas na rede local ao impor restrições de largura de banda. Se definido, todos os outros endereços IP serão considerados na rede externa e estarão sujeitos às restrições de largura de banda externa. Se deixado em branco, apenas a sub-rede do servidor é considerada na rede local.", "LanNetworksHelp": "Lista separada por vírgula de endereços IP ou entradas de máscara de rede/IP para redes que serão consideradas na rede local ao impor restrições de largura de banda. Se definido, todos os outros endereços IP serão considerados na rede externa e estarão sujeitos às restrições de largura de banda externa. Se deixado em branco, apenas a sub-rede do servidor é considerada na rede local.",
"LabelffmpegPathHelp": "O caminho para o arquivo ou pasta do aplicativo ffmpeg que contém o ffmpeg.", "LabelffmpegPathHelp": "O caminho para o arquivo ou pasta do aplicativo ffmpeg que contém o ffmpeg.",
"LabelffmpegPath": "FFmpeg caminho", "LabelffmpegPath": "Caminho do FFmpeg",
"LabelYear": "Ano", "LabelYear": "Ano",
"LabelXDlnaDoc": "Documentação X-DLNA", "LabelXDlnaDoc": "Documentação X-DLNA",
"LabelXDlnaCap": "Limite X-DLNA", "LabelXDlnaCap": "Limite X-DLNA",
"LabelWeb": "Web", "LabelWeb": "Web",
"LabelVideoCodec": "Vídeo: codec", "LabelVideoCodec": "Codec do vídeo",
"LabelVideoBitrate": "Vídeo taxa de bits", "LabelVideoBitrate": "Taxa de bits do vídeo",
"DashboardArchitecture": "Arquitetura: {0}", "DashboardArchitecture": "Arquitetura: {0}",
"DashboardServerName": "Servidor: {0}", "DashboardServerName": "Servidor: {0}",
"DashboardVersionNumber": "Versão: {0}", "DashboardVersionNumber": "Versão: {0}",
"LabelVersion": "Versão", "LabelVersion": "Versão",
"LabelVaapiDeviceHelp": "Este é o nó de renderização usado para aceleração de hardware.", "LabelVaapiDeviceHelp": "Este é o nó de renderização usado para aceleração de hardware.",
"LabelVaapiDevice": "VA API Dispositivo", "LabelVaapiDevice": "Dispositivo VA-API",
"LabelUserAgent": "Agente de usuário", "LabelUserAgent": "Agente de usuário",
"LabelTranscodes": "Transcodificação", "LabelTranscodes": "Transcodificação",
"LabelTranscodingFramerate": "Transcodificação frame por segundo", "LabelTranscodingFramerate": "Transcodificação de taxa de quadros",
"LabelTranscodingProgress": "Progresso da transcodificação", "LabelTranscodingProgress": "Progresso da transcodificação",
"LabelTitle": "Título", "LabelTitle": "Título",
"LabelTheme": "Tema", "LabelTheme": "Tema",
@ -1135,26 +1135,26 @@
"Episode": "Episódio", "Episode": "Episódio",
"OptionRequirePerfectSubtitleMatch": "Baixar apenas legendas que correspondem corretamente aos arquivos de vídeo", "OptionRequirePerfectSubtitleMatch": "Baixar apenas legendas que correspondem corretamente aos arquivos de vídeo",
"OptionRandom": "Aleatório", "OptionRandom": "Aleatório",
"OptionLoginAttemptsBeforeLockout": "Determinar a quantidade de tentativas de login incorretas até que ocorra bloqueio.", "OptionLoginAttemptsBeforeLockout": "Determina a quantidade de tentativas de login incorretas até que ocorra bloqueio.",
"OptionIsSD": "Definição padrão", "OptionIsSD": "Definição padrão",
"OptionIsHD": "Alta definição", "OptionIsHD": "Alta definição",
"OptionEnableExternalContentInSuggestions": "Habilitar sugestão de conteúdo externo", "OptionEnableExternalContentInSuggestions": "Habilitar sugestão de conteúdo externo",
"OptionDisplayFolderViewHelp": "Exiba pastas ao lado de outras bibliotecas de mídia. Isso pode ser útil se você quiser ter uma visualização simples de pastas.", "OptionDisplayFolderViewHelp": "Exiba pastas ao lado de outras bibliotecas de mídia. Isso pode ser útil se você quiser ter uma visualização simples de pastas.",
"OptionDisplayFolderView": "Exibir uma exibição de pasta para mostrar pastas de mídia simples", "OptionDisplayFolderView": "Exibir uma exibição de pasta para mostrar pastas de mídia simples",
"OptionBluray": "Bluray", "OptionBluray": "Blu-ray",
"OptionAllowVideoPlaybackRemuxing": "Permitir execução de vídeo que requer conversão sem recodificar", "OptionAllowVideoPlaybackRemuxing": "Permitir reprodução de vídeo que requer conversão sem recodificação",
"OptionAllowLinkSharingHelp": "Somente páginas da web que contêm informações sobre mídia são compartilhadas. Os arquivos de mídia nunca são compartilhados publicamente. O tempo de compartilhamento é limitado e expira após {0} dias.", "OptionAllowLinkSharingHelp": "Somente páginas da web que contêm informações sobre mídia são compartilhadas. Os arquivos de mídia nunca são compartilhados publicamente. As ações são limitadas no tempo e expiram após {0} dias.",
"Option3D": "3D", "Option3D": "3D",
"NextUp": "Próximo", "NextUp": "A seguir",
"Next": "Próximo", "Next": "Próximo",
"NewEpisodesOnly": "apenas novos episódios", "NewEpisodesOnly": "Apenas novos episódios",
"NewEpisodes": "Novos episódios", "NewEpisodes": "Novos episódios",
"NewCollectionHelp": "Coleções permitem criar agrupamentos personalizados de filmes ou de outros conteúdos da biblioteca.", "NewCollectionHelp": "As coleções permitem criar agrupamentos personalizados de filmes e outros conteúdos da biblioteca.",
"BoxSet": "Coleção", "BoxSet": "Coleção",
"AlbumArtist": "Álbum do Artista", "AlbumArtist": "Álbum do Artista",
"Quality": "Qualidade", "Quality": "Qualidade",
"Previous": "Anterior", "Previous": "Anterior",
"PictureInPicture": "vídeo destacado", "PictureInPicture": "Vídeo em janela",
"OptionRequirePerfectSubtitleMatchHelp": "Solicitar a \"correspondência perfeita\" filtrará as legendas incluindo apenas aquelas que foram testadas com o arquivo de vídeo. Desmarcar isto aumentará a probabilidade de baixar legendas, mas poderá obter legendas incorretas ou não sincronizadas.", "OptionRequirePerfectSubtitleMatchHelp": "Solicitar a \"correspondência perfeita\" filtrará as legendas incluindo apenas aquelas que foram testadas com o arquivo de vídeo. Desmarcar isto aumentará a probabilidade de baixar legendas, mas poderá obter legendas incorretas ou não sincronizadas.",
"StopRecording": "Parar gravação", "StopRecording": "Parar gravação",
"ShowYear": "Exibir ano", "ShowYear": "Exibir ano",
@ -1186,7 +1186,7 @@
"OptionExtractChapterImage": "Ativar extração de imagem de capítulo", "OptionExtractChapterImage": "Ativar extração de imagem de capítulo",
"PreferEmbeddedEpisodeInfosOverFileNames": "Preferir informações de episódios incorporados sobre nomes de arquivos", "PreferEmbeddedEpisodeInfosOverFileNames": "Preferir informações de episódios incorporados sobre nomes de arquivos",
"PreferEmbeddedEpisodeInfosOverFileNamesHelp": "Isso usa as informações do episódio dos metadados incorporados, se disponíveis.", "PreferEmbeddedEpisodeInfosOverFileNamesHelp": "Isso usa as informações do episódio dos metadados incorporados, se disponíveis.",
"PreferEmbeddedTitlesOverFileNamesHelp": "Isso determina o título quando nenhum metadado da Internet ou local está disponível.", "PreferEmbeddedTitlesOverFileNamesHelp": "Determina o título quando nenhum metadado da Internet ou local está disponível.",
"PlaybackErrorNoCompatibleStream": "Este cliente não é compatível com a mídia e o servidor não está enviando um formato de mídia compatível.", "PlaybackErrorNoCompatibleStream": "Este cliente não é compatível com a mídia e o servidor não está enviando um formato de mídia compatível.",
"Person": "Pessoa", "Person": "Pessoa",
"LabelRequireHttpsHelp": "Se marcado, o servidor redirecionará automaticamente todas as solicitações por HTTP para HTTPS. Isso não terá efeito se o servidor não estiver escutando HTTPS.", "LabelRequireHttpsHelp": "Se marcado, o servidor redirecionará automaticamente todas as solicitações por HTTP para HTTPS. Isso não terá efeito se o servidor não estiver escutando HTTPS.",

View file

@ -838,7 +838,7 @@
"MoveLeft": "Двигать влево", "MoveLeft": "Двигать влево",
"MoveRight": "Двигать вправо", "MoveRight": "Двигать вправо",
"MovieLibraryHelp": "Просмотрите {0}руководство по именованию фильмов{1}.", "MovieLibraryHelp": "Просмотрите {0}руководство по именованию фильмов{1}.",
"Movies": "Кино", "Movies": "Фильмы",
"Mute": "Отключить звук", "Mute": "Отключить звук",
"MySubtitles": "Мои субтитры", "MySubtitles": "Мои субтитры",
"Name": "Имя", "Name": "Имя",
@ -1761,5 +1761,7 @@
"LabelThrottleDelaySeconds": "Ограничить после", "LabelThrottleDelaySeconds": "Ограничить после",
"LabelThrottleDelaySecondsHelp": "Время в секундах, после которого транскодер будет приторможен. Должно быть достаточно большим, чтобы клиент мог поддерживать работоспособный буфер. Работает только если ограничение включено.", "LabelThrottleDelaySecondsHelp": "Время в секундах, после которого транскодер будет приторможен. Должно быть достаточно большим, чтобы клиент мог поддерживать работоспособный буфер. Работает только если ограничение включено.",
"LabelSegmentKeepSeconds": "Время сохранения сегментов", "LabelSegmentKeepSeconds": "Время сохранения сегментов",
"LogLevel.Error": "Ошибка" "LogLevel.Error": "Ошибка",
"LabelBackdropScreensaverInterval": "Интервал между фонами у заставки",
"LabelBackdropScreensaverIntervalHelp": "Время в секундах между разными фонами, когда используется заставка."
} }

View file

@ -1078,10 +1078,10 @@
"MessageUnsetContentHelp": "Obsah bude zobrazený ako jednoduché priečinky. Pre lepšie výsledky použite manažér metadát na nastavenie typu obsahu podpriečinkov.", "MessageUnsetContentHelp": "Obsah bude zobrazený ako jednoduché priečinky. Pre lepšie výsledky použite manažér metadát na nastavenie typu obsahu podpriečinkov.",
"MessageUnableToConnectToServer": "Nie sme schopný sa aktuálne pripojiť k vybranému serveru. Prosím, uistite sa, že je spustený a skúste to znovu.", "MessageUnableToConnectToServer": "Nie sme schopný sa aktuálne pripojiť k vybranému serveru. Prosím, uistite sa, že je spustený a skúste to znovu.",
"MessageReenableUser": "Pozrite nižšie pre znovu-povolenie", "MessageReenableUser": "Pozrite nižšie pre znovu-povolenie",
"MessagePluginInstallDisclaimer": "Zásuvné moduly vytvorené členmi komunity sú úžasná cesta ako zlepšiť váš zážitok s dodatočnými funkciami a benefitmi. Pred inštaláciou sa prosím oboznámte s efektmi, ktoré môžu mať vplyv na váš server, ako dlhšie prehľadávanie knižníc, dodatočné procesy na pozadí a zníženie stability systému.", "MessagePluginInstallDisclaimer": "UPOZORNENIE: Inštalácia zásuvného modulu tretej strany má určité riziká. Modul môže obsahovať nestabilný alebo škodlivý kód a môže sa kedykoľvek zmeniť. Inštalujte zásuvné moduly len od autorov, ktorým dôverujete a majte na vedomí ich potenciálne následky, vrátane kontaktovania externých služieb, dlhšieho prehľadávanie knižníc alebo dodatočných procesov na pozadí.",
"MessagePluginConfigurationRequiresLocalAccess": "Pre konfiguráciu tohoto zásuvného modulu sa prihláste priamo na lokálny server.", "MessagePluginConfigurationRequiresLocalAccess": "Pre konfiguráciu tohoto zásuvného modulu sa prihláste priamo na lokálny server.",
"MessagePlayAccessRestricted": "Prehrávanie tohoto obsahu je aktuálne obmedzené. Prosím, kontaktujte svojho administrátora servera pre viac informácií.", "MessagePlayAccessRestricted": "Prehrávanie tohoto obsahu je aktuálne obmedzené. Prosím, kontaktujte svojho administrátora servera pre viac informácií.",
"MessagePasswordResetForUsers": "Nasledujúci používatelia si nechali obnoviť heslo. Teraz sa môžu prihlásiť s jednoduchým PIN kódom, ktorý použijú k vykonaniu obnovy hesla.", "MessagePasswordResetForUsers": "Nasledujúci používatelia si nechali obnoviť heslo. Teraz sa môžu prihlásiť s PIN kódmi, ktoré použili k pri obnove hesla.",
"MessageNoServersAvailable": "Žiadne servery neboli nájdené pomocou automatického objavovania serverov.", "MessageNoServersAvailable": "Žiadne servery neboli nájdené pomocou automatického objavovania serverov.",
"MessageNoMovieSuggestionsAvailable": "V súčasnosti nie sú k dispozícií žiadne filmové návrhy. Začnite pozerať a hodnotiť vaše filmy, potom sa sem vráťte pre vaše odporúčania.", "MessageNoMovieSuggestionsAvailable": "V súčasnosti nie sú k dispozícií žiadne filmové návrhy. Začnite pozerať a hodnotiť vaše filmy, potom sa sem vráťte pre vaše odporúčania.",
"MessageNoCollectionsAvailable": "Kolekcie vám umožnia užiť si vlastné zoskupenia filmov, seriálov a albumov. Kliknite na tlačítko '+' pre začatie vytvárania kolekcie.", "MessageNoCollectionsAvailable": "Kolekcie vám umožnia užiť si vlastné zoskupenia filmov, seriálov a albumov. Kliknite na tlačítko '+' pre začatie vytvárania kolekcie.",

View file

@ -354,5 +354,232 @@
"DatePlayed": "E luajtur me datën", "DatePlayed": "E luajtur me datën",
"ButtonSpace": "Hapsirë", "ButtonSpace": "Hapsirë",
"Digital": "Dixhital", "Digital": "Dixhital",
"EveryHour": "Çdo orë" "EveryHour": "Çdo orë",
"Experimental": "Eksperimentale",
"FastForward": "Shpejto",
"EnableNextVideoInfoOverlay": "Shfaq informacionin e videos së radhës gjatë luatjes",
"General": "Të përgjithshme",
"DropShadow": "Nënhije",
"EnableThemeVideosHelp": "Luani video tematike ne prapaskenë përgjatë navigimit të librarisë.",
"DisplayMissingEpisodesWithinSeasons": "Shfaq episodet që mungojnë brenda sezoneve",
"GroupBySeries": "Grupo sipas serive",
"EnableCinemaMode": "Formati Kinema",
"Features": "Veçoritë",
"DrmChannelsNotImported": "Kanalet me DRM nuk do të importohen.",
"ErrorStartHourGreaterThanEnd": "Koha e mbarimit duhet të jetë më e madhe se koha e fillimit.",
"EditMetadata": "Redaktoni të dhënat bazë",
"EnableNextVideoInfoOverlayHelp": "Në fund të videos, shfaq informacion përreth videos së radhës që shfaqet nga lista aktuale.",
"Filter": "Filtro",
"ErrorSavingTvProvider": "Ndodhi një problem gjatë ruajtjes së ofruesit televiziv. Ju lutem sigurohuni që të jetë i aksesueshëm dhe provoni përsëri.",
"ErrorAddingXmlTvFile": "Ndodhi një problem gjatë aksesimit të skedarit XMLTV. Sigurohuni që skedari në fjalë ekziston dhe provoni përsëri.",
"ErrorGettingTvLineups": "Ndodhi një problem gjatë shkarkimit të formacionit të TV-së. Ju lutem sigurohuni që informacioni juaj është korrekt dhe provoni përsëri.",
"ErrorPlayerNotFound": "Asnjë instrument nuk i gjend për median në fjalë.",
"FetchingData": "Duke marrë të dhëna të tjera",
"ErrorDefault": "Ndodhi një problem gjatë procesimit të kërkesës. Ju lutem provojeni përseri.",
"GroupVersions": "Versionet e grupimit",
"DownloadAll": "Shkarkoni të gjitha",
"CustomDlnaProfilesHelp": "Krijoni një profil të personalizuar për paisje të reja ose të anashkaloni profilin e sistemit.",
"FileReadError": "Ndodhi një problem gjatë leximit të skedarit.",
"EnableDisplayMirroring": "Pasqyrimi i pamjes",
"DisplayModeHelp": "Përzgjidhni stilin e faqosjes që dëshironi për ndërfaqe.",
"DefaultMetadataLangaugeDescription": "Këto janë vlerat e paracaktuara të cilat mund të ndryshohen në nivel librarie.",
"ConfirmDeleteItems": "Fshirja e ketyre gjërave nënkupton fshirjen nga sistemi dhe nga libraria juaj. Dëshironi të vazhdoni?",
"Filters": "Filtrat",
"ConfirmEndPlayerSession": "Dëshironi te fikni Jellyfin në {0}?",
"EnableHardwareEncoding": "Lejoni shifrimin me anë të paisjeve elektronike",
"EnableBlurHashHelp": "Imazhet që janë duke u ngarkuar do të shfaqen me një tiketë të veçantë.",
"Cursive": "Kursive",
"DirectPlayHelp": "Skedari është plotësisht e pajtueshme me përdoruesin dhe sesioni në fjalë është duke pranur skedarin siç është.",
"EnableRewatchingNextUpHelp": "Lejoni shfaqjen e episodeve të shikuara në seksionet e radhës.",
"GoogleCastUnsupported": "Google Cast nuk suportohet",
"AllowCollectionManagement": "Lejoni këtë përdorues për menaxhimin e koleksioneve",
"DisplayInMyMedia": "Shfaq në hyrje",
"DisplayMissingEpisodesWithinSeasonsHelp": "Duhet të jetë gjithashtu e lejueshme për libraritë TV në konfigurimin e serverit.",
"EnableAudioNormalization": "Normalizimi i audios",
"AllowSegmentDeletion": "Fshi pjesët",
"AllowSegmentDeletionHelp": "Fshi pjesët pasi të jenë dërguar tek përdoruesi. Kjo parandalon ruajtjen e të gjithë dosjes së transkoduar në disk. Punon vetëm kur \"Limitimi\" është i aktivizuar. Fikëni nëse keni ndonjë problem me shikimin.",
"LabelThrottleDelaySeconds": "Limito pas",
"LabelThrottleDelaySecondsHelp": "Koha në sekonda pas të ciles traskoduesi do të limitohet. Duhet të jetë majftueshëm e madhe që përdoruesi të ketë një hapësire të nevojshme. Punon vetëm kur \"Limitimi\" është i aktivizuar.",
"LabelSegmentKeepSeconds": "Koha e ruajtjes së pjesëve",
"LabelSegmentKeepSecondsHelp": "Koha në sekonda që pjesët duhen ruajtur para se të rishkruhen. Duhet të jetë më e madhe se fusha \"Limito pas\". Punon vetëm nëse fshirja e pjesëve është e aktivizuar.",
"DeleteDevicesConfirmation": "Dëshironi të fshini të gjitha paisjet? Të gjithe sesionet e tjera do te shkyçen. Paisjet do të rishfaqen herës tjetër kur një përdorues kyçet sërish.",
"EnablePhotosHelp": "Imazhet do të zbulohen dhe shfaqen përgjatë skedarëve të tjera mediatikë.",
"ErrorDeletingItem": "Ndodhi një problem gjatë fshirjes së artikullit në server. Ju lutem sigurohuni që Jellyfin kë të drejtë shkrimi në dosjen e medies dhe provoni përsëri.",
"HeaderSelectMetadataPathHelp": "Shfletoni ose vendosni shtegun ku dëshironi të ruani të dhënat bazë. Dosja duhet të jetë e shkrueshme.",
"HeaderSyncPlaySettings": "Përcaktimet e SyncPlay",
"HeaderApp": "Aplikacion",
"HeaderPlayOn": "Luaj",
"LabelAutomaticallyAddToCollection": "Shto automatikisht ne koleksion",
"HeaderAudioBooks": "Libra dëgjimor",
"HeaderBranding": "Markë",
"HeaderCancelRecording": "Anulloni regjistrimin",
"HeaderNewApiKey": "Çelës i ri për API",
"HeaderPreferredMetadataLanguage": "Gjuha e preferuar e të dhënave baze",
"LabelArtistsHelp": "Ndani artistët shumës me një pikëpresje.",
"HeaderMyDevice": "Paisja ime",
"HeaderRemoveMediaFolder": "Hiqni dosjen e Medies",
"HeaderAppearsOn": "Shfaqet në",
"ItemCount": "{0} artikuj",
"HeaderSelectServerCachePath": "Zgjidhni shtegun e të dhënave të memorizuara në Server",
"HeaderProfileServerSettingsHelp": "Këto vlera kontrollojnë mënyren sesi serveri paraqitet kundrejt përdoruesve.",
"HeaderVideoQuality": "Kualiteti i videos",
"Items": "Artikuj",
"HeaderLatestRecordings": "Regjistrimet e shtuara së fundmi",
"HeaderIdentification": "Identifikim",
"HeaderDeleteDevices": "Fshini të gjitha paisjet",
"HeaderUploadSubtitle": "Ngarko titrat",
"HeaderPassword": "Fjalëkalim",
"HeaderPaths": "Vendndodhjet",
"HeaderYears": "Vitet",
"HeaderRevisionHistory": "Historia e rishikimeve",
"HeaderSelectCertificatePath": "Zgjidh shtegun e çertefikatës",
"Image": "Imazh",
"InstallingPackage": "Duke instaluar {0} (versioni {1})",
"HeaderRecordingPostProcessing": "Procesimi pas regjistrimit",
"HeaderMediaFolders": "Dosjet e medies",
"HeaderSeasons": "Sezone",
"HeaderNextEpisodePlayingInValue": "Episodi i ri luhet në {0}",
"HeaderMedia": "Media",
"HeaderFrequentlyPlayed": "E luajtur shpeshherë",
"Hide": "Fsheh",
"HeaderPleaseSignIn": "Ju lutem kyçuni",
"HeaderLatestEpisodes": "Episodet e shtuara së fundmi",
"LabelAppNameExample": "Shembull: Sickbeard, Sonarr",
"HeaderNewRepository": "Vendndodhje e re",
"HeaderMyMedia": "Media ime",
"HeaderConfirmPluginInstallation": "Konfirmoni instalimin e shtojcës",
"HeaderUploadImage": "Ngarko imazhin",
"HeaderUninstallPlugin": "Ç'instalo shtojcën",
"HeaderActiveRecordings": "Regjistrime aktive",
"HeaderRemoveMediaLocation": "Hiqni vendndodhjen e Medies",
"HeaderContinueListening": "Vazhdoni me dëgjimin",
"HeaderDownloadSync": "Shkarko & Sinkronizo",
"HeaderImageSettings": "Përcaktimet e imazhit",
"HeaderSyncPlayEnabled": "SyncPlay e aktivizuar",
"HeaderHttpsSettings": "Përcaktimet e HTTPS",
"HttpsRequiresCert": "Të aktivizosh lidhje të sigurtë, ju duhet të keni një çertefikate SSL të besueshme, siç është Let's Encrypt. Ju lutem ose kini një çertefikatë të tillë, ose çaktivizoni lidhjet e sigurta.",
"HeaderMusicQuality": "Kualiteti i muzikes",
"HeaderSeriesOptions": "Opsionet e koleksionit",
"HeaderSubtitleProfile": "Profili i titrave",
"HeaderOnNow": "Ndezur tani",
"HeaderVideos": "Videot",
"HeaderCancelSeries": "Anulloni serialin",
"HeaderLibraryOrder": "Renditja e librarisë",
"HeaderLibraryAccess": "Akses në librari",
"HeaderPlayAll": "Luaj të gjithën",
"HeaderUser": "Përdorues",
"HeaderStartNow": "Vazhdo tani",
"HeaderDeleteProvider": "Fshini ofruesin",
"HeaderSystemDlnaProfiles": "Profilet e sistemit",
"HeaderDeviceAccess": "Akses i paisjes",
"HeaderScenes": "Skena",
"HeaderOtherItems": "Artikujt e tjerë",
"HeaderDeleteItem": "Fshini artikullin",
"HeaderPlaybackError": "Gabim gjatë luajtjes",
"HeaderDeleteItems": "Fshini artikujt",
"HeaderLibraryFolders": "Dosjet e librarisë",
"HeaderConnectionFailure": "Dështim në lidhje",
"HeaderConnectToServer": "Lidhuni me serverin",
"HeaderLatestMovies": "Filmat e shtuar së fundmi",
"HeaderLibrarySettings": "Përcaktimet e librarise",
"HeaderDateIssued": "Data e lëshimit",
"HeaderLatestMedia": "Mediat e shtuara së fundmi",
"HeaderNetworking": "Protokolli i IP-së",
"Identify": "Identifikohu",
"HeaderSubtitleProfiles": "Profilet e titrave",
"HeaderSubtitleDownloads": "Shkarkimet i titrave",
"HeaderError": "Gabim",
"HeaderLatestMusic": "Muzika e shtuar së fundmi",
"HeaderLoginFailure": "Dështim në kyçje",
"Help": "Ndihmë",
"LabelAbortedByServerShutdown": "(Abortuar nga një fikje e serverit)",
"HeaderEnabledFields": "Fushat aktive",
"HeaderSelectTranscodingPathHelp": "Shfletoni ose vendosni shtegun për ruajtjen e skedarëve të transkoduar. Dosja duhet të jetë e shkrueshme.",
"HeaderStatus": "Status",
"HeaderPluginInstallation": "Instalimi i shtojcës",
"HeaderProfileInformation": "Informacionet e profilit",
"Images": "Imazhe",
"HeaderSendMessage": "Dërgoni mesazh",
"HeaderSortBy": "Rradhisni sipas",
"Home": "Hyrje",
"Label3DFormat": "Format 3D",
"HeaderConfirmRevokeApiKey": "Anulo çelësin e API",
"HeaderSubtitleAppearance": "Dukja e titrave",
"HeaderVideoTypes": "Tipet e videos",
"HeaderDeveloperInfo": "Informacione per zhvilluesit",
"HeaderEditImages": "Editoni imazhet",
"LabelAllowHWTranscoding": "Lejoni transkodimin me anë të paisjeve elektronike",
"HeaderSelectPath": "Zgjidhni shtegun",
"Horizontal": "Horizontale",
"HeaderRecordingOptions": "Opsionet e regjistrimit",
"HeaderTypeText": "Vendos tekstin",
"HeaderRecentlyPlayed": "E luajtur së fundmi",
"HeaderPasswordReset": "Rivendosja e fjalëkalimit",
"ItemDetails": "Detajet e artikullit",
"HomeVideosPhotos": "Videot dhe fotot e hyrjes",
"LabelAppName": "Emri i aplikacionit",
"HeaderCustomDlnaProfiles": "Profile të personalizuara",
"HeaderDefaultRecordingSettings": "Përcaktimet a paracaktuara të regjistrimit",
"HeaderDeleteDevice": "Fshini paisjen",
"HeaderDetectMyDevices": "Zbuloni paisjet e mia",
"HeaderEpisodesStatus": "Statusi i episodit",
"LabelAirsBeforeSeason": "Transmetohet para sezonit",
"LabelAirTime": "Koha e transmetimit",
"LabelAlbum": "Album",
"LabelArtists": "Artistët",
"HeaderSyncPlayTimeSyncSettings": "Sinkronizimi i kohës",
"IgnoreDtsHelp": "Ç'aktivizimi i këtij opsioni mund të zgjidhë disa probleme, p.sh mungesën e audios në kanale me rrymë të ndarë të audios nga videoja.",
"LabelAudioChannels": "Kanalet e Audios",
"LabelAuthProvider": "Ofruesi i vërtetësisë",
"HeaderEnabledFieldsHelp": "Ç'zgjidhni fushen që doni të kyçni dhe të parandaloni ndryshimin e të dhënave të saj.",
"HeaderThisUserIsCurrentlyDisabled": "Përdoruesi është aktualisht i çaktivizuar",
"LabelAccessEnd": "Koha e mbarimit",
"LabelAccessStart": "Koha e fillimit",
"LabelAirsAfterSeason": "Transmetohet pas sezonit",
"LabelAirsBeforeEpisode": "Transmetohet para episodit",
"HeaderDummyChapter": "Imazhet e kapitullit",
"HeaderForKids": "Për fëmijë",
"HeaderIdentifyItemHelp": "Vendosni një ose më shumë kritere kërkimi. Hiqni kriteret që të rrisni rezultatet e kërkimit.",
"HeaderImageOptions": "Opsionet e imazhit",
"HeaderMyMediaSmall": "Media ime (e vogel)",
"HeaderInstall": "Instalo",
"HeaderNavigation": "Navigimi",
"HeaderKeepRecording": "Vazhdo me regjistrimin",
"HeaderNewDevices": "Paisjet e reja",
"HeaderNextVideoPlayingInValue": "Videoja e re luhet në {0}",
"HeaderMoreLikeThis": "Më shumë si kjo",
"HeaderExternalIds": "ID-të e jashtme",
"HeaderFetchImages": "Ngarkoni imazhet",
"HeaderSpecialEpisodeInfo": "Informacion special mbi episodin",
"HeaderIdentificationCriteriaHelp": "Vendosni të pakten një kriter identifikimi.",
"HeaderPhotoAlbums": "Albumë fotosh",
"HeaderUsers": "Përdoruesit",
"HeaderVideoType": "Tipi i videos",
"Kids": "Fëmijë",
"HeaderPerformance": "Performancë",
"LabelAudioLanguagePreference": "Gjuha e preferuar audio",
"HeaderConfirmRepositoryInstallation": "Konfirmoni instalimin e vendndodhjes së shtojcave",
"HeaderContinueReading": "Vazhdoni me leximin",
"HeaderDevices": "Paisje",
"HeaderSeriesStatus": "Statusi i koleksionit",
"HeaderSetupLibrary": "Konfiguroni librarite Mediatike tuajat",
"HeaderSecondsValue": "{0} sekond(a)",
"HeaderSortOrder": "Rendi i radhitjes",
"HeaderSelectMetadataPath": "Zgjidh shtegun e të dhënave bazë",
"HeaderRunningTasks": "Detyra në ekzekutim",
"HeaderSelectServerCachePathHelp": "Shfletoni ose vendosni shtegun për ruajten e skedarëve të memorizuar në server. Dosja duhet të jetë e shkrueshme.",
"LabelAlbumArtists": "Artistet e albumit",
"HeaderRecordingMetadataSaving": "Të dhënat bazë të regjistrimit",
"HeaderBlockItemsWithNoRating": "Bllokoni gjërat pa, ose me vlerësime të panjohura",
"HeaderCastAndCrew": "Aktoret dhe grupi i punes",
"HeaderChannelAccess": "Akses në kanal",
"HeaderChapterImages": "Imazhet e kapitullit",
"HeaderCodecProfile": "Profili i Codec",
"HeaderConfirmProfileDeletion": "Konfirmoni fshirjen e profilit",
"HeaderAccessScheduleHelp": "Krijoni një orar aksesi në mënyrë që të limitoni aksesion në orë të caktuara.",
"HeaderAudioSettings": "Përcaktimet Audio",
"HeaderAutoDiscovery": "Zbulim ne rrjet",
"HeaderStopRecording": "Ndaloni regjistrimin",
"HeaderSubtitleProfilesHelp": "Profilet e titrave përshkruajnë formatin e titrave që suportohen nga paisja.",
"HeaderSyncPlaySelectGroup": "Bashkohuni një grupi"
} }

View file

@ -749,12 +749,12 @@
"MessageNoPluginsInstalled": "Inga tillägg har installerats.", "MessageNoPluginsInstalled": "Inga tillägg har installerats.",
"MessageNoTrailersFound": "Installera trailer-kanalen och öka biokänslan genom att lägga till ett bibliotek av trailers.", "MessageNoTrailersFound": "Installera trailer-kanalen och öka biokänslan genom att lägga till ett bibliotek av trailers.",
"MessageNothingHere": "Ingenting här.", "MessageNothingHere": "Ingenting här.",
"MessagePasswordResetForUsers": "Följande användare har fått sitt lösenord återställt. De kan nu logga in med sin enkla pinkod som de angav vid återställningen.", "MessagePasswordResetForUsers": "Följande användare har fått sitt lösenord återställt. De kan nu logga in med den pinkod som de angav vid återställningen.",
"MessagePlayAccessRestricted": "Uppspelning av detta innehållet är för närvarande begränsat. Kontakta din server administratör för mer information.", "MessagePlayAccessRestricted": "Uppspelning av detta innehållet är för närvarande begränsat. Kontakta din server administratör för mer information.",
"MessagePleaseEnsureInternetMetadata": "Var god se till att hämtning av metadata via Internet är aktiverad.", "MessagePleaseEnsureInternetMetadata": "Var god se till att hämtning av metadata via Internet är aktiverad.",
"MessagePleaseWait": "Vänligen vänta. Detta kan ta ett tag.", "MessagePleaseWait": "Vänligen vänta. Detta kan ta ett tag.",
"MessagePluginConfigurationRequiresLocalAccess": "Logga in direkt på din lokala server för att konfigurera det här tillägget.", "MessagePluginConfigurationRequiresLocalAccess": "Logga in direkt på din lokala server för att konfigurera det här tillägget.",
"MessagePluginInstallDisclaimer": "Tillägg skapade av användare är ett bra sätt att förbättra din upplevelse med ytterligare funktionalitet. Observera att detta kan påverka din server så som längre tidsåtgång för biblioteksskanningar, ytterligare bakgrundsprocesser och minskad systemstabilitet.", "MessagePluginInstallDisclaimer": "VARNING: Att installera ett plugin från tredje part medför risker. Det kan innehålla instabil eller skadlig kod och kan ändras när som helst. Installera endast plugins från författare som du litar på, och var medveten om de potentiella effekter som det kan ha, inklusive externa servicefrågor, längre biblioteksskanningar eller ytterligare bakgrundsbehandling.",
"MessageReenableUser": "Se nedan för att aktivera igen", "MessageReenableUser": "Se nedan för att aktivera igen",
"MessageTheFollowingLocationWillBeRemovedFromLibrary": "Följande mediaplatser kommer att tas bort från ditt bibliotek", "MessageTheFollowingLocationWillBeRemovedFromLibrary": "Följande mediaplatser kommer att tas bort från ditt bibliotek",
"MessageUnableToConnectToServer": "Vi kunde inte upprätta en anslutning till vald server just nu. Försäkra dig om att den är påslagen och försök igen.", "MessageUnableToConnectToServer": "Vi kunde inte upprätta en anslutning till vald server just nu. Försäkra dig om att den är påslagen och försök igen.",
@ -1485,7 +1485,7 @@
"LabelFallbackFontPath": "Sökväg till reservmapp för typsnitt", "LabelFallbackFontPath": "Sökväg till reservmapp för typsnitt",
"HeaderSelectFallbackFontPath": "Välj reservmapp för typsnitt", "HeaderSelectFallbackFontPath": "Välj reservmapp för typsnitt",
"HeaderSelectFallbackFontPathHelp": "Bläddra till eller mata in sökvägen till reservmappen för typsnitt att använda i framställningen av ASS/SSA-undertexter.", "HeaderSelectFallbackFontPathHelp": "Bläddra till eller mata in sökvägen till reservmappen för typsnitt att använda i framställningen av ASS/SSA-undertexter.",
"AllowTonemappingHelp": "Tonmappning kan omvandla en videos dynamiska omfång från HDR till SDR medans den bibehåller bildens detaljer och färger. Detta är viktig information för att kunna representera originalscenen. Fungerar för närvarande bara med HDR10 eller HLG-videor. Det här kräver motsvarande körning av OpenCL eller CUDA.", "AllowTonemappingHelp": "Tonmappning kan omvandla det dynamiska omfånget för en video från HDR till SDR samtidigt som bilddetaljer och färger bibehålls, vilket är mycket viktig information för att representera den ursprungliga scenen. Fungerar för närvarande endast med 10bit HDR10HLG och DoVi-videor. Detta kräver motsvarande OpenCL- eller CUDA-körtid.",
"AllowVppTonemappingHelp": "Helt Intel-baserad tonmappning. Fungerar för närvarande endast för viss hårdvara när videor omkodas med inbäddad HDR10-metadata. Detta har högre prioritet än andra tillämpningar av OpenCL.", "AllowVppTonemappingHelp": "Helt Intel-baserad tonmappning. Fungerar för närvarande endast för viss hårdvara när videor omkodas med inbäddad HDR10-metadata. Detta har högre prioritet än andra tillämpningar av OpenCL.",
"EnableVppTonemapping": "Aktivera VPP tonmappning", "EnableVppTonemapping": "Aktivera VPP tonmappning",
"EnableEnhancedNvdecDecoder": "Aktivera förbättrad NVDEC-avkodare", "EnableEnhancedNvdecDecoder": "Aktivera förbättrad NVDEC-avkodare",
@ -1667,8 +1667,8 @@
"RememberSubtitleSelections": "Ställ in undertextspår baserat på föregående objekt", "RememberSubtitleSelections": "Ställ in undertextspår baserat på föregående objekt",
"LabelVppTonemappingContrast": "Kontrastförstärkning för VPP-tonmappning", "LabelVppTonemappingContrast": "Kontrastförstärkning för VPP-tonmappning",
"LabelVppTonemappingBrightness": "Ljusförstärkning för VPP-tonmappning", "LabelVppTonemappingBrightness": "Ljusförstärkning för VPP-tonmappning",
"LabelVppTonemappingContrastHelp": "Tillämpa kontrastförstärkning i VPP-tonmappning. De rekommenderade och standardvärden är 1.2 och 1.", "LabelVppTonemappingContrastHelp": "Tillämpa kontrastförstärkning i VPP-tonmappning. Båda de rekommenderade och standardvärdena är 1.",
"LabelVppTonemappingBrightnessHelp": "Tillämpa ljusstyrka i VPP-tonmappning. Både rekommenderade och standardvärden är 0.", "LabelVppTonemappingBrightnessHelp": "Tillämpa ljusstyrka i VPP-tonmappning. Både rekommenderade och standardvärden är 16 och 0.",
"MediaInfoDvVersionMinor": "DV mindre version", "MediaInfoDvVersionMinor": "DV mindre version",
"MediaInfoDvVersionMajor": "DV huvudversion", "MediaInfoDvVersionMajor": "DV huvudversion",
"MediaInfoDvBlSignalCompatibilityId": "DV bl signalkompatibilitets-id", "MediaInfoDvBlSignalCompatibilityId": "DV bl signalkompatibilitets-id",
@ -1695,11 +1695,70 @@
"SaveRecordingImagesHelp": "Spara bilder från EPG-listningsleverantören tillsammans med media.", "SaveRecordingImagesHelp": "Spara bilder från EPG-listningsleverantören tillsammans med media.",
"HeaderDummyChapter": "Kapitelbilder", "HeaderDummyChapter": "Kapitelbilder",
"LabelDummyChapterDuration": "Intervall", "LabelDummyChapterDuration": "Intervall",
"LabelDummyChapterDurationHelp": "Tid mellan insamling av kapitelbilder i sekunder.", "LabelDummyChapterDurationHelp": "Intervall mellan dummy-kapitel. Ställ in på 0 för att inaktivera generering av dummy-kapitel. Ändringar av detta har ingen effekt på befintliga dummy-kapitel.",
"LabelDummyChapterCount": "Gräns", "LabelDummyChapterCount": "Gräns",
"LabelDummyChapterCountHelp": "Största antal kapitelbilder som kommer hämtas in för varje enskild mediafil.", "LabelDummyChapterCountHelp": "Största antal kapitelbilder som kommer hämtas in för varje enskild mediafil.",
"LabelChapterImageResolution": "Upplösning", "LabelChapterImageResolution": "Upplösning",
"LabelChapterImageResolutionHelp": "Upplösning för inhämtade kapitelbilder.", "LabelChapterImageResolutionHelp": "Upplösningen för de extraherade kapitelbilderna. Om du ändrar detta kommer det inte att ha någon effekt på befintliga dummy-kapitel.",
"HeaderRecordingMetadataSaving": "Metadata för inspelning", "HeaderRecordingMetadataSaving": "Metadata för inspelning",
"AllowCollectionManagement": "Tillåt denna använda att hantera samlingar" "AllowCollectionManagement": "Tillåt denna använda att hantera samlingar",
"PreferEmbeddedExtrasTitlesOverFileNames": "Föredra embäddade titlar framför filnamn för extramaterial",
"Short": "Kortfilm",
"PasswordRequiredForAdmin": "Ett lösenord krävs för administratörskonton.",
"PreferEmbeddedExtrasTitlesOverFileNamesHelp": "Extramaterial har ofta samma inbäddade namn som det överordnade materialet, välj denna för att använda inbäddade titlar för dem ändå.",
"SubtitleWhite": "Vit",
"Studio": "Studio",
"SubtitleBlack": "Svart",
"SubtitleCyan": "Turkos",
"SubtitleGray": "Grå",
"SubtitleGreen": "Grön",
"SubtitleLightGray": "Ljusgrå",
"SubtitleMagenta": "Magenta",
"SubtitleRed": "Röd",
"LabelSyncPlayNoGroups": "Inga grupper tillgängliga",
"SecondarySubtitles": "Sekundära undertexter",
"HeaderEpisodesStatus": "Avsnittstatus",
"LabelEnableLUFSScanHelp": "Aktivera LUFS-skanning för musik (detta tar längre tid och kräver mer resurser).",
"LabelParallelImageEncodingLimitHelp": "Maximalt antal bildkodningar som tillåts köras parallellt. Om detta värde sätts till 0 väljs en gräns baserad på dina systemspecifikationer.",
"LabelDate": "Datum",
"LabelLevel": "Nivå",
"LabelMediaDetails": "Mediadetaljer",
"LabelSystem": "System",
"LogLevel.Trace": "Spår",
"LogLevel.Debug": "Felsökning",
"LogLevel.Information": "Information",
"LogLevel.Warning": "Varning",
"LogLevel.Error": "Fel",
"LogLevel.Critical": "Kritisk",
"LogLevel.None": "Ingen",
"MessageRepositoryInstallDisclaimer": "VARNING: Att installera ett plugin-arkiv från tredje part medför risker. Det kan innehålla instabil eller skadlig kod och kan ändras när som helst. Installera endast arkiv från författare som du litar på.",
"NotificationsMovedMessage": "Funktionen för notifieringar har flyttats till Webhook-pluginet.",
"PleaseConfirmRepositoryInstallation": "Klicka OK för att bekräfta att du har läst ovanstående och vill fortsätta med installationen av plugin-förvaret.",
"SubtitleBlue": "Blå",
"Unknown": "Okänt",
"TonemappingModeHelp": "Välj tonmappningsläge. Om du upplever att högdagrarna blir suddiga kan du prova att växla till RGB-läget.",
"EnableAudioNormalization": "Ljudnormalisering",
"GetThePlugin": "Hämta tillägget",
"LabelEnableAudioVbr": "Aktivera VBR-ljudkodning",
"LabelEnableAudioVbrHelp": "Variabel bithastighet ger bättre kvalitet än genomsnittlig bithastighet, men kan i sällsynta fall orsaka buffring och kompatibilitetsproblem.",
"MenuOpen": "Öppna menyn",
"MenuClose": "Stäng menyn",
"SubtitleYellow": "Gul",
"EnableAudioNormalizationHelp": "Ljudnormalisering lägger till en konstant förstärkning för att hålla genomsnittet på en önskad nivå (-18 dB).",
"Select": "Välj",
"HeaderPerformance": "Prestation",
"LabelParallelImageEncodingLimit": "Gräns för parallellbildkodning",
"HeaderConfirmRepositoryInstallation": "Bekräfta tillägarkivets installation",
"LabelEnableLUFSScan": "Aktivera LUFS-skanning",
"Featurette": "Klipp",
"AllowSegmentDeletion": "Radera segment",
"AllowSegmentDeletionHelp": "Radera gamla segment efter att de har skickats till användaren. Detta förhindrar att hela den transkodade filen behöver lagras på hårddisken. Fungerar endast med strypning aktiverad. Stäng av detta om du upplever uppspelningsproblem.",
"LabelThrottleDelaySeconds": "Begränsa efter",
"LabelThrottleDelaySecondsHelp": "Tid i sekunder efter vilken transkodern kommer att strypas. Måste vara tillräckligt stor för att klienten ska kunna upprätthålla en sund buffert. Fungerar endast om strypning är aktiverat.",
"LabelSegmentKeepSeconds": "Tid för att behålla segment",
"LabelSegmentKeepSecondsHelp": "Tid i sekunder där segment ska sparas innan de skrivs över. Måste vara större än \"Begränsa efter\". Fungerar endast om segmentradering är aktiverat.",
"LabelDeveloper": "Utväcklare",
"Notifications": "Notifieringar",
"UserMenu": "Användarmeny",
"LabelTonemappingMode": "Tonmappningsläge"
} }

View file

@ -10,7 +10,7 @@
"ButtonBack": "Geri", "ButtonBack": "Geri",
"ButtonCancel": "İptal", "ButtonCancel": "İptal",
"ButtonInfo": "Bilgi", "ButtonInfo": "Bilgi",
"ButtonManualLogin": "Manuel Giriş", "ButtonManualLogin": "El İle Oturum Aç",
"ButtonOk": "Tamam", "ButtonOk": "Tamam",
"ButtonPause": "Duraklat", "ButtonPause": "Duraklat",
"ButtonQuickStartGuide": "Hızlı Başlangıç Rehberi", "ButtonQuickStartGuide": "Hızlı Başlangıç Rehberi",
@ -128,9 +128,9 @@
"OptionTvdbRating": "TheTVDB Puanı", "OptionTvdbRating": "TheTVDB Puanı",
"OptionWeekly": "Haftalık", "OptionWeekly": "Haftalık",
"ParentalRating": "Yaş derecelendirmesi", "ParentalRating": "Yaş derecelendirmesi",
"PasswordMatchError": "Parola ve Sifre Eslesmelidir.", "PasswordMatchError": "Parola ve parola onayı eşleşmelidir.",
"PasswordResetComplete": "Parolanız Sıfırlanmıstır.", "PasswordResetComplete": "Parola sıfırlandı.",
"PasswordResetConfirmation": "Sifrenizi Sıfırlamak İstediginizden Eminmisiniz?", "PasswordResetConfirmation": "Parolayı sıfırlamak istediğinizden emin misiniz?",
"PasswordSaved": "Parola kaydedildi.", "PasswordSaved": "Parola kaydedildi.",
"Play": "Oynat", "Play": "Oynat",
"Record": "Kayıt", "Record": "Kayıt",
@ -175,13 +175,13 @@
"Aired": "Yayınlanma tarihi", "Aired": "Yayınlanma tarihi",
"Alerts": "Uyarılar", "Alerts": "Uyarılar",
"ButtonEditOtherUserPreferences": "Bu kullanıcının profilini, resmini ve kişisel tercihlerini düzenleyin.", "ButtonEditOtherUserPreferences": "Bu kullanıcının profilini, resmini ve kişisel tercihlerini düzenleyin.",
"ButtonForgotPassword": "Parolamı unuttum", "ButtonForgotPassword": "Parolamı Unuttum",
"ButtonFullscreen": "Tam Ekran", "ButtonFullscreen": "Tam Ekran",
"Collections": "Koleksiyonlar", "Collections": "Koleksiyonlar",
"Favorites": "Favoriler", "Favorites": "Favoriler",
"Folders": "Klasörler", "Folders": "Klasörler",
"Genres": "Türler", "Genres": "Türler",
"HeaderAlbumArtists": "Albüm Sanatçıları", "HeaderAlbumArtists": "Albüm sanatçıları",
"Movies": "Filmler", "Movies": "Filmler",
"Photos": "Fotoğraflar", "Photos": "Fotoğraflar",
"Playlists": "Çalma listeleri", "Playlists": "Çalma listeleri",
@ -230,7 +230,7 @@
"AllowOnTheFlySubtitleExtraction": "Anında altyazı çıkartmaya izin ver", "AllowOnTheFlySubtitleExtraction": "Anında altyazı çıkartmaya izin ver",
"Disc": "Disk", "Disc": "Disk",
"ButtonAddImage": "Resim ekle", "ButtonAddImage": "Resim ekle",
"ButtonAddScheduledTaskTrigger": "Tetikleyici ekle", "ButtonAddScheduledTaskTrigger": "Tetikleyici Ekle",
"ButtonAddServer": "Sunucu Ekle", "ButtonAddServer": "Sunucu Ekle",
"ButtonAudioTracks": "Ses Parçaları", "ButtonAudioTracks": "Ses Parçaları",
"ButtonChangeServer": "Sunucu Değiştir", "ButtonChangeServer": "Sunucu Değiştir",
@ -239,7 +239,7 @@
"ButtonOpen": "Aç", "ButtonOpen": "Aç",
"ButtonNetwork": "Ağ", "ButtonNetwork": "Ağ",
"ButtonNextTrack": "Sonraki parça", "ButtonNextTrack": "Sonraki parça",
"ButtonParentalControl": "Ebeveyn Kontrolü", "ButtonParentalControl": "Ebeveyn kontrolü",
"ButtonArrowLeft": "Sol", "ButtonArrowLeft": "Sol",
"ButtonLibraryAccess": "Kütüphane erişimi", "ButtonLibraryAccess": "Kütüphane erişimi",
"ButtonScanAllLibraries": "Tüm Kütüphaneleri Tara", "ButtonScanAllLibraries": "Tüm Kütüphaneleri Tara",
@ -254,7 +254,7 @@
"Display": "Kullanıcı Ekranı", "Display": "Kullanıcı Ekranı",
"DisplayInMyMedia": "Ana ekranda göster", "DisplayInMyMedia": "Ana ekranda göster",
"DisplayInOtherHomeScreenSections": "'En Son Medya' ve 'İzlemeye Devam Et' gibi bölümleri ana ekran görüntüle", "DisplayInOtherHomeScreenSections": "'En Son Medya' ve 'İzlemeye Devam Et' gibi bölümleri ana ekran görüntüle",
"BurnSubtitlesHelp": "Sunucunun video işlendiği esnada, altyazının görüntüye gömülmesini sağlar. Performansı çok düşürür, zorunda kalmadıkça bu özelliği seçmeyin. Görüntü tabanlı biçimleri (BobSub, PGS, SUB, IDX, vb.) Ve bazı ASS / SSA altyazıların görüntüye gömülmesi için Otomatik'i seçin.", "BurnSubtitlesHelp": "Sunucunun video dönüştürmesi esnasında, altyazının görüntüye gömülmesini sağlar. Performansı çok düşürür, zorunda kalmadıkça bu özelliği seçmeyin. Görüntü tabanlı biçimleri (BobSub, PGS, SUB, IDX, vb.) ve bazı ASS / SSA altyazıların görüntüye gömülmesi için Otomatik ayarı seçin.",
"ConfirmDeleteItem": "Bu öğeyi silmek, onu hem dosya sisteminden hem de medya kütüphanenizden siler. Devam etmek istediğinize emin misiniz?", "ConfirmDeleteItem": "Bu öğeyi silmek, onu hem dosya sisteminden hem de medya kütüphanenizden siler. Devam etmek istediğinize emin misiniz?",
"ValueSpecialEpisodeName": "Özel - {0}", "ValueSpecialEpisodeName": "Özel - {0}",
"DeviceAccessHelp": "Bu, yalnızca benzersiz şekilde tanımlanabilen ve tarayıcı erişimini engellemeyen cihazlar için geçerlidir. Kullanıcı cihazlarına erişimin filtrelenmesi, burada onaylanana kadar yeni cihazları kullanmalarını önler.", "DeviceAccessHelp": "Bu, yalnızca benzersiz şekilde tanımlanabilen ve tarayıcı erişimini engellemeyen cihazlar için geçerlidir. Kullanıcı cihazlarına erişimin filtrelenmesi, burada onaylanana kadar yeni cihazları kullanmalarını önler.",
@ -267,10 +267,10 @@
"AllowOnTheFlySubtitleExtractionHelp": "Gömülü alt yazılar, videoların kodlanmasını önlemek için videolardan çıkarılabilir ve istemcilere düz metin olarak gönderilebilir. Bazı sistemlerde bu uzun zaman alabilir ve çıkarma işlemi sırasında video oynatmanın durmasına neden olabilir. İstemci cihaz tarafından doğal olarak desteklenmiyorsa, video kod kodlaması ile birlikte yakılmış gömülü altyazılara sahip olmak için bunu devre dışı bırakın.", "AllowOnTheFlySubtitleExtractionHelp": "Gömülü alt yazılar, videoların kodlanmasını önlemek için videolardan çıkarılabilir ve istemcilere düz metin olarak gönderilebilir. Bazı sistemlerde bu uzun zaman alabilir ve çıkarma işlemi sırasında video oynatmanın durmasına neden olabilir. İstemci cihaz tarafından doğal olarak desteklenmiyorsa, video kod kodlaması ile birlikte yakılmış gömülü altyazılara sahip olmak için bunu devre dışı bırakın.",
"AllowedRemoteAddressesHelp": "Uzaktan bağlanmasına izin verilecek ağlar için virgülle ayrılmış IP adresleri listesi veya IP / ağ maskesi girişleri. Boş bırakılırsa, tüm uzak adreslere izin verilir.", "AllowedRemoteAddressesHelp": "Uzaktan bağlanmasına izin verilecek ağlar için virgülle ayrılmış IP adresleri listesi veya IP / ağ maskesi girişleri. Boş bırakılırsa, tüm uzak adreslere izin verilir.",
"AlwaysPlaySubtitlesHelp": "Dil tercihi ile eşleşen altyazılar, ses diline bakılmaksızın yüklenir.", "AlwaysPlaySubtitlesHelp": "Dil tercihi ile eşleşen altyazılar, ses diline bakılmaksızın yüklenir.",
"AnyLanguage": "Herhangi bir dil", "AnyLanguage": "Herhangi Bir Dil",
"Anytime": "İstediğin zaman", "Anytime": "İstediğin zaman",
"AroundTime": "Civarında {0}", "AroundTime": "Civarında {0}",
"Art": "Temiz sanat", "Art": "Clearart",
"AsManyAsPossible": "Mümkün olduğunca çok", "AsManyAsPossible": "Mümkün olduğunca çok",
"Ascending": "Artan", "Ascending": "Artan",
"AspectRatio": "En/Boy oranı", "AspectRatio": "En/Boy oranı",
@ -279,10 +279,10 @@
"Backdrop": "Arka Plan", "Backdrop": "Arka Plan",
"Backdrops": "Arka Planlar", "Backdrops": "Arka Planlar",
"Banner": "Afiş", "Banner": "Afiş",
"BirthDateValue": "Doğum Tarihi: {0}", "BirthDateValue": "Doğum tarihi: {0}",
"BirthLocation": "Doğum Yeri", "BirthLocation": "Doğum yeri",
"BirthPlaceValue": "Doğum yeri: {0}", "BirthPlaceValue": "Doğum yeri: {0}",
"Auto": "Oto", "Auto": "Otomatik",
"Blacklist": "Karaliste", "Blacklist": "Karaliste",
"BoxRear": "Kutu (arka)", "BoxRear": "Kutu (arka)",
"ButtonAddMediaLibrary": "Medya Kitaplığı Ekle", "ButtonAddMediaLibrary": "Medya Kitaplığı Ekle",
@ -301,7 +301,7 @@
"DefaultSubtitlesHelp": "Altyazılar, gömülü metaverideki varsayılan ve zorunlu etiketlere göre yüklenir. Birden fazla seçenek olduğunda dil tercihleri göz önünde bulundurulur.", "DefaultSubtitlesHelp": "Altyazılar, gömülü metaverideki varsayılan ve zorunlu etiketlere göre yüklenir. Birden fazla seçenek olduğunda dil tercihleri göz önünde bulundurulur.",
"DeleteDeviceConfirmation": "Bu cihazı silmek istediğinden emin misin? Bir kullanıcı bir sonraki oturum açışında yeniden görünecektir.", "DeleteDeviceConfirmation": "Bu cihazı silmek istediğinden emin misin? Bir kullanıcı bir sonraki oturum açışında yeniden görünecektir.",
"DisplayMissingEpisodesWithinSeasons": "Dizi sezonları içinde eksik bölüm varsa göster", "DisplayMissingEpisodesWithinSeasons": "Dizi sezonları içinde eksik bölüm varsa göster",
"AlwaysPlaySubtitles": "Altyazıları her zaman oynat", "AlwaysPlaySubtitles": "Her Zaman Göster",
"CopyStreamURLSuccess": "URL başarıyla kopyalandı.", "CopyStreamURLSuccess": "URL başarıyla kopyalandı.",
"DateAdded": "Ekleme Tarihi", "DateAdded": "Ekleme Tarihi",
"DatePlayed": "Oynatıldığı tarih", "DatePlayed": "Oynatıldığı tarih",
@ -556,7 +556,7 @@
"HeaderSelectServerCachePathHelp": "Önbellek dosyaları için bir dosya yolu seçin yada yazın. Dosya yoluna yazma yetkisi gereklidir.", "HeaderSelectServerCachePathHelp": "Önbellek dosyaları için bir dosya yolu seçin yada yazın. Dosya yoluna yazma yetkisi gereklidir.",
"None": "Hiçbiri", "None": "Hiçbiri",
"HeaderNavigation": "Navigasyon", "HeaderNavigation": "Navigasyon",
"AllowFfmpegThrottling": "Video Kodlamasını Limitle", "AllowFfmpegThrottling": "Kod Dönüştürmeyi Kısıtla",
"Artist": "Sanatçı", "Artist": "Sanatçı",
"Album": "Albüm", "Album": "Albüm",
"EveryXMinutes": "Her {0} dakika", "EveryXMinutes": "Her {0} dakika",
@ -579,7 +579,7 @@
"DeinterlaceMethodHelp": "Yazılım taramalı içeriği yeniden kodlarken kullanılacak taramasız hale getirme yöntemini seçin. Donanım ayrıştırmayı destekleyen donanım hızlandırma etkinleştirildiğinde, bu ayar yerine donanım ayrıştırıcı kullanılacaktır.", "DeinterlaceMethodHelp": "Yazılım taramalı içeriği yeniden kodlarken kullanılacak taramasız hale getirme yöntemini seçin. Donanım ayrıştırmayı destekleyen donanım hızlandırma etkinleştirildiğinde, bu ayar yerine donanım ayrıştırıcı kullanılacaktır.",
"ClientSettings": "İstemci Ayarları", "ClientSettings": "İstemci Ayarları",
"BoxSet": "Seri Filmler", "BoxSet": "Seri Filmler",
"AskAdminToCreateLibrary": "Kütüphane oluşturmak için yöneticiden izin iste.", "AskAdminToCreateLibrary": "Bir yöneticiden kütüphane oluşturmasını isteyin.",
"AllowFfmpegThrottlingHelp": "Video dönüşüm işlemleri yeterince ilerlediyse kaynak tüketimini azaltmak için durdur. İleri/geri sarma işlemlerinin az yapıldığı durumlarda çok kullanışlıdır. Oynatım sorunları ile karşılaşırsanız bu özelliği kapatın.", "AllowFfmpegThrottlingHelp": "Video dönüşüm işlemleri yeterince ilerlediyse kaynak tüketimini azaltmak için durdur. İleri/geri sarma işlemlerinin az yapıldığı durumlarda çok kullanışlıdır. Oynatım sorunları ile karşılaşırsanız bu özelliği kapatın.",
"AlbumArtist": "Sanatçı", "AlbumArtist": "Sanatçı",
"HeaderTuners": "Alıcılar", "HeaderTuners": "Alıcılar",
@ -874,7 +874,7 @@
"MediaInfoAspectRatio": "En/Boy oranı", "MediaInfoAspectRatio": "En/Boy oranı",
"RefreshMetadata": "Metaveriyi yenile", "RefreshMetadata": "Metaveriyi yenile",
"ButtonPlayer": "Oyuncu", "ButtonPlayer": "Oyuncu",
"ButtonCast": "Cihaza yayınla", "ButtonCast": "Cihaza Yayınla",
"Option3D": "3D", "Option3D": "3D",
"EnableFasterAnimationsHelp": "Daha hızlı animasyonlar ve geçişler kullan.", "EnableFasterAnimationsHelp": "Daha hızlı animasyonlar ve geçişler kullan.",
"EnableFasterAnimations": "Daha hızlı animasyonlar", "EnableFasterAnimations": "Daha hızlı animasyonlar",
@ -1114,7 +1114,7 @@
"LabelEnableIP4Help": "IPv4 işlevini etkinleştirin.", "LabelEnableIP4Help": "IPv4 işlevini etkinleştirin.",
"LabelEnableIP4": "IPv4'ü etkinleştirin", "LabelEnableIP4": "IPv4'ü etkinleştirin",
"LabelDropSubtitleHere": "Altyazıyı buraya bırakın veya göz atmak için tıklayın.", "LabelDropSubtitleHere": "Altyazıyı buraya bırakın veya göz atmak için tıklayın.",
"MusicVideos": "Müzik videoları", "MusicVideos": "Müzik Videoları",
"MusicVideo": "Müzik Videosu", "MusicVideo": "Müzik Videosu",
"MusicAlbum": "Müzik Albümü", "MusicAlbum": "Müzik Albümü",
"LabelSelectFolderGroups": "Aşağıdaki klasörlerdeki içeriği otomatik olarak \"Filmler\", \"Müzik\" ve \"TV\" gibi görünümlerde gruplandırın", "LabelSelectFolderGroups": "Aşağıdaki klasörlerdeki içeriği otomatik olarak \"Filmler\", \"Müzik\" ve \"TV\" gibi görünümlerde gruplandırın",
@ -1259,7 +1259,7 @@
"LiveBroadcasts": "canlı yayınlar", "LiveBroadcasts": "canlı yayınlar",
"ListPaging": "{0}-{1} / {2}", "ListPaging": "{0}-{1} / {2}",
"List": "Liste", "List": "Liste",
"LeaveBlankToNotSetAPassword": "Parola belirlemek için bu alanı boş bırakabilirsiniz.", "LeaveBlankToNotSetAPassword": "Parola belirlemek istemiyorsanız bu alanı boş bırakabilirsiniz.",
"LearnHowYouCanContribute": "Nasıl katkıda bulunabileceğinizi öğrenin.", "LearnHowYouCanContribute": "Nasıl katkıda bulunabileceğinizi öğrenin.",
"Larger": "daha büyük", "Larger": "daha büyük",
"LanNetworksHelp": "Bant genişliği kısıtlamaları uygulanırken yerel ağda dikkate alınacak ağlar için IP adreslerinin veya IP/ağ maskesi girişlerinin virgülle ayrılmış listesi. Ayarlanırsa, diğer tüm IP adreslerinin harici ağda olduğu kabul edilecek ve harici bant genişliği kısıtlamalarına tabi olacaktır. Boş bırakılırsa, yalnızca sunucunun alt ağının yerel ağda olduğu kabul edilir.", "LanNetworksHelp": "Bant genişliği kısıtlamaları uygulanırken yerel ağda dikkate alınacak ağlar için IP adreslerinin veya IP/ağ maskesi girişlerinin virgülle ayrılmış listesi. Ayarlanırsa, diğer tüm IP adreslerinin harici ağda olduğu kabul edilecek ve harici bant genişliği kısıtlamalarına tabi olacaktır. Boş bırakılırsa, yalnızca sunucunun alt ağının yerel ağda olduğu kabul edilir.",
@ -1527,7 +1527,7 @@
"OptionWakeFromSleep": "Uykudan uyanma", "OptionWakeFromSleep": "Uykudan uyanma",
"OptionRegex": "Düzenli ifade", "OptionRegex": "Düzenli ifade",
"OptionPlainStorageFolders": "Tüm klasörleri düz depolama klasörü olarak göster", "OptionPlainStorageFolders": "Tüm klasörleri düz depolama klasörü olarak göster",
"OptionHideUserFromLoginHelp": "Özel veya gizli yönetici hesapları için kullanışlıdır. Kullanıcının, kullanıcı adı ve parolasını girerek manuel olarak oturum açması gerekecek.", "OptionHideUserFromLoginHelp": "Özel veya gizli yönetici hesapları için kullanışlıdır. Kullanıcının, kullanıcı adı ve parolasını girerek oturum açması gerekecek.",
"OptionExtractChapterImage": "Bölüm resmi çıkarmayı etkinleştir", "OptionExtractChapterImage": "Bölüm resmi çıkarmayı etkinleştir",
"OptionEstimateContentLength": "Kod dönüştürme esnasında içerik uzunluğunu tahmin et", "OptionEstimateContentLength": "Kod dönüştürme esnasında içerik uzunluğunu tahmin et",
"OptionEnableForAllTuners": "Tüm tuner cihazları için etkinleştirin", "OptionEnableForAllTuners": "Tüm tuner cihazları için etkinleştirin",
@ -1562,7 +1562,7 @@
"MessageSyncPlayErrorMedia": "SyncPlay etkinleştirilemedi! Medya hatası.", "MessageSyncPlayErrorMedia": "SyncPlay etkinleştirilemedi! Medya hatası.",
"MessageSyncPlayErrorAccessingGroups": "Gruplar listesine erişim sağlarken bir hata oluştu.", "MessageSyncPlayErrorAccessingGroups": "Gruplar listesine erişim sağlarken bir hata oluştu.",
"MessagePlayAccessRestricted": "Bu içeriğin oynatılması şu anda kısıtlıdır. Daha fazla bilgi için lütfen sunucu yöneticinizle iletişim kurun.", "MessagePlayAccessRestricted": "Bu içeriğin oynatılması şu anda kısıtlıdır. Daha fazla bilgi için lütfen sunucu yöneticinizle iletişim kurun.",
"MessagePasswordResetForUsers": "Kullanıcı şifresini sıfırlama isteğinde bulunmuştur. Sıfırlama esnasında kullanılan PIN oturum açmak için kullanilabilir.", "MessagePasswordResetForUsers": "Kullanıcı parolasını sıfırlama isteğinde bulunmuştur. Sıfırlama esnasında kullanılan PIN oturum açmak için kullanılabilir.",
"MessageNoRepositories": "Kaynak deposu yok.", "MessageNoRepositories": "Kaynak deposu yok.",
"LabelMaxVideoResolution": "En Yüksek İzin Verilen Video Transkodlama Çözünürlüğü", "LabelMaxVideoResolution": "En Yüksek İzin Verilen Video Transkodlama Çözünürlüğü",
"ReleaseGroup": "Yayın Grubu", "ReleaseGroup": "Yayın Grubu",
@ -1731,7 +1731,7 @@
"LabelChapterImageResolutionHelp": ıkarılan bölüm görüntülerinin çözünürlüğü. Bunu değiştirmenin mevcut sahte bölümler üzerinde hiçbir etkisi olmayacaktır.", "LabelChapterImageResolutionHelp": ıkarılan bölüm görüntülerinin çözünürlüğü. Bunu değiştirmenin mevcut sahte bölümler üzerinde hiçbir etkisi olmayacaktır.",
"LabelParallelImageEncodingLimit": "Paralel görüntü kodlama sınırı", "LabelParallelImageEncodingLimit": "Paralel görüntü kodlama sınırı",
"LabelParallelImageEncodingLimitHelp": "Paralel olarak çalışmasına izin verilen maksimum görüntü kodlaması miktarı. Bunu 0 olarak ayarlamak, sistem özelliklerinize göre bir sınır seçecektir.", "LabelParallelImageEncodingLimitHelp": "Paralel olarak çalışmasına izin verilen maksimum görüntü kodlaması miktarı. Bunu 0 olarak ayarlamak, sistem özelliklerinize göre bir sınır seçecektir.",
"AllowSegmentDeletionHelp": "Kullanıya gönderilmiş eski segmentleri silin. Bu işlem tamamen çevrilmiş dosyaların harddiskte ter kaplamasına engel olur. Bu seçenek sadece sınırlandırma etkin olduğunda çalışır. Eğer oynatımda problem yaşıyorsanız lütfen bu seçeneği devre dışı bırakın.", "AllowSegmentDeletionHelp": "İstemciye gönderilmiş eski segmentleri silin. Bu işlem tamamen dönüştürülmüş dosyaların diskte yer kaplamasına engel olur. Bu seçenek sadece sınırlandırma etkin olduğunda çalışır. Eğer oynatımda problem yaşıyorsanız lütfen bu seçeneği devre dışı bırakın.",
"LabelDeveloper": "Yazılımcı", "LabelDeveloper": "Yazılımcı",
"HeaderEpisodesStatus": "Bölüm Durumu", "HeaderEpisodesStatus": "Bölüm Durumu",
"LogLevel.Debug": "Ayıkla", "LogLevel.Debug": "Ayıkla",
@ -1748,10 +1748,12 @@
"Unknown": "Bilinmeyen", "Unknown": "Bilinmeyen",
"AllowSegmentDeletion": "Segmenti sil", "AllowSegmentDeletion": "Segmenti sil",
"LabelThrottleDelaySeconds": "…dan sonra sınılandır", "LabelThrottleDelaySeconds": "…dan sonra sınılandır",
"LabelSegmentKeepSeconds": "Segmenteleri saklanma süresi", "LabelSegmentKeepSeconds": "Segmentleri saklama süresi",
"LabelSegmentKeepSecondsHelp": "Parçaların üzerine yazılmadan önce tutulması gereken saniye cinsinden süre. \"Throttle after\" değerinden büyük olmalıdır. Yalnızca segment silme etkinleştirildiğinde çalışır.", "LabelSegmentKeepSecondsHelp": "Parçaların üzerine yazılmadan önce tutulması gereken saniye cinsinden süre. \"Throttle after\" değerinden büyük olmalıdır. Yalnızca segment silme etkinleştirildiğinde çalışır.",
"PleaseConfirmRepositoryInstallation": "Yukarıdakileri bilgilendirmeleri okuduğunuzu ve eklenti deposu kurulumuna devam etmek istediğinizi onaylamak için lütfen Tamam'ı tıklayın.", "PleaseConfirmRepositoryInstallation": "Yukarıdakileri bilgilendirmeleri okuduğunuzu ve eklenti deposu kurulumuna devam etmek istediğinizi onaylamak için lütfen Tamam'ı tıklayın.",
"MessageRepositoryInstallDisclaimer": "UYARI: Üçüncü taraf eklenti havuzu kurmak riskler taşır. Kararsız veya kötü amaçlı kod içerebilir ve her an değişebilir. Yalnızca güvendiğiniz yazarların depolarını kurmanız önerilir.", "MessageRepositoryInstallDisclaimer": "UYARI: Üçüncü taraf eklenti havuzu kurmak riskler taşır. Kararsız veya kötü amaçlı kod içerebilir ve her an değişebilir. Yalnızca güvendiğiniz yazarların depolarını kurmanız önerilir.",
"LogLevel.None": "Hiçbiri", "LogLevel.None": "Hiçbiri",
"LabelThrottleDelaySecondsHelp": "Kodek dönüştürmenin kısılacağı saniye cinsinden süre. İstemcinin sağlıklı bir arabellek tutması için yeterince büyük olmalıdır. Yalnızca kısıtlama etkinleştirildiğinde çalışır." "LabelThrottleDelaySecondsHelp": "Kodek dönüştürmenin kısılacağı saniye cinsinden süre. İstemcinin sağlıklı bir arabellek tutması için yeterince büyük olmalıdır. Yalnızca kısıtlama etkinleştirildiğinde çalışır.",
"LabelBackdropScreensaverInterval": "Arka Plan Ekran Koruyucu Arlığı",
"LabelBackdropScreensaverIntervalHelp": "Arka plan ekran koruyucusu kullanımdayken farklı arka planlar arasında geçen saniye cinsinden süre."
} }

View file

@ -1474,7 +1474,7 @@
"SeriesCancelled": "Серіал скасовано.", "SeriesCancelled": "Серіал скасовано.",
"Series": "Серіал", "Series": "Серіал",
"SendMessage": "Відправити повідомлення", "SendMessage": "Відправити повідомлення",
"SelectServer": "Виберіть Сервер", "SelectServer": "Вибрати Сервер",
"SelectAdminUsername": "Будь ласка, виберіть ім’я користувача для облікового запису адміністратора.", "SelectAdminUsername": "Будь ласка, виберіть ім’я користувача для облікового запису адміністратора.",
"Season": "Сезон", "Season": "Сезон",
"SearchResults": "Результати пошуку", "SearchResults": "Результати пошуку",
@ -1758,5 +1758,7 @@
"HeaderEpisodesStatus": "Статус епізодів", "HeaderEpisodesStatus": "Статус епізодів",
"LabelThrottleDelaySeconds": "Обмежити після", "LabelThrottleDelaySeconds": "Обмежити після",
"LabelSegmentKeepSecondsHelp": "Час у секундах, протягом якого сегменти мають зберігатися перед перезаписом. Має бути більшим за \"Обмежити після\". Працює тільки якщо увімкнено видалення сегментів.", "LabelSegmentKeepSecondsHelp": "Час у секундах, протягом якого сегменти мають зберігатися перед перезаписом. Має бути більшим за \"Обмежити після\". Працює тільки якщо увімкнено видалення сегментів.",
"LabelSegmentKeepSeconds": "Час збереження сегментів" "LabelSegmentKeepSeconds": "Час збереження сегментів",
"LabelBackdropScreensaverIntervalHelp": "Час у секундах між різними фонами при використанні фонової заставки.",
"LabelBackdropScreensaverInterval": "Інтервал між фоновими заставками"
} }

View file

@ -1746,5 +1746,7 @@
"LabelThrottleDelaySecondsHelp": "Thời gian tính bằng giây sau đó bộ chuyển mã sẽ được điều chỉnh. Phải đủ lớn để khách hàng duy trì bộ đệm khỏe mạnh. Chỉ hoạt động nếu điều chỉnh được bật.", "LabelThrottleDelaySecondsHelp": "Thời gian tính bằng giây sau đó bộ chuyển mã sẽ được điều chỉnh. Phải đủ lớn để khách hàng duy trì bộ đệm khỏe mạnh. Chỉ hoạt động nếu điều chỉnh được bật.",
"AllowSegmentDeletion": "Xóa phân đoạn", "AllowSegmentDeletion": "Xóa phân đoạn",
"LabelSegmentKeepSeconds": "Thời gian giữ phân đoạn", "LabelSegmentKeepSeconds": "Thời gian giữ phân đoạn",
"HeaderEpisodesStatus": "Trạng Thái Tập" "HeaderEpisodesStatus": "Trạng Thái Tập",
"LabelBackdropScreensaverInterval": "Thời Gian Phông Nền Màn Hình Bảo Vệ",
"LabelBackdropScreensaverIntervalHelp": "Thời gian tính bằng giây giữa các phông nền khác nhau khi sử dụng trình bảo vệ màn hình phông nền."
} }

View file

@ -1761,5 +1761,7 @@
"LabelThrottleDelaySeconds": "向后缓存限制", "LabelThrottleDelaySeconds": "向后缓存限制",
"LabelSegmentKeepSeconds": "缓存片段时长", "LabelSegmentKeepSeconds": "缓存片段时长",
"LabelSegmentKeepSecondsHelp": "在覆盖之前应保留片段的时间(以秒为单位)。必须大于“向后缓存限制”。仅在启用片段删除时生效。", "LabelSegmentKeepSecondsHelp": "在覆盖之前应保留片段的时间(以秒为单位)。必须大于“向后缓存限制”。仅在启用片段删除时生效。",
"HeaderEpisodesStatus": "剧集状态" "HeaderEpisodesStatus": "剧集状态",
"LabelBackdropScreensaverInterval": "屏幕保护程序间隔",
"LabelBackdropScreensaverIntervalHelp": "不同屏幕保护切换的时间间隔秒数。"
} }

View file

@ -831,7 +831,7 @@
"HeaderMyMedia": "我的媒體", "HeaderMyMedia": "我的媒體",
"HeaderMyDevice": "我的裝置", "HeaderMyDevice": "我的裝置",
"HeaderMusicQuality": "音質", "HeaderMusicQuality": "音質",
"HeaderMoreLikeThis": "類似影片", "HeaderMoreLikeThis": "更多類似的",
"HeaderMetadataSettings": "中繼資料設定", "HeaderMetadataSettings": "中繼資料設定",
"HeaderMedia": "媒體", "HeaderMedia": "媒體",
"HeaderLoginFailure": "登入失敗", "HeaderLoginFailure": "登入失敗",
@ -1154,5 +1154,6 @@
"MinutesAfter": "分鐘後", "MinutesAfter": "分鐘後",
"ValueMinutes": "{0}分", "ValueMinutes": "{0}分",
"MinutesBefore": "分鐘前", "MinutesBefore": "分鐘前",
"MessagePleaseWait": "請稍等。" "MessagePleaseWait": "請稍等。",
"AllowCollectionManagement": "允許用戶管理合輯"
} }

View file

@ -45,7 +45,7 @@
"HeaderFetchImages": "擷取圖像", "HeaderFetchImages": "擷取圖像",
"HeaderFrequentlyPlayed": "經常播放", "HeaderFrequentlyPlayed": "經常播放",
"HeaderGuideProviders": "節目表提供者", "HeaderGuideProviders": "節目表提供者",
"HeaderImageSettings": "圖像設", "HeaderImageSettings": "圖像設",
"HeaderInstantMix": "瞬時混播", "HeaderInstantMix": "瞬時混播",
"HeaderLatestEpisodes": "最新劇集", "HeaderLatestEpisodes": "最新劇集",
"HeaderLatestMovies": "最新電影", "HeaderLatestMovies": "最新電影",
@ -112,7 +112,7 @@
"MessageItemsAdded": "已新增項目。", "MessageItemsAdded": "已新增項目。",
"MessageNoMovieSuggestionsAvailable": "目前並沒有推薦的電影,開始觀看並對您的電影評分後,我們就會為您推薦您可能會喜歡的內容。", "MessageNoMovieSuggestionsAvailable": "目前並沒有推薦的電影,開始觀看並對您的電影評分後,我們就會為您推薦您可能會喜歡的內容。",
"MessageNothingHere": "這裡沒有什麼。", "MessageNothingHere": "這裡沒有什麼。",
"MessagePasswordResetForUsers": "下列使用者的密碼已被重新設置。該使用者現在可以使用在密碼重設時所使用之簡易 PIN code 進行登入。", "MessagePasswordResetForUsers": "下列使用者的密碼已被重新設定,現在可以使用在密碼重設時所使用 PIN code 進行登入。",
"MessagePleaseEnsureInternetMetadata": "請確保已啟用從網際網路下載媒體資料。", "MessagePleaseEnsureInternetMetadata": "請確保已啟用從網際網路下載媒體資料。",
"Monday": "星期一", "Monday": "星期一",
"MoreUsersCanBeAddedLater": "也可於控制台內新增使用者。", "MoreUsersCanBeAddedLater": "也可於控制台內新增使用者。",
@ -178,7 +178,7 @@
"SearchForSubtitles": "搜尋字幕", "SearchForSubtitles": "搜尋字幕",
"SeriesRecordingScheduled": "已排程錄製整個系列。", "SeriesRecordingScheduled": "已排程錄製整個系列。",
"ServerUpdateNeeded": "伺服器需要更新,請至 {0} 取得最新版本", "ServerUpdateNeeded": "伺服器需要更新,請至 {0} 取得最新版本",
"SettingsSaved": "設已保存。", "SettingsSaved": "設已保存。",
"Share": "分享", "Share": "分享",
"Subtitles": "字幕", "Subtitles": "字幕",
"Sunday": "星期天", "Sunday": "星期天",
@ -198,7 +198,7 @@
"Tuesday": "星期二", "Tuesday": "星期二",
"UninstallPluginConfirmation": "你確定要解除安裝 {0}", "UninstallPluginConfirmation": "你確定要解除安裝 {0}",
"HeaderUninstallPlugin": "解除安裝附加元件", "HeaderUninstallPlugin": "解除安裝附加元件",
"UserProfilesIntro": "Jellyfin 可單獨對使用者進行設定,所有使用者擁有自己的顯示設,播放狀態和家長控制。", "UserProfilesIntro": "Jellyfin 可單獨對使用者進行設定,所有使用者擁有自己的顯示設,播放狀態和家長控制。",
"Wednesday": "星期三", "Wednesday": "星期三",
"WelcomeToProject": "歡迎使用 Jellyfin", "WelcomeToProject": "歡迎使用 Jellyfin",
"WizardCompleted": "這就是我們所需的全部資訊Jellyfin 現在正在收集你的媒體櫃的資料,在這段時間內,不妨參考我們推出的應用程式。按一下<b>完成</b>進入<b>控制台</b>。", "WizardCompleted": "這就是我們所需的全部資訊Jellyfin 現在正在收集你的媒體櫃的資料,在這段時間內,不妨參考我們推出的應用程式。按一下<b>完成</b>進入<b>控制台</b>。",
@ -388,7 +388,7 @@
"GuestStar": "客串", "GuestStar": "客串",
"Guide": "指南", "Guide": "指南",
"GuideProviderSelectListings": "選擇清單", "GuideProviderSelectListings": "選擇清單",
"H264CrfHelp": "恆定速率因子CRF是x264和x265編碼器的預設品質設置。 可以設定在0到51之間其中值越低品質越好(檔案較大)。 推薦值為18到28之間。x264的預設值為23x265的預設值為28。", "H264CrfHelp": "Constant Rate FactorCRF是 x264 和 x265 編碼器的品質設定。 有效範圍為 0 - 51值越低品質越好(檔案較大)。 推薦值為18到28之間。x264的預設值為23x265的預設值為28。",
"EncoderPresetHelp": "速度越慢則會得到更好的壓縮編碼效率。", "EncoderPresetHelp": "速度越慢則會得到更好的壓縮編碼效率。",
"HDPrograms": "HD 節目", "HDPrograms": "HD 節目",
"HardwareAccelerationWarning": "啟動硬體加速可能在某些環境下導致系統不穩定。請確認你的作業系統和影片驅動程式是最新的。如果你在開啟此項後難以播放影片,那麼你需要將此選項設回「無」。", "HardwareAccelerationWarning": "啟動硬體加速可能在某些環境下導致系統不穩定。請確認你的作業系統和影片驅動程式是最新的。如果你在開啟此項後難以播放影片,那麼你需要將此選項設回「無」。",
@ -409,7 +409,7 @@
"HeaderAppearsOn": "同時出現於", "HeaderAppearsOn": "同時出現於",
"HeaderAudioBooks": "有聲書", "HeaderAudioBooks": "有聲書",
"HeaderAudioSettings": "音訊設定", "HeaderAudioSettings": "音訊設定",
"HeaderBlockItemsWithNoRating": "封鎖沒有評級或設置不允許的內容", "HeaderBlockItemsWithNoRating": "封鎖沒有或無法識別評級的內容",
"HeaderBranding": "品牌", "HeaderBranding": "品牌",
"HeaderCancelRecording": "取消錄製", "HeaderCancelRecording": "取消錄製",
"HeaderCancelSeries": "取消系列", "HeaderCancelSeries": "取消系列",
@ -446,13 +446,13 @@
"HeaderEnabledFieldsHelp": "反選欄位以鎖定並不讓其數據被更改。", "HeaderEnabledFieldsHelp": "反選欄位以鎖定並不讓其數據被更改。",
"HeaderError": "錯誤", "HeaderError": "錯誤",
"HeaderExternalIds": "外部 ID", "HeaderExternalIds": "外部 ID",
"HeaderFetcherSettings": "擷取器設", "HeaderFetcherSettings": "擷取器設",
"HeaderForKids": "給兒童", "HeaderForKids": "給兒童",
"HeaderHttpHeaders": "HTTP 標頭", "HeaderHttpHeaders": "HTTP 標頭",
"HeaderIdentification": "身份識別", "HeaderIdentification": "身份識別",
"HeaderIdentificationCriteriaHelp": "至少輸入一個識別標準。", "HeaderIdentificationCriteriaHelp": "至少輸入一個識別標準。",
"HeaderIdentificationHeader": "身份識別標題", "HeaderIdentificationHeader": "身份識別標題",
"HeaderIdentifyItemHelp": "輸入一個或多個搜索條件。刪除條件可得到更多搜索結果。", "HeaderIdentifyItemHelp": "輸入一個或多個搜尋條件。刪除條件可得到更多搜尋結果。",
"HeaderImageOptions": "圖片選項", "HeaderImageOptions": "圖片選項",
"HeaderInstall": "安裝", "HeaderInstall": "安裝",
"HeaderKeepRecording": "繼續錄製", "HeaderKeepRecording": "繼續錄製",
@ -505,7 +505,7 @@
"HeaderSeriesOptions": "系列選項", "HeaderSeriesOptions": "系列選項",
"HeaderSeriesStatus": "系列狀態", "HeaderSeriesStatus": "系列狀態",
"HeaderServerSettings": "伺服器設定", "HeaderServerSettings": "伺服器設定",
"HeaderSetupLibrary": "設你的媒體庫", "HeaderSetupLibrary": "設你的媒體庫",
"HeaderSortBy": "分類", "HeaderSortBy": "分類",
"HeaderSortOrder": "分類順序", "HeaderSortOrder": "分類順序",
"HeaderSpecialEpisodeInfo": "特集資訊", "HeaderSpecialEpisodeInfo": "特集資訊",
@ -549,7 +549,7 @@
"HeaderVideos": "影片", "HeaderVideos": "影片",
"HeaderXmlDocumentAttribute": "XML 檔案屬性", "HeaderXmlDocumentAttribute": "XML 檔案屬性",
"HeaderXmlDocumentAttributes": "XML 檔案屬性", "HeaderXmlDocumentAttributes": "XML 檔案屬性",
"HeaderXmlSettings": "XML 設", "HeaderXmlSettings": "XML 設",
"HeaderYears": "年份", "HeaderYears": "年份",
"Hide": "隱藏", "Hide": "隱藏",
"HideWatchedContentFromLatestMedia": "從最新媒體中隱藏已觀看的內容", "HideWatchedContentFromLatestMedia": "從最新媒體中隱藏已觀看的內容",
@ -942,8 +942,8 @@
"SeriesDisplayOrderHelp": "按播出日期、DVD 順序或編號對劇集進行排序。", "SeriesDisplayOrderHelp": "按播出日期、DVD 順序或編號對劇集進行排序。",
"SeriesSettings": "系列設定", "SeriesSettings": "系列設定",
"SeriesYearToPresent": "{0} - 現在", "SeriesYearToPresent": "{0} - 現在",
"ServerNameIsRestarting": "伺服器將於 {0} 後重新啟動。", "ServerNameIsRestarting": "伺服器 {0} 正在重新啟動。",
"ServerNameIsShuttingDown": "伺服器將於 {0} 後關閉。", "ServerNameIsShuttingDown": "伺服器 {0} 正在關閉。",
"SimultaneousConnectionLimitHelp": "允許的同時串流的最大數量。輸入 0 表示無限制。", "SimultaneousConnectionLimitHelp": "允許的同時串流的最大數量。輸入 0 表示無限制。",
"SkipEpisodesAlreadyInMyLibrary": "不錄製已存在於媒體庫中的劇集", "SkipEpisodesAlreadyInMyLibrary": "不錄製已存在於媒體庫中的劇集",
"SmallCaps": "小型大寫字母", "SmallCaps": "小型大寫字母",
@ -1020,7 +1020,7 @@
"MessageNoCollectionsAvailable": "分組能夠讓您享受個性化的影片、劇集和專輯。點擊\"\"按鈕開始建立分組。", "MessageNoCollectionsAvailable": "分組能夠讓您享受個性化的影片、劇集和專輯。點擊\"\"按鈕開始建立分組。",
"MessagePlayAccessRestricted": "此內容的播放受到限制,聯繫您的伺服器管理員以獲取更多訊息。", "MessagePlayAccessRestricted": "此內容的播放受到限制,聯繫您的伺服器管理員以獲取更多訊息。",
"MessagePluginConfigurationRequiresLocalAccess": "請直接登入你的本地伺服器以設定這個附加元件。", "MessagePluginConfigurationRequiresLocalAccess": "請直接登入你的本地伺服器以設定這個附加元件。",
"MessagePluginInstallDisclaimer": "安裝 Jellyfin 社區成員建立的附加元件來讓您的 Jellyfin 獲取額外的功能最佳化您的使用體驗。但可能會對你的 Jellyfin 伺服器效能造成影響,如更長的媒體庫掃描時間、額外的背景資料處理與系統穩定性降低等。", "MessagePluginInstallDisclaimer": "警告:安裝第三方外掛程式有一定風險。第三方外掛程式可能包含不穩定或惡意的程式,並且有可能在任何時候改變。請只安裝你信任的作者的插件,並知悉潛在的影響,包含對外部服務的查詢,更長的媒體庫塞考時間,和額外的背景處理等。",
"MessageReenableUser": "請參閱以下以重新啟用", "MessageReenableUser": "請參閱以下以重新啟用",
"MessageUnableToConnectToServer": "無法連上所選的伺服器,請確保該伺服器正在運作中。", "MessageUnableToConnectToServer": "無法連上所選的伺服器,請確保該伺服器正在運作中。",
"MessageYouHaveVersionInstalled": "你目前安裝了 {0} 版本。", "MessageYouHaveVersionInstalled": "你目前安裝了 {0} 版本。",
@ -1076,7 +1076,7 @@
"Raised": "浮凹", "Raised": "浮凹",
"Rate": "評等", "Rate": "評等",
"Recordings": "錄影", "Recordings": "錄影",
"ServerRestartNeededAfterPluginInstall": "安裝附加元件後Jellyfin 伺服器需要重啟使其生效。", "ServerRestartNeededAfterPluginInstall": "安裝外掛程式後Jellyfin 伺服器需要重新啟動使其生效。",
"ShowIndicatorsFor": "顯示指標", "ShowIndicatorsFor": "顯示指標",
"Sort": "排序", "Sort": "排序",
"Studios": "工作室", "Studios": "工作室",
@ -1094,7 +1094,7 @@
"LabelInNetworkSignInWithEasyPasswordHelp": "你可以在你的區域網路中使用你的簡易 PIN code 登錄 Jellyfin 應用程式,僅在你使用外部網路時才需要輸入密碼,如果 PIN code 留空,那麼在你的區域網路中便不需輸入密碼。", "LabelInNetworkSignInWithEasyPasswordHelp": "你可以在你的區域網路中使用你的簡易 PIN code 登錄 Jellyfin 應用程式,僅在你使用外部網路時才需要輸入密碼,如果 PIN code 留空,那麼在你的區域網路中便不需輸入密碼。",
"LabelReleaseDate": "釋出日期", "LabelReleaseDate": "釋出日期",
"LabelRemoteClientBitrateLimit": "網際網路串流傳輸位元率限制Mbps", "LabelRemoteClientBitrateLimit": "網際網路串流傳輸位元率限制Mbps",
"LanNetworksHelp": "在強制頻寬限制時,認作本地網路上的 IP 位址或 IP/子網域遮罩項目的逗號分隔清單。若設置此項,所有其它 IP 位址將被視作在外部網路上,並且將受到外部頻寬限制。如果保留為空,則只將伺服器的子網域遮罩作本地網路。", "LanNetworksHelp": "在執行頻寬限制時,視同區域網路上的 IP 位址或 IP/子網域遮罩項目的逗號分隔清單。若設定此項,所有其它 IP 位址將被視作在外部網路上,並且將受到外部頻寬限制。如果保留為空,則只將伺服器的子網域遮罩作本地網路。",
"OptionIgnoreTranscodeByteRangeRequests": "忽略轉檔位元組範圍請求", "OptionIgnoreTranscodeByteRangeRequests": "忽略轉檔位元組範圍請求",
"OptionIgnoreTranscodeByteRangeRequestsHelp": "這些請求會被接受,但會忽略的位元組範圍標頭。", "OptionIgnoreTranscodeByteRangeRequestsHelp": "這些請求會被接受,但會忽略的位元組範圍標頭。",
"OptionLoginAttemptsBeforeLockoutHelp": "若值為 0則表示將允許普通使用者嘗試三次、管理員嘗試五次的預設值設定為 -1 來停用此功能。", "OptionLoginAttemptsBeforeLockoutHelp": "若值為 0則表示將允許普通使用者嘗試三次、管理員嘗試五次的預設值設定為 -1 來停用此功能。",
@ -1266,7 +1266,7 @@
"Season": "季", "Season": "季",
"Person": "人物", "Person": "人物",
"Movie": "電影", "Movie": "電影",
"LabelLibraryPageSizeHelp": "設媒體庫頁面每頁要顯示的最多媒體個數。設置為 0 來停用分頁。", "LabelLibraryPageSizeHelp": "設媒體庫頁面每頁要顯示的最多媒體個數。設置為 0 來停用分頁。",
"LabelLibraryPageSize": "媒體庫分頁大小", "LabelLibraryPageSize": "媒體庫分頁大小",
"LabelDeinterlaceMethod": "反交錯方法", "LabelDeinterlaceMethod": "反交錯方法",
"Episode": "劇集", "Episode": "劇集",
@ -1277,7 +1277,7 @@
"New": "新增", "New": "新增",
"ApiKeysCaption": "目前已啟用的 API 金鑰清單", "ApiKeysCaption": "目前已啟用的 API 金鑰清單",
"ButtonTogglePlaylist": "播放清單", "ButtonTogglePlaylist": "播放清單",
"ButtonSyncPlay": "SyncPlay", "ButtonSyncPlay": "同步播放",
"LabelRequireHttpsHelp": "開啟後伺服器將自動將所有 HTTP 請求導向 HTTPS。若伺服器沒有啟用 HTTPS 則不生效。", "LabelRequireHttpsHelp": "開啟後伺服器將自動將所有 HTTP 請求導向 HTTPS。若伺服器沒有啟用 HTTPS 則不生效。",
"EnableFasterAnimationsHelp": "使用更快的動畫與過渡效果。", "EnableFasterAnimationsHelp": "使用更快的動畫與過渡效果。",
"EnableFasterAnimations": "更快的動畫", "EnableFasterAnimations": "更快的動畫",
@ -1413,7 +1413,7 @@
"LabelTonemappingRange": "色調映射範圍", "LabelTonemappingRange": "色調映射範圍",
"TonemappingAlgorithmHelp": "色調映射可以微調。如果你不是很熟悉這些選項,保持預設即可。建議值為 \"BT.2390\"。", "TonemappingAlgorithmHelp": "色調映射可以微調。如果你不是很熟悉這些選項,保持預設即可。建議值為 \"BT.2390\"。",
"LabelTonemappingAlgorithm": "選擇要使用的色調映射算法", "LabelTonemappingAlgorithm": "選擇要使用的色調映射算法",
"AllowTonemappingHelp": "色調映射可以將影片的動態範圍從 HDR 變換成 SDR同時保持圖像細節與顏色等對於表現原始場景非常重要的資訊。目前僅針對 HDR10 或 HLG 影片有效。此一選項需要對應的 OpenCL 或 CUDA runtime。", "AllowTonemappingHelp": "色調映射可以將影片的動態範圍從 HDR 變換成 SDR同時保持圖像細節與顏色等對於表現原始場景非常重要的資訊。目前僅針對 HDR10HLG 和 Dolby Vision 影片有效。此一選項需要對應的 OpenCL 或 CUDA 環境。",
"EnableTonemapping": "啟用色調映射", "EnableTonemapping": "啟用色調映射",
"LabelOpenclDeviceHelp": "此 OpenCL 設備用來色調映射。點的左側為平台號碼,右側為此平台上的設備號碼。默認值為 0.0。需要有 OpenCL 硬體加速功能的 FFmpeg 應用程式。", "LabelOpenclDeviceHelp": "此 OpenCL 設備用來色調映射。點的左側為平台號碼,右側為此平台上的設備號碼。默認值為 0.0。需要有 OpenCL 硬體加速功能的 FFmpeg 應用程式。",
"LabelColorPrimaries": "三原色", "LabelColorPrimaries": "三原色",
@ -1426,7 +1426,7 @@
"LabelTonemappingPeak": "色調映射峰值", "LabelTonemappingPeak": "色調映射峰值",
"LabelTonemappingThresholdHelp": "此參數對每個場景的色調映射算法進行微調。此閾值用於檢測場景是否已更改。如果當前幀平均亮度和當前運行平均值之間的距離超過閾值,我們將重新計算場景平均和峰值亮度。建議值和預設值分別為 0.8 和 0.2。", "LabelTonemappingThresholdHelp": "此參數對每個場景的色調映射算法進行微調。此閾值用於檢測場景是否已更改。如果當前幀平均亮度和當前運行平均值之間的距離超過閾值,我們將重新計算場景平均和峰值亮度。建議值和預設值分別為 0.8 和 0.2。",
"LabelTonemappingThreshold": "色調映射閾值", "LabelTonemappingThreshold": "色調映射閾值",
"LabelTonemappingDesatHelp": "降低超過此亮度級別的亮部飽和度。此值越大,將保留更多的顏色資訊。此設置可以平滑地變成白色,從而有助於防止超高亮顯示出不自然的顏色。這使圖像感覺更自然,但以減少超出範圍的顏色的相關資訊為代價。建議值和預設值分別為 0 和 0.5。", "LabelTonemappingDesatHelp": "降低超過此亮度級別的亮部飽和度。此值越大,將保留更多的顏色資訊。此設定可以平滑地變成白色,從而防止超高亮顯示出不自然的顏色。這使圖像感覺更自然,但以減少超出範圍的顏色的相關資訊為代價。建議值和預設值分別為 0 和 0.5。",
"LabelCreateHttpPortMap": "為 HTTP 與 HTTPS 流量啟用自動端口映射。", "LabelCreateHttpPortMap": "為 HTTP 與 HTTPS 流量啟用自動端口映射。",
"LabelAutomaticDiscoveryHelp": "允許程式通過UDP 7359 連接埠自動偵測Jellyfin 。", "LabelAutomaticDiscoveryHelp": "允許程式通過UDP 7359 連接埠自動偵測Jellyfin 。",
"LabelAutomaticDiscovery": "啟動自動探索", "LabelAutomaticDiscovery": "啟動自動探索",
@ -1539,7 +1539,7 @@
"LabelCreateHttpPortMapHelp": "允許自動端口映射為除了HTTPS之外的HTTP流量創建規則。", "LabelCreateHttpPortMapHelp": "允許自動端口映射為除了HTTPS之外的HTTP流量創建規則。",
"HeaderContinueReading": "繼續閱讀", "HeaderContinueReading": "繼續閱讀",
"DisableCustomCss": "停用伺服器提供的自訂CSS樣式", "DisableCustomCss": "停用伺服器提供的自訂CSS樣式",
"DirectPlayHelp": "原始檔完全相容於此客戶端,且工作階段正在接收檔案並未作任何修改。", "DirectPlayHelp": "原始檔完全相容於此用戶端,並正在直接接收原始檔案。",
"LabelHardwareEncoding": "硬體編碼器", "LabelHardwareEncoding": "硬體編碼器",
"Track": "音軌", "Track": "音軌",
"Remixer": "重混師", "Remixer": "重混師",
@ -1664,7 +1664,7 @@
"ThemeSong": "主題曲", "ThemeSong": "主題曲",
"ThemeVideo": "主題影片", "ThemeVideo": "主題影片",
"EnableEnhancedNvdecDecoderHelp": "實驗性 NVDEC 實現,除非遇到解碼錯誤,否則不要啟用此選項。", "EnableEnhancedNvdecDecoderHelp": "實驗性 NVDEC 實現,除非遇到解碼錯誤,否則不要啟用此選項。",
"LabelVppTonemappingBrightnessHelp": "在 VPP 色調映射中使用亮度增益。 推薦值和預設值均為 16 和 0。", "LabelVppTonemappingBrightnessHelp": "在 VPP 色調轉換中使用亮度增益。 推薦值和預設值為 16 和 0。",
"LabelVppTonemappingContrast": "VPP 色調映射對比度增益", "LabelVppTonemappingContrast": "VPP 色調映射對比度增益",
"VideoRangeTypeNotSupported": "不支援影片的範圍類型", "VideoRangeTypeNotSupported": "不支援影片的範圍類型",
"LabelVideoRangeType": "影片範圍類型", "LabelVideoRangeType": "影片範圍類型",
@ -1691,13 +1691,76 @@
"HeaderDummyChapter": "章節影像", "HeaderDummyChapter": "章節影像",
"LabelEnableAudioVbr": "啟用 VBR 音訊編碼", "LabelEnableAudioVbr": "啟用 VBR 音訊編碼",
"LabelParallelImageEncodingLimit": "並行圖片編碼限制", "LabelParallelImageEncodingLimit": "並行圖片編碼限制",
"LabelParallelImageEncodingLimitHelp": "允許並行運行的圖像編碼最大數量。將其設置為 0 將根據您的系統規格限制。", "LabelParallelImageEncodingLimitHelp": "允許同時進行的圖像編碼最大數量0為自動。",
"HeaderPerformance": "效能", "HeaderPerformance": "效能",
"LabelDummyChapterDuration": "頻率", "LabelDummyChapterDuration": "頻率",
"LabelDummyChapterDurationHelp": "章節圖片擷取頻率為幾秒。", "LabelDummyChapterDurationHelp": "虛擬章節之間的間隔設定為0以禁用。修改此設定不會影響現有的虛擬章節。",
"LabelDummyChapterCount": "限制", "LabelDummyChapterCount": "限制",
"LabelDummyChapterCountHelp": "每個媒體檔案的最大的章節擷取圖片數量。", "LabelDummyChapterCountHelp": "每個媒體檔案的最大的章節擷取圖片數量。",
"LabelChapterImageResolution": "解析度", "LabelChapterImageResolution": "解析度",
"LabelChapterImageResolutionHelp": "章節擷取圖片解析度。", "LabelChapterImageResolutionHelp": "章節圖片擷取解析度。修改此設定對於現存的虛擬章節沒有影響。",
"HeaderRecordingMetadataSaving": "錄製中繼資料" "HeaderRecordingMetadataSaving": "錄製中繼資料",
"SaveRecordingImagesHelp": "將 EPG 提供的圖像和媒體一起保存。",
"SubtitleGreen": "綠色",
"SubtitleLightGray": "淺灰色",
"PasswordRequiredForAdmin": "管理員帳號需要密碼。",
"SubtitleCyan": "青色",
"SubtitleRed": "紅色",
"MenuClose": "關閉選單",
"SaveRecordingImages": "儲存 EPG 影像",
"Studio": "工作室",
"SubtitleBlue": "藍色",
"SubtitleMagenta": "洋紅色",
"SubtitleBlack": "黑色",
"SubtitleYellow": "黃色",
"SubtitleWhite": "白色",
"PreferEmbeddedExtrasTitlesOverFileNames": "對額外內容優先使用內部的標題",
"AllowSegmentDeletion": "刪除片段",
"AllowSegmentDeletionHelp": "將已經傳送給用戶端的片段刪除。這樣可以減少需要儲存的轉碼暫存檔。需要啟動限制轉碼才有效。如果播放出現問題,請關閉此選項。",
"LabelThrottleDelaySeconds": "轉碼緩衝時間",
"LabelThrottleDelaySecondsHelp": "限制轉碼的時間(秒)。必須足夠長,以保障用戶端擁有足夠的緩衝區。只有在限制轉碼啟用時有效。",
"LabelSegmentKeepSeconds": "片段保留時間",
"LabelSegmentKeepSecondsHelp": "片段在被覆寫前保留的時間。必須大於緩衝時間。只在刪除片段啟用時有效。",
"GetThePlugin": "取得外掛",
"PreferEmbeddedExtrasTitlesOverFileNamesHelp": "額外內容通常和上級項目擁有相同的標題,勾選以使用內部標題。",
"SecondarySubtitles": "次要字幕",
"LabelSyncPlayNoGroups": "沒有可用的群組",
"NotificationsMovedMessage": "通知功能已經轉移至 Webhook 外掛程式中。",
"TonemappingModeHelp": "如果遇到高光過度曝光,請嘗試切換到 RGB 模式。",
"EnableAudioNormalizationHelp": "音量標準化將增加一個增益以保持平均音量在恆定的大小(-18dB。",
"EnableAudioNormalization": "音量標準化",
"LabelEnableLUFSScan": "啟用 LUFS 掃描",
"HeaderEpisodesStatus": "劇集狀態",
"SaveRecordingNFO": "在 NFO 中保存 EPG 資訊",
"SaveRecordingNFOHelp": "和媒體資訊一起儲存 EPG 內容。",
"LabelDate": "日期",
"LabelLevel": "等級",
"LabelMediaDetails": "媒體詳細資料",
"LogLevel.Trace": "追蹤",
"LogLevel.Debug": "除錯",
"LogLevel.None": "沒有",
"Notifications": "通知",
"LabelBackdropScreensaverInterval": "螢幕保護程式間隔",
"LabelBackdropScreensaverIntervalHelp": "螢幕保護裝置切換背景的間隔。",
"LabelSystem": "系統",
"LogLevel.Information": "資訊",
"LogLevel.Warning": "警告",
"LogLevel.Error": "錯誤",
"LogLevel.Critical": "嚴重",
"PleaseConfirmRepositoryInstallation": "如果您已閱讀上述內容,並希望繼續安裝外掛程式庫,輕點擊 OK。",
"ResolutionMatchSource": "配對來源",
"SubtitleGray": "灰色",
"Select": "選擇",
"LabelTonemappingMode": "色調轉換模式",
"Unknown": "未知",
"LabelDeveloper": "開發者",
"Featurette": "花絮",
"Short": "短片",
"LabelEnableAudioVbrHelp": "可變位元率VBR比起平均位元率ABR能提供更好的音質。在少數情況可能造成相容性問題。",
"MenuOpen": "打開選單",
"UserMenu": "用戶選單",
"HeaderConfirmRepositoryInstallation": "確認外掛來源庫",
"MessageRepositoryInstallDisclaimer": "警告:安裝第三方外掛程式庫有風險。其中可能包不穩定或含惡意的程式,並且可能隨時變化。請只安裝你信任的作者提供的外掛程式庫。",
"LabelEnableLUFSScanHelp": "針對音樂啟用 LUFS 掃描(需要更多時間和資源)。",
"AllowCollectionManagement": "允許用戶管理合輯"
} }

View file

@ -19,5 +19,8 @@ export enum LibraryTab {
Songs = 'songs', Songs = 'songs',
Suggestions = 'suggestions', Suggestions = 'suggestions',
Trailers = 'trailers', Trailers = 'trailers',
Upcoming = 'upcoming' Upcoming = 'upcoming',
Photos = 'photos',
Videos = 'videos',
Books = 'books',
} }