Merge remote-tracking branch 'upstream/master' into feature/mjh/new
This commit is contained in:
commit
fd46047f8c
2
.github/workflows/roku-analysis.yml
vendored
2
.github/workflows/roku-analysis.yml
vendored
|
@ -27,7 +27,7 @@ jobs:
|
|||
if: env.BRANCH_NAME == 'master'
|
||||
run: npm run build-prod
|
||||
- name: Use Java 17
|
||||
uses: actions/setup-java@5896cecc08fd8a1fbdfaf517e29b571164b031f7 # v4
|
||||
uses: actions/setup-java@99b8673ff64fbf99d8d325f52d9a5bdedb8483e9 # v4
|
||||
with:
|
||||
distribution: "temurin"
|
||||
java-version: "17"
|
||||
|
|
|
@ -115,6 +115,24 @@ sub LoadItems_AddVideoContent(video as object, mediaSourceId as dynamic, audio_s
|
|||
video.chapters = meta.json.Chapters
|
||||
video.showID = meta.showID
|
||||
|
||||
logoLookupID = video.id
|
||||
|
||||
if videotype = "episode" or videotype = "series"
|
||||
video.content.contenttype = "episode"
|
||||
video.seasonNumber = meta.json.ParentIndexNumber
|
||||
video.episodeNumber = meta.json.IndexNumber
|
||||
video.episodeNumberEnd = meta.json.IndexNumberEnd
|
||||
|
||||
if isValid(meta.showID)
|
||||
logoLookupID = meta.showID
|
||||
end if
|
||||
end if
|
||||
|
||||
logoImageExists = api.items.HeadImageURLByName(logoLookupID, "logo")
|
||||
if logoImageExists
|
||||
video.logoImage = api.items.GetImageURL(logoLookupID, "logo", 0, { "maxHeight": 65, "maxWidth": 300, "quality": "90" })
|
||||
end if
|
||||
|
||||
user = AboutMe()
|
||||
if user.Configuration.EnableNextEpisodeAutoPlay
|
||||
if LCase(m.top.itemType) = "episode"
|
||||
|
|
|
@ -1,10 +1,14 @@
|
|||
import "pkg:/source/utils/misc.bs"
|
||||
|
||||
const LOGO_RIGHT_PADDING = 30
|
||||
const OPTIONCONTROLS_TOP_PADDING = 50
|
||||
|
||||
sub init()
|
||||
m.videoControls = m.top.findNode("videoControls")
|
||||
m.optionControls = m.top.findNode("optionControls")
|
||||
|
||||
m.inactivityTimer = m.top.findNode("inactivityTimer")
|
||||
m.videoInfo = m.top.findNode("videoInfo")
|
||||
m.itemTitle = m.top.findNode("itemTitle")
|
||||
m.videoPlayPause = m.top.findNode("videoPlayPause")
|
||||
m.videoPositionTime = m.top.findNode("videoPositionTime")
|
||||
|
@ -16,10 +20,16 @@ sub init()
|
|||
m.top.observeField("hasFocus", "onFocusChanged")
|
||||
m.top.observeField("progressPercentage", "onProgressPercentageChanged")
|
||||
m.top.observeField("playbackState", "onPlaybackStateChanged")
|
||||
|
||||
m.top.observeField("itemTitleText", "onItemTitleTextChanged")
|
||||
m.top.observeField("seasonNumber", "onSeasonNumberChanged")
|
||||
m.top.observeField("episodeNumber", "onEpisodeNumberChanged")
|
||||
m.top.observeField("episodeNumberEnd", "onEpisodeNumberEndChanged")
|
||||
m.top.observeField("logoImage", "onLogoImageChanged")
|
||||
|
||||
m.defaultButtonIndex = 2
|
||||
m.focusedButtonIndex = 2
|
||||
m.optionControlsMoved = false
|
||||
|
||||
m.videoControls.buttonFocused = m.defaultButtonIndex
|
||||
m.optionControls.buttonFocused = m.optionControls.getChildCount() - 1
|
||||
|
@ -53,6 +63,92 @@ sub onItemTitleTextChanged()
|
|||
m.itemTitle.text = m.top.itemTitleText
|
||||
end sub
|
||||
|
||||
' onSeasonNumberChanged: Handler for changes to m.top.seasonNumber param.
|
||||
'
|
||||
sub onSeasonNumberChanged()
|
||||
m.top.unobserveField("seasonNumber")
|
||||
itemSeason = m.top.findNode("itemSeason")
|
||||
itemSeason.font.size = 32
|
||||
itemSeason.text = `S${m.top.seasonNumber}`
|
||||
|
||||
' Move the option controls down to give room for season number
|
||||
if not m.optionControlsMoved
|
||||
moveOptionControls(0, OPTIONCONTROLS_TOP_PADDING)
|
||||
m.optionControlsMoved = true
|
||||
end if
|
||||
end sub
|
||||
|
||||
' onEpisodeNumberChanged: Handler for changes to m.top.episodeNumber param.
|
||||
'
|
||||
sub onEpisodeNumberChanged()
|
||||
m.top.unobserveField("episodeNumber")
|
||||
itemEpisode = m.top.findNode("itemEpisode")
|
||||
itemEpisode.font.size = 32
|
||||
itemEpisode.text = `E${m.top.episodeNumber}`
|
||||
|
||||
' Move the option controls down to give room for episode number
|
||||
if not m.optionControlsMoved
|
||||
moveOptionControls(0, OPTIONCONTROLS_TOP_PADDING)
|
||||
m.optionControlsMoved = true
|
||||
end if
|
||||
end sub
|
||||
|
||||
' onEpisodeNumberEndChanged: Handler for changes to m.top.episodeNumberEnd param.
|
||||
'
|
||||
sub onEpisodeNumberEndChanged()
|
||||
m.top.unobserveField("episodeNumberEnd")
|
||||
itemEpisodeEnd = m.top.findNode("itemEpisodeEnd")
|
||||
itemEpisodeEnd.font.size = 32
|
||||
itemEpisodeEnd.text = `-${m.top.episodeNumberEnd}`
|
||||
|
||||
' Move the option controls down to give room for episode number
|
||||
if not m.optionControlsMoved
|
||||
moveOptionControls(0, OPTIONCONTROLS_TOP_PADDING)
|
||||
m.optionControlsMoved = true
|
||||
end if
|
||||
end sub
|
||||
|
||||
' moveOptionControls: Moves option controls node based on passed pixel values
|
||||
'
|
||||
' @param {integer} horizontalPixels - Number of horizontal pixels to move option controls
|
||||
' @param {integer} verticalPixels - Number of vertical pixels to move option controls
|
||||
sub moveOptionControls(horizontalPixels as integer, verticalPixels as integer)
|
||||
m.optionControls.translation = `[${m.optionControls.translation[0] + horizontalPixels}, ${m.optionControls.translation[1] + verticalPixels}]`
|
||||
end sub
|
||||
|
||||
' onLogoLoadStatusChanged: Handler for changes to logo image's status.
|
||||
'
|
||||
' @param {dynamic} event - field change event
|
||||
sub onLogoLoadStatusChanged(event)
|
||||
if LCase(event.GetData()) = "ready"
|
||||
logoImage = event.getRoSGNode()
|
||||
logoImage.unobserveField("loadStatus")
|
||||
|
||||
' Move video info to the right based on the logo width
|
||||
m.videoInfo.translation = `[${m.videoInfo.translation[0] + logoImage.bitmapWidth + LOGO_RIGHT_PADDING}, ${m.videoInfo.translation[1]}]`
|
||||
m.itemTitle.maxWidth = m.itemTitle.maxWidth - (logoImage.bitmapWidth + LOGO_RIGHT_PADDING)
|
||||
|
||||
' Move the option controls down based on the logo height
|
||||
if not m.optionControlsMoved
|
||||
moveOptionControls(0, OPTIONCONTROLS_TOP_PADDING)
|
||||
m.optionControlsMoved = true
|
||||
end if
|
||||
end if
|
||||
end sub
|
||||
|
||||
' onLogoImageChanged: Handler for changes to m.top.logoImage param.
|
||||
'
|
||||
sub onLogoImageChanged()
|
||||
if isValidAndNotEmpty(m.top.logoImage)
|
||||
logoImage = createObject("roSGNode", "Poster")
|
||||
logoImage.Id = "logoImage"
|
||||
logoImage.observeField("loadStatus", "onLogoLoadStatusChanged")
|
||||
logoImage.uri = m.top.logoImage
|
||||
logoImage.translation = [103, 61]
|
||||
m.top.appendChild(logoImage)
|
||||
end if
|
||||
end sub
|
||||
|
||||
' resetFocusToDefaultButton: Reset focus back to the default button
|
||||
'
|
||||
sub resetFocusToDefaultButton()
|
||||
|
|
|
@ -1,7 +1,17 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<component name="OSD" extends="Group" initialFocus="chapterNext">
|
||||
<children>
|
||||
<ScrollingLabel id="itemTitle" font="font:LargeBoldSystemFont" translation="[103,61]" maxWidth="1400" />
|
||||
<Poster uri="pkg:/images/osdBackground.png" width="1920" height="279" />
|
||||
|
||||
<LayoutGroup id="videoInfo" layoutDirection="vert" translation="[103,61]">
|
||||
<ScrollingLabel id="itemTitle" font="font:LargeBoldSystemFont" maxWidth="1400" />
|
||||
<LayoutGroup id="videoInfo" layoutDirection="horiz" translation="[103,61]">
|
||||
<Label id="itemSeason" font="font:MediumSystemFont" color="0xffffffFF" />
|
||||
<Label id="itemEpisode" font="font:MediumSystemFont" color="0xffffffFF" />
|
||||
<Label id="itemEpisodeEnd" font="font:MediumSystemFont" color="0xffffffFF" />
|
||||
</LayoutGroup>
|
||||
</LayoutGroup>
|
||||
|
||||
<Clock id="clock" translation="[1618, 46]" />
|
||||
|
||||
<ButtonGroup id="optionControls" itemSpacings="[20]" layoutDirection="horiz" horizAlignment="left" translation="[103,120]">
|
||||
|
@ -30,6 +40,10 @@
|
|||
</children>
|
||||
<interface>
|
||||
<field id="itemTitleText" type="string" />
|
||||
<field id="seasonNumber" type="integer" />
|
||||
<field id="episodeNumber" type="integer" />
|
||||
<field id="episodeNumberEnd" type="integer" />
|
||||
<field id="logoImage" type="string" />
|
||||
<field id="inactiveTimeout" type="integer" />
|
||||
<field id="progressPercentage" type="float" />
|
||||
<field id="positionTime" type="float" />
|
||||
|
|
|
@ -400,6 +400,31 @@ sub onVideoContentLoaded()
|
|||
|
||||
m.osd.itemTitleText = m.top.content.title
|
||||
|
||||
' If video is an episode, attempt to add season and episode numbers to OSD
|
||||
if m.top.content.contenttype = 4
|
||||
if isValid(videoContent[0].seasonNumber)
|
||||
m.osd.seasonNumber = videoContent[0].seasonNumber
|
||||
end if
|
||||
|
||||
if isValid(videoContent[0].episodeNumber)
|
||||
m.osd.episodeNumber = videoContent[0].episodeNumber
|
||||
end if
|
||||
|
||||
if isValid(videoContent[0].episodeNumberEnd)
|
||||
m.osd.episodeNumberEnd = videoContent[0].episodeNumberEnd
|
||||
end if
|
||||
end if
|
||||
|
||||
' Attempt to add logo to OSD
|
||||
if isValidAndNotEmpty(videoContent[0].logoImage)
|
||||
m.osd.logoImage = videoContent[0].logoImage
|
||||
|
||||
' Don't show both the logo and the video title if this isn't an episode
|
||||
if m.top.content.contenttype <> 4
|
||||
m.osd.itemTitleText = ""
|
||||
end if
|
||||
end if
|
||||
|
||||
populateChapterMenu()
|
||||
|
||||
if m.LoadMetaDataTask.isIntro
|
||||
|
|
|
@ -99,14 +99,28 @@ sub LoadItems_AddVideoContent(video as object, mediaSourceId as dynamic, audio_s
|
|||
end if
|
||||
end if
|
||||
|
||||
if videotype = "episode" or videotype = "series"
|
||||
video.content.contenttype = "episode"
|
||||
end if
|
||||
|
||||
video.chapters = meta.json.Chapters
|
||||
video.content.title = meta.title
|
||||
video.showID = meta.showID
|
||||
|
||||
logoLookupID = video.id
|
||||
|
||||
if videotype = "episode" or videotype = "series"
|
||||
video.content.contenttype = "episode"
|
||||
video.seasonNumber = meta.json.ParentIndexNumber
|
||||
video.episodeNumber = meta.json.IndexNumber
|
||||
video.episodeNumberEnd = meta.json.IndexNumberEnd
|
||||
|
||||
if isValid(meta.showID)
|
||||
logoLookupID = meta.showID
|
||||
end if
|
||||
end if
|
||||
|
||||
logoImageExists = api.items.HeadImageURLByName(logoLookupID, "logo")
|
||||
if logoImageExists
|
||||
video.logoImage = api.items.GetImageURL(logoLookupID, "logo", 0, { "maxHeight": 65, "maxWidth": 300, "quality": "90" })
|
||||
end if
|
||||
|
||||
user = AboutMe()
|
||||
if user.Configuration.EnableNextEpisodeAutoPlay
|
||||
if LCase(m.top.itemType) = "episode"
|
||||
|
|
File diff suppressed because one or more lines are too long
|
@ -402,6 +402,31 @@ sub onVideoContentLoaded()
|
|||
|
||||
m.osd.itemTitleText = m.top.content.title
|
||||
|
||||
' If video is an episode, attempt to add season and episode numbers to OSD
|
||||
if m.top.content.contenttype = 4
|
||||
if isValid(videoContent[0].seasonNumber)
|
||||
m.osd.seasonNumber = videoContent[0].seasonNumber
|
||||
end if
|
||||
|
||||
if isValid(videoContent[0].episodeNumber)
|
||||
m.osd.episodeNumber = videoContent[0].episodeNumber
|
||||
end if
|
||||
|
||||
if isValid(videoContent[0].episodeNumberEnd)
|
||||
m.osd.episodeNumberEnd = videoContent[0].episodeNumberEnd
|
||||
end if
|
||||
end if
|
||||
|
||||
' Attempt to add logo to OSD
|
||||
if isValidAndNotEmpty(videoContent[0].logoImage)
|
||||
m.osd.logoImage = videoContent[0].logoImage
|
||||
|
||||
' Don't show both the logo and the video title if this isn't an episode
|
||||
if m.top.content.contenttype <> 4
|
||||
m.osd.itemTitleText = ""
|
||||
end if
|
||||
end if
|
||||
|
||||
populateChapterMenu()
|
||||
|
||||
if m.LoadMetaDataTask.isIntro
|
||||
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -197,21 +197,13 @@ function getTranscodingProfiles() as object
|
|||
' does the users setup support surround sound?
|
||||
maxAudioChannels = "2" ' jellyfin expects this as a string
|
||||
' in order of preference from left to right
|
||||
audioCodecs = ["mp3", "vorbis", "opus", "flac", "alac", "ac4", "pcm", "wma", "wmapro"]
|
||||
surroundSoundCodecs = ["eac3", "ac3", "dts"]
|
||||
if globalUserSettings["playback.forceDTS"] = true
|
||||
surroundSoundCodecs = ["dts", "eac3", "ac3"]
|
||||
end if
|
||||
audioCodecs = ["eac3", "ac3", "dts", "mp3", "vorbis", "opus", "flac", "alac", "ac4", "pcm", "wma", "wmapro"]
|
||||
|
||||
surroundSoundCodec = invalid
|
||||
if di.GetAudioOutputChannel() = "5.1 surround"
|
||||
maxAudioChannels = "6"
|
||||
for each codec in surroundSoundCodecs
|
||||
if di.CanDecodeAudio({ Codec: codec, ChCnt: 6 }).Result
|
||||
surroundSoundCodec = codec
|
||||
if di.CanDecodeAudio({ Codec: codec, ChCnt: 8 }).Result
|
||||
maxAudioChannels = "8"
|
||||
end if
|
||||
for each codec in audioCodecs
|
||||
if di.CanDecodeAudio({ Codec: codec, ChCnt: 8 }).Result
|
||||
maxAudioChannels = "8"
|
||||
exit for
|
||||
end if
|
||||
end for
|
||||
|
@ -405,38 +397,10 @@ function getTranscodingProfiles() as object
|
|||
mp4Array.Conditions = [getMaxHeightArray(), getMaxWidthArray()]
|
||||
end if
|
||||
|
||||
' surround sound
|
||||
if surroundSoundCodec <> invalid
|
||||
' add preferred surround sound codec to TranscodingProfile
|
||||
transcodingProfiles.push({
|
||||
"Container": surroundSoundCodec,
|
||||
"Type": "Audio",
|
||||
"AudioCodec": surroundSoundCodec,
|
||||
"Context": "Streaming",
|
||||
"Protocol": "http",
|
||||
"MaxAudioChannels": maxAudioChannels
|
||||
})
|
||||
transcodingProfiles.push({
|
||||
"Container": surroundSoundCodec,
|
||||
"Type": "Audio",
|
||||
"AudioCodec": surroundSoundCodec,
|
||||
"Context": "Static",
|
||||
"Protocol": "http",
|
||||
"MaxAudioChannels": maxAudioChannels
|
||||
})
|
||||
|
||||
' put codec in front of AudioCodec string
|
||||
if tsArray.AudioCodec = ""
|
||||
tsArray.AudioCodec = surroundSoundCodec
|
||||
else
|
||||
tsArray.AudioCodec = surroundSoundCodec + "," + tsArray.AudioCodec
|
||||
end if
|
||||
|
||||
if mp4Array.AudioCodec = ""
|
||||
mp4Array.AudioCodec = surroundSoundCodec
|
||||
else
|
||||
mp4Array.AudioCodec = surroundSoundCodec + "," + mp4Array.AudioCodec
|
||||
end if
|
||||
' add user-selected preferred codec to the front of the list
|
||||
if globalUserSettings["playback.preferredAudioCodec"] <> "auto"
|
||||
tsArray.AudioCodec = globalUserSettings["playback.preferredAudioCodec"] + "," + tsArray.AudioCodec
|
||||
mp4Array.AudioCodec = globalUserSettings["playback.preferredAudioCodec"] + "," + mp4Array.AudioCodec
|
||||
end if
|
||||
|
||||
transcodingProfiles.push(tsArray)
|
||||
|
|
BIN
images/osdBackground.png
Normal file
BIN
images/osdBackground.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 11 KiB |
|
@ -1113,20 +1113,20 @@
|
|||
<extracomment>Settings Menu - Description for option</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Choose your preferred audio codec when transcoding multichannel audio.</source>
|
||||
<translation>Choose your preferred audio codec when transcoding multichannel audio.</translation>
|
||||
<extracomment>Settings Menu - Description for option</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Force all transcodes to use DTS instead of the default EAC3. The device must support DTS for this setting to have an effect.</source>
|
||||
<translation>Force all transcodes to use DTS instead of the default EAC3. The device must support DTS for this setting to have an effect.</translation>
|
||||
<extracomment>Settings Menu - Description for option</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Audio Codec Support</source>
|
||||
<translation>Audio Codec Support</translation>
|
||||
<source>Preferred Audio Codec</source>
|
||||
<translation>Preferred Audio Codec</translation>
|
||||
<extracomment>Settings Menu - Title of option</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Use the selected audio codec for transcodes. If the device or stream does not support it, a fallback codec will be used.</source>
|
||||
<translation>Use the selected audio codec for transcodes. If the device or stream does not support it, a fallback codec will be used.</translation>
|
||||
<extracomment>Settings Menu - Description for option</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Use system settings</source>
|
||||
<translation>Use system settings</translation>
|
||||
<extracomment>User Setting - Option title</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Direct playing</source>
|
||||
<translation>Direct playing</translation>
|
||||
|
|
|
@ -180,6 +180,469 @@
|
|||
<source>Server</source>
|
||||
<translation>Serveur</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Select when to show titles.</source>
|
||||
<translation>Sélectionner quand afficher les titres.</translation>
|
||||
<extracomment>Settings Menu - Description for option</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>What's New?</source>
|
||||
<translation>Quoi de neuf ?</translation>
|
||||
<extracomment>Popup title - Popup displays all the major changes to the app since the last version</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Episodes</source>
|
||||
<translation>Épisodes</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Save Credentials?</source>
|
||||
<translation>Sauvegarder vos identifiants ?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Extras</source>
|
||||
<translation>Bonus</translation>
|
||||
</message>
|
||||
<message>
|
||||
<comment>Name or Title field of media item</comment>
|
||||
<source>TITLE</source>
|
||||
<translation>Nom</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>(Dialog will close automatically)</source>
|
||||
<translation>(Cette fenêtre se fermera automatiquement)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>CRITIC_RATING</source>
|
||||
<translation>Note des critiques</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>DATE_ADDED</source>
|
||||
<translation>Date d'ajout</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>PLAY_COUNT</source>
|
||||
<translation>Nombre de lectures</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Cast & Crew</source>
|
||||
<translation>Casting et Equipe</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>More Like This</source>
|
||||
<translation>Plus de ce genre</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Press 'OK' to Close</source>
|
||||
<translation>Appuyez sur «OK» pour fermer</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Died</source>
|
||||
<translation>Mort</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>today</source>
|
||||
<translation>aujourd'hui</translation>
|
||||
<extracomment>Current day</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Tuesday</source>
|
||||
<translation>Mardi</translation>
|
||||
<extracomment>Day of Week</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Wednesday</source>
|
||||
<translation>Mercredi</translation>
|
||||
<extracomment>Day of Week</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Thursday</source>
|
||||
<translation>Jeudi</translation>
|
||||
<extracomment>Day of Week</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Saturday</source>
|
||||
<translation>Samedi</translation>
|
||||
<extracomment>Day of Week</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Sunday</source>
|
||||
<translation>Dimanche</translation>
|
||||
<extracomment>Day of Week</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Monday</source>
|
||||
<translation>Lundi</translation>
|
||||
<extracomment>Day of Week</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Started at</source>
|
||||
<translation>A débuté à</translation>
|
||||
<extracomment>(Past Tense) For defining time when a program started today (e.g. Started at 08:00) </extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Ended at</source>
|
||||
<translation>A fini à</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>Finit</translation>
|
||||
<extracomment>(Past Tense) For defining a day and time when a program ended (e.g. Ended Wednesday, 08:00) </extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Live</source>
|
||||
<translation>En direct</translation>
|
||||
<extracomment>If TV Show is being broadcast live (not pre-recorded)</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>TV Guide</source>
|
||||
<translation>Guide TV</translation>
|
||||
<extracomment>Menu option for showing Live TV Guide / Schedule</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Record</source>
|
||||
<translation>Enregistrer</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>The requested content does not exist on the server</source>
|
||||
<translation>Le contenu demandé n'existe pas sur le serveur</translation>
|
||||
<extracomment>Content of message box when the requested content is not found on the server</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>User Interface</source>
|
||||
<translation>Interface utilisateur</translation>
|
||||
<extracomment>Title for User Interface section in user setting screen.</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Search now</source>
|
||||
<translation>Chercher</translation>
|
||||
<extracomment>Help text in search Box</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>You can search for Titles, People, Live TV Channels and more</source>
|
||||
<translation>Vous pouvez rechercher des titres, personnes, chaînes TV en direct et plus</translation>
|
||||
<extracomment>Help text in search results</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Quick Connect</source>
|
||||
<translation>Connexion rapide</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Studios</source>
|
||||
<translation>Studios</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Shows</source>
|
||||
<translation>Séries</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Friday</source>
|
||||
<translation>Vendredi</translation>
|
||||
<extracomment>Day of Week</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>yesterday</source>
|
||||
<translation>hier</translation>
|
||||
<extracomment>Previous day</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>An error was encountered while playing this item.</source>
|
||||
<translation>Une erreur à été rencontrée lors de la lecture de cet élément.</translation>
|
||||
<extracomment>Dialog detail when error occurs during playback</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>DATE_PLAYED</source>
|
||||
<translation>Date de lecture</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>IMDB_RATING</source>
|
||||
<translation>Note IMDb</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>OFFICIAL_RATING</source>
|
||||
<translation>Classification parentale</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Disabled</source>
|
||||
<translation>Désactivé</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Started</source>
|
||||
<translation>A débuté</translation>
|
||||
<extracomment>(Past Tense) For defining a day and time when a program started (e.g. Started Wednesday, 08:00) </extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>MPEG-2</source>
|
||||
<translation>MPEG-2</translation>
|
||||
<extracomment>Name of codec used in settings menu</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Set Watched</source>
|
||||
<translation>Marquer comme vu</translation>
|
||||
<extracomment>Button Text - When pressed, marks item as Warched</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Starts at</source>
|
||||
<translation>Débute à</translation>
|
||||
<extracomment>(Future Tense) For defining time when a program will start today (e.g. Starts at 08:00) </extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Networks</source>
|
||||
<translation>Réseaux</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Starts</source>
|
||||
<translation>Débutera</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>Connecting to Server</source>
|
||||
<translation>Connexion au serveur</translation>
|
||||
<extracomment>Message to display to user while client is attempting to connect to the server</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Return to Top</source>
|
||||
<translation>Retourner en haut</translation>
|
||||
<extracomment>UI -> Media Grid -> Item Title in user setting screen.</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>There was an error authenticating via Quick Connect.</source>
|
||||
<translation>Il y a eu une erreur lors de l'authentification via connexion rapide.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Movies</source>
|
||||
<translation>Films</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Set Favorite</source>
|
||||
<translation>Marquer comme favori</translation>
|
||||
<extracomment>Button Text - When pressed, sets item as Favorite</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<comment>Title of Tab for options to sort library content</comment>
|
||||
<source>TAB_SORT</source>
|
||||
<translation>Trier</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Cancel Series Recording</source>
|
||||
<translation>Annuler l'enregistrement de la série</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Cancel Recording</source>
|
||||
<translation>Annuler l'enregistrement</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>
|
||||
<comment>Title of Tab for options to filter library content</comment>
|
||||
<source>TAB_FILTER</source>
|
||||
<translation>Filtrer</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Born</source>
|
||||
<translation>Né</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>TV Shows</source>
|
||||
<translation>Séries TV</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Record Series</source>
|
||||
<translation>Enregistrer la série</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Close</source>
|
||||
<translation>Fermer</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>MPEG-4</source>
|
||||
<translation>MPEG-4</translation>
|
||||
<extracomment>Name of codec used in settings menu</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Version</source>
|
||||
<translation>Version</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Use voice remote to search</source>
|
||||
<translation>Utilisez la commande vocale pour chercher</translation>
|
||||
<extracomment>Help text in search voice text box</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>RUNTIME</source>
|
||||
<translation>Durée</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>RELEASE_DATE</source>
|
||||
<translation>Date de sortie</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unknown</source>
|
||||
<translation>Inconnu</translation>
|
||||
<extracomment>Title for a cast member for which we have no information for</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Enabled</source>
|
||||
<translation>Activé</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Playback</source>
|
||||
<translation>Lecture</translation>
|
||||
<extracomment>Title for Playback section in user setting screen.</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Age</source>
|
||||
<translation>Âge</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>tomorrow</source>
|
||||
<translation>demain</translation>
|
||||
<extracomment>Next day</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Item Count</source>
|
||||
<translation>Nombre d'éléments</translation>
|
||||
<extracomment>UI -> Media Grid -> Item Count in user setting screen.</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Here is your Quick Connect code:</source>
|
||||
<translation>Voici votre code de connexion rapide :</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Repeat</source>
|
||||
<translation>Rediffusion</translation>
|
||||
<extracomment>If TV Shows has previously been broadcasted</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Pick a Jellyfin server from the local network</source>
|
||||
<translation>Sélectionnez un serveur Jellyfin disponible depuis votre réseau local :</translation>
|
||||
<extracomment>Instructions on initial app launch when the user is asked to pick a server from a list</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>...or enter server URL manually:</source>
|
||||
<translation>Si aucun serveur n'est dans la liste ci-dessus, vous pouvez aussi saisir l'URL du serveur manuellement :</translation>
|
||||
<extracomment>Instructions on initial app launch when the user is asked to manually enter a server URL</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>An error was encountered while playing this item. Server did not provide required transcoding data.</source>
|
||||
<translation>Une erreur a été rencontrée lors de la lecture de cet élément. Le serveur n’a pas fourni les données de transcodage requises.</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>Enable or disable Direct Play for optional codecs</source>
|
||||
<translation>Activer ou désactiver la lecture directe pour les codecs optionnels</translation>
|
||||
<extracomment>Settings Menu - Title for settings group related to codec support</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>Utiliser la lecture directe pour le contenu MPEG-2 (par exemple, la télévision en direct). Cela évitera le transcodage du contenu MPEG-2, mais utilisera significativement plus de bande passante.</translation>
|
||||
<extracomment>Settings Menu - Description for option</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>On Now</source>
|
||||
<translation>En ce moment</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Additional Parts</source>
|
||||
<translation>Contenus supplémentaires</translation>
|
||||
<extracomment>Additional parts of a video</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Movies (Presentation)</source>
|
||||
<translation>Films (Présentation)</translation>
|
||||
<extracomment>Movie library view option</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Movies (Grid)</source>
|
||||
<translation>Films (Grille)</translation>
|
||||
<extracomment>Movie library view option</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Channels</source>
|
||||
<translation>Chaînes</translation>
|
||||
<extracomment>Menu option for showing Live TV Channel List</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>View Channel</source>
|
||||
<translation>Voir la chaîne</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Not found</source>
|
||||
<translation>Non trouvé</translation>
|
||||
<extracomment>Title of message box when the requested content is not found on the server</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Enter the server name or IP address</source>
|
||||
<translation>Entrez le nom du serveur ou son adresse IP</translation>
|
||||
<extracomment>Title of KeyboardDialog when manually entering a server URL</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Codec Support</source>
|
||||
<translation>Codecs supportés</translation>
|
||||
<extracomment>Settings Menu - Title for settings group related to codec support</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Media Grid</source>
|
||||
<translation>Grille de médias</translation>
|
||||
<extracomment>UI -> Media Grid section in user setting screen.</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error loading Channel Data</source>
|
||||
<translation>Erreur lors du chargement des données de la chaîne</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Delete Saved</source>
|
||||
<translation>Supprimer les valeurs enregistrées</translation>
|
||||
</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>Prise en charge de la lecture directe du contenu MPEG-4. Il faudra peut-être désactiver cette option pour la lecture des fichiers vidéo encodés au format DIVX.</translation>
|
||||
<extracomment>Settings Menu - Description for option</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Special Features</source>
|
||||
<translation>Fonctionnalités spéciales</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error Getting Playback Information</source>
|
||||
<translation>Erreur lors de la récupération des informations de lecture</translation>
|
||||
<extracomment>Dialog Title: Received error from server when trying to get information about the selected item for playback</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unable to load Channel Data from the server</source>
|
||||
<translation>Impossible de charger les données de la chaîne depuis le serveur</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 sur le serveur.</translation>
|
||||
<extracomment>Dialog detail when unable to load Content from Server</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Media Grid options.</source>
|
||||
<translation>Options de la grille de médias</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Loading Channel Data</source>
|
||||
<translation>Chargement des données de la chaîne</translation>
|
||||
</message>
|
||||
<message>
|
||||
<comment>Title of Tab for switching "views" when looking at a library</comment>
|
||||
<source>TAB_VIEW</source>
|
||||
<translation>Vue</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>Ce %1 ne contient pas d'éléments</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name></name>
|
||||
|
@ -1031,7 +1494,7 @@
|
|||
</message>
|
||||
<message>
|
||||
<source>...or enter server URL manually:</source>
|
||||
<translation>...ou entrez manuellement l'adresse du serveur :</translation>
|
||||
<translation>...ou entrez manuellement l'adresse du serveur :</translation>
|
||||
<extracomment>Instructions on initial app launch when the user is asked to manually enter a server URL</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
|
@ -3981,7 +4444,7 @@
|
|||
</message>
|
||||
<message>
|
||||
<source>...or enter server URL manually:</source>
|
||||
<translation>Si aucun serveur n'est affiché ci-dessus vous pouvez également saisir l'adresse IP du serveur manuellement :</translation>
|
||||
<translation>Si aucun serveur n'est affiché ci-dessus vous pouvez également saisir l'adresse IP du serveur manuellement  :</translation>
|
||||
<extracomment>Instructions on initial app launch when the user is asked to manually enter a server URL</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
|
@ -4333,7 +4796,7 @@
|
|||
</message>
|
||||
<message>
|
||||
<source>...or enter server URL manually:</source>
|
||||
<translation>Si aucun serveur n'est affiché ci-dessus vous pouvez également saisir l'adresse IP du serveur manuellement :</translation>
|
||||
<translation>Si aucun serveur n'est affiché ci-dessus vous pouvez également saisir l'adresse IP du serveur manuellement  :</translation>
|
||||
<extracomment>Instructions on initial app launch when the user is asked to manually enter a server URL</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
|
@ -4842,7 +5305,7 @@
|
|||
</message>
|
||||
<message>
|
||||
<source>Save Credentials?</source>
|
||||
<translation>Sauvegarder les informations d'identification ?</translation>
|
||||
<translation>Sauvegarder les informations d'identification ?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>On Now</source>
|
||||
|
@ -4892,7 +5355,7 @@
|
|||
</message>
|
||||
<message>
|
||||
<source>...or enter server URL manually:</source>
|
||||
<translation>Si aucun serveur n'est affiché ci-dessus vous pouvez également saisir l'adresse IP du serveur manuellement :</translation>
|
||||
<translation>Si aucun serveur n'est affiché ci-dessus vous pouvez également saisir l'adresse IP du serveur manuellement  :</translation>
|
||||
<extracomment>Instructions on initial app launch when the user is asked to manually enter a server URL</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
|
@ -5282,7 +5745,7 @@
|
|||
</message>
|
||||
<message>
|
||||
<source>Save Credentials?</source>
|
||||
<translation>Sauvegarder les informations d'identification ?</translation>
|
||||
<translation>Sauvegarder les informations d'identification ?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Delete Saved</source>
|
||||
|
@ -5719,7 +6182,7 @@
|
|||
</message>
|
||||
<message>
|
||||
<source>Save Credentials?</source>
|
||||
<translation>Sauvegarder les informations d'identification ?</translation>
|
||||
<translation>Sauvegarder les informations d'identification ?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error Retrieving Content</source>
|
||||
|
@ -6423,7 +6886,7 @@
|
|||
</message>
|
||||
<message>
|
||||
<source>Here is your Quick Connect code:</source>
|
||||
<translation>Voici votre code de connexion rapide :</translation>
|
||||
<translation>Voici votre code de connexion rapide :</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Next episode</source>
|
||||
|
@ -6963,7 +7426,7 @@
|
|||
</message>
|
||||
<message>
|
||||
<source>Next Episode Button Time</source>
|
||||
<translation>Temps pour le bouton « Prochain épisode »</translation>
|
||||
<translation>Temps pour le bouton « Prochain épisode »</translation>
|
||||
<extracomment>Settings Menu - Title for option</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
|
@ -6990,7 +7453,7 @@
|
|||
</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>Définis combien de secondes avant la fin d'un épisode le bouton « Prochain épisode » doit apparaître. La valeur 0 permet de le désactiver.</translation>
|
||||
<translation>Définis combien de secondes avant la fin d'un épisode le bouton « Prochain épisode » doit apparaître. La valeur 0 permet de le désactiver.</translation>
|
||||
<extracomment>Settings Menu - Description for option</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
|
@ -7917,7 +8380,7 @@
|
|||
</message>
|
||||
<message>
|
||||
<source>Remember Me?</source>
|
||||
<translation>Se souvenir de moi ?</translation>
|
||||
<translation>Se souvenir de moi ?</translation>
|
||||
<extracomment>User Setting - Setting title</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
|
@ -8047,7 +8510,7 @@
|
|||
</message>
|
||||
<message>
|
||||
<source>Next Episode Button Time</source>
|
||||
<translation>Temps pour le bouton « Prochain épisode »</translation>
|
||||
<translation>Temps pour le bouton « Prochain épisode »</translation>
|
||||
<extracomment>Settings Menu - Title for option</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
|
@ -8438,7 +8901,7 @@
|
|||
</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>Définir combien de secondes avant la fin d'un épisode le bouton « Prochain épisode » doit apparaître. La valeur 0 permet de le désactiver.</translation>
|
||||
<translation>Définir combien de secondes avant la fin d'un épisode le bouton « Prochain épisode » doit apparaître. La valeur 0 permet de le désactiver.</translation>
|
||||
<extracomment>Settings Menu - Description for option</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
|
@ -9545,7 +10008,7 @@
|
|||
</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>Définit combien de secondes avant la fin d'un épisode le bouton « Prochain épisode » doit apparaître. La valeur 0 permet de le désactiver.</translation>
|
||||
<translation>Définit combien de secondes avant la fin d'un épisode le bouton « Prochain épisode » doit apparaître. La valeur 0 permet de le désactiver.</translation>
|
||||
<extracomment>Settings Menu - Description for option</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
|
@ -10557,7 +11020,7 @@
|
|||
</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>Définit combien de secondes avant la fin d'un épisode le bouton « Prochain épisode » doit apparaître. La valeur 0 permet de le désactiver.</translation>
|
||||
<translation>Définit combien de secondes avant la fin d'un épisode le bouton « Prochain épisode » doit apparaître. La valeur 0 permet de le désactiver.</translation>
|
||||
<extracomment>Settings Menu - Description for option</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
|
@ -11405,7 +11868,7 @@
|
|||
</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>Définit combien de secondes avant la fin d'un épisode le bouton « Prochain épisode » doit apparaître. La valeur 0 permet de le désactiver.</translation>
|
||||
<translation>Définit combien de secondes avant la fin d'un épisode le bouton « Prochain épisode » doit apparaître. La valeur 0 permet de le désactiver.</translation>
|
||||
<extracomment>Settings Menu - Description for option</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
|
|
|
@ -260,6 +260,300 @@
|
|||
<translation>Elkezdve</translation>
|
||||
<extracomment>(Past Tense) For defining time when a program started today (e.g. Started at 08:00) </extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Extras</source>
|
||||
<translation>Extrák</translation>
|
||||
</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>Cast & Crew</source>
|
||||
<translation>Szereplők és Stáb</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Movies (Grid)</source>
|
||||
<translation>Filmek (Rács)</translation>
|
||||
<extracomment>Movie library view option</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Thursday</source>
|
||||
<translation>Csütörtök</translation>
|
||||
<extracomment>Day of Week</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Saturday</source>
|
||||
<translation>Szombat</translation>
|
||||
<extracomment>Day of Week</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Monday</source>
|
||||
<translation>Hétfő</translation>
|
||||
<extracomment>Day of Week</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Ends at</source>
|
||||
<translation>Befejeződik</translation>
|
||||
<extracomment>(Past Tense) For defining a day and time when a program ended (e.g. Ended Wednesday, 08:00) </extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Record Series</source>
|
||||
<translation>Sorozat Felvétele</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Died</source>
|
||||
<translation>Meghalt</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unable to load Channel Data from the server</source>
|
||||
<translation>Nem lehet letölteni a csatornaadatot a szerverről</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Age</source>
|
||||
<translation>Életkor</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>More Like This</source>
|
||||
<translation>Több Hasonló</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Special Features</source>
|
||||
<translation>Extrák</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Additional Parts</source>
|
||||
<translation>További Részek</translation>
|
||||
<extracomment>Additional parts of a video</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>TV Shows</source>
|
||||
<translation>Sorozatok</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Tuesday</source>
|
||||
<translation>Kedd</translation>
|
||||
<extracomment>Day of Week</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>CRITIC_RATING</source>
|
||||
<translation>Kritikusok Értékelései</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Episodes</source>
|
||||
<translation>Epizódok</translation>
|
||||
</message>
|
||||
<message>
|
||||
<comment>Title of Tab for options to filter library content</comment>
|
||||
<source>TAB_FILTER</source>
|
||||
<translation>Szűrés</translation>
|
||||
</message>
|
||||
<message>
|
||||
<comment>Title of Tab for switching "views" when looking at a library</comment>
|
||||
<source>TAB_VIEW</source>
|
||||
<translation>Nézet</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Press 'OK' to Close</source>
|
||||
<translation>Nyomd meg az „OK” gombot a bezáráshoz</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Starts at</source>
|
||||
<translation>Ekkor kezdődik</translation>
|
||||
<extracomment>(Future Tense) For defining time when a program will start today (e.g. Starts at 08:00) </extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Live</source>
|
||||
<translation>Élő</translation>
|
||||
<extracomment>If TV Show is being broadcast live (not pre-recorded)</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Cancel Recording</source>
|
||||
<translation>Felvétel megszakítása</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>DATE_ADDED</source>
|
||||
<translation>Hozzáadás Dátuma</translation>
|
||||
</message>
|
||||
<message>
|
||||
<comment>Title of Tab for options to sort library content</comment>
|
||||
<source>TAB_SORT</source>
|
||||
<translation>Rendezés</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Wednesday</source>
|
||||
<translation>Szerda</translation>
|
||||
<extracomment>Day of Week</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Born</source>
|
||||
<translation>Született</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Movies (Presentation)</source>
|
||||
<translation>Filmek (Előadások)</translation>
|
||||
<extracomment>Movie library view option</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Friday</source>
|
||||
<translation>Péntek</translation>
|
||||
<extracomment>Day of Week</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Delete Saved</source>
|
||||
<translation>Mentettek Törlése</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>There was an error retrieving the data for this item from the server.</source>
|
||||
<translation>Hiba történt, mikor a kliens ezt az elemet próbálta lekérni a szerverről.</translation>
|
||||
<extracomment>Dialog detail when unable to load Content from Server</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Close</source>
|
||||
<translation>Bezárás</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>On Now</source>
|
||||
<translation>Most</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error Retrieving Content</source>
|
||||
<translation>Hiba történt a tartalom letöltésekor</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>Hiba történt ennek az elemnek a letöltése közben.</translation>
|
||||
<extracomment>Dialog detail when error occurs during playback</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Loading Channel Data</source>
|
||||
<translation>Csatornaadatok betöltése</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error loading Channel Data</source>
|
||||
<translation>Hiba történt a csatornaadatok betöltésekor</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>
|
||||
<comment>Name or Title field of media item</comment>
|
||||
<source>TITLE</source>
|
||||
<translation>Név</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>IMDB_RATING</source>
|
||||
<translation>IMDb Értékelés</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>DATE_PLAYED</source>
|
||||
<translation>Lejátszás Dátuma</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>OFFICIAL_RATING</source>
|
||||
<translation>Korhatár</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>PLAY_COUNT</source>
|
||||
<translation>Lejátszások Száma</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>RELEASE_DATE</source>
|
||||
<translation>Megjelenés dátuma</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>RUNTIME</source>
|
||||
<translation>Futási idő</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Ended at</source>
|
||||
<translation>Ekkor ért véget</translation>
|
||||
<extracomment>(Past Tense) For defining time when a program will ended (e.g. Ended at 08:00) </extracomment>
|
||||
</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>Cancel Series Recording</source>
|
||||
<translation>Sorozatfelvétel Megszakítása</translation>
|
||||
</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>Movies</source>
|
||||
<translation>Filmek</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>yesterday</source>
|
||||
<translation>tegnap</translation>
|
||||
<extracomment>Previous day</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>tomorrow</source>
|
||||
<translation>holnap</translation>
|
||||
<extracomment>Next day</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Repeat</source>
|
||||
<translation>Ismétlés</translation>
|
||||
<extracomment>If TV Shows has previously been broadcasted</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Channels</source>
|
||||
<translation>Csatornák</translation>
|
||||
<extracomment>Menu option for showing Live TV Channel List</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>View Channel</source>
|
||||
<translation>Csatorna Megtekintése</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Record</source>
|
||||
<translation>Felvétel</translation>
|
||||
</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>Unknown</source>
|
||||
<translation>Ismeretlen</translation>
|
||||
<extracomment>Title for a cast member for which we have no information for</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>Save Credentials?</source>
|
||||
<translation>Hitelesítő adatok mentése?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>today</source>
|
||||
<translation>ma</translation>
|
||||
<extracomment>Current day</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Sunday</source>
|
||||
<translation>Vasárnap</translation>
|
||||
<extracomment>Day of Week</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Started</source>
|
||||
<translation>Elkezdődött</translation>
|
||||
<extracomment>(Past Tense) For defining a day and time when a program started (e.g. Started Wednesday, 08:00) </extracomment>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name></name>
|
||||
|
|
|
@ -180,6 +180,141 @@
|
|||
<source>Server</source>
|
||||
<translation>Server</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Change Server</source>
|
||||
<translation>Cambia Server</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error During Playback</source>
|
||||
<translation>Errore Durante la Riproduzione</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>Si è verificato un errore nel recupero dei dati di questo elemento dal server.</translation>
|
||||
<extracomment>Dialog detail when unable to load Content from Server</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>today</source>
|
||||
<translation>oggi</translation>
|
||||
<extracomment>Current day</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Age</source>
|
||||
<translation>Età</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>yesterday</source>
|
||||
<translation>ieri</translation>
|
||||
<extracomment>Previous day</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Save Credentials?</source>
|
||||
<translation>Salvare le Credenziali?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<comment>Name or Title field of media item</comment>
|
||||
<source>TITLE</source>
|
||||
<translation>Nome</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>IMDB_RATING</source>
|
||||
<translation>Valutazione IMDb</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>OFFICIAL_RATING</source>
|
||||
<translation>Classificazione Parentale</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>On Now</source>
|
||||
<translation>In onda ora</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Died</source>
|
||||
<translation>Data di Morte</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>DATE_ADDED</source>
|
||||
<translation>Data di Aggiunta</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>DATE_PLAYED</source>
|
||||
<translation>Data di Riproduzione</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Delete Saved</source>
|
||||
<translation>Elimina Salvati</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Extras</source>
|
||||
<translation>Extra</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>Questo %1 non contiene elementi</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Born</source>
|
||||
<translation>Data di Nascita</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>More Like This</source>
|
||||
<translation>Titoli Simili</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Episodes</source>
|
||||
<translation>Episodi</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Loading Channel Data</source>
|
||||
<translation>Caricamento dei Dati del Canale</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error loading Channel Data</source>
|
||||
<translation>Errore nel Caricamento dei Dati del Canale</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>CRITIC_RATING</source>
|
||||
<translation>Valutazione della Critica</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Press 'OK' to Close</source>
|
||||
<translation>Premi 'OK' per Chiudere</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Sunday</source>
|
||||
<translation>Domenica</translation>
|
||||
<extracomment>Day of Week</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Monday</source>
|
||||
<translation>Lunedì</translation>
|
||||
<extracomment>Day of Week</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>An error was encountered while playing this item.</source>
|
||||
<translation>Si è verificato un errore durante la riproduzione di questo elemento.</translation>
|
||||
<extracomment>Dialog detail when error occurs during playback</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>tomorrow</source>
|
||||
<translation>domani</translation>
|
||||
<extracomment>Next day</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error Retrieving Content</source>
|
||||
<translation>Errore nel Recuperare i Contenuti</translation>
|
||||
<extracomment>Dialog title when unable to load Content from Server</extracomment>
|
||||
</message>
|
||||
<message>
|
||||
<source>Unable to load Channel Data from the server</source>
|
||||
<translation>Impossibile caricare i Dati del Canale dal server</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Sign Out</source>
|
||||
<translation>Esci</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name></name>
|
||||
|
|
|
@ -180,6 +180,14 @@
|
|||
<source>Server</source>
|
||||
<translation>Server</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Delete Saved</source>
|
||||
<translation>Şterge salvările</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Save Credentials?</source>
|
||||
<translation>Salvați datele de conectare?</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name></name>
|
||||
|
|
|
@ -16,19 +16,6 @@
|
|||
"title": "Playback",
|
||||
"description": "Settings relating to playback and supported codec and media types.",
|
||||
"children": [
|
||||
{
|
||||
"title": "Audio Codec Support",
|
||||
"description": "Choose your preferred audio codec when transcoding multichannel audio.",
|
||||
"children": [
|
||||
{
|
||||
"title": "DTS",
|
||||
"description": "Force all transcodes to use DTS instead of the default EAC3. The device must support DTS for this setting to have an effect.",
|
||||
"settingName": "playback.forceDTS",
|
||||
"type": "bool",
|
||||
"default": "false"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Bitrate Limit",
|
||||
"description": "Configure the maximum playback bitrate.",
|
||||
|
@ -187,6 +174,35 @@
|
|||
"type": "integer",
|
||||
"default": "30"
|
||||
},
|
||||
{
|
||||
"title": "Preferred Audio Codec",
|
||||
"description": "Use the selected audio codec for transcodes. If the device or stream does not support it, a fallback codec will be used.",
|
||||
"settingName": "playback.preferredAudioCodec",
|
||||
"type": "radio",
|
||||
"default": "auto",
|
||||
"options": [
|
||||
{
|
||||
"title": "Use system settings",
|
||||
"id": "auto"
|
||||
},
|
||||
{
|
||||
"title": "AAC",
|
||||
"id": "aac"
|
||||
},
|
||||
{
|
||||
"title": "DD (AC3)",
|
||||
"id": "ac3"
|
||||
},
|
||||
{
|
||||
"title": "DD+ (EAC3)",
|
||||
"id": "eac3"
|
||||
},
|
||||
{
|
||||
"title": "DTS",
|
||||
"id": "dts"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Text Subtitles Only",
|
||||
"description": "Only display text subtitles to minimize transcoding.",
|
||||
|
|
|
@ -195,21 +195,13 @@ function getTranscodingProfiles() as object
|
|||
' does the users setup support surround sound?
|
||||
maxAudioChannels = "2" ' jellyfin expects this as a string
|
||||
' in order of preference from left to right
|
||||
audioCodecs = ["mp3", "vorbis", "opus", "flac", "alac", "ac4", "pcm", "wma", "wmapro"]
|
||||
surroundSoundCodecs = ["eac3", "ac3", "dts"]
|
||||
if globalUserSettings["playback.forceDTS"] = true
|
||||
surroundSoundCodecs = ["dts", "eac3", "ac3"]
|
||||
end if
|
||||
audioCodecs = ["eac3", "ac3", "dts", "mp3", "vorbis", "opus", "flac", "alac", "ac4", "pcm", "wma", "wmapro"]
|
||||
|
||||
surroundSoundCodec = invalid
|
||||
if di.GetAudioOutputChannel() = "5.1 surround"
|
||||
maxAudioChannels = "6"
|
||||
for each codec in surroundSoundCodecs
|
||||
if di.CanDecodeAudio({ Codec: codec, ChCnt: 6 }).Result
|
||||
surroundSoundCodec = codec
|
||||
if di.CanDecodeAudio({ Codec: codec, ChCnt: 8 }).Result
|
||||
maxAudioChannels = "8"
|
||||
end if
|
||||
for each codec in audioCodecs
|
||||
if di.CanDecodeAudio({ Codec: codec, ChCnt: 8 }).Result
|
||||
maxAudioChannels = "8"
|
||||
exit for
|
||||
end if
|
||||
end for
|
||||
|
@ -403,38 +395,10 @@ function getTranscodingProfiles() as object
|
|||
mp4Array.Conditions = [getMaxHeightArray(), getMaxWidthArray()]
|
||||
end if
|
||||
|
||||
' surround sound
|
||||
if surroundSoundCodec <> invalid
|
||||
' add preferred surround sound codec to TranscodingProfile
|
||||
transcodingProfiles.push({
|
||||
"Container": surroundSoundCodec,
|
||||
"Type": "Audio",
|
||||
"AudioCodec": surroundSoundCodec,
|
||||
"Context": "Streaming",
|
||||
"Protocol": "http",
|
||||
"MaxAudioChannels": maxAudioChannels
|
||||
})
|
||||
transcodingProfiles.push({
|
||||
"Container": surroundSoundCodec,
|
||||
"Type": "Audio",
|
||||
"AudioCodec": surroundSoundCodec,
|
||||
"Context": "Static",
|
||||
"Protocol": "http",
|
||||
"MaxAudioChannels": maxAudioChannels
|
||||
})
|
||||
|
||||
' put codec in front of AudioCodec string
|
||||
if tsArray.AudioCodec = ""
|
||||
tsArray.AudioCodec = surroundSoundCodec
|
||||
else
|
||||
tsArray.AudioCodec = surroundSoundCodec + "," + tsArray.AudioCodec
|
||||
end if
|
||||
|
||||
if mp4Array.AudioCodec = ""
|
||||
mp4Array.AudioCodec = surroundSoundCodec
|
||||
else
|
||||
mp4Array.AudioCodec = surroundSoundCodec + "," + mp4Array.AudioCodec
|
||||
end if
|
||||
' add user-selected preferred codec to the front of the list
|
||||
if globalUserSettings["playback.preferredAudioCodec"] <> "auto"
|
||||
tsArray.AudioCodec = globalUserSettings["playback.preferredAudioCodec"] + "," + tsArray.AudioCodec
|
||||
mp4Array.AudioCodec = globalUserSettings["playback.preferredAudioCodec"] + "," + mp4Array.AudioCodec
|
||||
end if
|
||||
|
||||
transcodingProfiles.push(tsArray)
|
||||
|
|
Loading…
Reference in New Issue
Block a user