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

Merge remote-tracking branch 'upstream/master' into translate-everything

This commit is contained in:
ferferga 2020-04-02 21:26:04 +02:00
commit 5146cd8c39
9 changed files with 133 additions and 132 deletions

View file

@ -1,18 +1,7 @@
define(["dialogHelper", "loading", "connectionManager", "globalize", "actionsheet", "emby-input", "paper-icon-button-light", "emby-button", "listViewStyle", "material-icons", "formDialogStyle"], function (dialogHelper, loading, connectionManager, globalize, actionsheet) { define(["dom", "dialogHelper", "loading", "connectionManager", "globalize", "actionsheet", "emby-input", "paper-icon-button-light", "emby-button", "listViewStyle", "material-icons", "formDialogStyle"], function (dom, dialogHelper, loading, connectionManager, globalize, actionsheet) {
"use strict"; "use strict";
return function (options) { return function (options) {
function parentWithClass(elem, className) {
while (!elem.classList || !elem.classList.contains(className)) {
elem = elem.parentNode;
if (!elem) {
return null;
}
}
return elem;
}
function mapChannel(button, channelId, providerChannelId) { function mapChannel(button, channelId, providerChannelId) {
loading.show(); loading.show();
var providerId = options.providerId; var providerId = options.providerId;
@ -26,7 +15,7 @@ define(["dialogHelper", "loading", "connectionManager", "globalize", "actionshee
}, },
dataType: "json" dataType: "json"
}).then(function (mapping) { }).then(function (mapping) {
var listItem = parentWithClass(button, "listItem"); var listItem = dom.parentWithClass(button, "listItem");
button.setAttribute("data-providerid", mapping.ProviderChannelId); button.setAttribute("data-providerid", mapping.ProviderChannelId);
listItem.querySelector(".secondary").innerHTML = getMappingSecondaryName(mapping, currentMappingOptions.ProviderName); listItem.querySelector(".secondary").innerHTML = getMappingSecondaryName(mapping, currentMappingOptions.ProviderName);
loading.hide(); loading.hide();
@ -34,7 +23,7 @@ define(["dialogHelper", "loading", "connectionManager", "globalize", "actionshee
} }
function onChannelsElementClick(e) { function onChannelsElementClick(e) {
var btnMap = parentWithClass(e.target, "btnMap"); var btnMap = dom.parentWithClass(e.target, "btnMap");
if (btnMap) { if (btnMap) {
var channelId = btnMap.getAttribute("data-id"); var channelId = btnMap.getAttribute("data-id");

View file

@ -1,25 +1,12 @@
define(['dialogHelper', 'loading', 'apphost', 'layoutManager', 'connectionManager', 'appRouter', 'globalize', 'emby-checkbox', 'emby-input', 'paper-icon-button-light', 'emby-select', 'material-icons', 'css!./../formdialog', 'emby-button', 'flexStyles'], function (dialogHelper, loading, appHost, layoutManager, connectionManager, appRouter, globalize) { define(['dom', 'dialogHelper', 'loading', 'apphost', 'layoutManager', 'connectionManager', 'appRouter', 'globalize', 'emby-checkbox', 'emby-input', 'paper-icon-button-light', 'emby-select', 'material-icons', 'css!./../formdialog', 'emby-button', 'flexStyles'], function (dom, dialogHelper, loading, appHost, layoutManager, connectionManager, appRouter, globalize) {
'use strict'; 'use strict';
var currentServerId; var currentServerId;
function parentWithClass(elem, className) {
while (!elem.classList || !elem.classList.contains(className)) {
elem = elem.parentNode;
if (!elem) {
return null;
}
}
return elem;
}
function onSubmit(e) { function onSubmit(e) {
loading.show(); loading.show();
var panel = parentWithClass(this, 'dialog'); var panel = dom.parentWithClass(this, 'dialog');
var collectionId = panel.querySelector('#selectCollectionToAddTo').value; var collectionId = panel.querySelector('#selectCollectionToAddTo').value;

View file

@ -1,4 +1,4 @@
define(["dialogHelper", "globalize", "connectionManager", "events", "browser", "require", "emby-checkbox", "emby-collapse", "css!./style"], function (dialogHelper, globalize, connectionManager, events, browser, require) { define(["dom", "dialogHelper", "globalize", "connectionManager", "events", "browser", "require", "emby-checkbox", "emby-collapse", "css!./style"], function (dom, dialogHelper, globalize, connectionManager, events, browser, require) {
"use strict"; "use strict";
function renderOptions(context, selector, cssClass, items, isCheckedFn) { function renderOptions(context, selector, cssClass, items, isCheckedFn) {
@ -106,16 +106,6 @@ define(["dialogHelper", "globalize", "connectionManager", "events", "browser", "
events.trigger(instance, "filterchange"); events.trigger(instance, "filterchange");
} }
function parentWithClass(elem, className) {
while (!elem.classList || !elem.classList.contains(className)) {
elem = elem.parentNode;
if (!elem) {
return null;
}
}
return elem;
}
function setVisibility(context, options) { function setVisibility(context, options) {
if (options.mode == "livetvchannels" || options.mode == "albums" || options.mode == "artists" || options.mode == "albumartists" || options.mode == "songs") { if (options.mode == "livetvchannels" || options.mode == "albums" || options.mode == "artists" || options.mode == "albumartists" || options.mode == "songs") {
hideByClass(context, "videoStandard"); hideByClass(context, "videoStandard");
@ -320,7 +310,7 @@ define(["dialogHelper", "globalize", "connectionManager", "events", "browser", "
triggerChange(self); triggerChange(self);
}); });
context.addEventListener("change", function (e) { context.addEventListener("change", function (e) {
var chkGenreFilter = parentWithClass(e.target, "chkGenreFilter"); var chkGenreFilter = dom.parentWithClass(e.target, "chkGenreFilter");
if (chkGenreFilter) { if (chkGenreFilter) {
var filterName = chkGenreFilter.getAttribute("data-filter"); var filterName = chkGenreFilter.getAttribute("data-filter");
var filters = query.Genres || ""; var filters = query.Genres || "";
@ -334,7 +324,7 @@ define(["dialogHelper", "globalize", "connectionManager", "events", "browser", "
triggerChange(self); triggerChange(self);
return; return;
} }
var chkTagFilter = parentWithClass(e.target, "chkTagFilter"); var chkTagFilter = dom.parentWithClass(e.target, "chkTagFilter");
if (chkTagFilter) { if (chkTagFilter) {
var filterName = chkTagFilter.getAttribute("data-filter"); var filterName = chkTagFilter.getAttribute("data-filter");
var filters = query.Tags || ""; var filters = query.Tags || "";
@ -348,7 +338,7 @@ define(["dialogHelper", "globalize", "connectionManager", "events", "browser", "
triggerChange(self); triggerChange(self);
return; return;
} }
var chkYearFilter = parentWithClass(e.target, "chkYearFilter"); var chkYearFilter = dom.parentWithClass(e.target, "chkYearFilter");
if (chkYearFilter) { if (chkYearFilter) {
var filterName = chkYearFilter.getAttribute("data-filter"); var filterName = chkYearFilter.getAttribute("data-filter");
var filters = query.Years || ""; var filters = query.Years || "";
@ -362,7 +352,7 @@ define(["dialogHelper", "globalize", "connectionManager", "events", "browser", "
triggerChange(self); triggerChange(self);
return; return;
} }
var chkOfficialRatingFilter = parentWithClass(e.target, "chkOfficialRatingFilter"); var chkOfficialRatingFilter = dom.parentWithClass(e.target, "chkOfficialRatingFilter");
if (chkOfficialRatingFilter) { if (chkOfficialRatingFilter) {
var filterName = chkOfficialRatingFilter.getAttribute("data-filter"); var filterName = chkOfficialRatingFilter.getAttribute("data-filter");
var filters = query.OfficialRatings || ""; var filters = query.OfficialRatings || "";

View file

@ -1,4 +1,4 @@
define(['loading', 'apphost', 'dialogHelper', 'connectionManager', 'imageLoader', 'browser', 'layoutManager', 'scrollHelper', 'globalize', 'require', 'emby-checkbox', 'paper-icon-button-light', 'emby-button', 'formDialogStyle', 'cardStyle'], function (loading, appHost, dialogHelper, connectionManager, imageLoader, browser, layoutManager, scrollHelper, globalize, require) { define(['dom', 'loading', 'apphost', 'dialogHelper', 'connectionManager', 'imageLoader', 'browser', 'layoutManager', 'scrollHelper', 'globalize', 'require', 'emby-checkbox', 'paper-icon-button-light', 'emby-button', 'formDialogStyle', 'cardStyle'], function (dom, loading, appHost, dialogHelper, connectionManager, imageLoader, browser, layoutManager, scrollHelper, globalize, require) {
'use strict'; 'use strict';
var enableFocusTransform = !browser.slow && !browser.edge; var enableFocusTransform = !browser.slow && !browser.edge;
@ -126,21 +126,7 @@ define(['loading', 'apphost', 'dialogHelper', 'connectionManager', 'imageLoader'
return html; return html;
} }
function parentWithClass(elem, className) {
while (!elem.classList || !elem.classList.contains(className)) {
elem = elem.parentNode;
if (!elem) {
return null;
}
}
return elem;
}
function downloadRemoteImage(page, apiClient, url, type, provider) { function downloadRemoteImage(page, apiClient, url, type, provider) {
var options = getBaseRemoteOptions(); var options = getBaseRemoteOptions();
options.Type = type; options.Type = type;
@ -152,7 +138,7 @@ define(['loading', 'apphost', 'dialogHelper', 'connectionManager', 'imageLoader'
apiClient.downloadRemoteImage(options).then(function () { apiClient.downloadRemoteImage(options).then(function () {
hasChanges = true; hasChanges = true;
var dlg = parentWithClass(page, 'dialog'); var dlg = dom.parentWithClass(page, 'dialog');
dialogHelper.close(dlg); dialogHelper.close(dlg);
}); });
} }
@ -162,7 +148,6 @@ define(['loading', 'apphost', 'dialogHelper', 'connectionManager', 'imageLoader'
} }
function getRemoteImageHtml(image, imageType, apiClient) { function getRemoteImageHtml(image, imageType, apiClient) {
var tagName = layoutManager.tv ? 'button' : 'div'; var tagName = layoutManager.tv ? 'button' : 'div';
var enableFooterButtons = !layoutManager.tv; var enableFooterButtons = !layoutManager.tv;
@ -293,7 +278,6 @@ define(['loading', 'apphost', 'dialogHelper', 'connectionManager', 'imageLoader'
} }
function initEditor(page, apiClient) { function initEditor(page, apiClient) {
page.querySelector('#selectBrowsableImageType').addEventListener('change', function () { page.querySelector('#selectBrowsableImageType').addEventListener('change', function () {
browsableImageType = this.value; browsableImageType = this.value;
browsableImageStartIndex = 0; browsableImageStartIndex = 0;
@ -319,14 +303,14 @@ define(['loading', 'apphost', 'dialogHelper', 'connectionManager', 'imageLoader'
page.addEventListener('click', function (e) { page.addEventListener('click', function (e) {
var btnDownloadRemoteImage = parentWithClass(e.target, 'btnDownloadRemoteImage'); var btnDownloadRemoteImage = dom.parentWithClass(e.target, 'btnDownloadRemoteImage');
if (btnDownloadRemoteImage) { if (btnDownloadRemoteImage) {
var card = parentWithClass(btnDownloadRemoteImage, 'card'); var card = dom.parentWithClass(btnDownloadRemoteImage, 'card');
downloadRemoteImage(page, apiClient, card.getAttribute('data-imageurl'), card.getAttribute('data-imagetype'), card.getAttribute('data-imageprovider')); downloadRemoteImage(page, apiClient, card.getAttribute('data-imageurl'), card.getAttribute('data-imagetype'), card.getAttribute('data-imageprovider'));
return; return;
} }
var btnImageCard = parentWithClass(e.target, 'btnImageCard'); var btnImageCard = dom.parentWithClass(e.target, 'btnImageCard');
if (btnImageCard) { if (btnImageCard) {
downloadRemoteImage(page, apiClient, btnImageCard.getAttribute('data-imageurl'), btnImageCard.getAttribute('data-imagetype'), btnImageCard.getAttribute('data-imageprovider')); downloadRemoteImage(page, apiClient, btnImageCard.getAttribute('data-imageurl'), btnImageCard.getAttribute('data-imagetype'), btnImageCard.getAttribute('data-imageprovider'));
} }
@ -334,7 +318,6 @@ define(['loading', 'apphost', 'dialogHelper', 'connectionManager', 'imageLoader'
} }
function showEditor(itemId, serverId, itemType) { function showEditor(itemId, serverId, itemType) {
loading.show(); loading.show();
require(['text!./imagedownloader.template.html'], function (template) { require(['text!./imagedownloader.template.html'], function (template) {
@ -380,7 +363,6 @@ define(['loading', 'apphost', 'dialogHelper', 'connectionManager', 'imageLoader'
} }
function onDialogClosed() { function onDialogClosed() {
var dlg = this; var dlg = this;
if (layoutManager.tv) { if (layoutManager.tv) {
@ -397,9 +379,7 @@ define(['loading', 'apphost', 'dialogHelper', 'connectionManager', 'imageLoader'
return { return {
show: function (itemId, serverId, itemType, imageType) { show: function (itemId, serverId, itemType, imageType) {
return new Promise(function (resolve, reject) { return new Promise(function (resolve, reject) {
currentResolve = resolve; currentResolve = resolve;
currentReject = reject; currentReject = reject;
hasChanges = false; hasChanges = false;

View file

@ -1,24 +1,10 @@
define(['shell', 'dialogHelper', 'loading', 'layoutManager', 'playbackManager', 'connectionManager', 'userSettings', 'appRouter', 'globalize', 'emby-input', 'paper-icon-button-light', 'emby-select', 'material-icons', 'css!./../formdialog', 'emby-button'], function (shell, dialogHelper, loading, layoutManager, playbackManager, connectionManager, userSettings, appRouter, globalize) { define(['dom', 'shell', 'dialogHelper', 'loading', 'layoutManager', 'playbackManager', 'connectionManager', 'userSettings', 'appRouter', 'globalize', 'emby-input', 'paper-icon-button-light', 'emby-select', 'material-icons', 'css!./../formdialog', 'emby-button'], function (dom, shell, dialogHelper, loading, layoutManager, playbackManager, connectionManager, userSettings, appRouter, globalize) {
'use strict'; 'use strict';
var currentServerId; var currentServerId;
function parentWithClass(elem, className) {
while (!elem.classList || !elem.classList.contains(className)) {
elem = elem.parentNode;
if (!elem) {
return null;
}
}
return elem;
}
function onSubmit(e) { function onSubmit(e) {
var panel = dom.parentWithClass(this, 'dialog');
var panel = parentWithClass(this, 'dialog');
var playlistId = panel.querySelector('#selectPlaylistToAddTo').value; var playlistId = panel.querySelector('#selectPlaylistToAddTo').value;
var apiClient = connectionManager.getApiClient(currentServerId); var apiClient = connectionManager.getApiClient(currentServerId);
@ -35,11 +21,9 @@ define(['shell', 'dialogHelper', 'loading', 'layoutManager', 'playbackManager',
} }
function createPlaylist(apiClient, dlg) { function createPlaylist(apiClient, dlg) {
loading.show(); loading.show();
var url = apiClient.getUrl("Playlists", { var url = apiClient.getUrl("Playlists", {
Name: dlg.querySelector('#txtNewPlaylistName').value, Name: dlg.querySelector('#txtNewPlaylistName').value,
Ids: dlg.querySelector('.fldSelectedItemIds').value || '', Ids: dlg.querySelector('.fldSelectedItemIds').value || '',
userId: apiClient.getCurrentUserId() userId: apiClient.getCurrentUserId()
@ -50,9 +34,7 @@ define(['shell', 'dialogHelper', 'loading', 'layoutManager', 'playbackManager',
type: "POST", type: "POST",
url: url, url: url,
dataType: "json" dataType: "json"
}).then(function (result) { }).then(function (result) {
loading.hide(); loading.hide();
var id = result.Id; var id = result.Id;
@ -63,16 +45,13 @@ define(['shell', 'dialogHelper', 'loading', 'layoutManager', 'playbackManager',
} }
function redirectToPlaylist(apiClient, id) { function redirectToPlaylist(apiClient, id) {
appRouter.showItem(id, apiClient.serverId()); appRouter.showItem(id, apiClient.serverId());
} }
function addToPlaylist(apiClient, dlg, id) { function addToPlaylist(apiClient, dlg, id) {
var itemIds = dlg.querySelector('.fldSelectedItemIds').value || ''; var itemIds = dlg.querySelector('.fldSelectedItemIds').value || '';
if (id === 'queue') { if (id === 'queue') {
playbackManager.queue({ playbackManager.queue({
serverId: apiClient.serverId(), serverId: apiClient.serverId(),
ids: itemIds.split(',') ids: itemIds.split(',')
@ -85,7 +64,6 @@ define(['shell', 'dialogHelper', 'loading', 'layoutManager', 'playbackManager',
loading.show(); loading.show();
var url = apiClient.getUrl("Playlists/" + id + "/Items", { var url = apiClient.getUrl("Playlists/" + id + "/Items", {
Ids: itemIds, Ids: itemIds,
userId: apiClient.getCurrentUserId() userId: apiClient.getCurrentUserId()
}); });
@ -95,7 +73,6 @@ define(['shell', 'dialogHelper', 'loading', 'layoutManager', 'playbackManager',
url: url url: url
}).then(function () { }).then(function () {
loading.hide(); loading.hide();
dlg.submitted = true; dlg.submitted = true;
@ -108,7 +85,6 @@ define(['shell', 'dialogHelper', 'loading', 'layoutManager', 'playbackManager',
} }
function populatePlaylists(editorOptions, panel) { function populatePlaylists(editorOptions, panel) {
var select = panel.querySelector('#selectPlaylistToAddTo'); var select = panel.querySelector('#selectPlaylistToAddTo');
loading.hide(); loading.hide();
@ -116,7 +92,6 @@ define(['shell', 'dialogHelper', 'loading', 'layoutManager', 'playbackManager',
panel.querySelector('.newPlaylistInfo').classList.add('hide'); panel.querySelector('.newPlaylistInfo').classList.add('hide');
var options = { var options = {
Recursive: true, Recursive: true,
IncludeItemTypes: "Playlist", IncludeItemTypes: "Playlist",
SortBy: 'SortName', SortBy: 'SortName',
@ -125,7 +100,6 @@ define(['shell', 'dialogHelper', 'loading', 'layoutManager', 'playbackManager',
var apiClient = connectionManager.getApiClient(currentServerId); var apiClient = connectionManager.getApiClient(currentServerId);
apiClient.getItems(apiClient.getCurrentUserId(), options).then(function (result) { apiClient.getItems(apiClient.getCurrentUserId(), options).then(function (result) {
var html = ''; var html = '';
if (editorOptions.enableAddToPlayQueue !== false && playbackManager.isPlaying()) { if (editorOptions.enableAddToPlayQueue !== false && playbackManager.isPlaying()) {
@ -135,7 +109,6 @@ define(['shell', 'dialogHelper', 'loading', 'layoutManager', 'playbackManager',
html += '<option value="">' + globalize.translate('OptionNew') + '</option>'; html += '<option value="">' + globalize.translate('OptionNew') + '</option>';
html += result.Items.map(function (i) { html += result.Items.map(function (i) {
return '<option value="' + i.Id + '">' + i.Name + '</option>'; return '<option value="' + i.Id + '">' + i.Name + '</option>';
}); });
@ -159,7 +132,6 @@ define(['shell', 'dialogHelper', 'loading', 'layoutManager', 'playbackManager',
} }
function getEditorHtml(items) { function getEditorHtml(items) {
var html = ''; var html = '';
html += '<div class="formDialogContent smoothScrollY" style="padding-top:2em;">'; html += '<div class="formDialogContent smoothScrollY" style="padding-top:2em;">';
@ -195,7 +167,6 @@ define(['shell', 'dialogHelper', 'loading', 'layoutManager', 'playbackManager',
} }
function initEditor(content, options, items) { function initEditor(content, options, items) {
content.querySelector('#selectPlaylistToAddTo').addEventListener('change', function () { content.querySelector('#selectPlaylistToAddTo').addEventListener('change', function () {
if (this.value) { if (this.value) {
content.querySelector('.newPlaylistInfo').classList.add('hide'); content.querySelector('.newPlaylistInfo').classList.add('hide');
@ -235,7 +206,6 @@ define(['shell', 'dialogHelper', 'loading', 'layoutManager', 'playbackManager',
} }
PlaylistEditor.prototype.show = function (options) { PlaylistEditor.prototype.show = function (options) {
var items = options.items || {}; var items = options.items || {};
currentServerId = options.serverId; currentServerId = options.serverId;
@ -272,7 +242,6 @@ define(['shell', 'dialogHelper', 'loading', 'layoutManager', 'playbackManager',
initEditor(dlg, options, items); initEditor(dlg, options, items);
dlg.querySelector('.btnCancel').addEventListener('click', function () { dlg.querySelector('.btnCancel').addEventListener('click', function () {
dialogHelper.close(dlg); dialogHelper.close(dlg);
}); });
@ -281,7 +250,6 @@ define(['shell', 'dialogHelper', 'loading', 'layoutManager', 'playbackManager',
} }
return dialogHelper.open(dlg).then(function () { return dialogHelper.open(dlg).then(function () {
if (layoutManager.tv) { if (layoutManager.tv) {
centerFocus(dlg.querySelector('.formDialogContent'), false, false); centerFocus(dlg.querySelector('.formDialogContent'), false, false);
} }

View file

@ -1,19 +1,6 @@
define(['shell', 'dialogHelper', 'loading', 'layoutManager', 'connectionManager', 'appRouter', 'globalize', 'emby-input', 'emby-checkbox', 'paper-icon-button-light', 'emby-select', 'material-icons', 'css!./../formdialog', 'emby-button'], function (shell, dialogHelper, loading, layoutManager, connectionManager, appRouter, globalize) { define(['dom', 'shell', 'dialogHelper', 'loading', 'layoutManager', 'connectionManager', 'appRouter', 'globalize', 'emby-input', 'emby-checkbox', 'paper-icon-button-light', 'emby-select', 'material-icons', 'css!./../formdialog', 'emby-button'], function (dom, shell, dialogHelper, loading, layoutManager, connectionManager, appRouter, globalize) {
'use strict'; 'use strict';
function parentWithClass(elem, className) {
while (!elem.classList || !elem.classList.contains(className)) {
elem = elem.parentNode;
if (!elem) {
return null;
}
}
return elem;
}
function getEditorHtml() { function getEditorHtml() {
var html = ''; var html = '';
@ -65,7 +52,7 @@ define(['shell', 'dialogHelper', 'loading', 'layoutManager', 'connectionManager'
loading.show(); loading.show();
var instance = this; var instance = this;
var dlg = parentWithClass(e.target, 'dialog'); var dlg = dom.parentWithClass(e.target, 'dialog');
var options = instance.options; var options = instance.options;
var apiClient = connectionManager.getApiClient(options.serverId); var apiClient = connectionManager.getApiClient(options.serverId);

View file

@ -33,7 +33,7 @@
"HeaderFilters": "فیلتر ها", "HeaderFilters": "فیلتر ها",
"HeaderImageOptions": "گزینه های تصویر", "HeaderImageOptions": "گزینه های تصویر",
"HeaderInstantMix": "درهم کردن فوری", "HeaderInstantMix": "درهم کردن فوری",
"HeaderKodiMetadataHelp": "برای فعال یا غیرفعال سازی متاداده های Nfo ، یک کتابخانه را در صفحه تنظیم کتابخانه Jellyfin ویرایش کرده و قسمت سرورهای متاداده را مسیردهی کنید.", "HeaderKodiMetadataHelp": "برای فعال یا غیرفعال سازی ابرداده‌های Nfo ، یک کتابخانه را در صفحه تنظیم کتابخانه Jellyfin ویرایش کرده و قسمت سرورهای ابرداده را مسیردهی کنید.",
"HeaderLatestEpisodes": "آخرین قسمت ها", "HeaderLatestEpisodes": "آخرین قسمت ها",
"HeaderNextUp": "قسمت بعدی", "HeaderNextUp": "قسمت بعدی",
"HeaderPaths": "مسیرها", "HeaderPaths": "مسیرها",
@ -315,5 +315,105 @@
"ButtonSelectDirectory": "انتخاب مسیر", "ButtonSelectDirectory": "انتخاب مسیر",
"ButtonEditOtherUserPreferences": "نمایه، تصویر و ترجیحات شخصی این کاربر را ویرایش کنید.", "ButtonEditOtherUserPreferences": "نمایه، تصویر و ترجیحات شخصی این کاربر را ویرایش کنید.",
"BrowsePluginCatalogMessage": "برای مرور کردن افزونه‌های موجود، به فروشگاه افزونه‌های ما سر بزنید.", "BrowsePluginCatalogMessage": "برای مرور کردن افزونه‌های موجود، به فروشگاه افزونه‌های ما سر بزنید.",
"AuthProviderHelp": "ارائه دهنده تأیید اعتبار را انتخاب کنید تا برای تأیید اعتبار گذرواژه این کاربر استفاده شود." "AuthProviderHelp": "ارائه دهنده تأیید اعتبار را انتخاب کنید تا برای تأیید اعتبار گذرواژه این کاربر استفاده شود.",
"HeaderRecordingPostProcessing": "در حال ضبط پس پردازش",
"HeaderRecordingOptions": "گزینه‌های ضبط",
"HeaderRecentlyPlayed": "به تازگی پخش شده",
"HeaderProfileInformation": "اطلاعات نمایه",
"HeaderProfile": "نمایه",
"HeaderPluginInstallation": "نصب افزونه",
"HeaderPleaseSignIn": "لطفا وارد شوید",
"HeaderPlaybackError": "خطای پخش",
"HeaderPlayback": "پخش رسانه",
"HeaderPlayOn": "پخش در",
"HeaderPinCodeReset": "بازنشانی پین کد",
"HeaderPhotoAlbums": "آلبوم‌های عکس",
"HeaderPeople": "افراد",
"HeaderPendingInvitations": "دعوت‌های در انتظار",
"HeaderPasswordReset": "بازنشانی گذرواژه",
"HeaderPassword": "گذرواژه",
"HeaderParentalRatings": "رتبه بندی والدین",
"HeaderOtherItems": "آیتم‌های دیگر",
"HeaderOnNow": "هم اکنون",
"HeaderNextVideoPlayingInValue": "پخش ویدیوی بعد در {0}",
"HeaderNextEpisodePlayingInValue": "پخش قسمت بعدی در {0}",
"HeaderNewDevices": "دستگاه جدید",
"HeaderNewApiKey": "کلید API جدید",
"HeaderMyMediaSmall": "رسانه‌ی من (کوچک)",
"HeaderMyMedia": "رسانه‌ی من",
"HeaderMyDevice": "دستگاه‌های من",
"HeaderMusicVideos": "موزیک ویدیوها",
"HeaderMusicQuality": "کیفیت آهنگ",
"HeaderMovies": "فیلم‌ها",
"HeaderMoreLikeThis": "موارد مشابه با این",
"HeaderMetadataSettings": "تنظیمات ابرداده",
"HeaderMediaInfo": "اطلاعات رسانه",
"HeaderMediaFolders": "پوشه‌های رسانه",
"HeaderMedia": "رسانه",
"HeaderLoginFailure": "ورود ناموفق",
"HeaderLiveTvTunerSetup": "تنظیم تلویزیون زنده",
"HeaderLiveTv": "تلویزیون زنده",
"HeaderLibrarySettings": "تنظیمات کتابخانه",
"HeaderLibraryOrder": "ترتیت کتابخانه",
"HeaderLibraryFolders": "پوشه‌های کتابخانه",
"HeaderLibraryAccess": "دسترسی به کتابخانه",
"HeaderLibraries": "کتابخانه‌ها",
"HeaderLatestRecordings": "آخرین ضبط‌ها",
"HeaderLatestMusic": "آخرین آهنگ‌ها",
"HeaderLatestMovies": "آخرین فیلم‌ها",
"HeaderLatestMedia": "آخرین رسانه‌ها",
"HeaderKeepSeries": "سریال ادامه دهید",
"HeaderKeepRecording": "ضبط را ادامه دهید",
"HeaderItems": "موارد",
"HeaderInstall": "نصب",
"HeaderImageSettings": "تنظیمات عکس",
"HeaderIdentifyItemHelp": "یک یا بیشتر مورد برای جستجو وارد کنید. موارد را حذف کنید تا نتیجه جستجو را افزایش دهید.",
"HeaderIdentificationHeader": "سرفصل تعیین هویت",
"HeaderIdentificationCriteriaHelp": "حداقل یک مورد تعیین هویت وارد کنید.",
"HeaderIdentification": "تعیین هویت",
"HeaderHttpHeaders": "سرفصل‌های HTTP",
"HeaderHome": "خانه",
"HeaderGuideProviders": "ارائه دهنده داده راهنمای تلویزیونی",
"HeaderGenres": "ژانرها",
"HeaderFrequentlyPlayed": "اغلب پخش شده",
"HeaderForgotPassword": "فراموشی گذرواژه",
"HeaderForKids": "برای کودکان",
"HeaderFetchImages": "دریافت عکس‌ها:",
"HeaderFeatures": "برجسته‌ها",
"HeaderFeatureAccess": "دسترسی‌های برجسته",
"HeaderFavoriteVideos": "ویدیو‌های مورد علاقه",
"HeaderFavoritePeople": "افراد مورد علاقه",
"HeaderFavoriteMovies": "فیلم‌های مورد علاقه",
"HeaderFavoriteBooks": "کتاب‌های مورد علاقه",
"HeaderExternalIds": "ID های خارجی:",
"HeaderError": "خطا",
"HeaderEpisodes": "قسمت‌ها",
"HeaderEnabledFieldsHelp": "یک فیلد را برای جلوگیری از تغییر در داده‌ی آن علامت بزنید تا قفل بشود.",
"HeaderEnabledFields": "فیلد‌های فعال شده",
"HeaderEditImages": "ویرایش عکس‌ها",
"HeaderDownloadSync": "بارگیری و همگام‌سازی",
"HeaderDisplay": "نمایش",
"HeaderDirectPlayProfileHelp": "نمایه‌ی پخش مستقیم را اضافه کنید تا مشخص کنید با چه فرمی دستگاه می‌تواند محلی برخورد کند.",
"HeaderDirectPlayProfile": "نمایه‌ی پخش مستقیم",
"HeaderDevices": "دستگاه‌ها",
"HeaderDeveloperInfo": "اطلاعات توسعه دهنده",
"HeaderDetectMyDevices": "تشخیص دستگاه‌های من",
"HeaderDeleteTaskTrigger": "حذف راه انداز وظیفه",
"HeaderDeleteProvider": "حذف ارائه‌دهنده",
"HeaderDeleteItems": "حذف آیتم‌ها",
"HeaderDeleteItem": "حذف آیتم",
"HeaderDeleteDevice": "حذف دستگاه",
"HeaderDefaultRecordingSettings": "تنظمیات پیش‌فرض ضبط",
"HeaderDateIssued": "تاریخ صدور",
"HeaderCodecProfileHelp": "نمایه‌های کدک محدودیت‌های یک دستگاه را هنگام پخش کدک‌های خاص نشان می‌دهد. اگر محدودیتی اعمال شود، رسانه‌ها کد گذاری می‌شوند ، حتی اگر کدک برای پخش مستقیم پیکربندی شده باشد.",
"HeaderCodecProfile": "نمایه کدک",
"HeaderChapterImages": "عکس‌های سکانس",
"HeaderChannels": "کانال‌ها",
"HeaderChannelAccess": "دسترسی به کانال",
"HeaderCastCrew": "بازیگران و کارکنان",
"HeaderCastAndCrew": "بازیگران و کارکنان",
"HeaderCancelSeries": "لغو سریال",
"HeaderCancelRecording": "لغو ضبط",
"HeaderBooks": "کتاب‌ها",
"HeaderBlockItemsWithNoRating": "موارد مسدود شده با نقص یا عدم وجود اطلاعات امتیاز:"
} }

View file

@ -14,7 +14,7 @@
"Alerts": "Alertes", "Alerts": "Alertes",
"All": "Tout", "All": "Tout",
"AllChannels": "Toutes les chaînes", "AllChannels": "Toutes les chaînes",
"AllComplexFormats": "Tous les formats complexes (ASS, SSA, VOBSUB, PGS, SUB/IDX, etc…)", "AllComplexFormats": "Tous les formats complexes (ASS, SSA, VOBSUB, PGS, SUB, IDX, etc…)",
"AllEpisodes": "Tous les épisodes", "AllEpisodes": "Tous les épisodes",
"AllLanguages": "Toutes les langues", "AllLanguages": "Toutes les langues",
"AllLibraries": "Toutes les médiathèques", "AllLibraries": "Toutes les médiathèques",
@ -51,7 +51,7 @@
"BoxRear": "Dos de boîtier", "BoxRear": "Dos de boîtier",
"Browse": "Parcourir", "Browse": "Parcourir",
"BrowsePluginCatalogMessage": "Explorer notre catalogue des plugins pour voir les plugins disponibles.", "BrowsePluginCatalogMessage": "Explorer notre catalogue des plugins pour voir les plugins disponibles.",
"BurnSubtitlesHelp": "Détermine si le serveur doit incruster les sous-titres lors de la conversion vidéo en fonction du format des sous-titres. Éviter l'incrustation des sous-titres améliorera les performances du serveur. Sélectionnez Auto pour incruster les formats basés sur l'image (VOBSUB, PGS, SUB/IDX etc) et certains sous-titres ASS/SSA.", "BurnSubtitlesHelp": "Détermine si le serveur doit incruster les sous-titres lors du transcodage de la vidéo. Éviter cela améliorera nettement la performance. Sélectionnez Auto pour incruster les formats basés sur l'image (VOBSUB, PGS, SUB, IDX etc) et certains sous-titres ASS ou SSA.",
"ButtonAdd": "Ajouter", "ButtonAdd": "Ajouter",
"ButtonAddMediaLibrary": "Ajouter une médiathèque", "ButtonAddMediaLibrary": "Ajouter une médiathèque",
"ButtonAddScheduledTaskTrigger": "Ajouter un déclencheur", "ButtonAddScheduledTaskTrigger": "Ajouter un déclencheur",
@ -186,7 +186,7 @@
"DisplayInOtherHomeScreenSections": "Afficher dans les sections de lécran daccueil comme Ajouts récents et Reprendre", "DisplayInOtherHomeScreenSections": "Afficher dans les sections de lécran daccueil comme Ajouts récents et Reprendre",
"DisplayMissingEpisodesWithinSeasons": "Afficher les épisodes manquants dans les saisons", "DisplayMissingEpisodesWithinSeasons": "Afficher les épisodes manquants dans les saisons",
"DisplayMissingEpisodesWithinSeasonsHelp": "Cette option doit aussi être activée pour les médiathèques TV dans les paramètres du serveur.", "DisplayMissingEpisodesWithinSeasonsHelp": "Cette option doit aussi être activée pour les médiathèques TV dans les paramètres du serveur.",
"DisplayModeHelp": "Sélectionner le type d'écran sur lequel vous utilisez Jellyfin.", "DisplayModeHelp": "Sélectionner l'agencement que vous désirez pour l'interface.",
"DoNotRecord": "Ne pas enregistrer", "DoNotRecord": "Ne pas enregistrer",
"Down": "Bas", "Down": "Bas",
"Download": "Téléchargement", "Download": "Téléchargement",
@ -948,7 +948,7 @@
"OneChannel": "Une chaîne", "OneChannel": "Une chaîne",
"OnlyForcedSubtitles": "Seulement les sous-titres forcés", "OnlyForcedSubtitles": "Seulement les sous-titres forcés",
"OnlyForcedSubtitlesHelp": "Seuls les sous-titres marqués comme forcés seront chargés.", "OnlyForcedSubtitlesHelp": "Seuls les sous-titres marqués comme forcés seront chargés.",
"OnlyImageFormats": "Seulement les formats image (VOBSUB, PGS, SUB, etc)", "OnlyImageFormats": "Seulement les formats image (VOBSUB, PGS, SUB)",
"OptionAdminUsers": "Administrateurs", "OptionAdminUsers": "Administrateurs",
"OptionAlbumArtist": "Artiste de l'album", "OptionAlbumArtist": "Artiste de l'album",
"OptionAllUsers": "Tous les utilisateurs", "OptionAllUsers": "Tous les utilisateurs",

View file

@ -14,7 +14,7 @@
"Albums": "Album", "Albums": "Album",
"All": "Tutto", "All": "Tutto",
"AllChannels": "Tutti i canali", "AllChannels": "Tutti i canali",
"AllComplexFormats": "Tutti i formati complessi (ASS, SSA, VOBSUB, PGS, SUB / IDX, ecc.)", "AllComplexFormats": "Tutti i formati complessi (ASS, SSA, VOBSUB, PGS, SUB, IDX)",
"AllEpisodes": "Tutti gli episodi", "AllEpisodes": "Tutti gli episodi",
"AllLanguages": "Tutte le lingue", "AllLanguages": "Tutte le lingue",
"AllLibraries": "Tutte le librerie", "AllLibraries": "Tutte le librerie",
@ -24,7 +24,7 @@
"AllowRemoteAccess": "Abilita connessioni remote a questo Server Jellyfin.", "AllowRemoteAccess": "Abilita connessioni remote a questo Server Jellyfin.",
"AllowRemoteAccessHelp": "Se deselezionato, tutte le connessioni remote saranno bloccate.", "AllowRemoteAccessHelp": "Se deselezionato, tutte le connessioni remote saranno bloccate.",
"AllowedRemoteAddressesHelp": "Elenco separato da virgola di indirizzi IP o voci IP / maschera di rete per reti che potranno connettersi da remoto. Se lasciato vuoto, saranno consentiti tutti gli indirizzi remoti.", "AllowedRemoteAddressesHelp": "Elenco separato da virgola di indirizzi IP o voci IP / maschera di rete per reti che potranno connettersi da remoto. Se lasciato vuoto, saranno consentiti tutti gli indirizzi remoti.",
"AlwaysPlaySubtitles": "Visualizza sempre i sottotitoli", "AlwaysPlaySubtitles": "Riproduci sempre",
"AlwaysPlaySubtitlesHelp": "I sottotitoli corrispondenti alla lingua preferita saranno caricati a prescindere dalla lingua dell'audio.", "AlwaysPlaySubtitlesHelp": "I sottotitoli corrispondenti alla lingua preferita saranno caricati a prescindere dalla lingua dell'audio.",
"AnyLanguage": "Qualsiasi lingua", "AnyLanguage": "Qualsiasi lingua",
"Anytime": "In qualsiasi momento", "Anytime": "In qualsiasi momento",
@ -45,7 +45,7 @@
"BoxRear": "Box (retro)", "BoxRear": "Box (retro)",
"Browse": "Esplora", "Browse": "Esplora",
"BrowsePluginCatalogMessage": "Sfoglia il catalogo dei Plugins.", "BrowsePluginCatalogMessage": "Sfoglia il catalogo dei Plugins.",
"BurnSubtitlesHelp": "Determina se il server deve applicare i sottotitoli quando si convertono video in base al formato dei sottotitoli. Evitando di applicare i sottotitoli migliorerà le prestazioni del server. Selezionare Auto per applicare formati basati sull'immagine (VOBSUB, PGS, SUB / IDX, ecc.) e alcuni sottotitoli ASS / SSA.", "BurnSubtitlesHelp": "Determina se il server deve imprimere i sottotitoli quando i video vengono convertiti. Evitare ciò migliorerà di molto le prestazioni. Selezionare Auto per imprimere formati basati sull'immagine (VOBSUB, PGS, SUB, IDX) e alcuni sottotitoli ASS o SSA.",
"ButtonAdd": "Aggiungi", "ButtonAdd": "Aggiungi",
"ButtonAddMediaLibrary": "Aggiungi raccolta multimediale", "ButtonAddMediaLibrary": "Aggiungi raccolta multimediale",
"ButtonAddScheduledTaskTrigger": "Aggiungi operazione", "ButtonAddScheduledTaskTrigger": "Aggiungi operazione",
@ -175,7 +175,7 @@
"DisplayInOtherHomeScreenSections": "Mostra le sezioni della schermata home come gli ultimi media e continua a guardare", "DisplayInOtherHomeScreenSections": "Mostra le sezioni della schermata home come gli ultimi media e continua a guardare",
"DisplayMissingEpisodesWithinSeasons": "Visualizza gli episodi mancanti nelle stagioni", "DisplayMissingEpisodesWithinSeasons": "Visualizza gli episodi mancanti nelle stagioni",
"DisplayMissingEpisodesWithinSeasonsHelp": "Questo deve anche essere abilitato per le librerie TV nella configurazione del server.", "DisplayMissingEpisodesWithinSeasonsHelp": "Questo deve anche essere abilitato per le librerie TV nella configurazione del server.",
"DisplayModeHelp": "Scegli il tipo di schermo su cui stai utilizzando Jellyfin.", "DisplayModeHelp": "Seleziona lo stile del layout che vuoi per l'interfaccia.",
"DoNotRecord": "Non registrare", "DoNotRecord": "Non registrare",
"Down": "Giù", "Down": "Giù",
"Download": "Scarica", "Download": "Scarica",
@ -901,16 +901,16 @@
"NoNextUpItemsMessage": "Trovato niente. Inizia a guardare i tuoi programmi!", "NoNextUpItemsMessage": "Trovato niente. Inizia a guardare i tuoi programmi!",
"NoPluginConfigurationMessage": "Questo Plugin non ha impostazioni da configurare.", "NoPluginConfigurationMessage": "Questo Plugin non ha impostazioni da configurare.",
"NoSubtitleSearchResultsFound": "Nessun risultato.", "NoSubtitleSearchResultsFound": "Nessun risultato.",
"NoSubtitles": "Nessun Sottotitolo", "NoSubtitles": "Nessuno",
"NoSubtitlesHelp": "I sottotitoli non verranno caricati per impostazione predefinita.Possono essere ancora caricati manualmente durante la riproduzione.", "NoSubtitlesHelp": "I sottotitoli non verranno caricati per impostazione predefinita.Possono essere ancora caricati manualmente durante la riproduzione.",
"None": "Nessuno", "None": "Nessuno",
"Normal": "Normale", "Normal": "Normale",
"NumLocationsValue": "{0} cartelle", "NumLocationsValue": "{0} cartelle",
"Off": "Spento", "Off": "Spento",
"OneChannel": "Un canale", "OneChannel": "Un canale",
"OnlyForcedSubtitles": "Solo i sottotitoli forzati", "OnlyForcedSubtitles": "Solo forzati",
"OnlyForcedSubtitlesHelp": "Solo i sottotitoli contrassegnati come forzati saranno caricati.", "OnlyForcedSubtitlesHelp": "Solo i sottotitoli contrassegnati come forzati saranno caricati.",
"OnlyImageFormats": "Solo formati immagine (VOBSUB, PGS, SUB, ecc)", "OnlyImageFormats": "Solo formati immagine (VOBSUB, PGS, SUB)",
"OptionAdminUsers": "Amministratori", "OptionAdminUsers": "Amministratori",
"OptionAlbumArtist": "Artista Album", "OptionAlbumArtist": "Artista Album",
"OptionAllUsers": "Tutti gli utenti", "OptionAllUsers": "Tutti gli utenti",
@ -1013,7 +1013,7 @@
"OptionReportByteRangeSeekingWhenTranscodingHelp": "Questo è necessario per alcuni dispositivi che non hanno l'avanzamento rapido che funziona bene.", "OptionReportByteRangeSeekingWhenTranscodingHelp": "Questo è necessario per alcuni dispositivi che non hanno l'avanzamento rapido che funziona bene.",
"OptionRequirePerfectSubtitleMatch": "Scarica solo i sottotitoli che corrispondono perfettamente ai miei file video", "OptionRequirePerfectSubtitleMatch": "Scarica solo i sottotitoli che corrispondono perfettamente ai miei file video",
"OptionRequirePerfectSubtitleMatchHelp": "La richiesta di una corrispondenza perfetta filtrerà i sottotitoli per includere solo quelli che sono stati testati e verificati con il file video esatto. Deselezionando questo aumenterà la probabilità che i sottotitoli vengono scaricati, ma aumenteranno le probabilità di testo sottotitolato impreciso o errato.", "OptionRequirePerfectSubtitleMatchHelp": "La richiesta di una corrispondenza perfetta filtrerà i sottotitoli per includere solo quelli che sono stati testati e verificati con il file video esatto. Deselezionando questo aumenterà la probabilità che i sottotitoli vengono scaricati, ma aumenteranno le probabilità di testo sottotitolato impreciso o errato.",
"OptionResElement": "elemento res", "OptionResElement": "res element",
"OptionResumable": "Interrotto", "OptionResumable": "Interrotto",
"OptionRuntime": "Durata", "OptionRuntime": "Durata",
"OptionSaturday": "Sabato", "OptionSaturday": "Sabato",