Merge branch 'unstable' into unstable
This commit is contained in:
commit
45dc9e5fa0
|
@ -8,8 +8,12 @@
|
|||
"locale/**/*.*",
|
||||
"settings/*.*"
|
||||
],
|
||||
"plugins": [ "@rokucommunity/bslint" ],
|
||||
"plugins": [
|
||||
"@rokucommunity/bslint"
|
||||
],
|
||||
"diagnosticFilters": [
|
||||
"**/roku_modules/**/*"
|
||||
"**/roku_modules/**/*",
|
||||
"**/testFramework/*",
|
||||
"**/tests/*"
|
||||
]
|
||||
}
|
|
@ -13,11 +13,11 @@ sub init()
|
|||
|
||||
m.itemText.translation = [0, m.itemPoster.height + 7]
|
||||
|
||||
m.alwaysShowTitles = get_user_setting("itemgrid.alwaysShowTitles") = "true"
|
||||
m.itemText.visible = m.alwaysShowTitles
|
||||
m.gridTitles = get_user_setting("itemgrid.gridTitles")
|
||||
m.itemText.visible = m.gridTitles = "showalways"
|
||||
|
||||
' Add some padding space when Item Titles are always showing
|
||||
if m.alwaysShowTitles then m.itemText.maxWidth = 250
|
||||
if m.itemText.visible then m.itemText.maxWidth = 250
|
||||
|
||||
'Parent is MarkupGrid and it's parent is the ItemGrid
|
||||
m.topParent = m.top.GetParent().GetParent()
|
||||
|
@ -43,10 +43,12 @@ sub itemContentChanged()
|
|||
m.itemIcon.uri = itemData.iconUrl
|
||||
m.itemText.text = itemData.Title
|
||||
else if itemData.type = "Series"
|
||||
if itemData?.json?.UserData?.UnplayedItemCount <> invalid
|
||||
if itemData.json.UserData.UnplayedItemCount > 0
|
||||
m.unplayedCount.visible = true
|
||||
m.unplayedEpisodeCount.text = itemData.json.UserData.UnplayedItemCount
|
||||
if get_user_setting("ui.tvshows.disableUnwatchedEpisodeCount", "false") = "false"
|
||||
if itemData?.json?.UserData?.UnplayedItemCount <> invalid
|
||||
if itemData.json.UserData.UnplayedItemCount > 0
|
||||
m.unplayedCount.visible = true
|
||||
m.unplayedEpisodeCount.text = itemData.json.UserData.UnplayedItemCount
|
||||
end if
|
||||
end if
|
||||
end if
|
||||
|
||||
|
@ -131,16 +133,17 @@ end sub
|
|||
'Display or hide title Visibility on focus change
|
||||
sub focusChanged()
|
||||
if m.top.itemHasFocus = true
|
||||
m.itemText.visible = true
|
||||
m.itemText.repeatCount = -1
|
||||
m.posterMask.scale = [1, 1]
|
||||
else
|
||||
m.itemText.visible = m.alwaysShowTitles
|
||||
m.itemText.repeatCount = 0
|
||||
if m.topParent.alphaActive = true
|
||||
m.posterMask.scale = [0.85, 0.85]
|
||||
end if
|
||||
end if
|
||||
if m.gridTitles = "showonhover"
|
||||
m.itemText.visible = m.top.itemHasFocus
|
||||
end if
|
||||
end sub
|
||||
|
||||
'Hide backdrop and text when poster loaded
|
||||
|
|
|
@ -196,7 +196,7 @@ sub loadInitialItems()
|
|||
m.itemGrid.numRows = "3"
|
||||
m.selectedMovieOverview.visible = false
|
||||
m.infoGroup.visible = false
|
||||
m.top.showItemTitles = get_user_setting("itemgrid.movieGridTitles")
|
||||
m.top.showItemTitles = get_user_setting("itemgrid.gridTitles")
|
||||
if LCase(m.top.showItemTitles) = "hidealways"
|
||||
m.itemGrid.itemSize = "[230, 315]"
|
||||
m.itemGrid.rowHeights = "[315]"
|
||||
|
@ -371,6 +371,10 @@ sub ItemDataLoaded(msg)
|
|||
|
||||
m.loading = false
|
||||
m.spinner.visible = false
|
||||
' Return focus to options menu if it was opened while library was loading
|
||||
if m.options.visible
|
||||
m.options.setFocus(true)
|
||||
end if
|
||||
return
|
||||
end if
|
||||
|
||||
|
@ -413,6 +417,10 @@ sub ItemDataLoaded(msg)
|
|||
end if
|
||||
|
||||
m.spinner.visible = false
|
||||
' Return focus to options menu if it was opened while library was loading
|
||||
if m.options.visible
|
||||
m.options.setFocus(true)
|
||||
end if
|
||||
end sub
|
||||
|
||||
'
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
sub init()
|
||||
m.itemPoster = m.top.findNode("itemPoster")
|
||||
m.postTextBackground = m.top.findNode("postTextBackground")
|
||||
m.posterText = m.top.findNode("posterText")
|
||||
m.posterText.font.size = 30
|
||||
m.backdrop = m.top.findNode("backdrop")
|
||||
|
@ -14,11 +15,25 @@ sub init()
|
|||
m.itemPoster.loadDisplayMode = m.topParent.imageDisplayMode
|
||||
end if
|
||||
|
||||
m.gridTitles = get_user_setting("itemgrid.gridTitles")
|
||||
m.posterText.visible = false
|
||||
m.postTextBackground.visible = false
|
||||
|
||||
end sub
|
||||
|
||||
sub itemContentChanged()
|
||||
m.backdrop.blendColor = "#101010"
|
||||
|
||||
m.posterText.visible = false
|
||||
m.postTextBackground.visible = false
|
||||
|
||||
if isValid(m.topParent.showItemTitles)
|
||||
if LCase(m.topParent.showItemTitles) = "showalways"
|
||||
m.posterText.visible = true
|
||||
m.postTextBackground.visible = true
|
||||
end if
|
||||
end if
|
||||
|
||||
itemData = m.top.itemContent
|
||||
|
||||
if not isValid(itemData) then return
|
||||
|
@ -38,6 +53,23 @@ sub itemContentChanged()
|
|||
if m.itemPoster.loadStatus <> "ready"
|
||||
m.backdrop.visible = true
|
||||
end if
|
||||
if m.top.itemHasFocus then focusChanged()
|
||||
end sub
|
||||
|
||||
'Display or hide title Visibility on focus change
|
||||
sub focusChanged()
|
||||
if m.top.itemHasFocus = true
|
||||
m.posterText.repeatCount = -1
|
||||
else
|
||||
m.posterText.repeatCount = 0
|
||||
end if
|
||||
|
||||
if isValid(m.topParent.showItemTitles)
|
||||
if LCase(m.topParent.showItemTitles) = "showonhover"
|
||||
m.posterText.visible = m.top.itemHasFocus
|
||||
m.postTextBackground.visible = m.posterText.visible
|
||||
end if
|
||||
end if
|
||||
end sub
|
||||
|
||||
'Hide backdrop and text when poster loaded
|
||||
|
|
|
@ -135,6 +135,8 @@ sub loadInitialItems()
|
|||
m.sortAscending = false
|
||||
end if
|
||||
|
||||
m.top.showItemTitles = get_user_setting("itemgrid.gridTitles")
|
||||
|
||||
if LCase(m.top.parentItem.json.type) = "musicgenre"
|
||||
m.itemGrid.translation = "[96, 60]"
|
||||
m.loadItemsTask.itemType = "MusicAlbum"
|
||||
|
@ -143,6 +145,7 @@ sub loadInitialItems()
|
|||
m.loadItemsTask.itemId = m.top.parentItem.parentFolder
|
||||
else if LCase(m.view) = "artistspresentation" or LCase(m.options.view) = "artistspresentation"
|
||||
m.loadItemsTask.genreIds = ""
|
||||
m.top.showItemTitles = "hidealways"
|
||||
else if LCase(m.view) = "artistsgrid" or LCase(m.options.view) = "artistsgrid"
|
||||
m.loadItemsTask.genreIds = ""
|
||||
else
|
||||
|
|
|
@ -33,13 +33,13 @@
|
|||
</children>
|
||||
<interface>
|
||||
<field id="HomeLibraryItem" type="string"/>
|
||||
<field id="View" type="string"/>
|
||||
<field id="parentItem" type="node" onChange="loadInitialItems" />
|
||||
<field id="selectedItem" type="node" alwaysNotify="true" />
|
||||
<field id="quickPlayNode" type="node" alwaysNotify="true" />
|
||||
<field id="imageDisplayMode" type="string" value="scaleToZoom" />
|
||||
<field id="AlphaSelected" type="string" alias="AlphaMenu.itemAlphaSelected" alwaysNotify="true" onChange="onItemAlphaSelected" />
|
||||
<field id="alphaActive" type="boolean" value="false" />
|
||||
<field id="showItemTitles" type="string" value="showonhover" />
|
||||
<field id="jumpToItem" type="integer" value="" />
|
||||
</interface>
|
||||
<script type="text/brightscript" uri="pkg:/source/utils/misc.brs" />
|
||||
|
|
|
@ -19,6 +19,7 @@ sub init()
|
|||
m.nextEpisodeButton = m.top.findNode("nextEpisode")
|
||||
m.nextEpisodeButton.text = tr("Next Episode")
|
||||
m.nextEpisodeButton.setFocus(false)
|
||||
m.nextupbuttonseconds = get_user_setting("playback.nextupbuttonseconds", "30")
|
||||
|
||||
m.showNextEpisodeButtonAnimation = m.top.findNode("showNextEpisodeButton")
|
||||
m.hideNextEpisodeButtonAnimation = m.top.findNode("hideNextEpisodeButton")
|
||||
|
@ -95,7 +96,11 @@ end sub
|
|||
'
|
||||
'Update count down text
|
||||
sub updateCount()
|
||||
m.nextEpisodeButton.text = tr("Next Episode") + " " + Int(m.top.runTime - m.top.position).toStr()
|
||||
nextEpisodeCountdown = Int(m.top.runTime - m.top.position)
|
||||
if nextEpisodeCountdown < 0
|
||||
nextEpisodeCountdown = 0
|
||||
end if
|
||||
m.nextEpisodeButton.text = tr("Next Episode") + " " + nextEpisodeCountdown.toStr()
|
||||
end sub
|
||||
|
||||
'
|
||||
|
@ -147,11 +152,10 @@ sub onState(msg)
|
|||
m.top.retryWithTranscoding = true ' If playback was not reported, retry with transcoding
|
||||
else
|
||||
' If an error was encountered, Display dialog
|
||||
dialog = createObject("roSGNode", "Dialog")
|
||||
dialog = createObject("roSGNode", "PlaybackDialog")
|
||||
dialog.title = tr("Error During Playback")
|
||||
dialog.buttons = [tr("OK")]
|
||||
dialog.message = tr("An error was encountered while playing this item.")
|
||||
dialog.observeField("buttonSelected", "dialogClosed")
|
||||
m.top.getScene().dialog = dialog
|
||||
end if
|
||||
|
||||
|
@ -231,11 +235,10 @@ sub bufferCheck(msg)
|
|||
m.top.callFunc("refresh")
|
||||
else
|
||||
' If buffering has stopped Display dialog
|
||||
dialog = createObject("roSGNode", "Dialog")
|
||||
dialog = createObject("roSGNode", "PlaybackDialog")
|
||||
dialog.title = tr("Error Retrieving Content")
|
||||
dialog.buttons = [tr("OK")]
|
||||
dialog.message = tr("There was an error retrieving the data for this item from the server.")
|
||||
dialog.observeField("buttonSelected", "dialogClosed")
|
||||
m.top.getScene().dialog = dialog
|
||||
|
||||
' Stop playback and exit player
|
||||
|
@ -246,14 +249,6 @@ sub bufferCheck(msg)
|
|||
|
||||
end sub
|
||||
|
||||
'
|
||||
' Clean up on Dialog Closed
|
||||
sub dialogClosed(msg)
|
||||
sourceNode = msg.getRoSGNode()
|
||||
sourceNode.unobserveField("buttonSelected")
|
||||
sourceNode.close = true
|
||||
end sub
|
||||
|
||||
function onKeyEvent(key as string, press as boolean) as boolean
|
||||
|
||||
if key = "OK" and m.nextEpisodeButton.hasfocus() and not m.top.trickPlayBar.visible
|
||||
|
|
|
@ -57,10 +57,12 @@ sub itemContentChanged() as void
|
|||
itemData = m.top.itemContent
|
||||
m.title.text = itemData.title
|
||||
|
||||
if itemData?.json?.UserData?.UnplayedItemCount <> invalid
|
||||
if itemData.json.UserData.UnplayedItemCount > 0
|
||||
m.unplayedCount.visible = true
|
||||
m.unplayedEpisodeCount.text = itemData.json.UserData.UnplayedItemCount
|
||||
if get_user_setting("ui.tvshows.disableUnwatchedEpisodeCount", "false") = "false"
|
||||
if itemData?.json?.UserData?.UnplayedItemCount <> invalid
|
||||
if itemData.json.UserData.UnplayedItemCount > 0
|
||||
m.unplayedCount.visible = true
|
||||
m.unplayedEpisodeCount.text = itemData.json.UserData.UnplayedItemCount
|
||||
end if
|
||||
end if
|
||||
end if
|
||||
|
||||
|
|
|
@ -29,7 +29,7 @@
|
|||
<StdDlgTitleArea id="titleArea" />
|
||||
<StdDlgContentArea id="contentArea">
|
||||
<StdDlgTextItem id="description"
|
||||
namedTextStyle="secondary" />
|
||||
namedTextStyle="normal" />
|
||||
</StdDlgContentArea>
|
||||
</children>
|
||||
</component>
|
|
@ -5,10 +5,7 @@ sub init()
|
|||
m.btnGrp.observeField("escape", "onButtonGroupEscaped")
|
||||
m.favBtn = m.top.findNode("favorite-button")
|
||||
m.extrasGrp = m.top.findNode("extrasGrp")
|
||||
m.top.findNode("VertSlider").keyValue = "[[30, 998], [30, 789], [30, 580], [30,371 ], [30, 162]]"
|
||||
m.extrasGrp.opacity = 1.0
|
||||
m.extrasGrp.translation = "[30, 998]"
|
||||
m.dscr.observeField("isTextEllipsized", "onEllipsisChanged")
|
||||
createDialogPallete()
|
||||
m.top.optionsAvailable = false
|
||||
end sub
|
||||
|
@ -17,8 +14,18 @@ sub loadPerson()
|
|||
item = m.top.itemContent
|
||||
itemData = item.json
|
||||
m.top.Id = itemData.id
|
||||
m.top.findNode("Name").Text = itemData.Name
|
||||
name = m.top.findNode("Name")
|
||||
name.Text = itemData.Name
|
||||
name.font.size = 70
|
||||
if itemData.PremiereDate <> invalid and itemData.PremiereDate <> ""
|
||||
lifeStringLabel = createObject("rosgnode", "Label")
|
||||
lifeStringLabel.id = "premierDate"
|
||||
lifeStringLabel.font = "font:SmallestBoldSystemFont"
|
||||
lifeStringLabel.height = "100"
|
||||
lifeStringLabel.vertAlign = "bottom"
|
||||
name.vertAlign = "top"
|
||||
name.font.size = 60
|
||||
m.top.findNode("title_rectangle").appendChild(lifeStringLabel)
|
||||
birthDate = CreateObject("roDateTime")
|
||||
birthDate.FromISO8601String(itemData.PremiereDate)
|
||||
deathDate = CreateObject("roDatetime")
|
||||
|
@ -39,9 +46,15 @@ sub loadPerson()
|
|||
end if
|
||||
end if
|
||||
lifeString = lifeString + " * " + tr("Age") + ": " + stri(age)
|
||||
m.top.findNode("premierDate").Text = lifeString
|
||||
lifeStringLabel.Text = lifeString
|
||||
end if
|
||||
if itemData.Overview <> invalid and itemData.Overview <> ""
|
||||
m.dscr.text = itemData.Overview
|
||||
else
|
||||
m.dscr.text = tr("Biographical information for this person is not currently available.")
|
||||
m.dscr.horizAlign = "center"
|
||||
m.dscr.vertAlign = "center"
|
||||
end if
|
||||
m.dscr.text = itemData.Overview
|
||||
if item.posterURL <> invalid and item.posterURL <> ""
|
||||
m.top.findnode("personImage").uri = item.posterURL
|
||||
else
|
||||
|
@ -50,31 +63,21 @@ sub loadPerson()
|
|||
m.vidsList.callFunc("loadPersonVideos", m.top.Id)
|
||||
|
||||
setFavoriteColor()
|
||||
m.favBtn.setFocus(true)
|
||||
end sub
|
||||
|
||||
sub onEllipsisChanged()
|
||||
if m.dscr.isTextEllipsized
|
||||
dscrShowFocus()
|
||||
end if
|
||||
if not m.favBtn.hasFocus() then dscrShowFocus()
|
||||
end sub
|
||||
|
||||
sub dscrShowFocus()
|
||||
if m.dscr.isTextEllipsized
|
||||
m.dscr.setFocus(true)
|
||||
m.dscr.opacity = 1.0
|
||||
m.top.findNode("dscrBorder").color = "#d0d0d0ff"
|
||||
end if
|
||||
m.dscr.setFocus(true)
|
||||
m.dscr.opacity = 1.0
|
||||
m.top.findNode("dscrBorder").color = "#d0d0d0ff"
|
||||
end sub
|
||||
|
||||
sub onButtonGroupEscaped()
|
||||
key = m.btnGrp.escape
|
||||
if key = "down"
|
||||
m.vidsList.setFocus(true)
|
||||
m.top.findNode("VertSlider").reverse = false
|
||||
m.top.findNode("pplAnime").control = "start"
|
||||
else if key = "up" and m.dscr.isTextEllipsized
|
||||
dscrShowFocus()
|
||||
m.dscr.setFocus(true)
|
||||
m.dscr.opacity = 1.0
|
||||
m.top.findNode("dscrBorder").color = "#d0d0d0ff"
|
||||
end if
|
||||
end sub
|
||||
|
||||
|
@ -82,7 +85,7 @@ function onKeyEvent(key as string, press as boolean) as boolean
|
|||
if not press then return false
|
||||
|
||||
if key = "OK"
|
||||
if m.dscr.hasFocus() and m.dscr.isTextEllipsized
|
||||
if m.dscr.hasFocus()
|
||||
createFullDscrDlg()
|
||||
return true
|
||||
end if
|
||||
|
@ -95,17 +98,24 @@ function onKeyEvent(key as string, press as boolean) as boolean
|
|||
end if
|
||||
|
||||
if key = "down"
|
||||
if m.dscr.hasFocus()
|
||||
m.dscr.opacity = 0.6
|
||||
m.top.findNode("dscrBorder").color = "#data202020ff"
|
||||
m.vidsList.setFocus(true)
|
||||
m.top.findNode("VertSlider").reverse = false
|
||||
m.top.findNode("pplAnime").control = "start"
|
||||
return true
|
||||
end if
|
||||
else if key = "up"
|
||||
if m.dscr.hasFocus()
|
||||
m.favBtn.setFocus(true)
|
||||
m.dscr.opacity = 0.6
|
||||
m.top.findNode("dscrBorder").color = "#data202020ff"
|
||||
return true
|
||||
end if
|
||||
else if key = "up"
|
||||
if m.vidsList.isInFocusChain() and m.vidsList.itemFocused = 0
|
||||
else if m.vidsList.isInFocusChain() and m.vidsList.itemFocused = 0
|
||||
m.top.findNode("VertSlider").reverse = true
|
||||
m.top.findNode("pplAnime").control = "start"
|
||||
m.favBtn.setFocus(true)
|
||||
dscrShowFocus()
|
||||
return true
|
||||
end if
|
||||
end if
|
||||
|
@ -128,19 +138,13 @@ end sub
|
|||
|
||||
sub createFullDscrDlg()
|
||||
dlg = CreateObject("roSGNode", "OverviewDialog")
|
||||
dlg.Title = tr("Press 'OK' to Close")
|
||||
dlg.Title = m.top.itemContent.json.Name
|
||||
dlg.width = 1290
|
||||
dlg.palette = m.dlgPalette
|
||||
dlg.overview = [m.dscr.text]
|
||||
dlg.overview = m.dscr.text
|
||||
m.fullDscrDlg = dlg
|
||||
m.top.getScene().dialog = dlg
|
||||
border = createObject("roSGNode", "Poster")
|
||||
border.uri = "pkg:/images/hd_focul_9.png"
|
||||
border.blendColor = "#c9c9c9ff"
|
||||
border.width = dlg.width + 6
|
||||
border.height = dlg.height + 6
|
||||
border.translation = [dlg.translation[0] - 3, dlg.translation[1] - 3]
|
||||
border.visible = true
|
||||
|
||||
end sub
|
||||
|
||||
sub createDialogPallete()
|
||||
|
|
|
@ -7,32 +7,31 @@
|
|||
</interface>
|
||||
<children>
|
||||
<LayoutGroup id="main_group"
|
||||
layoutdirection="vert" translation="[60, 180]" itemSpacings="[36]">
|
||||
layoutdirection="vert" translation="[60, 180]" itemSpacings="[36]" >
|
||||
<LayoutGroup id="header_group" layoutdirection="horiz" >
|
||||
<LayoutGroup id="title_group" layoutdirection="vert" itemSpacings="[11]" >
|
||||
<Rectangle id="title_rectangle" height="100" width="1426" color="#262626">
|
||||
<Label id="name" font="font:LargeBoldSystemFont" height="100" width="1426" vertAlign="bottom" />
|
||||
</Rectangle>
|
||||
</LayoutGroup>
|
||||
<ButtonGroupHoriz id="buttons" >
|
||||
<Button id="favorite-button" text="Favorite" iconUri="" focusedIconUri="" />
|
||||
</ButtonGroupHoriz>
|
||||
</LayoutGroup>
|
||||
<LayoutGroup id="personInfoGroup"
|
||||
layoutDirection="horiz" itemSpacings="[36]">
|
||||
layoutDirection="horiz" itemSpacings="[46]">
|
||||
<Poster id="personImage"
|
||||
width="300" height="450" />
|
||||
width="430" height="645" />
|
||||
<LayoutGroup id="vertSpacer" layoutDirection="vert" itemSpacings="[24]">
|
||||
<LayoutGroup id="dataGroup>" layoutDirection="vert"
|
||||
translation="[450,180]">
|
||||
<Label id="name" font="font:MediumBoldSystemFont" height="45" width="1200" />
|
||||
<label id="premierDate" font="font:SmallestBoldSystemFont" height="48" vertAlign="top" />
|
||||
<Rectangle id="dscrBorder"
|
||||
height="360" width="1422"
|
||||
color="0x202020ff">
|
||||
<Rectangle id='dscrRect' translation="[3, 3]"
|
||||
height="354" width="1416"
|
||||
color="0x202020ff">
|
||||
<LayoutGroup id="dataGroup>" layoutDirection="vert" translation="[450,180]">
|
||||
<Rectangle id="dscrBorder" height="645" width="1322" color="0x202020ff" visible="true">
|
||||
<Rectangle id='dscrRect' translation="[3, 3]" height="639" width="1316" color="0x202020ff">
|
||||
<Label id="description"
|
||||
height="342" width="1380" wrap="true" translation="[18, 15]"
|
||||
height="627" width="1280" wrap="true" translation="[18, 15]"
|
||||
font="font:SmallestSystemFont" color="#e4e4e4ff" ellipsisText=" ... (-OK- for More)" />
|
||||
</Rectangle>
|
||||
</Rectangle>
|
||||
</LayoutGroup>
|
||||
<ButtonGroupHoriz id="buttons" >
|
||||
<Button id="favorite-button" text="Favorite"
|
||||
iconUri="" focusedIconUri="" />
|
||||
</ButtonGroupHoriz>
|
||||
</LayoutGroup>
|
||||
</LayoutGroup>
|
||||
</LayoutGroup>
|
||||
|
|
9
components/PlaybackDialog.brs
Normal file
9
components/PlaybackDialog.brs
Normal file
|
@ -0,0 +1,9 @@
|
|||
function onKeyEvent(key as string, press as boolean) as boolean
|
||||
|
||||
if key = "OK"
|
||||
m.top.close = true
|
||||
return true
|
||||
end if
|
||||
|
||||
return false
|
||||
end function
|
6
components/PlaybackDialog.xml
Normal file
6
components/PlaybackDialog.xml
Normal file
|
@ -0,0 +1,6 @@
|
|||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<!-- A PlaybackDialog is a regular dialog, except it takes key releases -->
|
||||
<!-- instead of presses so that key releases don't fall into other listeners -->
|
||||
<component name="PlaybackDialog" extends="Dialog">
|
||||
<script type="text/brightscript" uri="PlaybackDialog.brs" />
|
||||
</component>
|
|
@ -11,7 +11,7 @@ sub showContent()
|
|||
cont = m.top.itemContent
|
||||
m.name.text = cont.labelText
|
||||
m.name.maxWidth = cont.imageWidth
|
||||
m.role.Width = cont.imageWidth
|
||||
m.role.maxWidth = cont.imageWidth
|
||||
m.posterImg.uri = cont.posterUrl
|
||||
m.posterImg.width = cont.imageWidth
|
||||
m.role.Text = cont.subTitle
|
||||
|
@ -22,6 +22,14 @@ sub showContent()
|
|||
end sub
|
||||
|
||||
sub focusChanged()
|
||||
if m.top.itemHasFocus = true
|
||||
m.name.repeatCount = -1
|
||||
m.role.repeatCount = -1
|
||||
else
|
||||
m.name.repeatCount = 0
|
||||
m.role.repeatCount = 0
|
||||
end if
|
||||
|
||||
if m.deviceInfo.IsAudioGuideEnabled() = true
|
||||
txt2Speech = CreateObject("roTextToSpeech")
|
||||
txt2Speech.Flush()
|
||||
|
|
|
@ -8,8 +8,14 @@
|
|||
<children>
|
||||
<LayoutGroup layoutDirection="vert" >
|
||||
<Poster id="posterImg" width="234" height="300" translation="[8,243]" failedBitmapUri="pkg:/images/baseline_person_white_48dp.png" />
|
||||
<ScrollingLabel id="pLabel" horizAlign="center" vertAlign="bottom" maxWidth="266" font="font:SmallestBoldSystemFont" height="48" />
|
||||
<Label id="SubTitle" horizAlign="center" vertAlign="center" font="font:SmallestBoldSystemFont" height="32" color="#A7A7A7FF" />
|
||||
</LayoutGroup>
|
||||
<ScrollingLabel id="pLabel"
|
||||
horizAlign="center" vertAlign="bottom"
|
||||
height="48"
|
||||
font="font:SmallestBoldSystemFont" repeatCount="0"/>
|
||||
<ScrollingLabel id="SubTitle"
|
||||
horizAlign="center" vertAlign="center"
|
||||
height="32"
|
||||
font="font:SmallestBoldSystemFont" color="#A7A7A7FF" repeatCount = "0" />
|
||||
</LayoutGroup>
|
||||
</children>
|
||||
</component>
|
||||
|
|
|
@ -59,7 +59,6 @@ sub onAdditionalPartsLoaded()
|
|||
else
|
||||
m.top.rowItemSize = [[234, 396]]
|
||||
end if
|
||||
m.top.translation = "[75,10]"
|
||||
|
||||
' Load Cast and Crew and everything else...
|
||||
m.LoadPeopleTask.peopleList = m.people
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
showRowLabel="true"
|
||||
showRowCounter="true"
|
||||
visible="true"
|
||||
translation="[12,18]"
|
||||
translation="[75,10]"
|
||||
itemComponentName="ExtrasItem" />
|
||||
<Animation id="pplAnime" duration=".4" repeat="false" >
|
||||
<Vector2DFieldInterpolator
|
||||
|
|
|
@ -38,10 +38,12 @@ sub itemContentChanged()
|
|||
end if
|
||||
|
||||
if LCase(itemData.type) = "series"
|
||||
if itemData?.json?.UserData?.UnplayedItemCount <> invalid
|
||||
if itemData.json.UserData.UnplayedItemCount > 0
|
||||
m.unplayedCount.visible = true
|
||||
m.unplayedEpisodeCount.text = itemData.json.UserData.UnplayedItemCount
|
||||
if get_user_setting("ui.tvshows.disableUnwatchedEpisodeCount", "false") = "false"
|
||||
if itemData?.json?.UserData?.UnplayedItemCount <> invalid
|
||||
if itemData.json.UserData.UnplayedItemCount > 0
|
||||
m.unplayedCount.visible = true
|
||||
m.unplayedEpisodeCount.text = itemData.json.UserData.UnplayedItemCount
|
||||
end if
|
||||
end if
|
||||
end if
|
||||
end if
|
||||
|
@ -73,8 +75,12 @@ sub itemContentChanged()
|
|||
' "Program" is from clicking on an "On Now" item on the Home Screen
|
||||
if itemData.type = "Program"
|
||||
m.itemText.Text = itemData.json.name
|
||||
if itemData.json.ImageURL <> invalid
|
||||
m.itemPoster.uri = itemData.json.ImageURL
|
||||
m.itemTextExtra.Text = itemData.json.ChannelName
|
||||
if itemData.widePosterURL <> ""
|
||||
m.itemPoster.uri = ImageURL(itemData.widePosterURL)
|
||||
else
|
||||
m.itemPoster.uri = ImageURL(itemData.json.ChannelId)
|
||||
m.itemPoster.loadDisplayMode = "scaleToFill"
|
||||
end if
|
||||
|
||||
' Set Episode title if available
|
||||
|
|
|
@ -82,6 +82,19 @@ sub onLibrariesLoaded()
|
|||
]
|
||||
|
||||
haveLiveTV = false
|
||||
|
||||
' Load the NextUp Data
|
||||
m.LoadNextUpTask.observeField("content", "updateNextUpItems")
|
||||
m.LoadNextUpTask.control = "RUN"
|
||||
|
||||
' Load the Continue Watching Data
|
||||
m.LoadContinueTask.observeField("content", "updateContinueItems")
|
||||
m.LoadContinueTask.control = "RUN"
|
||||
|
||||
' Load the Favorites Data
|
||||
m.LoadFavoritesTask.observeField("content", "updateFavoritesItems")
|
||||
m.LoadFavoritesTask.control = "RUN"
|
||||
|
||||
' validate library data
|
||||
if m.libraryData <> invalid and m.libraryData.count() > 0
|
||||
userConfig = m.top.userConfig
|
||||
|
@ -95,40 +108,38 @@ sub onLibrariesLoaded()
|
|||
' create a "Latest In" row for each library
|
||||
filteredLatest = filterNodeArray(m.libraryData, "id", userConfig.LatestItemsExcludes)
|
||||
for each lib in filteredLatest
|
||||
if lib.collectionType <> "boxsets" and lib.collectionType <> "livetv"
|
||||
if lib.collectionType <> "boxsets" and lib.collectionType <> "livetv" and lib.json.CollectionType <> "Program"
|
||||
latestInRow = content.CreateChild("HomeRow")
|
||||
latestInRow.title = tr("Latest in") + " " + lib.name + " >"
|
||||
sizeArray.Push([464, 331])
|
||||
|
||||
loadLatest = createObject("roSGNode", "LoadItemsTask")
|
||||
loadLatest.itemsToLoad = "latest"
|
||||
loadLatest.itemId = lib.id
|
||||
|
||||
metadata = { "title": lib.name }
|
||||
metadata.Append({ "contentType": lib.json.CollectionType })
|
||||
loadLatest.metadata = metadata
|
||||
|
||||
loadLatest.observeField("content", "updateLatestItems")
|
||||
loadLatest.control = "RUN"
|
||||
else if lib.collectionType = "livetv"
|
||||
' If we have Live TV, add "On Now"
|
||||
onNowRow = content.CreateChild("HomeRow")
|
||||
onNowRow.title = tr("On Now")
|
||||
sizeArray.Push([464, 331])
|
||||
haveLiveTV = true
|
||||
' If we have Live TV access, load "On Now" data
|
||||
if haveLiveTV
|
||||
m.LoadOnNowTask.observeField("content", "updateOnNowItems")
|
||||
m.LoadOnNowTask.control = "RUN"
|
||||
end if
|
||||
end if
|
||||
end for
|
||||
end if
|
||||
|
||||
m.top.rowItemSize = sizeArray
|
||||
m.top.content = content
|
||||
|
||||
' Load the Continue Watching Data
|
||||
m.LoadContinueTask.observeField("content", "updateContinueItems")
|
||||
m.LoadContinueTask.control = "RUN"
|
||||
|
||||
m.LoadNextUpTask.observeField("content", "updateNextUpItems")
|
||||
m.LoadNextUpTask.control = "RUN"
|
||||
|
||||
' Load the Favorites Data
|
||||
m.LoadFavoritesTask.observeField("content", "updateFavoritesItems")
|
||||
m.LoadFavoritesTask.control = "RUN"
|
||||
|
||||
|
||||
' If we have Live TV access, load "On Now" data
|
||||
if haveLiveTV
|
||||
m.LoadOnNowTask.observeField("content", "updateOnNowItems")
|
||||
m.LoadOnNowTask.control = "RUN"
|
||||
end if
|
||||
end sub
|
||||
|
||||
sub updateHomeRows()
|
||||
|
@ -278,23 +289,6 @@ sub updateNextUpItems()
|
|||
m.global.app_loaded = true
|
||||
end if
|
||||
|
||||
' create task nodes for "Latest In" rows
|
||||
userConfig = m.top.userConfig
|
||||
filteredLatest = filterNodeArray(m.libraryData, "id", userConfig.LatestItemsExcludes)
|
||||
for each lib in filteredLatest
|
||||
if lib.collectionType <> "livetv" and lib.collectionType <> "boxsets" and lib.json.CollectionType <> "Program"
|
||||
loadLatest = createObject("roSGNode", "LoadItemsTask")
|
||||
loadLatest.itemsToLoad = "latest"
|
||||
loadLatest.itemId = lib.id
|
||||
|
||||
metadata = { "title": lib.name }
|
||||
metadata.Append({ "contentType": lib.json.CollectionType })
|
||||
loadLatest.metadata = metadata
|
||||
|
||||
loadLatest.observeField("content", "updateLatestItems")
|
||||
loadLatest.control = "RUN"
|
||||
end if
|
||||
end for
|
||||
end sub
|
||||
|
||||
sub updateLatestItems(msg)
|
||||
|
|
|
@ -19,6 +19,8 @@ sub init()
|
|||
m.buttonGrp.setFocus(true)
|
||||
m.top.lastFocus = m.buttonGrp
|
||||
|
||||
m.spinner = m.top.findNode("spinner")
|
||||
|
||||
m.trailerButton = m.top.findNode("trailer-button")
|
||||
m.trailerButton.text = tr("Play Trailer")
|
||||
|
||||
|
@ -134,6 +136,8 @@ sub itemContentChanged()
|
|||
setWatchedColor()
|
||||
SetUpVideoOptions(itemData.mediaSources)
|
||||
SetUpAudioOptions(itemData.mediaStreams)
|
||||
m.buttonGrp.visible = true
|
||||
m.spinner.visible = false
|
||||
end sub
|
||||
|
||||
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
<Label id="releaseYear" />
|
||||
<Label id="runtime" />
|
||||
<Label id="officialRating" />
|
||||
<LayoutGroup id="communityRatingGroup" layoutDirection="horiz" itemSpacings="[-5]">
|
||||
<LayoutGroup id="communityRatingGroup" layoutDirection="horiz" itemSpacings="[-5]" visible="false">
|
||||
<Poster id="star" uri="pkg:/images/sharp_star_white_18dp.png" height="32" width="32" blendColor="#cb272a" visible="false"/>
|
||||
<Label id="communityRating" />
|
||||
</LayoutGroup>
|
||||
|
@ -29,7 +29,7 @@
|
|||
<Label id="audio_codec" vertAlign="bottom" height="39" />
|
||||
<label id="audio_codec_count" font="font:smallestSystemFont" vertAlign="top" color="#ceffff" />
|
||||
</LayoutGroup>
|
||||
<ButtonGroupHoriz id="buttons" itemSpacings="[10]">
|
||||
<ButtonGroupHoriz id="buttons" itemSpacings="[10]" visible="false">
|
||||
<Button text="Play" id="play-button" iconUri="" focusedIconUri="" maxWidth="175" minWidth="175" />
|
||||
<Button text="Options" id="options-button" iconUri="" focusedIconUri="" maxWidth="250" minWidth="250" />
|
||||
<Button text="Watched" id="watched-button" iconUri="" focusedIconUri="" maxWidth="350" minWidth="300" />
|
||||
|
@ -41,6 +41,8 @@
|
|||
</LayoutGroup>
|
||||
</LayoutGroup>
|
||||
<MovieOptions id="movieOptions" visible="false" />
|
||||
<Spinner id="spinner" translation="[900, 450]" visible="true" />
|
||||
|
||||
<!-- "Cast and Crew" row -->
|
||||
<extrasSlider id="movieExtras" />
|
||||
</children>
|
||||
|
|
|
@ -187,6 +187,11 @@ function onKeyEvent(key as string, press as boolean) as boolean
|
|||
return true
|
||||
end if
|
||||
|
||||
if key = "options"
|
||||
m.global.sceneManager.callFunc("popScene")
|
||||
return true
|
||||
end if
|
||||
|
||||
if key = "right"
|
||||
settingSelected()
|
||||
end if
|
||||
|
|
|
@ -17,10 +17,12 @@ sub setSeasonLoading()
|
|||
end sub
|
||||
|
||||
sub updateSeason()
|
||||
if m.top.seasonData?.UserData?.UnplayedItemCount <> invalid
|
||||
if m.top.seasonData.UserData.UnplayedItemCount > 0
|
||||
m.unplayedCount.visible = true
|
||||
m.unplayedEpisodeCount.text = m.top.seasonData.UserData.UnplayedItemCount
|
||||
if get_user_setting("ui.tvshows.disableUnwatchedEpisodeCount", "false") = "false"
|
||||
if m.top.seasonData?.UserData?.UnplayedItemCount <> invalid
|
||||
if m.top.seasonData.UserData.UnplayedItemCount > 0
|
||||
m.unplayedCount.visible = true
|
||||
m.unplayedEpisodeCount.text = m.top.seasonData.UserData.UnplayedItemCount
|
||||
end if
|
||||
end if
|
||||
end if
|
||||
|
||||
|
|
|
@ -8,6 +8,11 @@ sub init()
|
|||
|
||||
m.rating = m.top.findnode("rating")
|
||||
m.infoBar = m.top.findnode("infoBar")
|
||||
m.progressBackground = m.top.findNode("progressBackground")
|
||||
m.progressBar = m.top.findnode("progressBar")
|
||||
m.playedIndicator = m.top.findNode("playedIndicator")
|
||||
m.checkmark = m.top.findNode("checkmark")
|
||||
m.checkmark.font.size = 35
|
||||
end sub
|
||||
|
||||
sub itemContentChanged()
|
||||
|
@ -64,6 +69,20 @@ sub itemContentChanged()
|
|||
m.infoBar.itemSpacings = [20, -25, 20, 20]
|
||||
end if
|
||||
|
||||
' Add checkmark in corner (if applicable)
|
||||
if isValid(itemData?.UserData?.Played) and itemData.UserData.Played = true
|
||||
m.playedIndicator.visible = true
|
||||
end if
|
||||
|
||||
' Add progress bar on bottom (if applicable)
|
||||
if isValid(itemData?.UserData?.PlayedPercentage) and itemData?.UserData?.PlayedPercentage > 0
|
||||
m.progressBackground.width = m.poster.width
|
||||
m.progressBackground.visible = true
|
||||
progressWidthInPixels = int(m.progressBackground.width * itemData.UserData.PlayedPercentage / 100)
|
||||
m.progressBar.width = progressWidthInPixels
|
||||
m.progressBar.visible = true
|
||||
end if
|
||||
|
||||
videoIdx = invalid
|
||||
audioIdx = invalid
|
||||
|
||||
|
|
|
@ -2,8 +2,15 @@
|
|||
<component name="TVListDetails" extends="Group">
|
||||
<children>
|
||||
<LayoutGroup id="toplevel" layoutDirection="vert" itemSpacings="[40]">
|
||||
<LayoutGroup id="main_group" layoutDirection="horiz" itemSpacings="[30]">
|
||||
<Poster id="poster" width="350" height="300" />
|
||||
<LayoutGroup id="main_group" layoutDirection="horiz" itemSpacings="[30]">
|
||||
<Poster id="poster" width="350" height="300" loadDisplayMode="scaleToZoom">
|
||||
<Rectangle id="playedIndicator" color="#00a4dcFF" width="60" height="46" visible="false" translation="[290, 0]">
|
||||
<Label id="checkmark" width="60" height="42" font="font:SmallestBoldSystemFont" horizAlign="center" vertAlign="bottom" text="✓"/>
|
||||
</Rectangle>
|
||||
<Rectangle id="progressBackground" visible="false" color="0x00000098" width="350" height="16" translation="[0,286]">
|
||||
<Rectangle id="progressBar" color="#00a4dcFF" width="0" height="16" visible="false"/>
|
||||
</Rectangle>
|
||||
</Poster>
|
||||
<LayoutGroup id="text" layoutDirection="vert" itemSpacings="[15]">
|
||||
<!-- Using poster of 1 length to get spacing. Not successful with adding translation to title -->
|
||||
<Poster id="null" height="1" />
|
||||
|
|
|
@ -15,10 +15,12 @@ sub itemContentChanged()
|
|||
item = m.top.itemContent
|
||||
itemData = item.json
|
||||
|
||||
if itemData?.UserData?.UnplayedItemCount <> invalid
|
||||
if itemData.UserData.UnplayedItemCount > 0
|
||||
m.unplayedCount.visible = true
|
||||
m.unplayedEpisodeCount.text = itemData.UserData.UnplayedItemCount
|
||||
if get_user_setting("ui.tvshows.disableUnwatchedEpisodeCount", "false") = "false"
|
||||
if itemData?.UserData?.UnplayedItemCount <> invalid
|
||||
if itemData.UserData.UnplayedItemCount > 0
|
||||
m.unplayedCount.visible = true
|
||||
m.unplayedEpisodeCount.text = itemData.UserData.UnplayedItemCount
|
||||
end if
|
||||
end if
|
||||
end if
|
||||
|
||||
|
|
|
@ -33,5 +33,6 @@
|
|||
<field id="seasonSelected" alias="seasons.rowItemSelected" />
|
||||
</interface>
|
||||
<script type="text/brightscript" uri="pkg:/source/utils/misc.brs" />
|
||||
<script type="text/brightscript" uri="pkg:/source/utils/config.brs" />
|
||||
<script type="text/brightscript" uri="TVShowDetails.brs" />
|
||||
</component>
|
||||
|
|
|
@ -4388,5 +4388,94 @@
|
|||
<source>Save Credentials?</source>
|
||||
<translation>Uložit přihlašovací údaje?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Limits Enabled</source>
|
||||
<translation>Limity povoleny</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Libraries</source>
|
||||
<translation>Knihovny</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Settings relating to the appearance of Library pages</source>
|
||||
<translation>Nastavení související se vzhledem stránek knihovny</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Set how many seconds before the end of an episode the Next Episode button should appear. Set to 0 to disable.</source>
|
||||
<translation>Nastavte kolik vteřin před koncem epizody se objeví tlačítko pro přechod na další epizodu. Pro deaktivaci nastavte 0.</translation>
|
||||
<extracomment>Settings Menu - Description for option</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Slideshow Off</source>
|
||||
<translation>Slideshow vypnuto</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Disable Community Rating for Episodes</source>
|
||||
<translation>Zakázat hodnocení komunity pro epizody</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>If enabled, the star and community rating for episodes of a TV show will be removed. This is to prevent spoilers of an upcoming good/bad episode.</source>
|
||||
<translation>Pokud je povoleno, hvězda a hodnocení komunity pro epizody seriálů bude odebráno. Toto slouží k zabránění vzniku spoilerů pro nadcházející dobrou/špatnou epizodu.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Playback Bitrate Limits</source>
|
||||
<translation>Omezení přenosové rychlosti pro přehrávání</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Set limits for how high playback bitrates are allowed to be.</source>
|
||||
<translation>Nastavení povolených výšek limitů datových toků pro přehrávání.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>If enabled, playback bitrates will be limited based on the 'Playback Bitrate Limit' setting.</source>
|
||||
<translation>Pokud je povoleno, datové toky pro přehrávání budou omezeny na základě nastavení 'Omezení přenosové rychlosti pro přehrávání'.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Playback Bitrate Limit</source>
|
||||
<translation>Omezení přenosové rychlosti pro přehrávání</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Max bitrate (Mbps) allowed if limits are enabled. Set to 0 to use Roku's specifications.</source>
|
||||
<translation>Maximální dovolený datový tok (Mbps) v případě, že jsou limity povolené. Pro použití dle specifikace Roku nastavte 0.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Settings relating to the appearance of the Home screen and the program in general.</source>
|
||||
<translation>Nastavení související obecně se vzhledem a se vzhledem domovské stránky.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Settings that apply when Grid views are enabled.</source>
|
||||
<translation>Nastavení, která se použijí v případě, že jsou povolena zobrazení mřížky.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Songs</source>
|
||||
<translation>Skladby</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Album</source>
|
||||
<translation>Album</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Albums</source>
|
||||
<translation>Alba</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>View All</source>
|
||||
<translation>Zobrazit vše</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Grid View Settings</source>
|
||||
<translation>Nastavení zobrazení mřížky</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Save Credentials?</source>
|
||||
<translation>Uložit přihlašovací údaje?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Artists (Grid)</source>
|
||||
<translation>Umělci (mřížka)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Song</source>
|
||||
<translation>Skladba</translation>
|
||||
</message>
|
||||
</context>
|
||||
</TS>
|
||||
|
|
|
@ -9522,5 +9522,444 @@
|
|||
<source>Disabled</source>
|
||||
<translation>Deaktiviert</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Default view for Movie Libraries.</source>
|
||||
<translation>Standard Ansicht für Film Sammlungen.</translation>
|
||||
<extracomment>Settings Menu - Description for option</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Movie Library Grid Titles</source>
|
||||
<translation>Film Sammlung Grid Titel</translation>
|
||||
<extracomment>Settings Menu - Title for option</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Select when to show titles.</source>
|
||||
<translation>Wähle aus wann Serientitel gezeigt werden sollen.</translation>
|
||||
<extracomment>Settings Menu - Description for option</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Show On Hover</source>
|
||||
<translation>Beim Hovern anzeigen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Always Show</source>
|
||||
<translation>Immer zeigen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Always Hide</source>
|
||||
<translation>Niemals anzeigen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Media Grid</source>
|
||||
<translation>Medien Anordnung</translation>
|
||||
<extracomment>UI -> Media Grid section in user setting screen.</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Use the replay button to slowly animate to the first item in the folder. (If disabled, the folder will reset to the first item immediately).</source>
|
||||
<translation>Verwenden Sie "Wiederholen", um langsam zum ersten Element im Ordner zu überblenden. (Wenn diese Funktion deaktiviert ist, wird der Ordner sofort zum ersten Element zurückgesetzt).</translation>
|
||||
<extracomment>Description for option in Setting Screen</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>If enabled, selecting a TV series with only one season will go straight to the episode list rather than the show details and season list.</source>
|
||||
<translation>Wenn diese Option aktiviert ist, führt die Auswahl einer TV-Serie mit nur einer Staffel direkt zur Episodenliste und nicht zu den Showdetails und der Staffelliste.</translation>
|
||||
<extracomment>Settings Menu - Description for option</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Use generated splashscreen image as Jellyfin's screensaver background. Jellyfin will need to be closed and reopened for change to take effect.</source>
|
||||
<translation>Generierten Splashscreen als Jellyfin's Bildschirmschoner verwenden. Jellyfin muss neu geöffnet werden, damit die Änderung wirksam wird.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Use Splashscreen as Home Background</source>
|
||||
<translation>Startbildschirm als Hintergrund verwenden</translation>
|
||||
<extracomment>Option Title in user setting screen</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Use generated splashscreen image as Jellyfin's home background. Jellyfin will need to be closed and reopened for change to take effect.</source>
|
||||
<translation>Generierten Startbildschirm als Jellyfins Hintergrund verwenden. Jellyfin muss neu geöffnet werden, damit die Änderung wirksam wird.</translation>
|
||||
<extracomment>Description for option in Setting Screen</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Next episode</source>
|
||||
<translation>Nächste Folge</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Set the maximum amount of days a show should stay in the 'Next Up' list without watching it.</source>
|
||||
<translation>Legen Sie die maximale Anzahl von Tagen fest, die eine Serie in der Liste "Als Nächstes" verbleiben soll, ohne dass sie angesehen wird.</translation>
|
||||
<extracomment>Settings Menu - Description for option</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Text Subtitles Only</source>
|
||||
<translation>Nur Text Untertitel</translation>
|
||||
<extracomment>Name of a setting - should we hide subtitles that might transcode</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Show What's New popup when Jellyfin is updated to a new version.</source>
|
||||
<translation>Zeige Was ist neu Popup nach einem Jellyfin update.</translation>
|
||||
<extracomment>Settings Menu - Description for option</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Resumable</source>
|
||||
<translation>fortsetzen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Movie Library Default View</source>
|
||||
<translation>Film Sammlung standard Ansicht</translation>
|
||||
<extracomment>Settings Menu - Title for option</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>If enabled, the star and community rating for episodes of a TV show will be removed. This is to prevent spoilers of an upcoming good/bad episode.</source>
|
||||
<translation>Wenn ausgewählt, wird das Sterne und Benutzerbewertungssystem entfernt. Dies ist um spoilern vorzubeugen.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Options that alter the design of Jellyfin.</source>
|
||||
<translation>Einstellungen für das Aussehen Jellyfins.</translation>
|
||||
<extracomment>Description for Design Elements user settings.</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Cinema Mode</source>
|
||||
<translation>Kinomodus</translation>
|
||||
<extracomment>Settings Menu - Title for option</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Cinema Mode brings the theater experience straight to your living room with the ability to play custom intros before the main feature.</source>
|
||||
<translation>Der Kinomodus bringt das Kinoerlebnis direkt in Ihr Wohnzimmer und bietet die Möglichkeit, benutzerdefinierte Intros vor dem Hauptfilm abzuspielen.</translation>
|
||||
<extracomment>Settings Menu - Description for option</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Hide Clock</source>
|
||||
<translation>Uhr ausblenden</translation>
|
||||
<extracomment>Option Title in user setting screen</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Hides all clocks in Jellyfin. Jellyfin will need to be closed and reopened for change to take effect.</source>
|
||||
<translation>Blendet alle Uhren in Jellyfin aus. Jellyfin muss neu gestartet werden, damit die Änderung wirksam wird.</translation>
|
||||
<extracomment>Settings Menu - Description for option</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Play Trailer</source>
|
||||
<translation>Trailer abspielen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>H.264</source>
|
||||
<translation>H.264</translation>
|
||||
<extracomment>Name of codec used in settings menu</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>HEVC</source>
|
||||
<translation>HEVC</translation>
|
||||
<extracomment>Name of codec used in settings menu</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Transcoding Information</source>
|
||||
<translation>Transkodierung-Information</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Video Codec</source>
|
||||
<translation>Video-Codec</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Audio Codec</source>
|
||||
<translation>Audio-Codec</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>direct</source>
|
||||
<translation>direkt</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Audio Channels</source>
|
||||
<translation>Audiokanäle</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Codec Tag</source>
|
||||
<translation>Codec-Tag</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Bit Rate</source>
|
||||
<translation>Bitrate</translation>
|
||||
<extracomment>Video streaming bit rate</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Container</source>
|
||||
<translation>Container</translation>
|
||||
<extracomment>Video streaming container</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Video range type</source>
|
||||
<translation>Video-Spektrum</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Pixel format</source>
|
||||
<translation>Pixelformat</translation>
|
||||
<extracomment>Video pixel format</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unable to find any albums or songs belonging to this artist</source>
|
||||
<translation>Es konnten keine Alben oder Lieder dieses Künstlers gefunden werden</translation>
|
||||
<extracomment>Popup message when we find no audio data for an artist</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Only display text subtitles to minimize transcoding.</source>
|
||||
<translation>Zeige nur Text Untertitel um Transkodierungen zu minimieren.</translation>
|
||||
<extracomment>Description of a setting - should we hide subtitles that might transcode</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Slideshow Off</source>
|
||||
<translation>Diashow aus</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Slideshow On</source>
|
||||
<translation>Diashow an</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Slideshow Paused</source>
|
||||
<translation>Diashow pausiert</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Slideshow Resumed</source>
|
||||
<translation>Diashow fortgesetzt</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>MPEG-4 Support</source>
|
||||
<translation>MPEG-4 Unterstützung</translation>
|
||||
<extracomment>Settings Menu - Title for option</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Show What's New Popup</source>
|
||||
<translation>Serie Was ist neu Popup</translation>
|
||||
<extracomment>Settings Menu - Title for option</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Options for TV Shows.</source>
|
||||
<translation>Serien-Einstellungen.</translation>
|
||||
<extracomment>Description for TV Shows user settings.</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Home Page</source>
|
||||
<translation>Startseite</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Max Days Next Up</source>
|
||||
<translation>Max. Tage im "Als Nächstes" Bereich</translation>
|
||||
<extracomment>Option Title in user setting screen</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Playback Information</source>
|
||||
<translation>Wiedergabeinformation</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Stream Information</source>
|
||||
<translation>Stream Informationen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>WxH</source>
|
||||
<translation>Breite x Höhe</translation>
|
||||
<extracomment>Video width x height</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>all</source>
|
||||
<translation>Alle</translation>
|
||||
<extracomment>all will reset the searchTerm so all data will be availible</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Aired</source>
|
||||
<translation>Ausgestrahlt</translation>
|
||||
<extracomment>Aired date label</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Artists (Presentation)</source>
|
||||
<translation>Künstlerinnenvorstellung</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Song</source>
|
||||
<translation>Musiktitel</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Songs</source>
|
||||
<translation>Lieder</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Album</source>
|
||||
<translation>Album</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Albums</source>
|
||||
<translation>Alben</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>View All</source>
|
||||
<translation>Alle anzeigen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Disable Community Rating for Episodes</source>
|
||||
<translation>Deaktiviere Community Bewertungen für Episoden</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Artists (Grid)</source>
|
||||
<translation>Künstler (Gitter)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Item Count</source>
|
||||
<translation>Dateien-Anzahl</translation>
|
||||
<extracomment>UI -> Media Grid -> Item Count in user setting screen.</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Media Grid options.</source>
|
||||
<translation>Medien Anordnung Optionen.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Design Elements</source>
|
||||
<translation>Designelemente</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Settings relating to how the application looks.</source>
|
||||
<translation>Einstellungen zum Aussehen des Programms.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Settings relating to playback and supported codec and media types.</source>
|
||||
<translation>Einstellungen für die Wiedergabe und unterstützte Codec- und Medientypen.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Reason</source>
|
||||
<translation>Grund</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Total Bitrate</source>
|
||||
<translation>Gesamte Bitrate</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Codec</source>
|
||||
<translation>Codec</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Size</source>
|
||||
<translation>Größe</translation>
|
||||
<extracomment>Video size</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Random On</source>
|
||||
<translation>Zufällig an</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Random Off</source>
|
||||
<translation>Zufällig aus</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Played</source>
|
||||
<translation>gespielt</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unplayed</source>
|
||||
<translation>nicht gespielt</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Item Titles</source>
|
||||
<translation>Dateien-Titel</translation>
|
||||
<extracomment>UI -> Media Grid -> Item Title in user setting screen.</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Level</source>
|
||||
<translation>Level</translation>
|
||||
<extracomment>Video profile level</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Options for Home Page.</source>
|
||||
<translation>Einstellungen für die Startseite.</translation>
|
||||
<extracomment>Description for Home Page user settings.</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Sign Out</source>
|
||||
<translation>Abmelden</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Delete Saved</source>
|
||||
<translation>Löschen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error During Playback</source>
|
||||
<translation>Fehler bei der wiedergabe</translation>
|
||||
<extracomment>Dialog title when error occurs during playback</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>There was an error retrieving the data for this item from the server.</source>
|
||||
<translation>Fehler beim laden der Daten vom Server</translation>
|
||||
<extracomment>Dialog detail when unable to load Content from Server</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<comment>Message displayed in Item Grid when no item to display. %1 is container type (e.g. Boxset, Collection, Folder, etc)</comment>
|
||||
<source>NO_ITEMS</source>
|
||||
<translation>Dieses %1 hat keine Inhalte</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>RUNTIME</source>
|
||||
<translation>Laufzeit</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>An error was encountered while playing this item.</source>
|
||||
<translation>Beim Abspielen ist ein Fehler aufgetreten.</translation>
|
||||
<extracomment>Dialog detail when error occurs during playback</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Save Credentials?</source>
|
||||
<translation>Schlüssel speichern?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error Retrieving Content</source>
|
||||
<translation>Fehler beim laden des Inhalts</translation>
|
||||
<extracomment>Dialog title when unable to load Content from Server</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<comment>Title of Tab for switching "views" when looking at a library</comment>
|
||||
<source>TAB_VIEW</source>
|
||||
<translation>Ansicht</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>RELEASE_DATE</source>
|
||||
<translation>Veröffentlichungsdatum</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Change Server</source>
|
||||
<translation>Server wechseln</translation>
|
||||
</message>
|
||||
<message>
|
||||
<comment>Name or Title field of media item</comment>
|
||||
<source>TITLE</source>
|
||||
<translation>Name</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>CRITIC_RATING</source>
|
||||
<translation>Kritiker Bewertung</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>OFFICIAL_RATING</source>
|
||||
<translation>Altersfreigabe</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>IMDB_RATING</source>
|
||||
<translation>IMDb Bewertung</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>PLAY_COUNT</source>
|
||||
<translation>Wiedergabeanzahl</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>DATE_PLAYED</source>
|
||||
<translation>Zuletzt abgespielt</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>DATE_ADDED</source>
|
||||
<translation>Datum</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Sign Out</source>
|
||||
<translation>Abmelden</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Change Server</source>
|
||||
<translation>Server wechseln</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Save Credentials?</source>
|
||||
<translation>Zugangsdaten speichern?</translation>
|
||||
</message>
|
||||
</context>
|
||||
</TS>
|
||||
|
|
|
@ -2974,5 +2974,277 @@
|
|||
<source>View All</source>
|
||||
<translation>View All</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Select when to show titles.</source>
|
||||
<translation>Select when to show titles.</translation>
|
||||
<extracomment>Settings Menu - Description for option</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Show On Hover</source>
|
||||
<translation>Show On Hover</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Always Show</source>
|
||||
<translation>Always Show</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Always Hide</source>
|
||||
<translation>Always Hide</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Album</source>
|
||||
<translation>Album</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Artists (Grid)</source>
|
||||
<translation>Artists (Grid)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Song</source>
|
||||
<translation>Song</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Artists (Presentation)</source>
|
||||
<translation>Artists (Presentation)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Songs</source>
|
||||
<translation>Songs</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Albums</source>
|
||||
<translation>Albums</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Delete Saved</source>
|
||||
<translation>Delete Saved</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>On Now</source>
|
||||
<translation>On Now</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Age</source>
|
||||
<translation>Age</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Died</source>
|
||||
<translation>Died</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>More Like This</source>
|
||||
<translation>More Like This</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Born</source>
|
||||
<translation>Born</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Special Features</source>
|
||||
<translation>Special Features</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Save Credentials?</source>
|
||||
<translation>Save Credentials?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Press 'OK' to Close</source>
|
||||
<translation>Press 'OK' to Close</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Cast & Crew</source>
|
||||
<translation>Cast & Crew</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Pick a Jellyfin server from the local network</source>
|
||||
<translation>Select an available Jellyfin server from your local network:</translation>
|
||||
<extracomment>Instructions on initial app launch when the user is asked to pick a server from a list</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Enter the server name or IP address</source>
|
||||
<translation>Enter the server name or IP address</translation>
|
||||
<extracomment>Title of KeyboardDialog when manually entering a server URL</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>TV Shows</source>
|
||||
<translation>TV Shows</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Cancel Recording</source>
|
||||
<translation>Cancel Recording</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Additional Parts</source>
|
||||
<translation>Additional Parts</translation>
|
||||
<extracomment>Additional parts of a video</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>View Channel</source>
|
||||
<translation>View Channel</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Record</source>
|
||||
<translation>Record</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Cancel Series Recording</source>
|
||||
<translation>Cancel Series Recording</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Close</source>
|
||||
<translation>Close</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unknown</source>
|
||||
<translation>Unknown</translation>
|
||||
<extracomment>Title for a cast member for which we have no information for</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Record Series</source>
|
||||
<translation>Record Series</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Delete Saved</source>
|
||||
<translation>Delete Saved</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Save Credentials?</source>
|
||||
<translation>Save Credentials?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>On Now</source>
|
||||
<translation>On Now</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>TV Shows</source>
|
||||
<translation>TV Shows</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Died</source>
|
||||
<translation>Died</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>More Like This</source>
|
||||
<translation>More Like This</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Additional Parts</source>
|
||||
<translation>Additional Parts</translation>
|
||||
<extracomment>Additional parts of a video</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Delete Saved</source>
|
||||
<translation>Delete Saved</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Born</source>
|
||||
<translation>Born</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Special Features</source>
|
||||
<translation>Special Features</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Save Credentials?</source>
|
||||
<translation>Save Credentials?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Press 'OK' to Close</source>
|
||||
<translation>Press 'OK' to Close</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Cast & Crew</source>
|
||||
<translation>Cast & Crew</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Age</source>
|
||||
<translation>Age</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Pick a Jellyfin server from the local network</source>
|
||||
<translation>Select an available Jellyfin server from your local network:</translation>
|
||||
<extracomment>Instructions on initial app launch when the user is asked to pick a server from a list</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Record</source>
|
||||
<translation>Record</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Cancel Series Recording</source>
|
||||
<translation>Cancel Series Recording</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Close</source>
|
||||
<translation>Close</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unknown</source>
|
||||
<translation>Unknown</translation>
|
||||
<extracomment>Title for a cast member for which we have no information for</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Enter the server name or IP address</source>
|
||||
<translation>Enter the server name or IP address</translation>
|
||||
<extracomment>Title of KeyboardDialog when manually entering a server URL</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Cancel Recording</source>
|
||||
<translation>Cancel Recording</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>View Channel</source>
|
||||
<translation>View Channel</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>...or enter server URL manually:</source>
|
||||
<translation>If no server is listed above, you may also enter the server URL manually:</translation>
|
||||
<extracomment>Instructions on initial app launch when the user is asked to manually enter a server URL</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error Getting Playback Information</source>
|
||||
<translation>Error Getting Playback Information</translation>
|
||||
<extracomment>Dialog Title: Received error from server when trying to get information about the selected item for playback</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Record Series</source>
|
||||
<translation>Record Series</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Set how many seconds before the end of an episode the Next Episode button should appear. Set to 0 to disable.</source>
|
||||
<translation>Set how many seconds before the end of an episode the Next Episode button should appear. Set to 0 to disable.</translation>
|
||||
<extracomment>Settings Menu - Description for option</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>On Now</source>
|
||||
<translation>On Now</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Delete Saved</source>
|
||||
<translation>Delete Saved</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Born</source>
|
||||
<translation>Born</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Save Credentials?</source>
|
||||
<translation>Save Credentials?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Age</source>
|
||||
<translation>Age</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Cast & Crew</source>
|
||||
<translation>Cast & Crew</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Died</source>
|
||||
<translation>Died</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>More Like This</source>
|
||||
<translation>More Like This</translation>
|
||||
</message>
|
||||
</context>
|
||||
</TS>
|
||||
|
|
|
@ -557,16 +557,6 @@
|
|||
<source>Media Grid options.</source>
|
||||
<translation>Media Grid options.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Item Titles</source>
|
||||
<translation>Item Titles</translation>
|
||||
<extracomment>UI -> Media Grid -> Item Title in user setting screen.</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Always show the titles below the poster images. (If disabled, the title will be shown under the highlighted item only).</source>
|
||||
<translation>Always show the titles below the poster images. (If disabled, the title will be shown under the highlighted item only).</translation>
|
||||
<extracomment>Description for option in Setting Screen</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Item Count</source>
|
||||
<translation>Item Count</translation>
|
||||
|
@ -660,15 +650,6 @@
|
|||
<translation>Use the replay button to slowly animate to the first item in the folder. (If disabled, the folder will reset to the first item immediately).</translation>
|
||||
<extracomment>Description for option in Setting Screen</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Details Page</source>
|
||||
<translation>Details Page</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Options for Details pages.</source>
|
||||
<translation>Options for Details pages.</translation>
|
||||
<extracomment>Description for Details page user settings.</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Hide Taglines</source>
|
||||
<translation>Hide Taglines</translation>
|
||||
|
@ -712,8 +693,8 @@
|
|||
<extracomment>Description for Screensaver user settings.</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Use Splashscreen as Screensaver Background</source>
|
||||
<translation>Use Splashscreen as Screensaver Background</translation>
|
||||
<source>Use Splashscreen as Screensaver</source>
|
||||
<translation>Use Splashscreen as Screensaver</translation>
|
||||
<extracomment>Option Title in user setting screen</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
|
@ -795,15 +776,6 @@
|
|||
<source>Settings relating to how the application looks.</source>
|
||||
<translation>Settings relating to how the application looks.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Home Page</source>
|
||||
<translation>Home Page</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Options for Home Page.</source>
|
||||
<translation>Options for Home Page.</translation>
|
||||
<extracomment>Description for Home Page user settings.</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Max Days Next Up</source>
|
||||
<translation>Max Days Next Up</translation>
|
||||
|
@ -898,15 +870,15 @@
|
|||
<extracomment>Popup message when we find no audio data for an artist</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Custom Subtitles</source>
|
||||
<translation>Custom Subtitles</translation>
|
||||
<extracomment>Name of a setting - custom subtitles that support CJK fonts</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Replace Roku's default subtitle functions with custom functions that support CJK fonts. Fallback fonts must be configured and enabled on the server for CJK rendering to work.</source>
|
||||
<translation>Replace Roku's default subtitle functions with custom functions that support CJK fonts. Fallback fonts must be configured and enabled on the server for CJK rendering to work.</translation>
|
||||
<extracomment>Description of a setting - custom subtitles that support CJK fonts</extracomment>
|
||||
</message>
|
||||
<source>Custom Subtitles</source>
|
||||
<translation>Custom Subtitles</translation>
|
||||
<extracomment>Name of a setting - custom subtitles that support CJK fonts</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Replace Roku's default subtitle functions with custom functions that support CJK fonts. Fallback fonts must be configured and enabled on the server for CJK rendering to work.</source>
|
||||
<translation>Replace Roku's default subtitle functions with custom functions that support CJK fonts. Fallback fonts must be configured and enabled on the server for CJK rendering to work.</translation>
|
||||
<extracomment>Description of a setting - custom subtitles that support CJK fonts</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Text Subtitles Only</source>
|
||||
<translation>Text Subtitles Only</translation>
|
||||
|
@ -1002,9 +974,9 @@
|
|||
<translation>Movies (Grid)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Movie Library Grid Titles</source>
|
||||
<translation>Movie Library Grid Titles</translation>
|
||||
<extracomment>Settings Menu - Title for option</extracomment>
|
||||
<source>Item Titles</source>
|
||||
<translation>Item Titles</translation>
|
||||
<extracomment>Title of a setting - when should we show the title text of a grid item</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Select when to show titles.</source>
|
||||
|
@ -1059,5 +1031,101 @@
|
|||
<source>If enabled, the star and community rating for episodes of a TV show will be removed. This is to prevent spoilers of an upcoming good/bad episode.</source>
|
||||
<translation>If enabled, the star and community rating for episodes of a TV show will be removed. This is to prevent spoilers of an upcoming good/bad episode.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Biographical information for this person is not currently available.</source>
|
||||
<translation>Biographical information for this person is not currently available.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Playback Bitrate Limits</source>
|
||||
<translation>Playback Bitrate Limits</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Set limits for how high playback bitrates are allowed to be.</source>
|
||||
<translation>Set limits for how high playback bitrates are allowed to be.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Limits Enabled</source>
|
||||
<translation>Limits Enabled</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>If enabled, playback bitrates will be limited based on the 'Playback Bitrate Limit' setting.</source>
|
||||
<translation>If enabled, playback bitrates will be limited based on the 'Playback Bitrate Limit' setting.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Playback Bitrate Limit</source>
|
||||
<translation>Playback Bitrate Limit</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Max bitrate (Mbps) allowed if limits are enabled. Set to 0 to use Roku's specifications.</source>
|
||||
<translation>Max bitrate (Mbps) allowed if limits are enabled. Set to 0 to use Roku's specifications.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Libraries</source>
|
||||
<translation>Libraries</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Settings relating to the appearance of Library pages</source>
|
||||
<translation>Settings relating to the appearance of Library pages</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>General</source>
|
||||
<translation>General</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Settings relating to the appearance of the Home screen and the program in general.</source>
|
||||
<translation>Settings relating to the appearance of the Home screen and the program in general.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Grid View Settings</source>
|
||||
<translation>Grid View Settings</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Settings that apply when Grid views are enabled.</source>
|
||||
<translation>Settings that apply when Grid views are enabled.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Settings relating to the appearance of pages in TV Libraries.</source>
|
||||
<translation>Settings relating to the appearance of pages in TV Libraries.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Settings relating to the appearance of pages in Movie Libraries.</source>
|
||||
<translation>Settings relating to the appearance of pages in Movie Libraries.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Presentation</source>
|
||||
<translation>Presentation</translation>
|
||||
<extracomment>Title of an option - name of presentation view</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Grid</source>
|
||||
<translation>Grid</translation>
|
||||
<extracomment>Title of an option - name of grid view</extracomment>
|
||||
</message>
|
||||
|
||||
<message>
|
||||
<source>Disable Unwatched Episode Count</source>
|
||||
<translation>Disable Unwatched Episode Count</translation>
|
||||
<extracomment>Settings Menu - Title for option</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>If enabled, the number of unwatched episodes in a series/season will be removed.</source>
|
||||
<translation>If enabled, the number of unwatched episodes in a series/season will be removed.</translation>
|
||||
<extracomment>Settings Menu - Description for option</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Loading trailer</source>
|
||||
<translation>Loading trailer</translation>
|
||||
<extracomment>Dialog title in Main.brs</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Next Episode Button Time</source>
|
||||
<translation>Next Episode Button Time</translation>
|
||||
<extracomment>Settings Menu - Title for option</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Set how many seconds before the end of an episode the Next Episode button should appear. Set to 0 to disable.</source>
|
||||
<translation>Set how many seconds before the end of an episode the Next Episode button should appear. Set to 0 to disable.</translation>
|
||||
<extracomment>Settings Menu - Description for option</extracomment>
|
||||
</message>
|
||||
</context>
|
||||
</TS>
|
||||
</TS>
|
||||
|
|
|
@ -1713,5 +1713,77 @@
|
|||
<translation>Domingo</translation>
|
||||
<extracomment>Day of Week</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>%1 of %2</source>
|
||||
<translation>%1 de %2</translation>
|
||||
<extracomment>Item position and count. %1 = current item. %2 = total number of items</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Details Page</source>
|
||||
<translation>Detalles</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Options that alter the design of Jellyfin.</source>
|
||||
<translation>Opciones que alteran el diseño de Jellyfin.</translation>
|
||||
<extracomment>Description for Design Elements user settings.</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Size</source>
|
||||
<translation>Tamaño</translation>
|
||||
<extracomment>Video size</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Aired</source>
|
||||
<translation>Transmitido</translation>
|
||||
<extracomment>Aired date label</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Album</source>
|
||||
<translation>Álbum</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Albums</source>
|
||||
<translation>Álbumes</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Song</source>
|
||||
<translation>Canción</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Save Credentials?</source>
|
||||
<translation>¿Guardar credenciales?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Delete Saved</source>
|
||||
<translation>Borrado confirmado</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error Retrieving Content</source>
|
||||
<translation>Error al recuperar contenido</translation>
|
||||
<extracomment>Dialog title when unable to load Content from Server</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>An error was encountered while playing this item.</source>
|
||||
<translation>Se ha encontrado un error mientras se reproducía este elemento.</translation>
|
||||
<extracomment>Dialog detail when error occurs during playback</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Loading Channel Data</source>
|
||||
<translation>Cargando información del canal</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>On Now</source>
|
||||
<translation>Activo ahora</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error During Playback</source>
|
||||
<translation>Error durante la reproducción</translation>
|
||||
<extracomment>Dialog title when error occurs during playback</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>There was an error retrieving the data for this item from the server.</source>
|
||||
<translation>Ocurrió un error al recuperar los datos para este elemento desde el servidor.</translation>
|
||||
<extracomment>Dialog detail when unable to load Content from Server</extracomment>
|
||||
</message>
|
||||
</context>
|
||||
</TS>
|
||||
|
|
|
@ -1345,5 +1345,14 @@
|
|||
<translation>Error al recuperar contenido</translation>
|
||||
<extracomment>Dialog title when unable to load Content from Server</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Song</source>
|
||||
<translation>Canción</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Size</source>
|
||||
<translation>Tamaño</translation>
|
||||
<extracomment>Video size</extracomment>
|
||||
</message>
|
||||
</context>
|
||||
</TS>
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -5713,5 +5713,32 @@
|
|||
<source>Transcoding Information</source>
|
||||
<translation>Informations de transcodage</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>On Now</source>
|
||||
<translation>En ce moment</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Save Credentials?</source>
|
||||
<translation>Sauvegarder les informations d'identification ?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error Retrieving Content</source>
|
||||
<translation>Erreur lors de la récupération du contenu</translation>
|
||||
<extracomment>Dialog title when unable to load Content from Server</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>There was an error retrieving the data for this item from the server.</source>
|
||||
<translation>Une erreur s'est produite lors de la récupération des données de cet élément à partir du serveur.</translation>
|
||||
<extracomment>Dialog detail when unable to load Content from Server</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error During Playback</source>
|
||||
<translation>Erreur lors de la lecture</translation>
|
||||
<extracomment>Dialog title when error occurs during playback</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Delete Saved</source>
|
||||
<translation>Supprimer les valeurs enregistrées</translation>
|
||||
</message>
|
||||
</context>
|
||||
</TS>
|
||||
|
|
|
@ -1124,5 +1124,53 @@
|
|||
<source>Change Server</source>
|
||||
<translation>Changer de serveur</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Loading Channel Data</source>
|
||||
<translation>Chargement des données de la chaîne</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error loading Channel Data</source>
|
||||
<translation>Erreur lors du chargement des données de la chaîne</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>On Now</source>
|
||||
<translation>En ce moment</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error Retrieving Content</source>
|
||||
<translation>Erreur lors de la récupération du contenu</translation>
|
||||
<extracomment>Dialog title when unable to load Content from Server</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>An error was encountered while playing this item.</source>
|
||||
<translation>Une erreur s'est produite lors de la lecture de cet élément.</translation>
|
||||
<extracomment>Dialog detail when error occurs during playback</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Change Server</source>
|
||||
<translation>Changer de serveur</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Sign Out</source>
|
||||
<translation>Se déconnecter</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Save Credentials?</source>
|
||||
<translation>Sauvegarder les informations d'authentification ?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Delete Saved</source>
|
||||
<translation>Supprimer les valeurs enregistrées</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error During Playback</source>
|
||||
<translation>Erreur lors de la lecture</translation>
|
||||
<extracomment>Dialog title when error occurs during playback</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>There was an error retrieving the data for this item from the server.</source>
|
||||
<translation>Une erreur s'est produite lors de la récupération des données de cet élément depuis le serveur.</translation>
|
||||
<extracomment>Dialog detail when unable to load Content from Server</extracomment>
|
||||
</message>
|
||||
</context>
|
||||
</TS>
|
||||
|
|
|
@ -10102,5 +10102,82 @@ elemeket</translation>
|
|||
<translation>MPEG-4 Támogatás</translation>
|
||||
<extracomment>Settings Menu - Title for option</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Album</source>
|
||||
<translation>Album</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>View All</source>
|
||||
<translation>Mutassa Mind</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Default view for Movie Libraries.</source>
|
||||
<translation>Alapértelmezett nézet Filmkönyvtáraknak.</translation>
|
||||
<extracomment>Settings Menu - Description for option</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Movie Library Grid Titles</source>
|
||||
<translation>Filmkönyvtár Rácscímek</translation>
|
||||
<extracomment>Settings Menu - Title for option</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Show On Hover</source>
|
||||
<translation>Mutassa Rámutatáskor</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Always Show</source>
|
||||
<translation>Mindig Mutassa</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Always Hide</source>
|
||||
<translation>Sose Mutassa</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Albums</source>
|
||||
<translation>Albumok</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Show What's New popup when Jellyfin is updated to a new version.</source>
|
||||
<translation>Újdonságok felugró ablak mutatása miután a Jellyfin a legújabb verzióra frissült.</translation>
|
||||
<extracomment>Settings Menu - Description for option</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Movie Library Default View</source>
|
||||
<translation>Filmkönyvtár Alapértelmezett Nézet</translation>
|
||||
<extracomment>Settings Menu - Title for option</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Select when to show titles.</source>
|
||||
<translation>Válaszd ki mikor mutassa a címeket.</translation>
|
||||
<extracomment>Settings Menu - Description for option</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>If enabled, the star and community rating for episodes of a TV show will be removed. This is to prevent spoilers of an upcoming good/bad episode.</source>
|
||||
<translation>Ha bekapcsolja, akkor a csillagok és a közösség általi értékelések el lesznek rejtve a sorozatok epizódjainál, hogy elkerülhetőek legyenek a spoilerek a közelgő jó/rossz epizódoknál.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Song</source>
|
||||
<translation>Zene</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Songs</source>
|
||||
<translation>Zenék</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Disable Community Rating for Episodes</source>
|
||||
<translation>Közösségi Minősítés Kikapcsolása az Epizódoknál</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Played</source>
|
||||
<translation>Lejátszott</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Resumable</source>
|
||||
<translation>Folytatható</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unplayed</source>
|
||||
<translation>Nem játszott</translation>
|
||||
</message>
|
||||
</context>
|
||||
</TS>
|
||||
|
|
|
@ -1952,5 +1952,13 @@
|
|||
<source>Change Server</source>
|
||||
<translation>Cambia server</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Sign Out</source>
|
||||
<translation>Esci</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Change Server</source>
|
||||
<translation>Cambia Server</translation>
|
||||
</message>
|
||||
</context>
|
||||
</TS>
|
||||
|
|
|
@ -2643,5 +2643,53 @@ não contém itens</translation>
|
|||
<source>OFFICIAL_RATING</source>
|
||||
<translation>Classificação Etária</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Sign Out</source>
|
||||
<translation>Sair</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Save Credentials?</source>
|
||||
<translation>Salvar Credenciais?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Delete Saved</source>
|
||||
<translation>Deletar Salvos</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error During Playback</source>
|
||||
<translation>Erro Durante a Reprodução</translation>
|
||||
<extracomment>Dialog title when error occurs during playback</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Change Server</source>
|
||||
<translation>Mudar Servidor</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error Retrieving Content</source>
|
||||
<translation>Erro ao Carregar Conteúdo</translation>
|
||||
<extracomment>Dialog title when unable to load Content from Server</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Loading Channel Data</source>
|
||||
<translation>Carregando Dados do Canal</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>An error was encountered while playing this item.</source>
|
||||
<translation>Foi encontrado um erro na reprodução deste item.</translation>
|
||||
<extracomment>Dialog detail when error occurs during playback</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>On Now</source>
|
||||
<translation>Em Exibição</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>There was an error retrieving the data for this item from the server.</source>
|
||||
<translation>Houve um erro ao recuperar os dados deste item do servidor.</translation>
|
||||
<extracomment>Dialog detail when unable to load Content from Server</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error loading Channel Data</source>
|
||||
<translation>Erro ao carregar os Dados do Canal</translation>
|
||||
</message>
|
||||
</context>
|
||||
</TS>
|
||||
|
|
|
@ -958,5 +958,169 @@
|
|||
<translation>Prehrávanie</translation>
|
||||
<extracomment>Title for Playback section in user setting screen.</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<comment>Message displayed in Item Grid when no item to display. %1 is container type (e.g. Boxset, Collection, Folder, etc)</comment>
|
||||
<source>NO_ITEMS</source>
|
||||
<translation>Tento %1 neobsahuje žiadne položky</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Tuesday</source>
|
||||
<translation>utorok</translation>
|
||||
<extracomment>Day of Week</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Friday</source>
|
||||
<translation>piatok</translation>
|
||||
<extracomment>Day of Week</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>IMDB_RATING</source>
|
||||
<translation>Hodnotenie IMDb</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>RELEASE_DATE</source>
|
||||
<translation>Dátum vydania</translation>
|
||||
</message>
|
||||
<message>
|
||||
<comment>Title of Tab for switching "views" when looking at a library</comment>
|
||||
<source>TAB_VIEW</source>
|
||||
<translation>Zobrazenie</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Save Credentials?</source>
|
||||
<translation>Uložiť prihlasovacie údaje?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>DATE_PLAYED</source>
|
||||
<translation>Dátum prehrania</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Cast & Crew</source>
|
||||
<translation>Obsadenie a štáb</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Movies</source>
|
||||
<translation>Filmy</translation>
|
||||
</message>
|
||||
<message>
|
||||
<comment>Name or Title field of media item</comment>
|
||||
<source>TITLE</source>
|
||||
<translation>Meno</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Delete Saved</source>
|
||||
<translation>Odstrániť uložené</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>DATE_ADDED</source>
|
||||
<translation>Dátum pridania</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>OFFICIAL_RATING</source>
|
||||
<translation>Rodičovské hodnotenie</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>PLAY_COUNT</source>
|
||||
<translation>Počet prehraní</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>RUNTIME</source>
|
||||
<translation>Dĺžka</translation>
|
||||
</message>
|
||||
<message>
|
||||
<comment>Title of Tab for options to sort library content</comment>
|
||||
<source>TAB_SORT</source>
|
||||
<translation>Zoradenie</translation>
|
||||
</message>
|
||||
<message>
|
||||
<comment>Title of Tab for options to filter library content</comment>
|
||||
<source>TAB_FILTER</source>
|
||||
<translation>Filter</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Born</source>
|
||||
<translation>Dátum narodenia</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Died</source>
|
||||
<translation>Dátum úmrtia</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Age</source>
|
||||
<translation>Vek</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>More Like This</source>
|
||||
<translation>Viac podobných</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>CRITIC_RATING</source>
|
||||
<translation>Hodnotenie kritikov</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Press 'OK' to Close</source>
|
||||
<translation>Zatvorte stlačením tlačidla 'OK'</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Special Features</source>
|
||||
<translation>Špeciálne Funkcie</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Additional Parts</source>
|
||||
<translation>Dodatočné Časti</translation>
|
||||
<extracomment>Additional parts of a video</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>yesterday</source>
|
||||
<translation>včera</translation>
|
||||
<extracomment>Previous day</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Sunday</source>
|
||||
<translation>nedeľa</translation>
|
||||
<extracomment>Day of Week</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Monday</source>
|
||||
<translation>pondelok</translation>
|
||||
<extracomment>Day of Week</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Wednesday</source>
|
||||
<translation>streda</translation>
|
||||
<extracomment>Day of Week</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Thursday</source>
|
||||
<translation>štvrtok</translation>
|
||||
<extracomment>Day of Week</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Saturday</source>
|
||||
<translation>sobota</translation>
|
||||
<extracomment>Day of Week</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Movies (Presentation)</source>
|
||||
<translation>Filmy (prezentácia)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Movies (Grid)</source>
|
||||
<translation>Filmy (mriežka)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>TV Shows</source>
|
||||
<translation>TV Seriály</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>today</source>
|
||||
<translation>dnes</translation>
|
||||
<extracomment>Current day</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>tomorrow</source>
|
||||
<translation>zajtra</translation>
|
||||
<extracomment>Next day</extracomment>
|
||||
</message>
|
||||
</context>
|
||||
</TS>
|
||||
|
|
|
@ -870,5 +870,833 @@
|
|||
<source>Save Credentials?</source>
|
||||
<translation>Shranite poverilnice?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>User Interface</source>
|
||||
<translation>Uporabniški vmesnik</translation>
|
||||
<extracomment>Title for User Interface section in user setting screen.</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Movie Library Default View</source>
|
||||
<translation>Knjižnica filmov prevzet pogled</translation>
|
||||
<extracomment>Settings Menu - Title for option</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Show On Hover</source>
|
||||
<translation>Pokaži pri lebdenju</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Settings relating to the appearance of pages in Movie Libraries.</source>
|
||||
<translation>Nastavitve v zvezi z videzom strani v TV knjižnicah.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>IMDB_RATING</source>
|
||||
<translation>IMDb ocena</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>DATE_ADDED</source>
|
||||
<translation>Dodano dne</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Saturday</source>
|
||||
<translation>Sobota</translation>
|
||||
<extracomment>Day of Week</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Disable Unwatched Episode Count</source>
|
||||
<translation>Onemogoči štetje neogledanih epizod</translation>
|
||||
<extracomment>Settings Menu - Title for option</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>OFFICIAL_RATING</source>
|
||||
<translation>Ocena za starše</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error Retrieving Content</source>
|
||||
<translation>Napaka pri pridobivanju vsebine</translation>
|
||||
<extracomment>Dialog title when unable to load Content from Server</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>today</source>
|
||||
<translation>danes</translation>
|
||||
<extracomment>Current day</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>CRITIC_RATING</source>
|
||||
<translation>Ocena kritikov</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>RUNTIME</source>
|
||||
<translation>Čas trajanja</translation>
|
||||
</message>
|
||||
<message>
|
||||
<comment>Title of Tab for switching "views" when looking at a library</comment>
|
||||
<source>TAB_VIEW</source>
|
||||
<translation>Poglej</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unable to load Channel Data from the server</source>
|
||||
<translation>Podatkov o kanalu ni mogoče pridobiti s strežnika</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Limits Enabled</source>
|
||||
<translation>Omejitve omogočene</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Settings that apply when Grid views are enabled.</source>
|
||||
<translation>Nastavitve, ki veljajo, ko je omogočen pogled mreže.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Grid</source>
|
||||
<translation>Mreža</translation>
|
||||
<extracomment>Title of an option - name of grid view</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Loading trailer</source>
|
||||
<translation>Nalaganje napovednika</translation>
|
||||
<extracomment>Dialog title in Main.brs</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Next Episode Button Time</source>
|
||||
<translation>Čas gumba za naslednjo epizodo</translation>
|
||||
<extracomment>Settings Menu - Title for option</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>RELEASE_DATE</source>
|
||||
<translation>Datum izida</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Age</source>
|
||||
<translation>Starost</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>More Like This</source>
|
||||
<translation>Več podobnih</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Special Features</source>
|
||||
<translation>Posebne lastnosti</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Delete Saved</source>
|
||||
<translation>Shrani izbrisano</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error During Playback</source>
|
||||
<translation>Napaka med predvajanjem</translation>
|
||||
<extracomment>Dialog title when error occurs during playback</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>There was an error retrieving the data for this item from the server.</source>
|
||||
<translation>Napaka pri pridobivanju vsebine iz strežnika.</translation>
|
||||
<extracomment>Dialog detail when unable to load Content from Server</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>DATE_PLAYED</source>
|
||||
<translation>Datum predvajanja</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>PLAY_COUNT</source>
|
||||
<translation>Število predvajanj</translation>
|
||||
</message>
|
||||
<message>
|
||||
<comment>Title of Tab for options to sort library content</comment>
|
||||
<source>TAB_SORT</source>
|
||||
<translation>Razvrsti</translation>
|
||||
</message>
|
||||
<message>
|
||||
<comment>Title of Tab for options to filter library content</comment>
|
||||
<source>TAB_FILTER</source>
|
||||
<translation>Filter</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Born</source>
|
||||
<translation>Rojstvo</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Died</source>
|
||||
<translation>Smrt</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Cast & Crew</source>
|
||||
<translation>Igralci in ekipa</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Press 'OK' to Close</source>
|
||||
<translation>Za zapiranje pritisni OK</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Sunday</source>
|
||||
<translation>Nedelja</translation>
|
||||
<extracomment>Day of Week</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Starts at</source>
|
||||
<translation>Začetek ob</translation>
|
||||
<extracomment>(Future Tense) For defining time when a program will start today (e.g. Starts at 08:00) </extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>TV Guide</source>
|
||||
<translation>TV vodič</translation>
|
||||
<extracomment>Menu option for showing Live TV Guide / Schedule</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Not found</source>
|
||||
<translation>Ni najdeno</translation>
|
||||
<extracomment>Title of message box when the requested content is not found on the server</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>The requested content does not exist on the server</source>
|
||||
<translation>Zahtevana vsebina ne obstaja na strežniku</translation>
|
||||
<extracomment>Content of message box when the requested content is not found on the server</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>AV1</source>
|
||||
<translation>AV1</translation>
|
||||
<extracomment>Name of a setting - should we try to direct play experimental av1 codec</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Set Watched</source>
|
||||
<translation>Nastavi kot ogledano</translation>
|
||||
<extracomment>Button Text - When pressed, marks item as Warched</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Use voice remote to search</source>
|
||||
<translation>Uporabi zvočne komande za iskanje</translation>
|
||||
<extracomment>Help text in search voice text box</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Search now</source>
|
||||
<translation>Išči</translation>
|
||||
<extracomment>Help text in search Box</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>You can search for Titles, People, Live TV Channels and more</source>
|
||||
<translation>Iščeš lahko po naslovih, ljudeh, TV kanalih</translation>
|
||||
<extracomment>Help text in search results</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>%1 of %2</source>
|
||||
<translation>%1 od %2</translation>
|
||||
<extracomment>Item position and count. %1 = current item. %2 = total number of items</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>(Dialog will close automatically)</source>
|
||||
<translation>(Dialog se bo avtomatsko zaprl)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>There was an error authenticating via Quick Connect.</source>
|
||||
<translation>Napaka pri povezovanju prek Quick Connect.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Blur Unwatched Episodes</source>
|
||||
<translation>Zamegljitev negledanih epizod</translation>
|
||||
<extracomment>Option Title in user setting screen</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>If enabled, images of unwatched episodes will be blurred.</source>
|
||||
<translation>Slika negledane epizode bo zamegljena, če omogočeno.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Options for Jellyfin's screensaver.</source>
|
||||
<translation>Nastavitve Jellyfin ohranjevalnika zaslona.</translation>
|
||||
<extracomment>Description for Screensaver user settings.</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Cinema Mode</source>
|
||||
<translation>Kino način</translation>
|
||||
<extracomment>Settings Menu - Title for option</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Hides all clocks in Jellyfin. Jellyfin will need to be closed and reopened for change to take effect.</source>
|
||||
<translation>Skrije vse ure v Jellyfinu. Potreben je ponoven zagon aplikacije Jellyfin, da pride nastavitev v veljavo.</translation>
|
||||
<extracomment>Settings Menu - Description for option</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Next episode</source>
|
||||
<translation>Naslednja epizoda</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>HEVC</source>
|
||||
<translation>HEVC</translation>
|
||||
<extracomment>Name of codec used in settings menu</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Settings relating to how the application looks.</source>
|
||||
<translation>Nastavitve za izged aplikacije.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Max Days Next Up</source>
|
||||
<translation>Največ dni za "sledi"</translation>
|
||||
<extracomment>Option Title in user setting screen</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Transcoding Information</source>
|
||||
<translation>Informacije prekodiranja</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Stream Information</source>
|
||||
<translation>Informacije pretakanja</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Codec Tag</source>
|
||||
<translation>oznaka kodeka</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Bit Rate</source>
|
||||
<translation>Bit Rate</translation>
|
||||
<extracomment>Video streaming bit rate</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Size</source>
|
||||
<translation>Velikost</translation>
|
||||
<extracomment>Video size</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Pixel format</source>
|
||||
<translation>Pixel format</translation>
|
||||
<extracomment>Video pixel format</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>all</source>
|
||||
<translation>vse</translation>
|
||||
<extracomment>all will reset the searchTerm so all data will be availible</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Show What's New popup when Jellyfin is updated to a new version.</source>
|
||||
<translation>Prikaži kaj je novega po posodobitvi Jellyfin na novo verzijo.</translation>
|
||||
<extracomment>Settings Menu - Description for option</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Select when to show titles.</source>
|
||||
<translation>Izberi kdaj se prikaže naslov.</translation>
|
||||
<extracomment>Settings Menu - Description for option</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>If enabled, the star and community rating for episodes of a TV show will be removed. This is to prevent spoilers of an upcoming good/bad episode.</source>
|
||||
<translation>Če je omogočeno, bodo zvezdice in ocene skupnosti za epizode TV-oddaje odstranjene. S tem preprečimo kvarjenje prihajajoče dobre/slabe epizode.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Biographical information for this person is not currently available.</source>
|
||||
<translation>Biografski podatki za to osebo trenutno niso na voljo.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Libraries</source>
|
||||
<translation>Zbirke</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Settings relating to the appearance of Library pages</source>
|
||||
<translation>Nastavitve v zvezi z videzom strani knjižnice</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Settings relating to the appearance of the Home screen and the program in general.</source>
|
||||
<translation>Nastavitve v zvezi z videzom začetnega zaslona in programa na splošno.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Grid View Settings</source>
|
||||
<translation>Nastavitve mrežnega pogleda</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Settings relating to the appearance of pages in TV Libraries.</source>
|
||||
<translation>Nastavitve v zvezi z videzom strani v TV knjižnicah.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Presentation</source>
|
||||
<translation>Predstavitev</translation>
|
||||
<extracomment>Title of an option - name of presentation view</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>If enabled, the number of unwatched episodes in a series/season will be removed.</source>
|
||||
<translation>Če omogočeno, bo število neogledanih epizod v seriji/sezoni odstranjeno.</translation>
|
||||
<extracomment>Settings Menu - Description for option</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Set how many seconds before the end of an episode the Next Episode button should appear. Set to 0 to disable.</source>
|
||||
<translation>Nastavite, koliko sekund pred koncem epizode naj se prikaže gumb Naslednja epizoda. 0 = onemogočeno.</translation>
|
||||
<extracomment>Settings Menu - Description for option</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Save Credentials?</source>
|
||||
<translation>Shranite poverilnice?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>An error was encountered while playing this item.</source>
|
||||
<translation>Pri predvajanju je prišlo do napake.</translation>
|
||||
<extracomment>Dialog detail when error occurs during playback</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Loading Channel Data</source>
|
||||
<translation>Nalaganje podatkov o kanalu</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error loading Channel Data</source>
|
||||
<translation>Napaka pri nalaganju podatkov o kanalu</translation>
|
||||
</message>
|
||||
<message>
|
||||
<comment>Message displayed in Item Grid when no item to display. %1 is container type (e.g. Boxset, Collection, Folder, etc)</comment>
|
||||
<source>NO_ITEMS</source>
|
||||
<translation>Ta %1 ne vsebuje ničesar</translation>
|
||||
</message>
|
||||
<message>
|
||||
<comment>Name or Title field of media item</comment>
|
||||
<source>TITLE</source>
|
||||
<translation>Ime</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Additional Parts</source>
|
||||
<translation>Dodatni deli</translation>
|
||||
<extracomment>Additional parts of a video</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Enable or disable Direct Play for optional codecs</source>
|
||||
<translation>Omogočite ali onemogočite Direct Play za dodatne kodeke</translation>
|
||||
<extracomment>Settings Menu - Title for settings group related to codec support</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Options for TV Shows.</source>
|
||||
<translation>Nastavitve za TV serije.</translation>
|
||||
<extracomment>Description for TV Shows user settings.</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Screensaver</source>
|
||||
<translation>Ohranjevalnik zaslona</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Playback Information</source>
|
||||
<translation>Informacije predvajanja</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Default view for Movie Libraries.</source>
|
||||
<translation>Prevzet pogled knjižnica filmov.</translation>
|
||||
<extracomment>Settings Menu - Description for option</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Always Show</source>
|
||||
<translation>Vedno prikaži</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Always Hide</source>
|
||||
<translation>Nikoli ne prikaži</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>General</source>
|
||||
<translation>Splošno</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Support Direct Play of MPEG-2 content (e.g., Live TV). This will prevent transcoding of MPEG-2 content, but uses significantly more bandwidth.</source>
|
||||
<translation>Podpora (Direct Play) neposredno predvajanje vsebine MPEG-2 (npr. TV v živo). To bo preprečilo prekodiranje vsebine MPEG-2, vendar bo porabilo bistveno več pasovne širine.</translation>
|
||||
<extracomment>Settings Menu - Description for option</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Support Direct Play of MPEG-4 content. This may need to be disabled for playback of DIVX encoded video files.</source>
|
||||
<translation>Podpora (Direct Play) neposredno predvajanje vsebine MPEG-4. To bo mogoče potrebno onemogočiti za predvajanje video datotek, ki so kodirane v DIVX.</translation>
|
||||
<extracomment>Settings Menu - Description for option</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>** EXPERIMENTAL** Support Direct Play of AV1 content if this Roku device supports it.</source>
|
||||
<translation>** EKSPERIMENTALNO** Podpora za neposredno predvajanje (Direct Play) vsebine AV1, če ta naprava Roku to podpira.</translation>
|
||||
<extracomment>Description of a setting - should we try to direct play experimental av1 codec</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Show item count in the library and index of selected item.</source>
|
||||
<translation>Prikaži število elementov v knjižnici in indeks izbranega elementa.</translation>
|
||||
<extracomment>Description for option in Setting Screen</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Artists (Grid)</source>
|
||||
<translation>Umetniki (mreža)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Artists (Presentation)</source>
|
||||
<translation>Umetniki (predstavitev)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Song</source>
|
||||
<translation>Pesem</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Songs</source>
|
||||
<translation>Pesmi</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Album</source>
|
||||
<translation>Album</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Albums</source>
|
||||
<translation>Albumi</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>View All</source>
|
||||
<translation>Prikaži vse</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Disable Community Rating for Episodes</source>
|
||||
<translation>Onemogoči ocenjevanje skupnosti za epizode</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Movies</source>
|
||||
<translation>Filmi</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>TV Shows</source>
|
||||
<translation>TV Serije</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>tomorrow</source>
|
||||
<translation>jutri</translation>
|
||||
<extracomment>Next day</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Thursday</source>
|
||||
<translation>Četrtek</translation>
|
||||
<extracomment>Day of Week</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Wednesday</source>
|
||||
<translation>Sreda</translation>
|
||||
<extracomment>Day of Week</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Started at</source>
|
||||
<translation>Začetek ob</translation>
|
||||
<extracomment>(Past Tense) For defining time when a program started today (e.g. Started at 08:00) </extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Started</source>
|
||||
<translation>Začetek</translation>
|
||||
<extracomment>(Past Tense) For defining a day and time when a program started (e.g. Started Wednesday, 08:00) </extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Starts</source>
|
||||
<translation>Začetek</translation>
|
||||
<extracomment>(Future Tense) For defining a day and time when a program will start (e.g. Starts Wednesday, 08:00) </extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Ended at</source>
|
||||
<translation>Končano ob</translation>
|
||||
<extracomment>(Past Tense) For defining time when a program will ended (e.g. Ended at 08:00) </extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Ends at</source>
|
||||
<translation>Končano v</translation>
|
||||
<extracomment>(Past Tense) For defining a day and time when a program ended (e.g. Ended Wednesday, 08:00) </extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Repeat</source>
|
||||
<translation>Ponovitev</translation>
|
||||
<extracomment>If TV Shows has previously been broadcasted</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Record</source>
|
||||
<translation>Snemaj</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Record Series</source>
|
||||
<translation>Posnemi serije</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Cancel Recording</source>
|
||||
<translation>Prekliči snemanje</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Cancel Series Recording</source>
|
||||
<translation>Prekliči senemanje serije</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Close</source>
|
||||
<translation>Zapri</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Connecting to Server</source>
|
||||
<translation>Povezovanje s strežnikom</translation>
|
||||
<extracomment>Message to display to user while client is attempting to connect to the server</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Enter the server name or IP address</source>
|
||||
<translation>Vnesi ime strežnika ali IP naslov</translation>
|
||||
<extracomment>Title of KeyboardDialog when manually entering a server URL</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>...or enter server URL manually:</source>
|
||||
<translation>...ali ročno vnesite URL:</translation>
|
||||
<extracomment>Instructions on initial app launch when the user is asked to manually enter a server URL</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error Getting Playback Information</source>
|
||||
<translation>Napaka pri pridobivanju informacij za predvajanje</translation>
|
||||
<extracomment>Dialog Title: Received error from server when trying to get information about the selected item for playback</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Version</source>
|
||||
<translation>Verzija</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>An error was encountered while playing this item. Server did not provide required transcoding data.</source>
|
||||
<translation>Med predvajanjem tega elementa je prišlo do napake. Strežnik ni zagotovil zahtevanih podatkov za prekodiranje.</translation>
|
||||
<extracomment>Content of message box when trying to play an item which requires transcoding, and the server did not provide transcode url</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Set Favorite</source>
|
||||
<translation>Nastavi kot priljubljeno</translation>
|
||||
<extracomment>Button Text - When pressed, sets item as Favorite</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Studios</source>
|
||||
<translation>Studiji</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Networks</source>
|
||||
<translation>Omrežja</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Random Off</source>
|
||||
<translation>Naključno off</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>yesterday</source>
|
||||
<translation>včeraj</translation>
|
||||
<extracomment>Previous day</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Movies (Presentation)</source>
|
||||
<translation>Filmi (predstavitev)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Movies (Grid)</source>
|
||||
<translation>Filmi (mreža)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Monday</source>
|
||||
<translation>Ponedeljek</translation>
|
||||
<extracomment>Day of Week</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Tuesday</source>
|
||||
<translation>Torek</translation>
|
||||
<extracomment>Day of Week</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Friday</source>
|
||||
<translation>Petek</translation>
|
||||
<extracomment>Day of Week</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Live</source>
|
||||
<translation>V živo</translation>
|
||||
<extracomment>If TV Show is being broadcast live (not pre-recorded)</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Channels</source>
|
||||
<translation>Kanali</translation>
|
||||
<extracomment>Menu option for showing Live TV Channel List</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>View Channel</source>
|
||||
<translation>Prikaži kanal</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Pick a Jellyfin server from the local network</source>
|
||||
<translation>Izberite Jellyfin strežnik iz lokalnega omrežja:</translation>
|
||||
<extracomment>Instructions on initial app launch when the user is asked to pick a server from a list</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Codec Support</source>
|
||||
<translation>Podpora za kodek</translation>
|
||||
<extracomment>Settings Menu - Title for settings group related to codec support</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>MPEG-2</source>
|
||||
<translation>MPEG-2</translation>
|
||||
<extracomment>Name of codec used in settings menu</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>MPEG-4</source>
|
||||
<translation>MPEG-4</translation>
|
||||
<extracomment>Name of codec used in settings menu</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Disabled</source>
|
||||
<translation>Onemogočeno</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Media Grid</source>
|
||||
<translation>Media Grid</translation>
|
||||
<extracomment>UI -> Media Grid section in user setting screen.</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Media Grid options.</source>
|
||||
<translation>Media Grid nastavitve.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Item Titles</source>
|
||||
<translation>Naslovi predmetov</translation>
|
||||
<extracomment>Title of a setting - when should we show the title text of a grid item</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Item Count</source>
|
||||
<translation>Število predmetov</translation>
|
||||
<extracomment>UI -> Media Grid -> Item Count in user setting screen.</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Here is your Quick Connect code:</source>
|
||||
<translation>Vaša Quick Connect koda:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Return to Top</source>
|
||||
<translation>Vrni se na vrh</translation>
|
||||
<extracomment>UI -> Media Grid -> Item Title in user setting screen.</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Play Trailer</source>
|
||||
<translation>Predvajaj napovednik</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Hide Clock</source>
|
||||
<translation>Skrij uro</translation>
|
||||
<extracomment>Option Title in user setting screen</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>H.264</source>
|
||||
<translation>H.264</translation>
|
||||
<extracomment>Name of codec used in settings menu</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Reason</source>
|
||||
<translation>Razlog</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Audio Codec</source>
|
||||
<translation>Audio kodek</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Video Codec</source>
|
||||
<translation>Video kodek</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>direct</source>
|
||||
<translation>direktno</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Codec</source>
|
||||
<translation>kodek</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Level</source>
|
||||
<translation>level</translation>
|
||||
<extracomment>Video profile level</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>WxH</source>
|
||||
<translation>WxH</translation>
|
||||
<extracomment>Video width x height</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Slideshow Off</source>
|
||||
<translation>Slideshow off</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Slideshow Resumed</source>
|
||||
<translation>Slideshow nadaljuj</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Slideshow Paused</source>
|
||||
<translation>Slideshow Pavza</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Random On</source>
|
||||
<translation>Naključno On</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>MPEG-4 Support</source>
|
||||
<translation>MPEG-4 podpora</translation>
|
||||
<extracomment>Settings Menu - Title for option</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unplayed</source>
|
||||
<translation>Nepredvajano</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Played</source>
|
||||
<translation>Predvajano</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Resumable</source>
|
||||
<translation>Nadaljevanje</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Enabled</source>
|
||||
<translation>Omogočeno</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Playback</source>
|
||||
<translation>Predvajanje</translation>
|
||||
<extracomment>Title for Playback section in user setting screen.</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unknown</source>
|
||||
<translation>Neznan</translation>
|
||||
<extracomment>Title for a cast member for which we have no information for</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Go to series</source>
|
||||
<translation>Pojdi na serije</translation>
|
||||
<extracomment>Continue Watching Popup Menu - Navigate to the Series Detail Page</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Go to season</source>
|
||||
<translation>Pojdi na sezono</translation>
|
||||
<extracomment>Continue Watching Popup Menu - Navigate to the Season Page</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Hide Taglines</source>
|
||||
<translation>Skrij slogane</translation>
|
||||
<extracomment>Option Title in user setting screen</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Support Direct Play of MPEG-4 content. This may need to be disabled for playback of DIVX encoded video files.</source>
|
||||
<translation>Podpora neposrednega predvajanja vsebine MPEG-4. To bo mogoče potrebno onemogočiti za predvajanje video datotek, ki so kodirane v DIVX.</translation>
|
||||
<extracomment>Settings Menu - Description for option</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>If enabled, selecting a TV series with only one season will go straight to the episode list rather than the show details and season list.</source>
|
||||
<translation>Če je omogočeno, se bo izbira TV-serije s samo eno sezono preusmerila neposredno na seznam epizod in ne na podrobnosti o oddaji in seznamu sezon.</translation>
|
||||
<extracomment>Settings Menu - Description for option</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Use Splashscreen as Screensaver</source>
|
||||
<translation>Uporabi Splashscreen kot Screensaver</translation>
|
||||
<extracomment>Option Title in user setting screen</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Quick Connect</source>
|
||||
<translation>Hitra povezava</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>** EXPERIMENTAL** Support Direct Play of AV1 content if this Roku device supports it.</source>
|
||||
<translation>** EKSPERIMENTALNO** Podpora za neposredno predvajanje vsebine AV1, če naprava Roku to podpira.</translation>
|
||||
<extracomment>Description of a setting - should we try to direct play experimental av1 codec</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>On Now</source>
|
||||
<translation>Trenutno</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Go to episode</source>
|
||||
<translation>Pojdi na epizodo</translation>
|
||||
<extracomment>Continue Watching Popup Menu - Navigate to the Episode Detail Page</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Shows</source>
|
||||
<translation>Serije</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Hides tagline text on details pages.</source>
|
||||
<translation>Skrije besedilo slogana na straneh s podrobnostmi.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Skip Details for Single Seasons</source>
|
||||
<translation>Preskoči podrobnosti za posamezne sezone</translation>
|
||||
<extracomment>Settings Menu - Title for option</extracomment>
|
||||
</message>
|
||||
</context>
|
||||
</TS>
|
||||
|
|
|
@ -30,6 +30,26 @@
|
|||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Playback Bitrate Limits",
|
||||
"description": "Set limits for how high playback bitrates are allowed to be.",
|
||||
"children": [
|
||||
{
|
||||
"title": "Limits Enabled",
|
||||
"description": "If enabled, playback bitrates will be limited based on the 'Playback Bitrate Limit' setting.",
|
||||
"settingName": "playback.bitrate.maxlimited",
|
||||
"type": "bool",
|
||||
"default": "true"
|
||||
},
|
||||
{
|
||||
"title": "Playback Bitrate Limit",
|
||||
"description": "Max bitrate (Mbps) allowed if limits are enabled. Set to 0 to use Roku's specifications.",
|
||||
"settingName": "playback.bitrate.limit",
|
||||
"type": "integer",
|
||||
"default": "0"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Profile Level Support",
|
||||
"description": "Attempt Direct Play of potentially unsupported profile levels",
|
||||
|
@ -64,6 +84,13 @@
|
|||
"type": "bool",
|
||||
"default": "false"
|
||||
},
|
||||
{
|
||||
"title": "Next Episode Button Time",
|
||||
"description": "Set how many seconds before the end of an episode the Next Episode button should appear. Set to 0 to disable.",
|
||||
"settingName": "playback.nextupbuttonseconds",
|
||||
"type": "integer",
|
||||
"default": "30"
|
||||
},
|
||||
{
|
||||
"title": "Text Subtitles Only",
|
||||
"description": "Only display text subtitles to minimize transcoding.",
|
||||
|
@ -73,21 +100,21 @@
|
|||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Show What's New Popup",
|
||||
"description": "Show What's New popup when Jellyfin is updated to a new version.",
|
||||
"settingName": "load.allowwhatsnew",
|
||||
"type": "bool",
|
||||
"default": "true"
|
||||
},
|
||||
{
|
||||
"title": "User Interface",
|
||||
"description": "Settings relating to how the application looks.",
|
||||
"children": [
|
||||
{
|
||||
"title": "Home Page",
|
||||
"description": "Options for Home page.",
|
||||
"title": "General",
|
||||
"description": "Settings relating to the appearance of the Home screen and the program in general.",
|
||||
"children": [
|
||||
{
|
||||
"title": "Hide Clock",
|
||||
"description": "Hides all clocks in Jellyfin. Jellyfin will need to be closed and reopened for change to take effect.",
|
||||
"settingName": "ui.design.hideclock",
|
||||
"type": "bool",
|
||||
"default": "false"
|
||||
},
|
||||
{
|
||||
"title": "Max Days Next Up",
|
||||
"description": "Set the maximum amount of days a show should stay in the 'Next Up' list without watching it.",
|
||||
|
@ -95,45 +122,19 @@
|
|||
"type": "integer",
|
||||
"default": "365"
|
||||
},
|
||||
{
|
||||
"title": "Show What's New Popup",
|
||||
"description": "Show What's New popup when Jellyfin is updated to a new version.",
|
||||
"settingName": "load.allowwhatsnew",
|
||||
"type": "bool",
|
||||
"default": "true"
|
||||
},
|
||||
{
|
||||
"title": "Use Splashscreen as Home Background",
|
||||
"description": "Use generated splashscreen image as Jellyfin's home background. Jellyfin will need to be closed and reopened for change to take effect.",
|
||||
"settingName": "ui.home.splashBackground",
|
||||
"type": "bool",
|
||||
"default": "false"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Details Page",
|
||||
"description": "Options for Details pages.",
|
||||
"children": [
|
||||
{
|
||||
"title": "Hide Taglines",
|
||||
"description": "Hides tagline text on details pages.",
|
||||
"settingName": "ui.details.hidetagline",
|
||||
"type": "bool",
|
||||
"default": "false"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "TV Shows",
|
||||
"description": "Options for TV Shows.",
|
||||
"children": [
|
||||
{
|
||||
"title": "Blur Unwatched Episodes",
|
||||
"description": "If enabled, images of unwatched episodes will be blurred.",
|
||||
"settingName": "ui.tvshows.blurunwatched",
|
||||
"type": "bool",
|
||||
"default": "false"
|
||||
},
|
||||
{
|
||||
"title": "Skip Details for Single Seasons",
|
||||
"description": "If enabled, selecting a TV series with only one season will go straight to the episode list rather than the show details and season list.",
|
||||
"settingName": "ui.tvshows.goStraightToEpisodeListing",
|
||||
"type": "bool",
|
||||
"default": "false"
|
||||
},
|
||||
{
|
||||
"title": "Disable Community Rating for Episodes",
|
||||
|
@ -158,80 +159,119 @@
|
|||
]
|
||||
},
|
||||
{
|
||||
"title": "Design Elements",
|
||||
"description": "Options that alter the design of Jellyfin.",
|
||||
"title": "Libraries",
|
||||
"description": "Settings relating to the appearance of Library pages.",
|
||||
"children": [
|
||||
{
|
||||
"title": "Hide Clock",
|
||||
"description": "Hides all clocks in Jellyfin. Jellyfin will need to be closed and reopened for change to take effect.",
|
||||
"settingName": "ui.design.hideclock",
|
||||
"type": "bool",
|
||||
"default": "false"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Media Grid",
|
||||
"description": "Media Grid options.",
|
||||
"children": [
|
||||
{
|
||||
"title": "Movie Library Default View",
|
||||
"description": "Default view for Movie Libraries.",
|
||||
"settingName": "itemgrid.movieDefaultView",
|
||||
"type": "radio",
|
||||
"default": "movies",
|
||||
"options": [
|
||||
"title": "General",
|
||||
"description": "Settings relating to the appearance of pages in all Libraries.",
|
||||
"children": [
|
||||
{
|
||||
"title": "Movies (Presentation)",
|
||||
"id": "Movies"
|
||||
"title": "Grid View Settings",
|
||||
"description": "Settings that apply when Grid views are enabled.",
|
||||
"children": [
|
||||
{
|
||||
"title": "Item Count",
|
||||
"description": "Show item count in the library and index of selected item.",
|
||||
"settingName": "itemgrid.showItemCount",
|
||||
"type": "bool",
|
||||
"default": "false"
|
||||
},
|
||||
{
|
||||
"title": "Item Titles",
|
||||
"description": "Select when to show titles.",
|
||||
"settingName": "itemgrid.gridTitles",
|
||||
"type": "radio",
|
||||
"default": "showonhover",
|
||||
"options": [
|
||||
{
|
||||
"title": "Show On Hover",
|
||||
"id": "showonhover"
|
||||
},
|
||||
{
|
||||
"title": "Always Show",
|
||||
"id": "showalways"
|
||||
},
|
||||
{
|
||||
"title": "Always Hide",
|
||||
"id": "hidealways"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Movies (Grid)",
|
||||
"id": "MoviesGrid"
|
||||
"title": "Hide Taglines",
|
||||
"description": "Hides tagline text on details pages.",
|
||||
"settingName": "ui.details.hidetagline",
|
||||
"type": "bool",
|
||||
"default": "false"
|
||||
},
|
||||
{
|
||||
"title": "Return to Top",
|
||||
"description": "Use the replay button to slowly animate to the first item in the folder. (If disabled, the folder will reset to the first item immediately).",
|
||||
"settingName": "itemgrid.reset",
|
||||
"type": "bool",
|
||||
"default": "true"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Movie Library Grid Titles",
|
||||
"description": "Select when to show titles.",
|
||||
"settingName": "itemgrid.movieGridTitles",
|
||||
"type": "radio",
|
||||
"default": "showonhover",
|
||||
"options": [
|
||||
"title": "Movies",
|
||||
"description": "Settings relating to the appearance of pages in Movie Libraries.",
|
||||
"children": [
|
||||
{
|
||||
"title": "Show On Hover",
|
||||
"id": "showonhover"
|
||||
},
|
||||
{
|
||||
"title": "Always Show",
|
||||
"id": "showalways"
|
||||
},
|
||||
{
|
||||
"title": "Always Hide",
|
||||
"id": "hidealways"
|
||||
"title": "Default View",
|
||||
"description": "Default view for Movie Libraries.",
|
||||
"settingName": "itemgrid.movieDefaultView",
|
||||
"type": "radio",
|
||||
"default": "movies",
|
||||
"options": [
|
||||
{
|
||||
"title": "Movies (Presentation)",
|
||||
"id": "Movies"
|
||||
},
|
||||
{
|
||||
"title": "Movies (Grid)",
|
||||
"id": "MoviesGrid"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Item Count",
|
||||
"description": "Show item count in the library and index of selected item.",
|
||||
"settingName": "itemgrid.showItemCount",
|
||||
"type": "bool",
|
||||
"default": "false"
|
||||
},
|
||||
{
|
||||
"title": "Item Titles",
|
||||
"description": "Always show the titles below the poster images. (If disabled, the title will be shown under the highlighted item only).",
|
||||
"settingName": "itemgrid.alwaysShowTitles",
|
||||
"type": "bool",
|
||||
"default": "false"
|
||||
},
|
||||
{
|
||||
"title": "Return to Top",
|
||||
"description": "Use the replay button to slowly animate to the first item in the folder. (If disabled, the folder will reset to the first item immediately).",
|
||||
"settingName": "itemgrid.reset",
|
||||
"type": "bool",
|
||||
"default": "true"
|
||||
"title": "TV Shows",
|
||||
"description": "Settings relating to the appearance of pages in TV Libraries.",
|
||||
"children": [
|
||||
{
|
||||
"title": "Blur Unwatched Episodes",
|
||||
"description": "If enabled, images of unwatched episodes will be blurred.",
|
||||
"settingName": "ui.tvshows.blurunwatched",
|
||||
"type": "bool",
|
||||
"default": "false"
|
||||
},
|
||||
{
|
||||
"title": "Disable Community Rating for Episodes",
|
||||
"description": "If enabled, the star and community rating for episodes of a TV show will be removed. This is to prevent spoilers of an upcoming good/bad episode.",
|
||||
"settingName": "ui.tvshows.disableCommunityRating",
|
||||
"type": "bool",
|
||||
"default": "false"
|
||||
},
|
||||
{
|
||||
"title": "Disable Unwatched Episode Count",
|
||||
"description": "If enabled, the number of unwatched episodes in a series/season will be removed.",
|
||||
"settingName": "ui.tvshows.disableUnwatchedEpisodeCount",
|
||||
"type": "bool",
|
||||
"default": "false"
|
||||
},
|
||||
{
|
||||
"title": "Skip Details for Single Seasons",
|
||||
"description": "If enabled, selecting a TV series with only one season will go straight to the episode list rather than the show details and season list.",
|
||||
"settingName": "ui.tvshows.goStraightToEpisodeListing",
|
||||
"type": "bool",
|
||||
"default": "false"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
|
@ -2,6 +2,22 @@ sub Main (args as dynamic) as void
|
|||
|
||||
appInfo = CreateObject("roAppInfo")
|
||||
|
||||
if appInfo.IsDev() and args.RunTests = "true" and TF_Utils__IsFunction(TestRunner)
|
||||
' POST to {ROKU ADDRESS}:8060/launch/dev?RunTests=true
|
||||
Runner = TestRunner()
|
||||
|
||||
Runner.SetFunctions([
|
||||
TestSuite__Misc
|
||||
])
|
||||
|
||||
Runner.Logger.SetVerbosity(1)
|
||||
Runner.Logger.SetEcho(false)
|
||||
Runner.Logger.SetJUnit(false)
|
||||
Runner.SetFailFast(true)
|
||||
|
||||
Runner.Run()
|
||||
end if
|
||||
|
||||
' The main function that runs when the application is launched.
|
||||
m.screen = CreateObject("roSGScreen")
|
||||
|
||||
|
@ -147,7 +163,7 @@ sub Main (args as dynamic) as void
|
|||
sceneManager.callFunc("pushScene", group)
|
||||
else if selectedItem.type = "Folder" and selectedItem.json.type = "Genre"
|
||||
' User clicked on a genre folder
|
||||
if selectedItem.collectionType = "movies"
|
||||
if selectedItem.json.MovieCount > 0
|
||||
group = CreateMovieLibraryView(selectedItem)
|
||||
else
|
||||
group = CreateItemGrid(selectedItem)
|
||||
|
@ -376,6 +392,7 @@ sub Main (args as dynamic) as void
|
|||
btn = getButton(msg)
|
||||
group = sceneManager.callFunc("getActiveScene")
|
||||
if btn <> invalid and btn.id = "play-button"
|
||||
|
||||
' Check if a specific Audio Stream was selected
|
||||
audio_stream_idx = 1
|
||||
if group.selectedAudioStreamIndex <> invalid
|
||||
|
@ -388,7 +405,6 @@ sub Main (args as dynamic) as void
|
|||
mediaSourceId = group.selectedVideoStreamId
|
||||
end if
|
||||
video_id = group.id
|
||||
|
||||
video = CreateVideoPlayerGroup(video_id, mediaSourceId, audio_stream_idx)
|
||||
if video <> invalid and video.errorMsg <> "introaborted"
|
||||
sceneManager.callFunc("pushScene", video)
|
||||
|
@ -406,6 +422,9 @@ sub Main (args as dynamic) as void
|
|||
end if
|
||||
|
||||
else if btn <> invalid and btn.id = "trailer-button"
|
||||
dialog = createObject("roSGNode", "ProgressDialog")
|
||||
dialog.title = tr("Loading trailer")
|
||||
m.scene.dialog = dialog
|
||||
audio_stream_idx = 1
|
||||
mediaSourceId = invalid
|
||||
video_id = group.id
|
||||
|
@ -417,6 +436,7 @@ sub Main (args as dynamic) as void
|
|||
video = CreateVideoPlayerGroup(video_id, mediaSourceId, audio_stream_idx, false, false)
|
||||
if video <> invalid and video.errorMsg <> "introaborted"
|
||||
sceneManager.callFunc("pushScene", video)
|
||||
dialog.close = true
|
||||
end if
|
||||
|
||||
if group.lastFocus <> invalid
|
||||
|
@ -516,7 +536,11 @@ sub Main (args as dynamic) as void
|
|||
else if node.showID = invalid
|
||||
sceneManager.callFunc("popScene")
|
||||
else
|
||||
autoPlayNextEpisode(node.id, node.showID)
|
||||
if video.errorMsg = ""
|
||||
autoPlayNextEpisode(node.id, node.showID)
|
||||
else
|
||||
sceneManager.callFunc("popScene")
|
||||
end if
|
||||
end if
|
||||
end if
|
||||
else if type(msg) = "roDeviceInfoEvent"
|
||||
|
|
|
@ -331,6 +331,7 @@ function CreateHomeGroup()
|
|||
end function
|
||||
|
||||
function CreateMovieDetailsGroup(movie)
|
||||
startLoadingSpinner()
|
||||
group = CreateObject("roSGNode", "MovieDetails")
|
||||
group.overhangTitle = movie.title
|
||||
group.optionsAvailable = false
|
||||
|
@ -353,15 +354,17 @@ function CreateMovieDetailsGroup(movie)
|
|||
extras = group.findNode("extrasGrid")
|
||||
extras.observeField("selectedItem", m.port)
|
||||
extras.callFunc("loadParts", movie.json)
|
||||
|
||||
stopLoadingSpinner()
|
||||
return group
|
||||
end function
|
||||
|
||||
function CreateSeriesDetailsGroup(series)
|
||||
startLoadingSpinner()
|
||||
' Get season data early in the function so we can check number of seasons.
|
||||
seasonData = TVSeasons(series.id)
|
||||
' Divert to season details if user setting goStraightToEpisodeListing is enabled and only one season exists.
|
||||
if get_user_setting("ui.tvshows.goStraightToEpisodeListing") = "true" and seasonData.Items.Count() = 1
|
||||
stopLoadingSpinner()
|
||||
return CreateSeasonDetailsGroupByID(series.id, seasonData.Items[0].id)
|
||||
end if
|
||||
group = CreateObject("roSGNode", "TVShowDetails")
|
||||
|
@ -376,7 +379,7 @@ function CreateSeriesDetailsGroup(series)
|
|||
extras = group.findNode("extrasGrid")
|
||||
extras.observeField("selectedItem", m.port)
|
||||
extras.callFunc("loadParts", group.itemcontent.json)
|
||||
|
||||
stopLoadingSpinner()
|
||||
return group
|
||||
end function
|
||||
|
||||
|
@ -446,6 +449,7 @@ function CreateAlbumView(album)
|
|||
end function
|
||||
|
||||
function CreateSeasonDetailsGroup(series, season)
|
||||
startLoadingSpinner()
|
||||
group = CreateObject("roSGNode", "TVEpisodes")
|
||||
group.optionsAvailable = false
|
||||
m.global.sceneManager.callFunc("pushScene", group)
|
||||
|
@ -456,10 +460,13 @@ function CreateSeasonDetailsGroup(series, season)
|
|||
group.observeField("episodeSelected", m.port)
|
||||
group.observeField("quickPlayNode", m.port)
|
||||
|
||||
stopLoadingSpinner()
|
||||
|
||||
return group
|
||||
end function
|
||||
|
||||
function CreateSeasonDetailsGroupByID(seriesID, seasonID)
|
||||
startLoadingSpinner()
|
||||
group = CreateObject("roSGNode", "TVEpisodes")
|
||||
group.optionsAvailable = false
|
||||
m.global.sceneManager.callFunc("pushScene", group)
|
||||
|
@ -469,7 +476,7 @@ function CreateSeasonDetailsGroupByID(seriesID, seasonID)
|
|||
|
||||
group.observeField("episodeSelected", m.port)
|
||||
group.observeField("quickPlayNode", m.port)
|
||||
|
||||
stopLoadingSpinner()
|
||||
return group
|
||||
end function
|
||||
|
||||
|
@ -513,7 +520,7 @@ sub CreateSidePanel(buttons, options)
|
|||
end sub
|
||||
|
||||
function CreateVideoPlayerGroup(video_id, mediaSourceId = invalid, audio_stream_idx = 1, forceTranscoding = false, showIntro = true, allowResumeDialog = true)
|
||||
|
||||
startMediaLoadingSpinner()
|
||||
' Video is Playing
|
||||
video = VideoPlayer(video_id, mediaSourceId, audio_stream_idx, defaultSubtitleTrackFromVid(video_id), forceTranscoding, showIntro, allowResumeDialog)
|
||||
|
||||
|
@ -522,17 +529,18 @@ function CreateVideoPlayerGroup(video_id, mediaSourceId = invalid, audio_stream_
|
|||
video.observeField("selectSubtitlePressed", m.port)
|
||||
video.observeField("selectPlaybackInfoPressed", m.port)
|
||||
video.observeField("state", m.port)
|
||||
|
||||
stopLoadingSpinner()
|
||||
return video
|
||||
end function
|
||||
|
||||
function CreatePersonView(personData as object) as object
|
||||
startLoadingSpinner()
|
||||
person = CreateObject("roSGNode", "PersonDetails")
|
||||
m.global.SceneManager.callFunc("pushScene", person)
|
||||
|
||||
info = ItemMetaData(personData.id)
|
||||
person.itemContent = info
|
||||
|
||||
stopLoadingSpinner()
|
||||
person.setFocus(true)
|
||||
person.observeField("selectedItem", m.port)
|
||||
person.findNode("favorite-button").observeField("buttonSelected", m.port)
|
||||
|
|
|
@ -9,6 +9,7 @@ function VideoPlayer(id, mediaSourceId = invalid, audio_stream_idx = 1, subtitle
|
|||
end if
|
||||
|
||||
if video.content = invalid
|
||||
stopLoadingSpinner()
|
||||
return invalid
|
||||
end if
|
||||
jellyfin_blue = "#00a4dcFF"
|
||||
|
@ -46,7 +47,9 @@ sub AddVideoContent(video, mediaSourceId, audio_stream_idx = 1, subtitle_idx = -
|
|||
end if
|
||||
|
||||
if m.videotype = "Episode" or m.videotype = "Series"
|
||||
video.runTime = (meta.json.RunTimeTicks / 10000000.0)
|
||||
if isValid(meta.json.RunTimeTicks)
|
||||
video.runTime = (meta.json.RunTimeTicks / 10000000.0)
|
||||
end if
|
||||
video.content.contenttype = "episode"
|
||||
end if
|
||||
|
||||
|
@ -57,7 +60,9 @@ sub AddVideoContent(video, mediaSourceId, audio_stream_idx = 1, subtitle_idx = -
|
|||
playbackPosition = meta.json.UserData.PlaybackPositionTicks
|
||||
if allowResumeDialog
|
||||
if playbackPosition > 0
|
||||
stopLoadingSpinner()
|
||||
dialogResult = startPlayBackOver(playbackPosition)
|
||||
startMediaLoadingSpinner()
|
||||
'Dialog returns -1 when back pressed, 0 for resume, and 1 for start over
|
||||
if dialogResult = -1
|
||||
'User pressed back, return invalid and don't load video
|
||||
|
@ -96,6 +101,7 @@ sub AddVideoContent(video, mediaSourceId, audio_stream_idx = 1, subtitle_idx = -
|
|||
for each item in data.Items
|
||||
m.tmp = item
|
||||
end for
|
||||
stopLoadingSpinner()
|
||||
'Create Series Scene
|
||||
CreateSeriesDetailsGroup(m.tmp)
|
||||
video.content = invalid
|
||||
|
@ -133,6 +139,7 @@ sub AddVideoContent(video, mediaSourceId, audio_stream_idx = 1, subtitle_idx = -
|
|||
for each item in data.Items
|
||||
m.Series_tmp = item
|
||||
end for
|
||||
stopLoadingSpinner()
|
||||
'Create Season Scene
|
||||
CreateSeasonDetailsGroup(m.Series_tmp, m.Season_tmp)
|
||||
video.content = invalid
|
||||
|
@ -149,6 +156,7 @@ sub AddVideoContent(video, mediaSourceId, audio_stream_idx = 1, subtitle_idx = -
|
|||
for each item in data.Items
|
||||
m.episode_id = item
|
||||
end for
|
||||
stopLoadingSpinner()
|
||||
'Create Episode Scene
|
||||
CreateMovieDetailsGroup(m.episode_id)
|
||||
video.content = invalid
|
||||
|
@ -311,7 +319,6 @@ sub AddVideoContent(video, mediaSourceId, audio_stream_idx = 1, subtitle_idx = -
|
|||
if not fully_external
|
||||
video.content = authorize_request(video.content)
|
||||
end if
|
||||
|
||||
end sub
|
||||
|
||||
function PlayIntroVideo(video_id, audio_stream_idx) as boolean
|
||||
|
|
|
@ -389,11 +389,7 @@ function TVEpisodes(show_id as string, season_id as string)
|
|||
data = getJson(resp)
|
||||
results = []
|
||||
for each item in data.Items
|
||||
imgParams = { "AddPlayedIndicator": item.UserData.Played, "maxWidth": 400, "maxheight": 250 }
|
||||
if item.UserData.PlayedPercentage <> invalid
|
||||
param = { "PercentPlayed": item.UserData.PlayedPercentage }
|
||||
imgParams.Append(param)
|
||||
end if
|
||||
imgParams = { "maxWidth": 400, "maxheight": 250 }
|
||||
tmp = CreateObject("roSGNode", "TVEpisodeData")
|
||||
tmp.image = PosterImage(item.id, imgParams)
|
||||
if tmp.image <> invalid
|
||||
|
|
|
@ -155,6 +155,11 @@ sub LoadUserAbilities(user)
|
|||
else
|
||||
set_user_setting("livetv.canrecord", "false")
|
||||
end if
|
||||
if user.Policy.EnableContentDeletion = true
|
||||
set_user_setting("content.candelete", "true")
|
||||
else
|
||||
set_user_setting("content.candelete", "false")
|
||||
end if
|
||||
end sub
|
||||
|
||||
function initQuickConnect()
|
||||
|
|
2867
source/testFramework/UnitTestFramework.brs
Normal file
2867
source/testFramework/UnitTestFramework.brs
Normal file
File diff suppressed because it is too large
Load Diff
81
source/tests/Test__Misc.brs
Normal file
81
source/tests/Test__Misc.brs
Normal file
|
@ -0,0 +1,81 @@
|
|||
function TestSuite__Misc() as object
|
||||
|
||||
' Inherite test suite from BaseTestSuite
|
||||
this = BaseTestSuite()
|
||||
|
||||
' Test suite name for log statistics
|
||||
this.Name = "MiscTestSuite"
|
||||
|
||||
this.SetUp = MiscTestSuite__SetUp
|
||||
this.TearDown = MiscTestSuite__TearDown
|
||||
|
||||
' Add tests to suite's tests collection
|
||||
this.addTest("IsValid() true", TestCase__Misc_IsValid_True)
|
||||
this.addTest("IsValid() false", TestCase__Misc_IsValid_False)
|
||||
this.addTest("RoundNumber() Floor", TestCase__Misc_RoundNumber_Floor)
|
||||
this.addTest("RoundNumber() Ceiling", TestCase__Misc_RoundNumber_Ceiling)
|
||||
|
||||
return this
|
||||
end function
|
||||
|
||||
'----------------------------------------------------------------
|
||||
' This function called immediately before running tests of current suite.
|
||||
'----------------------------------------------------------------
|
||||
sub MiscTestSuite__SetUp()
|
||||
end sub
|
||||
|
||||
'----------------------------------------------------------------
|
||||
' This function called immediately after running tests of current suite.
|
||||
'----------------------------------------------------------------
|
||||
sub MiscTestSuite__TearDown()
|
||||
end sub
|
||||
|
||||
'----------------------------------------------------------------
|
||||
' Check if isValid() properly identifies valid items
|
||||
'
|
||||
' @return An empty string if test is success or error message if not.
|
||||
'----------------------------------------------------------------
|
||||
function TestCase__Misc_IsValid_True() as string
|
||||
returnResults = ""
|
||||
testData = [1, 2, [3, 4], { "key": invalid }, [1, 2, 3], CreateObject("roAppInfo")]
|
||||
|
||||
for each testItem in testData
|
||||
returnResults = returnResults + m.AssertTrue(isValid(testItem))
|
||||
end for
|
||||
|
||||
return m.AssertEmpty(returnResults)
|
||||
end function
|
||||
|
||||
'----------------------------------------------------------------
|
||||
' Check if isValid() properly identifies invalid items
|
||||
'
|
||||
' @return An empty string if test is success or error message if not.
|
||||
'----------------------------------------------------------------
|
||||
function TestCase__Misc_IsValid_False() as string
|
||||
returnResults = ""
|
||||
testData = [invalid, CreateObject("nothing")]
|
||||
|
||||
for each testItem in testData
|
||||
returnResults = m.AssertFalse(isValid(testItem))
|
||||
end for
|
||||
|
||||
return m.AssertEmpty(returnResults)
|
||||
end function
|
||||
|
||||
'----------------------------------------------------------------
|
||||
' Check if roundNumber() properly rounds down
|
||||
'
|
||||
' @return An empty string if test is success or error message if not.
|
||||
'----------------------------------------------------------------
|
||||
function TestCase__Misc_RoundNumber_Floor() as string
|
||||
return m.AssertEqual(roundNumber(9.4), 9)
|
||||
end function
|
||||
|
||||
'----------------------------------------------------------------
|
||||
' Check if roundNumber() properly rounds up
|
||||
'
|
||||
' @return An empty string if test is success or error message if not.
|
||||
'----------------------------------------------------------------
|
||||
function TestCase__Misc_RoundNumber_Ceiling() as string
|
||||
return m.AssertEqual(roundNumber(9.6), 10)
|
||||
end function
|
|
@ -171,13 +171,7 @@ function getDeviceProfile() as object
|
|||
"Value": "41",
|
||||
"IsRequired": false
|
||||
},
|
||||
' Roku only supports h264 up to 10Mpbs
|
||||
{
|
||||
"Condition": "LessThanEqual",
|
||||
"Property": "VideoBitrate",
|
||||
"Value": "10000000",
|
||||
IsRequired: true
|
||||
}
|
||||
GetBitRateLimit("H264")
|
||||
]
|
||||
}
|
||||
],
|
||||
|
@ -211,13 +205,7 @@ function getDeviceProfile() as object
|
|||
"Value": av1VideoRangeTypes,
|
||||
"IsRequired": false
|
||||
},
|
||||
' Roku only supports AVI up to 40Mpbs
|
||||
{
|
||||
"Condition": "LessThanEqual",
|
||||
"Property": "VideoBitrate",
|
||||
"Value": "40000000",
|
||||
IsRequired: true
|
||||
}
|
||||
GetBitRateLimit("AV1")
|
||||
]
|
||||
})
|
||||
end if
|
||||
|
@ -244,13 +232,7 @@ function getDeviceProfile() as object
|
|||
"Value": (120 * 5.1).ToStr(),
|
||||
"IsRequired": false
|
||||
},
|
||||
' Roku only supports h265 up to 40Mpbs
|
||||
{
|
||||
"Condition": "LessThanEqual",
|
||||
"Property": "VideoBitrate",
|
||||
"Value": "40000000",
|
||||
IsRequired: true
|
||||
}
|
||||
GetBitRateLimit("H265")
|
||||
]
|
||||
})
|
||||
end if
|
||||
|
@ -265,13 +247,7 @@ function getDeviceProfile() as object
|
|||
"Value": vp9VideoRangeTypes,
|
||||
"IsRequired": false
|
||||
},
|
||||
' Roku only supports VP9 up to 40Mpbs
|
||||
{
|
||||
"Condition": "LessThanEqual",
|
||||
"Property": "VideoBitrate",
|
||||
"Value": "40000000",
|
||||
IsRequired: true
|
||||
}
|
||||
GetBitRateLimit("VP9")
|
||||
]
|
||||
})
|
||||
end if
|
||||
|
@ -382,3 +358,56 @@ function GetDirectPlayProfiles() as object
|
|||
]
|
||||
|
||||
end function
|
||||
|
||||
function GetBitRateLimit(codec as string)
|
||||
if get_user_setting("playback.bitrate.maxlimited") = "true"
|
||||
userSetLimit = get_user_setting("playback.bitrate.limit").ToInt()
|
||||
userSetLimit *= 1000000
|
||||
|
||||
if userSetLimit > 0
|
||||
return {
|
||||
"Condition": "LessThanEqual",
|
||||
"Property": "VideoBitrate",
|
||||
"Value": userSetLimit.ToStr(),
|
||||
IsRequired: true
|
||||
}
|
||||
else
|
||||
' Some repeated values (e.g. same "40mbps" for several codecs)
|
||||
' but this makes it easy to update in the future if the bitrates start to deviate.
|
||||
if codec = "H264"
|
||||
' Roku only supports h264 up to 10Mpbs
|
||||
return {
|
||||
"Condition": "LessThanEqual",
|
||||
"Property": "VideoBitrate",
|
||||
"Value": "10000000",
|
||||
IsRequired: true
|
||||
}
|
||||
else if codec = "AV1"
|
||||
' Roku only supports AV1 up to 40Mpbs
|
||||
return {
|
||||
"Condition": "LessThanEqual",
|
||||
"Property": "VideoBitrate",
|
||||
"Value": "40000000",
|
||||
IsRequired: true
|
||||
}
|
||||
else if codec = "H265"
|
||||
' Roku only supports h265 up to 40Mpbs
|
||||
return {
|
||||
"Condition": "LessThanEqual",
|
||||
"Property": "VideoBitrate",
|
||||
"Value": "40000000",
|
||||
IsRequired: true
|
||||
}
|
||||
else if codec = "VP9"
|
||||
' Roku only supports VP9 up to 40Mpbs
|
||||
return {
|
||||
"Condition": "LessThanEqual",
|
||||
"Property": "VideoBitrate",
|
||||
"Value": "40000000",
|
||||
IsRequired: true
|
||||
}
|
||||
end if
|
||||
end if
|
||||
end if
|
||||
return {}
|
||||
end function
|
||||
|
|
|
@ -281,3 +281,28 @@ function findNodeBySubtype(node, subtype)
|
|||
|
||||
return foundNodes
|
||||
end function
|
||||
|
||||
sub startLoadingSpinner()
|
||||
m.spinner = createObject("roSGNode", "Spinner")
|
||||
m.spinner.translation = "[900, 450]"
|
||||
m.spinner.visible = true
|
||||
m.scene.appendChild(m.spinner)
|
||||
end sub
|
||||
|
||||
|
||||
sub startMediaLoadingSpinner()
|
||||
dialog = createObject("roSGNode", "ProgressDialog")
|
||||
dialog.id = "invisibiledialog"
|
||||
dialog.visible = false
|
||||
m.scene.dialog = dialog
|
||||
startLoadingSpinner()
|
||||
end sub
|
||||
|
||||
sub stopLoadingSpinner()
|
||||
if isValid(m.spinner)
|
||||
m.spinner.visible = false
|
||||
end if
|
||||
if isValid(m.scene?.dialog)
|
||||
m.scene.dialog.close = true
|
||||
end if
|
||||
end sub
|
||||
|
|
Loading…
Reference in New Issue
Block a user