Merge branch 'master' into add-screen-events

This commit is contained in:
Neil Burrows 2022-05-19 21:41:29 +01:00 committed by GitHub
commit 5251c46270
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
36 changed files with 2020 additions and 183 deletions

View File

@ -0,0 +1,15 @@
sub init()
m.top.functionName = "setFavoriteStatus"
end sub
sub setFavoriteStatus()
task = m.top.favTask
if task = "Favorite"
MarkItemFavorite(m.top.itemId)
else if task = "Unfavorite"
UnmarkItemFavorite(m.top.itemId)
end if
end sub

View File

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8" ?>
<component name="FavoriteItemsTask" extends="Task">
<interface>
<field id="itemId" type="string" />
<field id="favTask" type="string" value="" />
</interface>
<script type="text/brightscript" uri="FavoriteItemsTask.brs" />
<script type="text/brightscript" uri="pkg:/source/api/UserLibrary.brs" />
<script type="text/brightscript" uri="pkg:/source/api/baserequest.brs" />
<script type="text/brightscript" uri="pkg:/source/utils/config.brs" />
</component>

View File

@ -10,6 +10,12 @@ sub init()
m.itemText.translation = [0, m.itemPoster.height + 7]
m.alwaysShowTitles = get_user_setting("itemgrid.alwaysShowTitles") = "true"
m.itemText.visible = m.alwaysShowTitles
' Add some padding space when Item Titles are always showing
if m.alwaysShowTitles then m.itemText.maxWidth = 250
'Parent is MarkupGrid and it's parent is the ItemGrid
topParent = m.top.GetParent().GetParent()
'Get the imageDisplayMode for these grid items
@ -80,7 +86,7 @@ sub focusChanged()
m.itemText.visible = true
m.itemText.repeatCount = -1
else
m.itemText.visible = false
m.itemText.visible = m.alwaysShowTitles
m.itemText.repeatCount = 0
end if

View File

@ -7,7 +7,7 @@
<Poster id="itemIcon" width="50" height="50" translation="[230,10]" />
<Label id="posterText" width="280" height="415" translation="[5,5]" horizAlign="center" vertAlign="center" ellipsizeOnBoundary="true" wrap="true" />
</maskGroup>
<ScrollingLabel id="itemText" horizAlign="center" font="font:SmallSystemFont" maxWidth="290" repeatCount="-1" visible="false" />
<ScrollingLabel id="itemText" horizAlign="center" font="font:SmallSystemFont" maxWidth="290" repeatCount="0" visible="false" />
</children>
<interface>
<field id="itemContent" type="node" onChange="itemContentChanged" />
@ -15,4 +15,5 @@
<field id="focusPercent" type="float" onChange="focusChanging" />
</interface>
<script type="text/brightscript" uri="GridItem.brs" />
<script type="text/brightscript" uri="pkg:/source/utils/config.brs" />
</component>

View File

@ -1,7 +1,9 @@
sub init()
m.options = m.top.findNode("options")
m.tvGuide = invalid
m.channelFocused = invalid
m.itemGrid = m.top.findNode("itemGrid")
m.backdrop = m.top.findNode("backdrop")
@ -32,6 +34,7 @@ sub init()
m.sortAscending = true
m.filter = "All"
m.favorite = "Favorite"
m.loadItemsTask = createObject("roSGNode", "LoadItemsTask2")
m.spinner = m.top.findNode("spinner")
@ -123,6 +126,7 @@ sub SetUpOptions()
options = {}
options.filter = []
options.favorite = []
'Movies
if m.top.parentItem.collectionType = "movies"
@ -185,6 +189,9 @@ sub SetUpOptions()
{ "Title": tr("All"), "Name": "All" },
{ "Title": tr("Favorites"), "Name": "Favorites" }
]
options.favorite = [
{ "Title": tr("Favorite"), "Name": "Favorite" }
]
else if m.top.parentItem.collectionType = "photoalbum" or m.top.parentItem.collectionType = "photo" or m.top.parentItem.collectionType = "homevideos"
' For some reason, my photo library shows up as "homevideos", maybe because it has some mp4 mixed in with the jpgs?
@ -229,6 +236,12 @@ sub SetUpOptions()
end if
end for
' for each o in options.favorite
' if o.Name = m.favorite
' m.options.favorite = o.Name
' end if
' end for
m.options.options = options
end sub
@ -291,6 +304,8 @@ sub onItemFocused()
return
end if
m.selectedFavoriteItem = m.itemGrid.content.getChild(m.itemGrid.itemFocused)
' Set Background to item backdrop
SetBackground(m.itemGrid.content.getChild(m.itemGrid.itemFocused).backdropUrl)
@ -439,6 +454,7 @@ sub showTVGuide()
m.tvGuide = createObject("roSGNode", "Schedule")
m.top.signalBeacon("EPGLaunchInitiate") ' Required Roku Performance monitoring
m.tvGuide.observeField("watchChannel", "onChannelSelected")
m.tvGuide.observeField("focusedChannel", "onChannelFocused")
end if
m.tvGuide.filter = m.filter
m.top.appendChild(m.tvGuide)
@ -454,6 +470,11 @@ sub onChannelSelected(msg)
end if
end sub
sub onChannelFocused(msg)
node = msg.getRoSGNode()
m.channelFocused = node.focusedChannel
end sub
function onKeyEvent(key as string, press as boolean) as boolean
if not press then return false
topGrp = m.top.findNode("itemGrid")
@ -463,6 +484,16 @@ function onKeyEvent(key as string, press as boolean) as boolean
m.top.removeChild(m.options)
optionsClosed()
else
channelSelected = m.channelFocused
itemSelected = m.selectedFavoriteItem
if itemSelected <> invalid
m.options.selectedFavoriteItem = itemSelected
end if
if channelSelected <> invalid
if channelSelected.type = "TvChannel"
m.options.selectedFavoriteItem = channelSelected
end if
end if
m.options.visible = true
m.top.appendChild(m.options)
m.options.setFocus(true)

View File

@ -5,6 +5,9 @@ sub init()
m.buttons.selectedIndex = 1
m.buttons.setFocus(true)
m.favoriteMenu = m.top.findNode("favoriteMenu")
m.selectedFavoriteItem = m.top.findNode("selectedFavoriteItem")
m.selectedSortIndex = 0
m.selectedItem = 1
@ -23,7 +26,7 @@ sub init()
m.fadeInAnimOpacity = m.top.findNode("inOpacity")
m.buttons.observeField("focusedIndex", "buttonFocusChanged")
m.favoriteMenu.observeField("buttonSelected", "toggleFavorite")
end sub
@ -105,24 +108,83 @@ sub optionsSet()
m.menus[2].content = filterContent
m.menus[2].checkedItem = 0
end if
end sub
' Switch menu shown when button focus changes
sub buttonFocusChanged()
if m.buttons.focusedIndex = m.selectedItem then return
if m.buttons.focusedIndex = m.selectedItem
if m.buttons.hasFocus()
m.buttons.setFocus(false)
m.menus[m.selectedItem].setFocus(false)
m.menus[m.selectedItem].visible = false
m.favoriteMenu.setFocus(true)
end if
end if
m.fadeOutAnimOpacity.fieldToInterp = m.menus[m.selectedItem].id + ".opacity"
m.fadeInAnimOpacity.fieldToInterp = m.menus[m.buttons.focusedIndex].id + ".opacity"
m.fadeAnim.control = "start"
m.selectedItem = m.buttons.focusedIndex
end sub
sub toggleFavorite()
m.favItemsTask = createObject("roSGNode", "FavoriteItemsTask")
if m.favoriteMenu.iconUri = "pkg:/images/icons/favorite.png"
m.favoriteMenu.iconUri = "pkg:/images/icons/favorite_selected.png"
m.favoriteMenu.focusedIconUri = "pkg:/images/icons/favorite_selected.png"
' Run the task to actually favorite it via API
m.favItemsTask.favTask = "Favorite"
m.favItemsTask.itemId = m.selectedFavoriteItem.id
m.favItemsTask.control = "RUN"
else
m.favoriteMenu.iconUri = "pkg:/images/icons/favorite.png"
m.favoriteMenu.focusedIconUri = "pkg:/images/icons/favorite.png"
m.favItemsTask.favTask = "Unfavorite"
m.favItemsTask.itemId = m.selectedFavoriteItem.id
m.favItemsTask.control = "RUN"
end if
' Make sure we set the Favorite Heart color for the appropriate child
setHeartColor("#cc3333")
end sub
sub setHeartColor(color as string)
error = []
try
for i = 0 to 6
node = m.favoriteMenu.getChild(i)
if node <> invalid
if node.uri <> invalid and node.uri = "pkg:/images/icons/favorite_selected.png"
m.favoriteMenu.getChild(i).blendColor = color
end if
end if
end for
catch error
print error
end try
end sub
sub saveFavoriteItemSelected(msg)
data = msg.GetData()
m.selectedFavoriteItem = data
' Favorite button
if m.selectedFavoriteItem <> invalid
if m.selectedFavoriteItem.favorite = true
m.favoriteMenu.iconUri = "pkg:/images/icons/favorite_selected.png"
m.favoriteMenu.focusedIconUri = "pkg:/images/icons/favorite_selected.png"
' Make sure we set the Favorite Heart color for the appropriate child
setHeartColor("#cc3333")
else
m.favoriteMenu.iconUri = "pkg:/images/icons/favorite.png"
m.favoriteMenu.focusedIconUri = "pkg:/images/icons/favorite.png"
' Make sure we set the Favorite Heart color for the appropriate child
setHeartColor("#cc3333")
end if
end if
end sub
function onKeyEvent(key as string, press as boolean) as boolean
if key = "down" or (key = "OK" and m.top.findNode("buttons").hasFocus())
m.top.findNode("buttons").setFocus(false)
if key = "down" or (key = "OK" and m.buttons.hasFocus())
m.buttons.setFocus(false)
m.menus[m.selectedItem].setFocus(true)
m.menus[m.selectedItem].drawFocusFeedback = true
@ -134,6 +196,12 @@ function onKeyEvent(key as string, press as boolean) as boolean
end if
return true
else if key = "left"
if m.favoriteMenu.hasFocus()
m.favoriteMenu.setFocus(false)
m.menus[m.selectedItem].visible = true
m.buttons.setFocus(true)
end if
else if key = "OK"
if m.menus[m.selectedItem].isInFocusChain()
' Handle View Screen
@ -172,12 +240,14 @@ function onKeyEvent(key as string, press as boolean) as boolean
end if
return true
else if key = "back" or key = "up"
m.menus[2].visible = true ' Show Filter contents in case hidden by favorite button
if m.menus[m.selectedItem].isInFocusChain()
m.buttons.setFocus(true)
m.menus[m.selectedItem].drawFocusFeedback = false
return true
end if
else if key = "options"
m.menus[2].visible = true ' Show Filter contents in case hidden by favorite button
m.menus[m.selectedItem].drawFocusFeedback = false
return false
end if

View File

@ -15,6 +15,9 @@
</RadiobuttonList>
</Group>
</LayoutGroup>
<ButtonGroup translation="[1250,50]">
<Button id="favoriteMenu" iconUri="pkg:/images/icons/favorite.png" focusedIconUri="pkg:/images/icons/favorite.png" focusBitmapUri="" focusFootprintBitmapUri="" text="Favorite" showFocusFootprint="false"></Button>
</ButtonGroup>
</Group>
<Animation id="fadeAnim" duration="0.5" repeat="false">
@ -26,11 +29,13 @@
<interface>
<field id="buttons" type="nodearray" />
<field id="options" type="assocarray" onChange="optionsSet" />
<field id="selectedFavoriteItem" type="node" onChange="saveFavoriteItemSelected" />
<field id="view" type="string" />
<field id="sortField" type="string" value="SortName" />
<field id="sortAscending" type="boolean" value="false" />
<field id="filter" type="string" value="All" />
<field id="favorite" type="string" value="Favorite" />
</interface>
<script type="text/brightscript" uri="ItemGridOptions.brs" />

View File

@ -48,13 +48,12 @@ sub loadItems()
if m.top.ItemType = "LiveTV"
url = "LiveTv/Channels"
params.append({ userId: get_setting("active_user") })
params.append({ UserId: get_setting("active_user") })
else
url = Substitute("Users/{0}/Items/", get_setting("active_user"))
end if
resp = APIRequest(url, params)
data = getJson(resp)
if data <> invalid
if data.TotalRecordCount <> invalid then m.top.totalRecordCount = data.TotalRecordCount
@ -79,6 +78,9 @@ sub loadItems()
if tmp <> invalid
tmp.json = item
if item.UserData <> invalid and item.UserData.isFavorite <> invalid
tmp.favorite = item.UserData.isFavorite
end if
results.push(tmp)
end if
end for

View File

@ -6,6 +6,7 @@ sub init()
m.bufferPercentage = 0 ' Track whether content is being loaded
m.playReported = false
m.top.transcodeReasons = []
m.bufferCheckTimer.duration = 10
end sub
@ -67,6 +68,7 @@ sub ReportPlayback(state = "update" as string)
"MediaSourceId": m.top.transcodeParams.MediaSourceId,
"LiveStreamId": m.top.transcodeParams.LiveStreamId
})
m.bufferCheckTimer.duration = 30
end if
' Report playstate via worker task
@ -85,12 +87,13 @@ sub bufferCheck(msg)
m.bufferCheckTimer.unobserveField("fire")
return
end if
if m.top.bufferingStatus <> invalid
' Check that the buffering percentage is increasing
if m.top.bufferingStatus["percentage"] > m.bufferPercentage
m.bufferPercentage = m.top.bufferingStatus["percentage"]
else if m.top.content.live = true
m.top.callFunc("refresh")
else
' If buffering has stopped Display dialog
dialog = createObject("roSGNode", "Dialog")

View File

@ -24,6 +24,6 @@
<script type="text/brightscript" uri="JFVideo.brs" />
<children>
<timer id="playbackTimer" repeat="true" duration="30" />
<timer id="bufferCheckTimer" repeat="true" duration="10" />
<timer id="bufferCheckTimer" repeat="true" />
</children>
</component>

View File

@ -118,9 +118,11 @@ sub setFavoriteColor()
if fave <> invalid and fave
fave_button.textColor = "#00ff00ff"
fave_button.focusedTextColor = "#269926ff"
fave_button.text = tr("Favorite")
else
fave_button.textColor = "0xddddddff"
fave_button.focusedTextColor = "#262626ff"
fave_button.text = tr("Set Favorite")
end if
end sub

View File

@ -41,8 +41,11 @@ function PlaystateDefaults(params = {} as object)
'"PlaySessionId": "",
'"RepeatMode": "RepeatNone"
}
for each p in params.items()
new_params[p.key] = p.value
paramsArray = params.items()
for i = 0 to paramsArray.count() - 1
item = paramsArray[i]
new_params[item.key] = item.value
end for
return FormatJson(new_params)
end function

View File

@ -38,11 +38,13 @@ function onKeyEvent(key as string, press as boolean) as boolean
else if key = "down" and m.serverUrlContainer.hasFocus()
m.submit.setFocus(true)
else if key = "options"
serverName = m.serverPicker.content.getChild(m.serverPicker.itemFocused).name
if m.servers.Count() > 0 and Instr(1, serverName, "Saved") > 0
'Can only delete previously saved servers, not locally discovered ones
'So if we are on a "Saved" item, let the options dialog be shown (handled elsewhere)
handled = false
if m.serverPicker.itemFocused >= 0 and m.serverPicker.itemFocused < m.serverPicker.content.getChildCount()
serverName = m.serverPicker.content.getChild(m.serverPicker.itemFocused).name
if m.servers.Count() > 0 and Instr(1, serverName, "Saved") > 0
'Can only delete previously saved servers, not locally discovered ones
'So if we are on a "Saved" item, let the options dialog be shown (handled elsewhere)
handled = false
end if
end if
else
handled = false

View File

@ -1,6 +1,5 @@
sub setFields()
json = m.top.json
m.top.id = json.id
m.top.title = json.name
m.top.live = true
@ -12,6 +11,9 @@ sub setPoster()
if m.top.image <> invalid
m.top.posterURL = m.top.image.url
else if m.top.json.ImageTags <> invalid and m.top.json.ImageTags.Primary <> invalid
imgParams = { "maxHeight": 60, "Tag": m.top.json.ImageTags.Primary }
m.top.hdsmalliconurl = ImageURL(m.top.json.id, "Primary", imgParams)
imgParams = { "maxHeight": 440, "maxWidth": 295, "Tag": m.top.json.ImageTags.Primary }
m.top.posterURL = ImageURL(m.top.json.id, "Primary", imgParams)
end if

View File

@ -49,7 +49,7 @@ sub onPeopleLoaded()
row = data.createChild("ContentNode")
row.Title = tr("Cast & Crew")
for each person in people
if person.json.type = "Actor"
if person.json.type = "Actor" and person.json.Role <> invalid
person.subTitle = "as " + person.json.Role
else
person.subTitle = person.json.Type

View File

@ -76,9 +76,12 @@ sub loadItems()
resp = APIRequest(url, params)
data = getJson(resp)
for each item in data.Items
tmp = CreateObject("roSGNode", "HomeData")
tmp.json = item
results.push(tmp)
' Skip Books for now as we don't support it (issue #558)
if item.Type <> "Book"
tmp = CreateObject("roSGNode", "HomeData")
tmp.json = item
results.push(tmp)
end if
end for
else if m.top.itemsToLoad = "onNow"

View File

@ -28,7 +28,16 @@ sub loadChannels()
for each item in data.Items
channel = createObject("roSGNode", "ChannelData")
channel.json = item
results.push(channel)
if item.UserData <> invalid and item.UserData.isFavorite <> invalid
channel.favorite = item.UserData.isFavorite
if channel.favorite = true
results.Unshift(channel)
else
results.push(channel)
end if
else
results.push(channel)
end if
end for
m.top.channels = results

View File

@ -20,6 +20,7 @@ sub init()
m.duration = m.top.findNode("duration")
m.channelName = m.top.findNode("channelName")
m.image = m.top.findNode("image")
m.favorite = m.top.findNode("favorite")
m.viewChannelFocusAnimationOpacity = m.top.findNode("viewChannelFocusAnimationOpacity")
m.recordFocusAnimationOpacity = m.top.findNode("recordFocusAnimationOpacity")
@ -123,6 +124,7 @@ sub channelUpdated()
if m.top.programDetails = invalid
m.image.uri = m.top.channel.posterURL
end if
m.favorite.visible = m.top.channel.favorite
end if
end sub

View File

@ -7,6 +7,8 @@
<Poster id="image" height="375" width="500" loadDisplayMode="scaleToFit" />
</maskGroup>
<Poster id="favorite" translation="[1335, 165]" uri="pkg:/images/icons/favorite_selected.png" visible="false" />
<Group id="detailsView" visible="false">
<Group translation = "[ 96, 160 ]">
@ -77,6 +79,7 @@
<field id="recordSelectedChannel" type="boolean" value="false" />
<field id="recordSeriesSelectedChannel" type="boolean" value="false" />
<field id="channel" type="node" onchange="channelUpdated" />
<field id="favorite" type="node" onchange="channelUpdated" />
<field id="programDetails" type="node" onchange="programUpdated" />
<field id="height" type="integer" />
<field id="hasFocus" type="boolean" onChange="focusChanged" />

View File

@ -100,10 +100,10 @@ sub onScheduleLoaded()
end sub
sub onProgramFocused()
m.top.watchChannel = invalid
channel = m.scheduleGrid.content.GetChild(m.scheduleGrid.programFocusedDetails.focusChannelIndex)
m.detailsPane.channel = channel
m.top.focusedChannel = channel
' Exit if Channels not yet loaded
if channel.getChildCount() = 0

View File

@ -18,6 +18,7 @@
</children>
<interface>
<field id="watchChannel" type="node" alwaysNotify="false" />
<field id="focusedChannel" type="node" alwaysNotify="false" />
<field id="filter" type="string" value="All" onChange="channelFilterSet" />
</interface>
<script type="text/brightscript" uri="schedule.brs" />

View File

@ -206,9 +206,11 @@ sub setFavoriteColor()
if fave <> invalid and fave
fave_button.textColor = "#00ff00ff"
fave_button.focusedTextColor = "#269926ff"
fave_button.text = tr("Favorite")
else
fave_button.textColor = "0xddddddff"
fave_button.focusedTextColor = "#262626ff"
fave_button.text = tr("Set Favorite")
end if
end sub
@ -218,9 +220,11 @@ sub setWatchedColor()
if watched
watched_button.textColor = "#ff0000ff"
watched_button.focusedTextColor = "#992626ff"
watched_button.text = tr("Watched")
else
watched_button.textColor = "0xddddddff"
watched_button.focusedTextColor = "#262626ff"
watched_button.text = tr("Set Watched")
end if
end sub

View File

@ -33,7 +33,7 @@
<ButtonGroupHoriz id="buttons" itemSpacings="[10]">
<Button text="Play" id="play-button" iconUri="" focusedIconUri="" maxWidth="300" minWidth="300" />
<Button text="Options" id="options-button" iconUri="" focusedIconUri="" maxWidth="300" minWidth="300" />
<Button text="Watched" id="watched-button" iconUri="" focusedIconUri="" maxWidth="300" minWidth="300" />
<Button text="Watched" id="watched-button" iconUri="" focusedIconUri="" maxWidth="350" minWidth="300" />
<Button text="Favorite" id="favorite-button" iconUri="" focusedIconUri="" maxWidth="300" minWidth="300" />
</ButtonGroupHoriz>
<Label id="tagline" />

BIN
images/icons/favorite.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 867 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 802 B

View File

@ -3335,5 +3335,774 @@
<translation>Beim Abspielen dieses Elements trat ein Fehler auf.</translation>
<extracomment>Dialog detail when error occurs during playback</extracomment>
</message>
<message>
<source>Disabled</source>
<translation>Deaktiviert</translation>
</message>
<message>
<source>Enabled</source>
<translation>Aktiviert</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>Unterstützung der direkten Wiedergabe von MPEG-2-Inhalten (z. B. Live-TV). Dies verhindert die Transkodierung von MPEG-2-Inhalten, verbraucht aber deutlich mehr Bandbreite</translation>
<extracomment>Settings Menu - Description for option</extracomment>
</message>
<message>
<source>MPEG 2 Support</source>
<translation>MPEG-2-Support</translation>
<extracomment>Settings Menu - Title for option</extracomment>
</message>
<message>
<source>Playback</source>
<translation>Wiedergabe</translation>
<extracomment>Title for Playback section in user setting screen.</extracomment>
</message>
<message>
<source>Version</source>
<translation>Version</translation>
</message>
<message>
<source>An error was encountered while playing this item. Server did not provide required transcoding data.</source>
<translation>Beim Abspielen des Titels ist ein Fehler aufgetreten. Der Server hat zur Transkodierung erforderliche Daten nicht zur Verfügung gestellt.</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>Error Getting Playback Information</source>
<translation>Fehler beim Abruf von Wiedergabe-Informationen</translation>
<extracomment>Dialog Title: Received error from server when trying to get information about the selected item for playback</extracomment>
</message>
<message>
<source>...or enter server URL manually:</source>
<translation>...oder gebe die URL per Hand ein:</translation>
<extracomment>Instructions on initial app launch when the user is asked to manually enter a server URL</extracomment>
</message>
<message>
<source>Pick a Jellyfin server from the local network</source>
<translation>Wähle einen Jellyfin-Server aus dem lokalen Netzwerk</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>Gebe den Servernamen oder die IP-Adresse ein</translation>
<extracomment>Title of KeyboardDialog when manually entering a server URL</extracomment>
</message>
<message>
<source>The requested content does not exist on the server</source>
<translation>Der angefragte Inhalt konnte auf dem Server nicht gefunden werden</translation>
<extracomment>Content of message box when the requested content is not found on the server</extracomment>
</message>
<message>
<source>Unknown</source>
<translation>Unbekannt</translation>
<extracomment>Title for a cast member for which we have no information for</extracomment>
</message>
<message>
<source>Not found</source>
<translation>Nicht gefunden</translation>
<extracomment>Title of message box when the requested content is not found on the server</extracomment>
</message>
<message>
<source>Connecting to Server</source>
<translation>Verbindungsaufbau mit dem Server</translation>
<extracomment>Message to display to user while client is attempting to connect to the server</extracomment>
</message>
<message>
<source>Close</source>
<translation>Schließen</translation>
</message>
<message>
<source>Cancel Series Recording</source>
<translation>Serienaufnahme abbrechen</translation>
</message>
<message>
<source>Cancel Recording</source>
<translation>Aufnahme abbrechen</translation>
</message>
<message>
<source>Record Series</source>
<translation>Serie aufnehmen</translation>
</message>
<message>
<source>Record</source>
<translation>Aufnehmen</translation>
</message>
<message>
<source>View Channel</source>
<translation>Kanal anzeigen</translation>
</message>
<message>
<source>TV Guide</source>
<translation>TV-Programm</translation>
<extracomment>Menu option for showing Live TV Guide / Schedule</extracomment>
</message>
<message>
<source>Channels</source>
<translation>Kanäle</translation>
<extracomment>Menu option for showing Live TV Channel List</extracomment>
</message>
<message>
<source>Repeat</source>
<translation>Wiederholung</translation>
<extracomment>If TV Shows has previously been broadcasted</extracomment>
</message>
<message>
<source>Live</source>
<translation>Live</translation>
<extracomment>If TV Show is being broadcast live (not pre-recorded)</extracomment>
</message>
<message>
<source>Ends at</source>
<translation>Endet um</translation>
<extracomment>(Past Tense) For defining a day and time when a program ended (e.g. Ended Wednesday, 08:00) </extracomment>
</message>
<message>
<source>Ended at</source>
<translation>Endete um</translation>
<extracomment>(Past Tense) For defining time when a program will ended (e.g. Ended at 08:00) </extracomment>
</message>
<message>
<source>Starts</source>
<translation>Startet</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>Starts at</source>
<translation>Startet um</translation>
<extracomment>(Future Tense) For defining time when a program will start today (e.g. Starts at 08:00) </extracomment>
</message>
<message>
<source>Started</source>
<translation>Gestartet</translation>
<extracomment>(Past Tense) For defining a day and time when a program started (e.g. Started Wednesday, 08:00) </extracomment>
</message>
<message>
<source>Started at</source>
<translation>Gestartet um</translation>
<extracomment>(Past Tense) For defining time when a program started today (e.g. Started at 08:00) </extracomment>
</message>
<message>
<source>Saturday</source>
<translation>Samstag</translation>
<extracomment>Day of Week</extracomment>
</message>
<message>
<source>Friday</source>
<translation>Freitag</translation>
<extracomment>Day of Week</extracomment>
</message>
<message>
<source>Thursday</source>
<translation>Donnerstag</translation>
<extracomment>Day of Week</extracomment>
</message>
<message>
<source>Wednesday</source>
<translation>Mittwoch</translation>
<extracomment>Day of Week</extracomment>
</message>
<message>
<source>Tuesday</source>
<translation>Dienstag</translation>
<extracomment>Day of Week</extracomment>
</message>
<message>
<source>Monday</source>
<translation>Montag</translation>
<extracomment>Day of Week</extracomment>
</message>
<message>
<source>Sunday</source>
<translation>Sonntag</translation>
<extracomment>Day of Week</extracomment>
</message>
<message>
<source>tomorrow</source>
<translation>morgen</translation>
<extracomment>Next day</extracomment>
</message>
<message>
<source>yesterday</source>
<translation>gestern</translation>
<extracomment>Previous day</extracomment>
</message>
<message>
<source>today</source>
<translation>heute</translation>
<extracomment>Current day</extracomment>
</message>
<message>
<source>TV Shows</source>
<translation>Serien</translation>
</message>
<message>
<source>Movies</source>
<translation>Filme</translation>
</message>
<message>
<source>Special Features</source>
<translation>Besonderheiten</translation>
<message>
<source>Press &apos;OK&apos; to Close</source>
<translation>Press &apos;OK&apos; to Close</translation>
</message>
</message>
<message>
<source>More Like This</source>
<translation>Ähnliches</translation>
</message>
<message>
<source>Cast &amp; Crew</source>
<translation>Besetzung &amp; Mitwirkende</translation>
</message>
<message>
<source>Age</source>
<translation>Alter</translation>
</message>
<message>
<source>Died</source>
<translation>Gestorben</translation>
</message>
<message>
<source>Born</source>
<translation>Geboren</translation>
</message>
<message>
<comment>Title of Tab for options to filter library content</comment>
<source>TAB_FILTER</source>
<translation>Filtern</translation>
</message>
<message>
<comment>Title of Tab for options to sort library content</comment>
<source>TAB_SORT</source>
<translation>Sortieren</translation>
</message>
<message>
<comment>Title of Tab for switching &quot;views&quot; when looking at a library</comment>
<source>TAB_VIEW</source>
<translation>Anzeigen</translation>
</message>
<message>
<source>RUNTIME</source>
<translation>Laufzeit</translation>
</message>
<message>
<source>RELEASE_DATE</source>
<translation>Erscheinungsdatum</translation>
</message>
<message>
<source>PLAY_COUNT</source>
<translation>Wiedergabeanzahl</translation>
</message>
<message>
<source>OFFICIAL_RATING</source>
<translation>Alterseinstufung</translation>
</message>
<message>
<source>DATE_PLAYED</source>
<translation>Abgespielt am</translation>
</message>
<message>
<source>DATE_ADDED</source>
<translation>Hinzugefügt am</translation>
</message>
<message>
<source>CRITIC_RATING</source>
<translation>Kritikerwertung</translation>
</message>
<message>
<source>IMDB_RATING</source>
<translation>IMDb Bewertung</translation>
</message>
<message>
<comment>Name or Title field of media item</comment>
<source>TITLE</source>
<translation>Name</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>%1 enthält keine Einträge</translation>
</message>
<message>
<source>Unable to load Channel Data from the server</source>
<translation>Laden der Kanaldaten vom Server nicht möglich</translation>
</message>
<message>
<source>Error loading Channel Data</source>
<translation>Fehler beim Laden der Kanaldaten</translation>
</message>
<message>
<source>Loading Channel Data</source>
<translation>Lade Kanaldaten</translation>
</message>
<message>
<source>An error was encountered while playing this item.</source>
<translation>Beim Abspielen dieses Elements trat ein Fehler auf.</translation>
<extracomment>Dialog detail when error occurs during playback</extracomment>
</message>
<message>
<source>There was an error retrieving the data for this item from the server.</source>
<translation>Es ist ein Fehler beim Abrufen der Daten vom Server für diesen Eintrag aufgetreten.</translation>
<extracomment>Dialog detail when unable to load Content from Server</extracomment>
</message>
<message>
<source>Error During Playback</source>
<translation>Fehler beim Abspielen</translation>
<extracomment>Dialog title when error occurs during playback</extracomment>
</message>
<message>
<source>Error Retrieving Content</source>
<translation>Fehler beim Abrufen der Inhalte</translation>
<extracomment>Dialog title when unable to load Content from Server</extracomment>
</message>
<message>
<source>On Now</source>
<translation>Läuft gerade</translation>
</message>
<message>
<source>Delete Saved</source>
<translation>Gespeichertes Löschen</translation>
</message>
<message>
<source>Save Credentials?</source>
<translation>Zugangsdaten speichern?</translation>
</message>
<message>
<source>Sign Out</source>
<translation>Abmelden</translation>
</message>
<message>
<source>Change Server</source>
<translation>Server wechseln</translation>
</message>
<message>
<source>Go to episode</source>
<translation>Zur Episode gehen</translation>
<extracomment>Continue Watching Popup Menu - Navigate to the Episode Detail Page</extracomment>
</message>
<message>
<source>Go to season</source>
<translation>Zur Staffel gehen</translation>
<extracomment>Continue Watching Popup Menu - Navigate to the Season Page</extracomment>
</message>
<message>
<source>Go to series</source>
<translation>Zur Serie gehen</translation>
<extracomment>Continue Watching Popup Menu - Navigate to the Series Detail Page</extracomment>
</message>
<message>
<source>Set Favorite</source>
<translation>Als Favoriten markieren</translation>
<extracomment>Button Text - When pressed, sets item as Favorite</extracomment>
</message>
<message>
<source>Set Watched</source>
<translation>Als Gesehen markieren</translation>
<extracomment>Button Text - When pressed, marks item as Warched</extracomment>
</message>
<message>
<source>Disabled</source>
<translation>Deaktiviert</translation>
</message>
<message>
<source>Enabled</source>
<translation>Aktiviert</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>Unterstützung der direkten Wiedergabe von MPEG-2-Inhalten (z. B. Live-TV). Dies verhindert die Transkodierung von MPEG-2-Inhalten, verbraucht aber deutlich mehr Bandbreite</translation>
<extracomment>Settings Menu - Description for option</extracomment>
</message>
<message>
<source>MPEG 2 Support</source>
<translation>MPEG-2-Support</translation>
<extracomment>Settings Menu - Title for option</extracomment>
</message>
<message>
<source>Playback</source>
<translation>Wiedergabe</translation>
<extracomment>Title for Playback section in user setting screen.</extracomment>
</message>
<message>
<source>Version</source>
<translation>Version</translation>
</message>
<message>
<source>An error was encountered while playing this item. Server did not provide required transcoding data.</source>
<translation>Beim Abspielen des Titels ist ein Fehler aufgetreten. Der Server hat zur Transkodierung erforderliche Daten nicht zur Verfügung gestellt.</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>Error Getting Playback Information</source>
<translation>Fehler beim Abruf von Wiedergabe-Informationen</translation>
<extracomment>Dialog Title: Received error from server when trying to get information about the selected item for playback</extracomment>
</message>
<message>
<source>...or enter server URL manually:</source>
<translation>...oder gebe die URL per Hand ein:</translation>
<extracomment>Instructions on initial app launch when the user is asked to manually enter a server URL</extracomment>
</message>
<message>
<source>Pick a Jellyfin server from the local network</source>
<translation>Wähle einen Jellyfin-Server aus dem lokalen Netzwerk</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>Gebe den Servernamen oder die IP-Adresse ein</translation>
<extracomment>Title of KeyboardDialog when manually entering a server URL</extracomment>
</message>
<message>
<source>The requested content does not exist on the server</source>
<translation>Der angefragte Inhalt konnte auf dem Server nicht gefunden werden</translation>
<extracomment>Content of message box when the requested content is not found on the server</extracomment>
</message>
<message>
<source>Unknown</source>
<translation>Unbekannt</translation>
<extracomment>Title for a cast member for which we have no information for</extracomment>
</message>
<message>
<source>Not found</source>
<translation>Nicht gefunden</translation>
<extracomment>Title of message box when the requested content is not found on the server</extracomment>
</message>
<message>
<source>Connecting to Server</source>
<translation>Verbindungsaufbau mit dem Server</translation>
<extracomment>Message to display to user while client is attempting to connect to the server</extracomment>
</message>
<message>
<source>Close</source>
<translation>Schließen</translation>
</message>
<message>
<source>Cancel Series Recording</source>
<translation>Serienaufnahme abbrechen</translation>
</message>
<message>
<source>Cancel Recording</source>
<translation>Aufnahme abbrechen</translation>
</message>
<message>
<source>Record Series</source>
<translation>Serie aufnehmen</translation>
</message>
<message>
<source>Record</source>
<translation>Aufnehmen</translation>
</message>
<message>
<source>View Channel</source>
<translation>Kanal anzeigen</translation>
</message>
<message>
<source>TV Guide</source>
<translation>TV-Programm</translation>
<extracomment>Menu option for showing Live TV Guide / Schedule</extracomment>
</message>
<message>
<source>Channels</source>
<translation>Kanäle</translation>
<extracomment>Menu option for showing Live TV Channel List</extracomment>
</message>
<message>
<source>Repeat</source>
<translation>Wiederholung</translation>
<extracomment>If TV Shows has previously been broadcasted</extracomment>
</message>
<message>
<source>Live</source>
<translation>Live</translation>
<extracomment>If TV Show is being broadcast live (not pre-recorded)</extracomment>
</message>
<message>
<source>Ends at</source>
<translation>Endet um</translation>
<extracomment>(Past Tense) For defining a day and time when a program ended (e.g. Ended Wednesday, 08:00) </extracomment>
</message>
<message>
<source>Ended at</source>
<translation>Endete um</translation>
<extracomment>(Past Tense) For defining time when a program will ended (e.g. Ended at 08:00) </extracomment>
</message>
<message>
<source>Starts</source>
<translation>Startet</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>Starts at</source>
<translation>Startet um</translation>
<extracomment>(Future Tense) For defining time when a program will start today (e.g. Starts at 08:00) </extracomment>
</message>
<message>
<source>Started</source>
<translation>Gestartet</translation>
<extracomment>(Past Tense) For defining a day and time when a program started (e.g. Started Wednesday, 08:00) </extracomment>
</message>
<message>
<source>Started at</source>
<translation>Gestartet um</translation>
<extracomment>(Past Tense) For defining time when a program started today (e.g. Started at 08:00) </extracomment>
</message>
<message>
<source>Saturday</source>
<translation>Samstag</translation>
<extracomment>Day of Week</extracomment>
</message>
<message>
<source>Friday</source>
<translation>Freitag</translation>
<extracomment>Day of Week</extracomment>
</message>
<message>
<source>Thursday</source>
<translation>Donnerstag</translation>
<extracomment>Day of Week</extracomment>
</message>
<message>
<source>Wednesday</source>
<translation>Mittwoch</translation>
<extracomment>Day of Week</extracomment>
</message>
<message>
<source>Tuesday</source>
<translation>Dienstag</translation>
<extracomment>Day of Week</extracomment>
</message>
<message>
<source>Monday</source>
<translation>Montag</translation>
<extracomment>Day of Week</extracomment>
</message>
<message>
<source>Sunday</source>
<translation>Sonntag</translation>
<extracomment>Day of Week</extracomment>
</message>
<message>
<source>tomorrow</source>
<translation>morgen</translation>
<extracomment>Next day</extracomment>
</message>
<message>
<source>yesterday</source>
<translation>gestern</translation>
<extracomment>Previous day</extracomment>
</message>
<message>
<source>today</source>
<translation>heute</translation>
<extracomment>Current day</extracomment>
</message>
<message>
<source>TV Shows</source>
<translation>Serien</translation>
</message>
<message>
<source>Movies</source>
<translation>Filme</translation>
</message>
<message>
<source>Special Features</source>
<translation>Besonderheiten</translation>
<message>
<source>Press &apos;OK&apos; to Close</source>
<translation>Press &apos;OK&apos; to Close</translation>
</message>
</message>
<message>
<source>More Like This</source>
<translation>Ähnliches</translation>
</message>
<message>
<source>Cast &amp; Crew</source>
<translation>Besetzung &amp; Mitwirkende</translation>
</message>
<message>
<source>Age</source>
<translation>Alter</translation>
</message>
<message>
<source>Died</source>
<translation>Gestorben</translation>
</message>
<message>
<source>Born</source>
<translation>Geboren</translation>
</message>
<message>
<comment>Title of Tab for options to filter library content</comment>
<source>TAB_FILTER</source>
<translation>Filtern</translation>
</message>
<message>
<comment>Title of Tab for options to sort library content</comment>
<source>TAB_SORT</source>
<translation>Sortieren</translation>
</message>
<message>
<comment>Title of Tab for switching &quot;views&quot; when looking at a library</comment>
<source>TAB_VIEW</source>
<translation>Anzeigen</translation>
</message>
<message>
<source>RUNTIME</source>
<translation>Laufzeit</translation>
</message>
<message>
<source>RELEASE_DATE</source>
<translation>Erscheinungsdatum</translation>
</message>
<message>
<source>PLAY_COUNT</source>
<translation>Wiedergabeanzahl</translation>
</message>
<message>
<source>OFFICIAL_RATING</source>
<translation>Alterseinstufung</translation>
</message>
<message>
<source>DATE_PLAYED</source>
<translation>Abgespielt am</translation>
</message>
<message>
<source>DATE_ADDED</source>
<translation>Hinzugefügt am</translation>
</message>
<message>
<source>CRITIC_RATING</source>
<translation>Kritikerwertung</translation>
</message>
<message>
<source>IMDB_RATING</source>
<translation>IMDb Bewertung</translation>
</message>
<message>
<comment>Name or Title field of media item</comment>
<source>TITLE</source>
<translation>Name</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>%1 enthält keine Einträge</translation>
</message>
<message>
<source>Unable to load Channel Data from the server</source>
<translation>Laden der Kanaldaten vom Server nicht möglich</translation>
</message>
<message>
<source>Error loading Channel Data</source>
<translation>Fehler beim Laden der Kanaldaten</translation>
</message>
<message>
<source>Loading Channel Data</source>
<translation>Lade Kanaldaten</translation>
</message>
<message>
<source>An error was encountered while playing this item.</source>
<translation>Beim Abspielen dieses Elements trat ein Fehler auf.</translation>
<extracomment>Dialog detail when error occurs during playback</extracomment>
</message>
<message>
<source>There was an error retrieving the data for this item from the server.</source>
<translation>Es ist ein Fehler beim Abrufen der Daten vom Server für diesen Eintrag aufgetreten.</translation>
<extracomment>Dialog detail when unable to load Content from Server</extracomment>
</message>
<message>
<source>Error During Playback</source>
<translation>Fehler beim Abspielen</translation>
<extracomment>Dialog title when error occurs during playback</extracomment>
</message>
<message>
<source>Error Retrieving Content</source>
<translation>Fehler beim Abrufen der Inhalte</translation>
<extracomment>Dialog title when unable to load Content from Server</extracomment>
</message>
<message>
<source>On Now</source>
<translation>Läuft gerade</translation>
</message>
<message>
<source>Delete Saved</source>
<translation>Gespeichertes Löschen</translation>
</message>
<message>
<source>Save Credentials?</source>
<translation>Zugangsdaten speichern?</translation>
</message>
<message>
<source>Sign Out</source>
<translation>Abmelden</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>
<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>%1 enthält keine Einträge</translation>
</message>
<message>
<source>Unable to load Channel Data from the server</source>
<translation>Laden der Kanaldaten vom Server nicht möglich</translation>
</message>
<message>
<source>Error During Playback</source>
<translation>Fehler beim Abspielen</translation>
<extracomment>Dialog title when error occurs during playback</extracomment>
</message>
<message>
<source>Error Retrieving Content</source>
<translation>Fehler beim Abrufen der Inhalte</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>Es ist ein Fehler beim Abrufen der Daten vom Server für diesen Eintrag aufgetreten.</translation>
<extracomment>Dialog detail when unable to load Content from Server</extracomment>
</message>
<message>
<source>Error loading Channel Data</source>
<translation>Fehler beim Laden der Kanaldaten</translation>
</message>
<message>
<source>Loading Channel Data</source>
<translation>Lade Kanaldaten</translation>
</message>
<message>
<source>An error was encountered while playing this item.</source>
<translation>Beim Abspielen des Inhalts ist ein Problem aufgetreten.</translation>
<extracomment>Dialog detail when error occurs during playback</extracomment>
</message>
<message>
<source>On Now</source>
<translation>Läuft gerade</translation>
</message>
<message>
<source>Delete Saved</source>
<translation>Gespeicherte Löschen</translation>
</message>
<message>
<source>Save Credentials?</source>
<translation>Login-Daten speichern?</translation>
</message>
<message>
<source>Sign Out</source>
<translation>Abmelden</translation>
</message>
<message>
<source>Change Server</source>
<translation>Server wechseln</translation>
</message>
</context>
</TS>

View File

@ -493,5 +493,54 @@
<source>Disabled</source>
<translation>Disabled</translation>
</message>
<message>
<source>User Interface</source>
<translation>User Interface</translation>
<extracomment>Title for User Interface section in user setting screen.</extracomment>
</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 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, title will be shown under hilighted item only)</source>
<translation>Always show the titles below the poster images. (If disabled, title will be shown under hilighted item only)</translation>
<extracomment>Description for option in Setting Screen</extracomment>
</message>
<message>
<source>Set Favorite</source>
<translation>Set Favorite</translation>
<extracomment>Button Text - When pressed, sets item as Favorite</extracomment>
</message>
<message>
<source>Set Watched</source>
<translation>Set Watched</translation>
<extracomment>Button Text - When pressed, marks item as Warched</extracomment>
</message>
<message>
<source>Go to series</source>
<translation>Go to series</translation>
<extracomment>Continue Watching Popup Menu - Navigate to the Series Detail Page</extracomment>
</message>
<message>
<source>Go to season</source>
<translation>Go to season</translation>
<extracomment>Continue Watching Popup Menu - Navigate to the Season Page</extracomment>
</message>
<message>
<source>Go to episode</source>
<translation>Go to episode</translation>
<extracomment>Continue Watching Popup Menu - Navigate to the Episode Detail Page</extracomment>
</message>
</context>
</TS>

View File

@ -14,15 +14,15 @@
</message>
<message>
<source>Connect to Server</source>
<translation>Conectar con el Servidor</translation>
<translation>Conectar al Servidor</translation>
</message>
<message>
<source>Ends at %1</source>
<translation>Finaliza a las %1</translation>
<translation>Termina en %1</translation>
</message>
<message>
<source>Enter Configuration</source>
<translation>Entrar en la configuración</translation>
<translation>Entrar a Configuración</translation>
</message>
<message>
<source>Favorite</source>
@ -66,7 +66,7 @@
</message>
<message>
<source>Sign In</source>
<translation>Iniciar sesión</translation>
<translation>Iniciar Sesión</translation>
</message>
<message>
<source>Submit</source>
@ -94,19 +94,19 @@
</message>
<message>
<source>My Media</source>
<translation>Mi contenido</translation>
<translation>Mi Contenido</translation>
</message>
<message>
<source>Continue Watching</source>
<translation>Continuar viendo</translation>
<translation>Seguir viendo</translation>
</message>
<message>
<source>Next Up</source>
<translation>Siguiente</translation>
<translation>A Continuación</translation>
</message>
<message>
<source>Latest in</source>
<translation>Reciente en</translation>
<translation>Lo último en</translation>
</message>
<message>
<source>Home</source>
@ -190,7 +190,7 @@
</message>
<message>
<source>Sort Order</source>
<translation>Orden</translation>
<translation>Orden de Clasificación</translation>
</message>
<message>
<source>Descending</source>
@ -206,7 +206,7 @@
</message>
<message>
<source>Username</source>
<translation>Nombre de usuario</translation>
<translation>Usuario</translation>
</message>
<message>
<source>Genres</source>
@ -1236,7 +1236,7 @@
</message>
<message>
<source>Press &apos;OK&apos; to Close</source>
<translation>Presiona &apos;OK&apos; para cerrar</translation>
<translation>Presiona &apos;Aceptar&apos; para cerrar</translation>
</message>
<message>
<source>Cast &amp; Crew</source>
@ -1363,5 +1363,395 @@
<source>Change Server</source>
<translation>Cambiar de servidor</translation>
</message>
<message>
<source>Go to episode</source>
<translation>Ir al episodio</translation>
<extracomment>Continue Watching Popup Menu - Navigate to the Episode Detail Page</extracomment>
</message>
<message>
<source>Set Favorite</source>
<translation>Agregar a Favoritos</translation>
<extracomment>Button Text - When pressed, sets item as Favorite</extracomment>
</message>
<message>
<source>Disabled</source>
<translation>Desactivado</translation>
</message>
<message>
<source>Enabled</source>
<translation>Activado</translation>
</message>
<message>
<source>Ended at</source>
<translation>Termina a las</translation>
<extracomment>(Past Tense) For defining time when a program will ended (e.g. Ended at 08:00) </extracomment>
</message>
<message>
<source>today</source>
<translation>Hoy</translation>
<extracomment>Current day</extracomment>
</message>
<message>
<source>Sign Out</source>
<translation>Cerrar Sesión</translation>
</message>
<message>
<source>Go to season</source>
<translation>Ir a la temporada</translation>
<extracomment>Continue Watching Popup Menu - Navigate to the Season Page</extracomment>
</message>
<message>
<source>Go to series</source>
<translation>Ir a Series</translation>
<extracomment>Continue Watching Popup Menu - Navigate to the Series Detail Page</extracomment>
</message>
<message>
<source>Set Watched</source>
<translation>Marcar como Visto</translation>
<extracomment>Button Text - When pressed, marks item as Warched</extracomment>
</message>
<message>
<source>Always show the titles below the poster images. (If disabled, title will be shown under hilighted item only)</source>
<translation>Mostrar siempre los títulos debajo de las imágenes del póster. (Si está deshabilitado, el título se mostrará solo debajo del elemento resaltado)</translation>
<extracomment>Description for option in Setting Screen</extracomment>
</message>
<message>
<source>Item Titles</source>
<translation>Títulos de Elementos</translation>
<extracomment>UI -&gt; Media Grid -&gt; Item Title in user setting screen.</extracomment>
</message>
<message>
<source>Media Grid Options</source>
<translation>Opciones de la Cuadrícula de Medios</translation>
</message>
<message>
<source>Media Grid</source>
<translation>Cuadrícula de Medios</translation>
<extracomment>UI -&gt; Media Grid section in user setting screen.</extracomment>
</message>
<message>
<source>User Interface</source>
<translation>Interfaz de Usuario</translation>
<extracomment>Title for User Interface section in user setting screen.</extracomment>
</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>Admite reproducción directa de contenido MPEG 2 (por ejemplo, TV en vivo). Esto evitará la transcodificación de contenido MPEG 2, pero utiliza mucho más ancho de banda</translation>
<extracomment>Settings Menu - Description for option</extracomment>
</message>
<message>
<source>MPEG 2 Support</source>
<translation>Soporte de MPEG 2</translation>
<extracomment>Settings Menu - Title for option</extracomment>
</message>
<message>
<source>Playback</source>
<translation>Reproducir</translation>
<extracomment>Title for Playback section in user setting screen.</extracomment>
</message>
<message>
<source>Version</source>
<translation>Versión</translation>
</message>
<message>
<source>An error was encountered while playing this item. Server did not provide required transcoding data.</source>
<translation>Se encontró un error al reproducir este elemento. El servidor no proporcionó los datos de transcodificación requeridos.</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>Error Getting Playback Information</source>
<translation>Error obteniendo la Información de Reproducción</translation>
<extracomment>Dialog Title: Received error from server when trying to get information about the selected item for playback</extracomment>
</message>
<message>
<source>...or enter server URL manually:</source>
<translation>... o introduce la URL manualmente:</translation>
<extracomment>Instructions on initial app launch when the user is asked to manually enter a server URL</extracomment>
</message>
<message>
<source>Pick a Jellyfin server from the local network</source>
<translation>Escoge un servidor Jellyfin de la red local</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>Introduce el nombre del servidor o la dirección IP</translation>
<extracomment>Title of KeyboardDialog when manually entering a server URL</extracomment>
</message>
<message>
<source>The requested content does not exist on the server</source>
<translation>El contenido solicitado no existe en el servidor</translation>
<extracomment>Content of message box when the requested content is not found on the server</extracomment>
</message>
<message>
<source>Unknown</source>
<translation>Desconocido</translation>
<extracomment>Title for a cast member for which we have no information for</extracomment>
</message>
<message>
<source>Not found</source>
<translation>No encontrado</translation>
<extracomment>Title of message box when the requested content is not found on the server</extracomment>
</message>
<message>
<source>Connecting to Server</source>
<translation>Conectando al Servidor</translation>
<extracomment>Message to display to user while client is attempting to connect to the server</extracomment>
</message>
<message>
<source>Close</source>
<translation>Cerrar</translation>
</message>
<message>
<source>Cancel Series Recording</source>
<translation>Cancelar Grabación de Episodios</translation>
</message>
<message>
<source>Cancel Recording</source>
<translation>Cancelar Grabación</translation>
</message>
<message>
<source>Record Series</source>
<translation>Grabar Episodios</translation>
</message>
<message>
<source>Record</source>
<translation>Grabar</translation>
</message>
<message>
<source>View Channel</source>
<translation>Ver Canal</translation>
</message>
<message>
<source>TV Guide</source>
<translation>Guía de TV</translation>
<extracomment>Menu option for showing Live TV Guide / Schedule</extracomment>
</message>
<message>
<source>Channels</source>
<translation>Canales</translation>
<extracomment>Menu option for showing Live TV Channel List</extracomment>
</message>
<message>
<source>Repeat</source>
<translation>Repetir</translation>
<extracomment>If TV Shows has previously been broadcasted</extracomment>
</message>
<message>
<source>Live</source>
<translation>En Directo</translation>
<extracomment>If TV Show is being broadcast live (not pre-recorded)</extracomment>
</message>
<message>
<source>Ends at</source>
<translation>Terminó el</translation>
<extracomment>(Past Tense) For defining a day and time when a program ended (e.g. Ended Wednesday, 08:00) </extracomment>
</message>
<message>
<source>Starts</source>
<translation>Empieza el</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>Starts at</source>
<translation>Empieza a las</translation>
<extracomment>(Future Tense) For defining time when a program will start today (e.g. Starts at 08:00) </extracomment>
</message>
<message>
<source>Started</source>
<translation>Empezó el</translation>
<extracomment>(Past Tense) For defining a day and time when a program started (e.g. Started Wednesday, 08:00) </extracomment>
</message>
<message>
<source>Started at</source>
<translation>Empezó a las</translation>
<extracomment>(Past Tense) For defining time when a program started today (e.g. Started at 08:00) </extracomment>
</message>
<message>
<source>Saturday</source>
<translation>Sábado</translation>
<extracomment>Day of Week</extracomment>
</message>
<message>
<source>Friday</source>
<translation>Viernes</translation>
<extracomment>Day of Week</extracomment>
</message>
<message>
<source>Thursday</source>
<translation>Jueves</translation>
<extracomment>Day of Week</extracomment>
</message>
<message>
<source>Wednesday</source>
<translation>Miércoles</translation>
<extracomment>Day of Week</extracomment>
</message>
<message>
<source>Tuesday</source>
<translation>Martes</translation>
<extracomment>Day of Week</extracomment>
</message>
<message>
<source>Monday</source>
<translation>Lunes</translation>
<extracomment>Day of Week</extracomment>
</message>
<message>
<source>Sunday</source>
<translation>Domingo</translation>
<extracomment>Day of Week</extracomment>
</message>
<message>
<source>tomorrow</source>
<translation>Mañana</translation>
<extracomment>Next day</extracomment>
</message>
<message>
<source>yesterday</source>
<translation>Ayer</translation>
<extracomment>Previous day</extracomment>
</message>
<message>
<source>TV Shows</source>
<translation>Programas de TV</translation>
</message>
<message>
<source>Movies</source>
<translation>Películas</translation>
</message>
<message>
<source>Special Features</source>
<translation>Contenido Adicional</translation>
<message>
<source>Press &apos;OK&apos; to Close</source>
<translation>Press &apos;OK&apos; to Close</translation>
</message>
</message>
<message>
<source>More Like This</source>
<translation>Contenido similar</translation>
</message>
<message>
<source>Cast &amp; Crew</source>
<translation>Reparto y Equipo</translation>
</message>
<message>
<source>Age</source>
<translation>Edad</translation>
</message>
<message>
<source>Died</source>
<translation>Fallecimiento</translation>
</message>
<message>
<source>Born</source>
<translation>Nacimiento</translation>
</message>
<message>
<comment>Title of Tab for options to filter library content</comment>
<source>TAB_FILTER</source>
<translation>Filtro</translation>
</message>
<message>
<comment>Title of Tab for options to sort library content</comment>
<source>TAB_SORT</source>
<translation>Ordenar</translation>
</message>
<message>
<comment>Title of Tab for switching &quot;views&quot; when looking at a library</comment>
<source>TAB_VIEW</source>
<translation>Vista</translation>
</message>
<message>
<source>RUNTIME</source>
<translation>Duración</translation>
</message>
<message>
<source>RELEASE_DATE</source>
<translation>Fecha de Lanzamiento</translation>
</message>
<message>
<source>PLAY_COUNT</source>
<translation>Número de Reproducciones</translation>
</message>
<message>
<source>OFFICIAL_RATING</source>
<translation>Clasificación Parental</translation>
</message>
<message>
<source>DATE_PLAYED</source>
<translation>Reproducido el</translation>
</message>
<message>
<source>DATE_ADDED</source>
<translation>Añadido el</translation>
</message>
<message>
<source>CRITIC_RATING</source>
<translation>Clasificación de los Críticos</translation>
</message>
<message>
<source>IMDB_RATING</source>
<translation>Calificación de IMDb</translation>
</message>
<message>
<comment>Name or Title field of media item</comment>
<source>TITLE</source>
<translation>Nombre</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>Este %1 no contiene elementos</translation>
</message>
<message>
<source>Unable to load Channel Data from the server</source>
<translation>No se pueden cargar los Datos del Canal desde el servidor</translation>
</message>
<message>
<source>Error loading Channel Data</source>
<translation>Error al cargar los Datos del Canal</translation>
</message>
<message>
<source>Loading Channel Data</source>
<translation>Cargando Datos del Canal</translation>
</message>
<message>
<source>An error was encountered while playing this item.</source>
<translation>Se encontró un error al reproducir este elemento.</translation>
<extracomment>Dialog detail when error occurs during playback</extracomment>
</message>
<message>
<source>There was an error retrieving the data for this item from the server.</source>
<translation>Hubo un error al extraer los datos de este elemento del servidor.</translation>
<extracomment>Dialog detail when unable to load Content from Server</extracomment>
</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>Error Retrieving Content</source>
<translation>Error al Recuperar Contenido</translation>
<extracomment>Dialog title when unable to load Content from Server</extracomment>
</message>
<message>
<source>On Now</source>
<translation>Transmitiendo Ahora</translation>
</message>
<message>
<source>Delete Saved</source>
<translation>Eliminar Guardado</translation>
</message>
<message>
<source>Save Credentials?</source>
<translation>¿Guardar Credenciales?</translation>
</message>
<message>
<source>Change Server</source>
<translation>Cambiar Servidor</translation>
</message>
</context>
</TS>

View File

@ -1982,5 +1982,9 @@
<source>Save Credentials?</source>
<translation>Enregistrer les identifiants ?</translation>
</message>
<message>
<source>Save Credentials?</source>
<translation>Sauvegarder les informations d&apos;identification ?</translation>
</message>
</context>
</TS>

View File

@ -2519,6 +2519,392 @@ elemeket</translation>
<source>Movies</source>
<translation>Filmek</translation>
</message>
<message>
<source>Special Features</source>
<translation>Sajátosságok</translation>
<message>
<source>Press &apos;OK&apos; to Close</source>
<translation>Nyomj &apos;OK&apos; -t a bezáráshoz</translation>
</message>
</message>
<message>
<source>More Like This</source>
<translation>Több hasonló</translation>
</message>
<message>
<source>Cast &amp; Crew</source>
<translation>Szereplők &amp; Stáb</translation>
</message>
<message>
<source>Age</source>
<translation>Kor</translation>
</message>
<message>
<source>Died</source>
<translation>Elhunyt</translation>
</message>
<message>
<source>Born</source>
<translation>Született</translation>
</message>
<message>
<comment>Title of Tab for options to filter library content</comment>
<source>TAB_FILTER</source>
<translation>Szűrő</translation>
</message>
<message>
<comment>Title of Tab for options to sort library content</comment>
<source>TAB_SORT</source>
<translation>Rendezés</translation>
</message>
<message>
<comment>Title of Tab for switching &quot;views&quot; when looking at a library</comment>
<source>TAB_VIEW</source>
<translation>Nézet</translation>
</message>
<message>
<source>RUNTIME</source>
<translation>Játékidő</translation>
</message>
<message>
<source>RELEASE_DATE</source>
<translation>Megjelenés dátuma</translation>
</message>
<message>
<source>PLAY_COUNT</source>
<translation>Lejátszások száma</translation>
</message>
<message>
<source>OFFICIAL_RATING</source>
<translation>Korhatár</translation>
</message>
<message>
<source>DATE_PLAYED</source>
<translation>Lejátszás dátuma</translation>
</message>
<message>
<source>DATE_ADDED</source>
<translation>Hozzáadva</translation>
</message>
<message>
<source>CRITIC_RATING</source>
<translation>Kritikusok értékelése</translation>
</message>
<message>
<source>IMDB_RATING</source>
<translation>IMDb Értékelés</translation>
</message>
<message>
<comment>Name or Title field of media item</comment>
<source>TITLE</source>
<translation>Név</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>Ez a(z) %1 nem tartalmaz elemeket</translation>
</message>
<message>
<source>Unable to load Channel Data from the server</source>
<translation>Nem lehet betölteni a csatornaadatokat a szerverről</translation>
</message>
<message>
<source>Error loading Channel Data</source>
<translation>Hiba történt a csatornaadatok betöltésekor</translation>
</message>
<message>
<source>Loading Channel Data</source>
<translation>Csatornaadatok betöltése</translation>
</message>
<message>
<source>An error was encountered while playing this item.</source>
<translation>Hiba történt az elem lejátszása közben.</translation>
<extracomment>Dialog detail when error occurs during playback</extracomment>
</message>
<message>
<source>There was an error retrieving the data for this item from the server.</source>
<translation>Hiba történt az elem(ek) betöltése során a szerverről.</translation>
<extracomment>Dialog detail when unable to load Content from Server</extracomment>
</message>
<message>
<source>Error During Playback</source>
<translation>Hiba történt a lejátszás közben</translation>
<extracomment>Dialog title when error occurs during playback</extracomment>
</message>
<message>
<source>Error Retrieving Content</source>
<translation>Hiba a tartalom lekérésekor</translation>
<extracomment>Dialog title when unable to load Content from Server</extracomment>
</message>
<message>
<source>On Now</source>
<translation>Most</translation>
</message>
<message>
<source>Delete Saved</source>
<translation>Mentettek Törlése</translation>
</message>
<message>
<source>Save Credentials?</source>
<translation>Hitelesítő adatok mentése?</translation>
</message>
<message>
<source>Save Credentials?</source>
<translation>Hitelesítő adatok mentése?</translation>
</message>
<message>
<source>Go to episode</source>
<translation>Ugrás az epizódra</translation>
<extracomment>Continue Watching Popup Menu - Navigate to the Episode Detail Page</extracomment>
</message>
<message>
<source>Go to season</source>
<translation>Ugrás az évadra</translation>
<extracomment>Continue Watching Popup Menu - Navigate to the Season Page</extracomment>
</message>
<message>
<source>Go to series</source>
<translation>Ugrás a sorozatra</translation>
<extracomment>Continue Watching Popup Menu - Navigate to the Series Detail Page</extracomment>
</message>
<message>
<source>Item Titles</source>
<translation>Fájl Címek</translation>
<extracomment>UI -&gt; Media Grid -&gt; Item Title in user setting screen.</extracomment>
</message>
<message>
<source>Set Watched</source>
<translation>Megnézve</translation>
<extracomment>Button Text - When pressed, marks item as Warched</extracomment>
</message>
<message>
<source>Set Favorite</source>
<translation>Kedvenc hozzáadása</translation>
<extracomment>Button Text - When pressed, sets item as Favorite</extracomment>
</message>
<message>
<source>Always show the titles below the poster images. (If disabled, title will be shown under hilighted item only)</source>
<translation>Mindig mutasd a címeket a plakátképek alatt. (Ha le van tiltva, a cím csak a kiemelt elem alatt jelenik meg)</translation>
<extracomment>Description for option in Setting Screen</extracomment>
</message>
<message>
<source>Media Grid Options</source>
<translation>Média Rács beállítások</translation>
</message>
<message>
<source>Media Grid</source>
<translation>Média Rács</translation>
<extracomment>UI -&gt; Media Grid section in user setting screen.</extracomment>
</message>
<message>
<source>User Interface</source>
<translation>Felhasználói felület</translation>
<extracomment>Title for User Interface section in user setting screen.</extracomment>
</message>
<message>
<source>Disabled</source>
<translation>Kikapcsolva</translation>
</message>
<message>
<source>Enabled</source>
<translation>Engedélyezve</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>Támogatja az MPEG 2 tartalom közvetlen lejátszását (pl. É TV). Ez megakadályozza az MPEG 2 tartalom átkódolását, de lényegesen nagyobb sávszélességet használ fel</translation>
<extracomment>Settings Menu - Description for option</extracomment>
</message>
<message>
<source>MPEG 2 Support</source>
<translation>MPEG 2 Támogatás</translation>
<extracomment>Settings Menu - Title for option</extracomment>
</message>
<message>
<source>Playback</source>
<translation>Lejátszás</translation>
<extracomment>Title for Playback section in user setting screen.</extracomment>
</message>
<message>
<source>Version</source>
<translation>Verzió</translation>
</message>
<message>
<source>An error was encountered while playing this item. Server did not provide required transcoding data.</source>
<translation>Hiba történt az elem lejátszása közben. A szerver nem biztosította a szükséges transzkódolási adatokat.</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>Error Getting Playback Information</source>
<translation>Hiba a lejátszási információk lekérésekor</translation>
<extracomment>Dialog Title: Received error from server when trying to get information about the selected item for playback</extracomment>
</message>
<message>
<source>...or enter server URL manually:</source>
<translation>vagy add meg kézzel a szerver URL-jét:</translation>
<extracomment>Instructions on initial app launch when the user is asked to manually enter a server URL</extracomment>
</message>
<message>
<source>Pick a Jellyfin server from the local network</source>
<translation>Válassz ki egy Jellyfin szervert a helyi hálózatról</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>Írd be a Szerver nevét vagy IP-címét</translation>
<extracomment>Title of KeyboardDialog when manually entering a server URL</extracomment>
</message>
<message>
<source>The requested content does not exist on the server</source>
<translation>A kért tartalom nem található a szerveren</translation>
<extracomment>Content of message box when the requested content is not found on the server</extracomment>
</message>
<message>
<source>Unknown</source>
<translation>Ismeretlen</translation>
<extracomment>Title for a cast member for which we have no information for</extracomment>
</message>
<message>
<source>Not found</source>
<translation>Nem található</translation>
<extracomment>Title of message box when the requested content is not found on the server</extracomment>
</message>
<message>
<source>Connecting to Server</source>
<translation>Csatlakozás a szerverhez</translation>
<extracomment>Message to display to user while client is attempting to connect to the server</extracomment>
</message>
<message>
<source>Close</source>
<translation>Bezárás</translation>
</message>
<message>
<source>Cancel Series Recording</source>
<translation>Sorozatfelvétel leállítása</translation>
</message>
<message>
<source>Cancel Recording</source>
<translation>Felvétel megállítása</translation>
</message>
<message>
<source>Record Series</source>
<translation>Sorozat felvétele</translation>
</message>
<message>
<source>Record</source>
<translation>Felvétel</translation>
</message>
<message>
<source>View Channel</source>
<translation>Csatorna Megtekintése</translation>
</message>
<message>
<source>TV Guide</source>
<translation>Műsorújság</translation>
<extracomment>Menu option for showing Live TV Guide / Schedule</extracomment>
</message>
<message>
<source>Channels</source>
<translation>Csatornák</translation>
<extracomment>Menu option for showing Live TV Channel List</extracomment>
</message>
<message>
<source>Repeat</source>
<translation>Ismétlés</translation>
<extracomment>If TV Shows has previously been broadcasted</extracomment>
</message>
<message>
<source>Live</source>
<translation>É</translation>
<extracomment>If TV Show is being broadcast live (not pre-recorded)</extracomment>
</message>
<message>
<source>Ends at</source>
<translation>Vége volt</translation>
<extracomment>(Past Tense) For defining a day and time when a program ended (e.g. Ended Wednesday, 08:00) </extracomment>
</message>
<message>
<source>Ended at</source>
<translation>Vége lett</translation>
<extracomment>(Past Tense) For defining time when a program will ended (e.g. Ended at 08:00) </extracomment>
</message>
<message>
<source>Starts</source>
<translation>Kezdődni fog</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>Starts at</source>
<translation>Kezdődik majd</translation>
<extracomment>(Future Tense) For defining time when a program will start today (e.g. Starts at 08:00) </extracomment>
</message>
<message>
<source>Started</source>
<translation>Kezdődött</translation>
<extracomment>(Past Tense) For defining a day and time when a program started (e.g. Started Wednesday, 08:00) </extracomment>
</message>
<message>
<source>Started at</source>
<translation>Ekkor kezdődött</translation>
<extracomment>(Past Tense) For defining time when a program started today (e.g. Started at 08:00) </extracomment>
</message>
<message>
<source>Saturday</source>
<translation>Szombat</translation>
<extracomment>Day of Week</extracomment>
</message>
<message>
<source>Friday</source>
<translation>Péntek</translation>
<extracomment>Day of Week</extracomment>
</message>
<message>
<source>Thursday</source>
<translation>Csütörtök</translation>
<extracomment>Day of Week</extracomment>
</message>
<message>
<source>Wednesday</source>
<translation>Szerda</translation>
<extracomment>Day of Week</extracomment>
</message>
<message>
<source>Tuesday</source>
<translation>Kedd</translation>
<extracomment>Day of Week</extracomment>
</message>
<message>
<source>Monday</source>
<translation>Hétfő</translation>
<extracomment>Day of Week</extracomment>
</message>
<message>
<source>Sunday</source>
<translation>Vasárnap</translation>
<extracomment>Day of Week</extracomment>
</message>
<message>
<source>tomorrow</source>
<translation>holnap</translation>
<extracomment>Next day</extracomment>
</message>
<message>
<source>yesterday</source>
<translation>tegnap</translation>
<extracomment>Previous day</extracomment>
</message>
<message>
<source>today</source>
<translation>ma</translation>
<extracomment>Current day</extracomment>
</message>
<message>
<source>TV Shows</source>
<translation>TV Sorozatok</translation>
</message>
<message>
<source>Movies</source>
<translation>Filmek</translation>
</message>
<message>
<source>Special Features</source>
<translation>Sajátosságok</translation>

View File

@ -1729,5 +1729,40 @@ não contém itens</translation>
<source>Change Server</source>
<translation>Mudar servidor</translation>
</message>
<message>
<source>There was an error retrieving the data for this item from the server.</source>
<translation>Ocorreu um erro ao recuperar os dados para este item do servidor.</translation>
<extracomment>Dialog detail when unable to load Content from Server</extracomment>
</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>Error Retrieving Content</source>
<translation>Erro ao Recuperar Conteúdo</translation>
<extracomment>Dialog title when unable to load Content from Server</extracomment>
</message>
<message>
<source>On Now</source>
<translation>Ligado agora</translation>
</message>
<message>
<source>Delete Saved</source>
<translation>Remover salvo</translation>
</message>
<message>
<source>Save Credentials?</source>
<translation>Salvar credenciais?</translation>
</message>
<message>
<source>Sign Out</source>
<translation>Sair</translation>
</message>
<message>
<source>Change Server</source>
<translation>Mudar servidor</translation>
</message>
</context>
</TS>

202
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -9,7 +9,26 @@
"settingName": "playback.mpeg2",
"type": "bool",
"default": "false"
}
}
]
},
{
"title": "User Interface",
"description": "Settings relating to how the how the applications looks",
"children": [
{
"title": "Media Grid",
"description": "Media Grid Options",
"children": [
{
"title": "Item Titles",
"description": "Always show the titles below the poster images. (If disabled, title will be shown under hilighted item only)",
"settingName": "itemgrid.alwaysShowTitles",
"type": "bool",
"default": "false"
}
]
}
]
}
]
]

View File

@ -306,7 +306,6 @@ end function
function CreateSeriesDetailsGroup(series)
group = CreateObject("roSGNode", "TVShowDetails")
group.overhangTitle = series.title
group.optionsAvailable = false
m.global.sceneManager.callFunc("pushScene", group)
@ -324,7 +323,6 @@ end function
function CreateSeasonDetailsGroup(series, season)
group = CreateObject("roSGNode", "TVEpisodes")
group.overhangTitle = series.title + " " + season.title
group.optionsAvailable = false
m.global.sceneManager.callFunc("pushScene", group)

View File

@ -19,8 +19,8 @@ end function
sub AddVideoContent(video, mediaSourceId, audio_stream_idx = 1, subtitle_idx = -1, playbackPosition = -1)
video.content = createObject("RoSGNode", "ContentNode")
meta = ItemMetaData(video.id)
m.videotype = meta.type
if meta = invalid
video.content = invalid
return
@ -58,9 +58,89 @@ sub AddVideoContent(video, mediaSourceId, audio_stream_idx = 1, subtitle_idx = -
group.callFunc("refresh")
video.content = invalid
return
else if dialogResult = 3
'get series ID based off episiode ID
params = {
ids: video.Id
}
url = Substitute("Users/{0}/Items/", get_setting("active_user"))
resp = APIRequest(url, params)
data = getJson(resp)
for each item in data.Items
m.series_id = item.SeriesId
end for
'Get series json data
params = {
ids: m.series_id
}
url = Substitute("Users/{0}/Items/", get_setting("active_user"))
resp = APIRequest(url, params)
data = getJson(resp)
for each item in data.Items
m.tmp = item
end for
'Create Series Scene
group = CreateSeriesDetailsGroup(m.tmp)
video.content = invalid
return
else if dialogResult = 4
'get Season/Series ID based off episiode ID
params = {
ids: video.Id
}
url = Substitute("Users/{0}/Items/", get_setting("active_user"))
resp = APIRequest(url, params)
data = getJson(resp)
for each item in data.Items
m.season_id = item.SeasonId
m.series_id = item.SeriesId
end for
'Get Series json data
params = {
ids: m.season_id
}
url = Substitute("Users/{0}/Items/", get_setting("active_user"))
resp = APIRequest(url, params)
data = getJson(resp)
for each item in data.Items
m.Season_tmp = item
end for
'Get Season json data
params = {
ids: m.series_id
}
url = Substitute("Users/{0}/Items/", get_setting("active_user"))
resp = APIRequest(url, params)
data = getJson(resp)
for each item in data.Items
m.Series_tmp = item
end for
'Create Season Scene
group = CreateSeasonDetailsGroup(m.Series_tmp, m.Season_tmp)
video.content = invalid
return
else if dialogResult = 5
'get episiode ID
params = {
ids: video.Id
}
url = Substitute("Users/{0}/Items/", get_setting("active_user"))
resp = APIRequest(url, params)
data = getJson(resp)
for each item in data.Items
m.episode_id = item
end for
'Create Episode Scene
group = CreateMovieDetailsGroup(m.episode_id)
video.content = invalid
return
end if
end if
end if
video.content.PlayStart = int(playbackPosition / 10000000)
' Call PlayInfo from server
@ -112,7 +192,7 @@ sub AddVideoContent(video, mediaSourceId, audio_stream_idx = 1, subtitle_idx = -
protocol = LCase(playbackInfo.MediaSources[0].Protocol)
if protocol <> "file"
uriRegex = CreateObject("roRegex", "^(.*:)//([A-Za-z0-9\-\.]+)(:[0-9]+)?(.*)$", "")
uri = uriRegex.Match(playbackinfo.MediaSources[0].Path)
uri = uriRegex.Match(playbackInfo.MediaSources[0].Path)
' proto $1, host $2, port $3, the-rest $4
localhost = CreateObject("roRegex", "^localhost$|^127(?:\.[0-9]+){0,2}\.[0-9]+$|^(?:0*\:)*?:?0*1$", "i")
' https://stackoverflow.com/questions/8426171/what-regex-will-match-all-loopback-addresses
@ -123,7 +203,7 @@ sub AddVideoContent(video, mediaSourceId, audio_stream_idx = 1, subtitle_idx = -
video.content.url = buildURL(uri[4])
else
fully_external = true
video.content.url = playbackinfo.MediaSources[0].Path
video.content.url = playbackInfo.MediaSources[0].Path
end if
else:
params.append({
@ -178,8 +258,8 @@ end function
'Opens dialog asking user if they want to resume video or start playback over
function startPlayBackOver(time as longinteger) as integer
if m.scene.focusedChild.overhangTitle = "Home"
return option_dialog(["Resume playing at " + ticksToHuman(time) + ".", "Start over from the beginning.", "Watched"])
if m.videotype = "Episode" or m.videotype = "Series"
return option_dialog([tr("Resume playing at ") + ticksToHuman(time) + ".", tr("Start over from the beginning."), tr("Watched"), tr("Go to series"), tr("Go to season"), tr("Go to episode")])
else
return option_dialog(["Resume playing at " + ticksToHuman(time) + ".", "Start over from the beginning."])
end if

View File

@ -110,6 +110,7 @@ function ItemMetaData(id as string)
else if data.type = "TvChannel" or data.type = "Program"
tmp = CreateObject("roSGNode", "ChannelData")
tmp.image = PosterImage(data.id)
tmp.isFavorite = data.UserData.isFavorite
tmp.json = data
return tmp
else if data.type = "Person"