Feature #2573 » 0005-Remove-support-for-VLC-NPAPI-plugin-and-replace-it-w.patch
css/siteprefs.css | ||
---|---|---|
width: 120px;
|
||
}
|
||
div#vlcControls {
|
||
text-align: center;
|
||
}
|
||
.notify-win {
|
||
margin: 0px auto;
|
||
max-width: 480px; /* depends on the tip backround image width */
|
css/styles.css | ||
---|---|---|
border-top: 1px solid #C0C1DA;
|
||
border-bottom: 1px solid #C0C1DA;
|
||
}
|
||
/* ##############################
|
||
# VLC page
|
||
##############################
|
||
*/
|
||
div#vlcControls {
|
||
padding-top: 5px;
|
||
text-align: center;
|
||
}
|
||
live/js/live/pageenhance.js | ||
---|---|---|
options: {
|
||
epgLinkSelector: 'a[href^="epginfo.html?epgid"]',
|
||
actionLinkSelector: 'a[href^="vdr_request/"]',
|
||
vlcLinkSelector: 'a[href^="vlc.html?"]',
|
||
vlcWinOptions: {
|
||
size: { width: 720, height: 640 }
|
||
},
|
||
editTimerSelector: 'a[href^="edit_timer.html?timerid"]',
|
||
hintTipSelector: '*[title]',
|
||
hintClassName: 'hint',
|
||
... | ... | |
$$(this.options.epgLinkSelector).each(this.epgPopup.bind(this));
|
||
this.addHintTips($$(this.options.hintTipSelector));
|
||
$$(this.options.actionLinkSelector).each(this.vdrRequest.bind(this));
|
||
$$(this.options.vlcLinkSelector).each(this.vlcRequest.bind(this));
|
||
$$(this.options.datePickerSelector).each(this.datePicker.bind(this));
|
||
// the following line activates timer editing in popup window.
|
||
// but it does not yet work like expected. So we leave it deactivated currently.
|
||
... | ... | |
elems = $$(sel);
|
||
this.addHintTips(elems);
|
||
$$('#' + id + ' ' + this.options.actionLinkSelector).each(this.vdrRequest.bind(this));
|
||
$$('#' + id + ' ' + this.options.vlcLinkSelector).each(this.vlcRequest.bind(this));
|
||
},
|
||
// Epg Popup function. Apply to all elements that should
|
||
... | ... | |
}.bindWithEvent(this, el));
|
||
},
|
||
// function that opens a window for streaming of tv data.
|
||
vlcRequest: function(el){
|
||
el.addEvent('click', function(event, element){
|
||
var href = $pick(element.href, "");
|
||
if (href != "") {
|
||
href += "&async=1";
|
||
var bw = new BrowserWin("vlcstream", href, this.options.vlcWinOptions);
|
||
event.stop();
|
||
return false;
|
||
}
|
||
return true;
|
||
}.bindWithEvent(this, el));
|
||
},
|
||
// change normal 'title'-Attributes into enhanced hinttips
|
||
// usesd by domExtend and domReadySetup functions.
|
||
addHintTips: function(elems){
|
live/js/live/vlc.js | ||
---|---|---|
/*
|
||
* This is part of the live vdr plugin. See COPYING for license information.
|
||
*
|
||
* VLC class.
|
||
*
|
||
* This class adds convenience methods to a embeded vlc media player
|
||
* object and allows control of the player and provides an event interface.
|
||
*/
|
||
/*
|
||
Class: VLC
|
||
A VLC plugin wrapper.
|
||
Arguments:
|
||
id - The id of the embedded vlc plugin.
|
||
options - optional arguments, helping to tweak this class to your html.
|
||
Options:
|
||
autoresize - if true, the player will be resized with the browser window.
|
||
controlsContainer - the id of the DOM element that contains the controls.
|
||
controls - an array describing which controls are provided by the html
|
||
page. Current supported types: play, mute, screen,
|
||
close. for each type your page wants to provide an
|
||
inline object is expected with with the following
|
||
properties:
|
||
type - one of the types above to map to the class internal
|
||
functions for that type.
|
||
id - the DOM id of the control.
|
||
classes - on: class to add when toggled on.
|
||
- off: class to add when toggled off.
|
||
Events:
|
||
ontoggle - event fired after the toggling of one property took place.
|
||
*/
|
||
var VLC = new Class({
|
||
options: {
|
||
autoresize: true,
|
||
controlsContainer: "vlcControls",
|
||
// select by type the actions should be performed by a
|
||
// instanciated object of class VLC. Possible types you find
|
||
// below in the 'actions' definition.
|
||
controls: [
|
||
{ type: 'play',
|
||
id: "TogglePlay",
|
||
classes: { on: "red", off: "green" }},
|
||
{ type: 'mute',
|
||
id: "ToggleMute",
|
||
classes: { on: "green", off: "red" }},
|
||
{ type: 'screen',
|
||
id: "FullScreen",
|
||
classes: { on: "blue", off: "blue" }},
|
||
{ type: 'close',
|
||
id: "Close",
|
||
classes: { on: "yellow", off: "yellow" }},
|
||
],
|
||
offset: 5,
|
||
playRecording: false
|
||
},
|
||
initialize: function(id, options){
|
||
this.setOptions(options);
|
||
this.id = id;
|
||
window.addEvent('domready', this.playerSetup.bind(this));
|
||
},
|
||
playerSetup: function(){
|
||
this.vlc = $(this.id);
|
||
this.newVlcApi = (this.vlc.VersionInfo != null);
|
||
// add here new actions these class might support:
|
||
var actions = {
|
||
play: { check: this.isPlaying, toggle: this.togglePlay },
|
||
mute: { check: this.isMuted, toggle: this.toggleMute },
|
||
screen: { check: Class.empty, toggle: this.toggleScreen },
|
||
close: { check: Class.empty, toggle: this.close }};
|
||
$each(this.options.controls, function(item, idx){
|
||
var elem = $(item.id);
|
||
if (elem && actions[item.type]) {
|
||
item.fns = actions[item.type];
|
||
}
|
||
}, this);
|
||
this.setStates();
|
||
var idx = 0;
|
||
$each(this.options.controls, function(item){
|
||
if (item.fns && item.fns.toggle)
|
||
$(item.id).addEvent('click', function (event, item){
|
||
var toggle = item.fns.toggle.bind(this);
|
||
var check = item.fns.check.bind(this);
|
||
toggle();
|
||
this.fireEvent('toggle', [item.id, check()]);
|
||
}.bindWithEvent(this, item));
|
||
}, this);
|
||
if (this.options.autoresize) {
|
||
window.addEvent('resize', this.playerResize.bind(this));
|
||
}
|
||
},
|
||
enableDeinterlace: function(){
|
||
if (this.newVlcApi) {
|
||
this.vlc.video.deinterlace.enable("yadif");
|
||
}
|
||
},
|
||
disableDeinterlace: function(){
|
||
if (this.newVlcApi) {
|
||
this.vlc.video.deinterlace.disable();
|
||
}
|
||
},
|
||
playerResize: function(el){
|
||
var winwidth = window.getWidth();
|
||
var winheight = window.getHeight();
|
||
winheight -= $(this.options.controlsContainer).getSize().size.y;
|
||
winheight -= this.options.offset;
|
||
this.vlc.setStyle('width', winwidth);
|
||
this.vlc.setStyle('height', winheight);
|
||
},
|
||
isPlaying: function(){
|
||
if (this.newVlcApi)
|
||
return this.vlc.playlist && this.vlc.playlist.isPlaying;
|
||
else
|
||
return this.vlc.isplaying();
|
||
},
|
||
isMuted: function(){
|
||
if (this.newVlcApi)
|
||
return this.vlc.audio && this.vlc.audio.mute;
|
||
else {
|
||
var res = this.vlc.get_volume();
|
||
return 0 == res;
|
||
}
|
||
},
|
||
togglePlay: function(){
|
||
if (this.newVlcApi)
|
||
if (!this.options.playRecording)
|
||
this.vlc.playlist.togglePause();
|
||
else {
|
||
if (this.vlc.playlist.isPlaying) {
|
||
clearTimeout(this.deint);
|
||
this.disableDeinterlace();
|
||
this.vlc.playlist.stop();
|
||
else {
|
||
this.vlc.playlist.play();
|
||
this.deint = setTimeout(this.enableDeinterlace, 500);
|
||
}
|
||
}
|
||
else {
|
||
if (this.isPlaying())
|
||
this.vlc.stop();
|
||
else
|
||
this.vlc.play();
|
||
}
|
||
this.setStates();
|
||
},
|
||
toggleMute: function(){
|
||
if (this.newVlcApi)
|
||
this.vlc.audio.toggleMute();
|
||
else
|
||
this.vlc.mute();
|
||
this.setStates();
|
||
},
|
||
toggleScreen: function(){
|
||
if (this.newVlcApi)
|
||
this.vlc.video.toggleFullscreen();
|
||
else
|
||
this.vlc.fullscreen();
|
||
this.setStates();
|
||
},
|
||
close: function(){
|
||
window.close();
|
||
},
|
||
setStates: function(){
|
||
$each(this.options.controls, function(item, idx){
|
||
if (item.fns && (Class.empty != item.fns.check)) {
|
||
var fn = item.fns.check.bind(this);
|
||
if (fn()) {
|
||
$(item.id).removeClass(item.classes.off);
|
||
$(item.id).addClass(item.classes.on);
|
||
}
|
||
else {
|
||
$(item.id).removeClass(item.classes.on);
|
||
$(item.id).addClass(item.classes.off);
|
||
}
|
||
}
|
||
}, this);
|
||
}
|
||
});
|
||
VLC.implement(new Events, new Options);
|
pages/Makefile | ||
---|---|---|
OBJS := menu.o recordings.o schedule.o multischedule.o screenshot.o \
|
||
timers.o whats_on.o switch_channel.o keypress.o remote.o \
|
||
channels_widget.o edit_timer.o error.o pageelems.o tooltip.o \
|
||
vlc.o searchtimers.o edit_searchtimer.o searchresults.o \
|
||
searchtimers.o edit_searchtimer.o searchresults.o \
|
||
searchepg.o login.o ibox.o xmlresponse.o play_recording.o \
|
||
pause_recording.o stop_recording.o ffw_recording.o \
|
||
rwd_recording.o setup.o content.o epginfo.o timerconflicts.o \
|
pages/multischedule.ecpp | ||
---|---|---|
</%cpp>
|
||
<td> <div class="boxheader"> <div> <div><$ channel_names[channel] $> <# reply.sout() automatically escapes special characters to html entities #>
|
||
<& pageelems.ajax_action_href action="switch_channel" tip=(tr("Switch to this channel.")) param=(channel_IDs[channel]) image="zap.png" alt="" &>
|
||
<& pageelems.vlc_stream_channel channelId=(channel_IDs[channel]) &>
|
||
<& pageelems.m3u_playlist_channel channelId=(channel_IDs[channel]) &>
|
||
</div></div> </div></td>
|
||
<td class="time spacer"> </td>
|
||
... | ... | |
% }
|
||
</select>
|
||
% // <& pageelems.ajax_action_href action="switch_channel" tip=(tr("Switch to this channel.")) param=(Channel->GetChannelID()) image="zap.png" alt="" &>
|
||
% // <& pageelems.vlc_stream_channel channelId=(Channel->GetChannelID()) &>
|
||
</span>
|
||
</form>
|
||
</%def>
|
pages/pageelems.ecpp | ||
---|---|---|
<%cpp> if (LiveSetup().GetShowIMDb()) { </%cpp><a href="http://www.imdb.com/find?s=all&q=<$ StringUrlEncode(title) $>" target="_blank"><img src="<$ LiveSetup().GetThemedLink("img", "imdb.png") $>" alt="" <& tooltip.hint text=(tr("Find more at the Internet Movie Database.")) &>></img></a> <%cpp> } </%cpp>
|
||
</%def>
|
||
<# ---------------------------------------------------------------------- #>
|
||
<%def vlc_stream_channel>
|
||
<%args>
|
||
tChannelID channelId;
|
||
</%args>
|
||
<%cpp> if (LiveSetup().GetUseStreamdev() && LiveFeatures<features::streamdev_server>().Loaded()) { </%cpp><a href="vlc.html?channel=<$ channelId $>"><img src="<$ LiveSetup().GetThemedLink("img", "stream_button.png") $>" alt="" <& tooltip.hint text=(tr("Stream this channel into browser.")) &>></img></a><%cpp> } </%cpp>
|
||
</%def>
|
||
<# ---------------------------------------------------------------------- #>
|
||
<%def vlc_stream_recording>
|
||
<%args>
|
||
string recid;
|
||
string linkText;
|
||
</%args>
|
||
<%cpp>
|
||
#if TNT_WATCHDOG_SILENCE
|
||
{
|
||
</%cpp><a href="vlc.html?recid=<$ recid $>"><img src="<$ LiveSetup().GetThemedLink("img", "stream_button.png") $>" alt="" <& tooltip.hint text=(tr("Stream this recording into browser.")) &>></img> <$ linkText $></a>
|
||
<%cpp>
|
||
}
|
||
#endif
|
||
</%cpp>
|
||
</%def>
|
||
<# ---------------------------------------------------------------------- #>
|
||
<%def m3u_playlist_channel>
|
||
<%args>
|
||
tChannelID channelId;
|
||
</%args>
|
||
<%cpp> if (LiveSetup().GetUseStreamdev() && LiveFeatures<features::streamdev_server>().Loaded()) { </%cpp><a href="playlist.m3u?channel=<$ channelId $>"><img src="<$ LiveSetup().GetThemedLink("img", "playlist.png") $>" alt="" <& tooltip.hint text=(tr("Stream this channel into media player.")) &>></img></a><%cpp> } </%cpp>
|
||
<%cpp> if (LiveSetup().GetUseStreamdev() && LiveFeatures<features::streamdev_server>().Loaded()) { </%cpp><a href="playlist.m3u?channel=<$ channelId $>"><img src="<$ LiveSetup().GetThemedLink("img", "stream_button.png") $>" alt="" <& tooltip.hint text=(tr("Stream this channel into media player.")) &>></img></a><%cpp> } </%cpp>
|
||
</%def>
|
||
<# ---------------------------------------------------------------------- #>
|
||
... | ... | |
<%cpp>
|
||
#if TNT_WATCHDOG_SILENCE
|
||
{
|
||
</%cpp><a href="playlist.m3u?recid=<$ recid $>"><img src="<$ LiveSetup().GetThemedLink("img", "playlist.png") $>" alt="" <& tooltip.hint text=(tr("Stream this recording into media player.")) &>></img> <$ linkText $></a>
|
||
</%cpp><a href="playlist.m3u?recid=<$ recid $>"><img src="<$ LiveSetup().GetThemedLink("img", "stream_button.png") $>" alt="" <& tooltip.hint text=(tr("Stream this recording into media player.")) &>></img> <$ linkText $></a>
|
||
<%cpp>
|
||
}
|
||
#endif
|
||
... | ... | |
}
|
||
if ((duration == 0) || (elapsed >= 0)) {
|
||
</%cpp>
|
||
<& pageelems.vlc_stream_channel channelId=(channelId) &>
|
||
<& pageelems.m3u_playlist_channel channelId=(channelId) &>
|
||
<%cpp>
|
||
}
|
||
... | ... | |
<td class="action leftcol <? lastCurrentChanel ? "bottomrow"?>"><& pageelems.event_timer epgid=(epgid) &></td>
|
||
<td class="action <? lastCurrentChanel ? "bottomrow"?>"><& pageelems.ajax_action_href action="switch_channel" tip=(tr("Switch to this channel.")) param=(channelId) image="zap.png" alt="" &></td>
|
||
<td class="action <? lastCurrentChanel ? "bottomrow"?>"><%cpp>if (LiveFeatures<features::epgsearch>().Recent() && eventId != 0) { </%cpp><a href="searchresults.html?searchplain=<$ StringUrlEncode(title) $>"><img src="<$ LiveSetup().GetThemedLink("img", "search.png") $>" alt="" <& tooltip.hint text=(tr("Search for repeats.")) &>></img></a><%cpp> } else { </%cpp><img src="img/transparent.png" width="16" height="16"><%cpp> } </%cpp></td>
|
||
<td class="action <? lastCurrentChanel ? "bottomrow"?>"><%cpp>if ((duration == 0) || (elapsed > 0)) { </%cpp><& pageelems.vlc_stream_channel channelId=(channelId) &><& pageelems.m3u_playlist_channel channelId=(channelId) &><%cpp> } else { </%cpp><img src="img/transparent.png" width="16" height="16"><%cpp> } </%cpp></td>
|
||
<td class="action <? lastCurrentChanel ? "bottomrow"?>"><%cpp>if ((duration == 0) || (elapsed > 0)) { </%cpp><& pageelems.m3u_playlist_channel channelId=(channelId) &><%cpp> } else { </%cpp><img src="img/transparent.png" width="16" height="16"><%cpp> } </%cpp></td>
|
||
<td class="action <? lastCurrentChanel ? "bottomrow"?>">
|
||
<%cpp>
|
||
if (eventId != 0) {
|
pages/recordings.ecpp | ||
---|---|---|
string title;
|
||
</%args>
|
||
<& pageelems.ajax_action_href action="play_recording" param=(id) tip=(tr("play this recording.")) image="play.png" alt="" &>
|
||
<& pageelems.vlc_stream_recording recid=(id) &>
|
||
<& pageelems.m3u_playlist_recording recid=(id) &>
|
||
<& pageelems.imdb_info_href title=(title) &>
|
||
<& recordings.edit_rec id=(id) &>
|
pages/remote.ecpp | ||
---|---|---|
<%def remote_actions>
|
||
<b><$ tr("Selection") $></b>:
|
||
<{ if ( LiveGrabImageManager().CanGrab()) { }>
|
||
<input type="radio" name="screenCon" id="screenCon_grab" onchange="changeScreenContent()"/> <label for="screenCon_grab"><$ tr("Snapshot interval") $>:</label> <select name="interval" onchange="ChangeInterval()"></select> <& pageelems.vlc_stream_channel channelId=(Channel->GetChannelID()) &> -
|
||
<input type="radio" name="screenCon" id="screenCon_grab" onchange="changeScreenContent()"/> <label for="screenCon_grab"><$ tr("Snapshot interval") $>:</label> <select name="interval" onchange="ChangeInterval()"></select> -
|
||
<{ } }>
|
||
<input type="radio" name="screenCon" id="screenCon_osd" onchange="changeScreenContent()" /> <label for="screenCon_osd">OSD</label> -
|
||
<input type="radio" name="screenCon" id="screenCon_none" onchange="changeScreenContent()" /> <label for="screenCon_osd"><$ tr("Stop") $></label>
|
pages/schedule.ecpp | ||
---|---|---|
<label for="channel"><$ tr("Channel") $>: <span class="bold"><$ Channel->Number() $></span></label>
|
||
<& channels_widget name=("channel") selected=(Channel ? *Channel->GetChannelID().ToString() : "") onchange=("document.forms.channels.submit()") &>
|
||
<& pageelems.ajax_action_href action="switch_channel" tip=(tr("Switch to this channel.")) param=(Channel->GetChannelID()) image="zap.png" alt="" &>
|
||
<& pageelems.vlc_stream_channel channelId=(Channel->GetChannelID()) &>
|
||
<& pageelems.m3u_playlist_channel channelId=(Channel->GetChannelID()) &>
|
||
</span>
|
||
</form>
|
pages/vlc.ecpp | ||
---|---|---|
<%pre>
|
||
#include <setup.h>
|
||
#include <tools.h>
|
||
#include <users.h>
|
||
using namespace std;
|
||
using namespace vdrlive;
|
||
</%pre>
|
||
<%args>
|
||
tChannelID channel;
|
||
string async;
|
||
string recid;
|
||
</%args>
|
||
<%session scope="global">
|
||
bool logged_in(false);
|
||
</%session>
|
||
<%request scope="page">
|
||
cChannel* Channel;
|
||
</%request>
|
||
<%include>page_init.eh</%include>
|
||
<%cpp>
|
||
if (!logged_in && LiveSetup().UseAuth()) return reply.redirect("login.html");
|
||
if (!cUser::CurrentUserHasRightTo(UR_STARTREPLAY))
|
||
throw HtmlError( tr("Sorry, no permission. Please contact your administrator!") );
|
||
bool asyncReq = !async.empty() && (lexical_cast<int>(async) != 0);
|
||
// the availabilty of Channel signals that we will do live tv streaming.
|
||
Channel = 0;
|
||
if (recid.empty()) {
|
||
pageTitle = tr("VLC: live video stream");
|
||
#if VDRVERSNUM >= 20301
|
||
LOCK_CHANNELS_READ;
|
||
Channel = (cChannel *)Channels->GetByChannelID(channel);
|
||
#else
|
||
ReadLock channelsLock(Channels);
|
||
if (!channelsLock) {
|
||
throw HtmlError(tr("Couldn't aquire access to channels, please try again later."));
|
||
}
|
||
Channel = Channels.GetByChannelID(channel);
|
||
#endif
|
||
if (Channel == 0) {
|
||
throw HtmlError( tr("Couldn't find channel or no channels available. Maybe you mistyped your request?") );
|
||
}
|
||
}
|
||
else {
|
||
pageTitle = tr("VLC: play recording");
|
||
}
|
||
</%cpp>
|
||
<& pageelems.doc_type &>
|
||
<html>
|
||
<head>
|
||
<title>VDR-Live - <$ pageTitle $></title>
|
||
<& pageelems.stylesheets &>
|
||
<%cpp>
|
||
if (!asyncReq) {
|
||
</%cpp>
|
||
<& pageelems.ajax_js &>
|
||
<%cpp>
|
||
}
|
||
else {
|
||
</%cpp>
|
||
<script type="text/javascript" src="js/mootools/mootools.v1.11.js"></script>
|
||
<%cpp>
|
||
}
|
||
</%cpp>
|
||
<script type="text/javascript" src="js/live/vlc.js"></script>
|
||
<script type="text/javascript"><!--
|
||
var vlcControl = new VLC("video1", {
|
||
<? !asyncReq ? "autoresize: false," ?>
|
||
<? !Channel ? "playRecording: true," ?>
|
||
offset: 5
|
||
});
|
||
vlcControl.addEvent('toggle', function(id, state){
|
||
var text = null;
|
||
switch (id) {
|
||
case "TogglePlay":
|
||
text = state ? "<$ tr("Stop") $>" : "<$ tr("Play") $>";
|
||
break;
|
||
case "ToggleMute":
|
||
text = state ? "<$ tr("Sound on") $>" : "<$ tr("Sound off") $>";
|
||
break;
|
||
}
|
||
if (text)
|
||
$(id).setHTML(text);
|
||
});
|
||
--></script>
|
||
</head>
|
||
<body>
|
||
<%cpp>
|
||
if (!asyncReq) {
|
||
</%cpp>
|
||
<& pageelems.logo &>
|
||
<& menu active="vlc" &>
|
||
<div class="inhalt">
|
||
<%cpp>
|
||
}
|
||
</%cpp>
|
||
<%cpp>
|
||
string server = request.getHost();
|
||
server = server.substr(0, server.rfind(':'));
|
||
string videourl;
|
||
if (Channel != 0) {
|
||
int streamdevPort = LiveSetup().GetStreamdevPort();
|
||
videourl = string("http://") + server + ":" + lexical_cast<string,int>(streamdevPort) + "/" + LiveSetup().GetStreamdevType() + "/" + *Channel->GetChannelID().ToString();
|
||
}
|
||
else {
|
||
videourl = string("http://") + server + ":" + lexical_cast<string,int>(LiveSetup().GetServerPort()) + "/recstream.html?recid=" + recid;
|
||
}
|
||
</%cpp>
|
||
<embed type="application/x-vlc-plugin" pluginspage="http://www.videolan.org/" version="VideoLAN.VLCPlugin.2" id="video1" name="video1" autoplay="yes" loop="no" width="720" height="576" target="<$ videourl $>" />
|
||
<& vlc.controls videourl=(videourl) asyncReq=(asyncReq) &>
|
||
<%cpp>
|
||
if (!asyncReq) {
|
||
</%cpp>
|
||
</div>
|
||
<%cpp>
|
||
}
|
||
</%cpp>
|
||
</body>
|
||
</html>
|
||
<%include>page_exit.eh</%include>
|
||
<%def controls>
|
||
<%args>
|
||
string videourl;
|
||
bool asyncReq;
|
||
</%args>
|
||
<div id="vlcControls">
|
||
<button id="TogglePlay" type="button" class="green"><$ tr("Stop") $></button>
|
||
<button id="ToggleMute" type="button" class="red"><$ tr("Sound off") $></button>
|
||
<button id="FullScreen" type="button" class="blue"><$ tr("Fullscreen") $></button>
|
||
<%cpp>
|
||
if (asyncReq) {
|
||
</%cpp>
|
||
<button id="Close" type="button" class="yellow"><$ tr("Close") $></button>
|
||
<%cpp>
|
||
}
|
||
</%cpp>
|
||
<!-- --><p><$ tr("VLC media URL") $>: <span class="bold"><a href="<$ videourl $>"><$ videourl $></a></span></p><!-- -->
|
||
</div>
|
||
</%def>
|
||
po/cs_CZ.po | ||
---|---|---|
msgid "New user"
|
||
msgstr "Nový uživatel"
|
||
msgid "Search results"
|
||
msgstr "Výsledky vyhledávání"
|
||
msgid "No search results"
|
||
msgstr "žádné výsledky vyhledávání"
|
||
msgid "%A, %b %d %Y"
|
||
msgstr "%a, %d.%m. "
|
||
msgid "Click to view details."
|
||
msgstr "Detaily"
|
||
msgid "Find more at the Internet Movie Database."
|
||
msgstr "Vyhledej více na Internet Movie Database."
|
||
msgid "Couldn't find timer. Maybe you mistyped your request?"
|
||
msgstr "Nelze najít nahrávaní. Je správně zadáno?"
|
||
msgid "Stream this channel into media player."
|
||
msgstr ""
|
||
msgid "Please set a title for the timer!"
|
||
msgstr "Prosím nastavte název nahrávání!"
|
||
msgid "Stream this recording into media player."
|
||
msgstr ""
|
||
#. TRANSLATORS: only adjust the ordering and separators, don't translate the m's, d's and y's
|
||
msgid "mm/dd/yyyy"
|
||
msgstr "dd.mm.yyyy"
|
||
msgid "Record this"
|
||
msgstr "Nahrát"
|
||
msgid "Edit timer"
|
||
msgstr "Změna nahrávání"
|
||
msgid "New timer"
|
||
msgstr "Nové nahrávání"
|
||
msgid "loading data"
|
||
msgstr "aktualizace údajů"
|
||
msgid "Title"
|
||
msgstr "Název"
|
||
msgid "an error occured!"
|
||
msgstr "problém!"
|
||
msgid "Directory"
|
||
msgstr "Složka"
|
||
msgid "Request succeeded!"
|
||
msgstr "Požadevek úspěšný."
|
||
msgid "Weekday"
|
||
msgstr "Den v týdnu"
|
||
msgid "Request failed!"
|
||
msgstr "Požadavek selhal!"
|
||
msgid "Sunday"
|
||
msgstr "Neděle"
|
||
msgid "Monday"
|
||
msgstr "Pondělí"
|
||
... | ... | |
msgid "Saturday"
|
||
msgstr "Sobota"
|
||
msgid "Sunday"
|
||
msgstr "Neděle"
|
||
#. TRANSLATORS: only adjust the ordering and separators, don't translate the m's, d's and y's
|
||
msgid "mm/dd/yyyy"
|
||
msgstr "dd.mm.yyyy"
|
||
msgid "January"
|
||
msgstr "leden"
|
||
msgid "February"
|
||
msgstr "únor"
|
||
msgid "March"
|
||
msgstr "březen"
|
||
msgid "April"
|
||
msgstr "duben"
|
||
msgid "May"
|
||
msgstr "květen"
|
||
msgid "June"
|
||
msgstr "červen"
|
||
msgid "July"
|
||
msgstr "červenec"
|
||
msgid "August"
|
||
msgstr "srpen"
|
||
msgid "September"
|
||
msgstr "září"
|
||
msgid "October"
|
||
msgstr "říjen"
|
||
msgid "November"
|
||
msgstr "listopad"
|
||
msgid "December"
|
||
msgstr "prosinec"
|
||
msgid "retrieving status ..."
|
||
msgstr "zjišťování stavu..."
|
||
msgid "Toggle updates on/off."
|
||
msgstr "aktualizovat změny ano/ne."
|
||
msgid "stop playback"
|
||
msgstr "ukončit přehrávání"
|
||
msgid "resume playback"
|
||
msgstr "pokračovat v přehrávání"
|
||
msgid "pause playback"
|
||
msgstr "přerušit přehrávání"
|
||
msgid "fast rewind"
|
||
msgstr "rychle zpět"
|
||
msgid "fast forward"
|
||
msgstr "rychle vpřed"
|
||
msgid "previous channel"
|
||
msgstr "předchozí kanál"
|
||
msgid "next channel"
|
||
msgstr "další kanál"
|
||
msgid "No server response!"
|
||
msgstr "Server neodpovídá!"
|
||
msgid "Failed to update infobox!"
|
||
msgstr "Aktualizace infookna selhala!"
|
||
msgid "Switch to this channel."
|
||
msgstr "Přepnout"
|
||
msgid "Search for repeats."
|
||
msgstr "Vyhledat reprízy"
|
||
msgid "Authors"
|
||
msgstr "Autoři"
|
||
msgid "Project Idea"
|
||
msgstr "nápad"
|
||
msgid "Webserver"
|
||
msgstr "web server"
|
||
msgid "Current Maintainer"
|
||
msgstr ""
|
||
msgid "Project leader"
|
||
msgstr "vedoucí týmu"
|
||
msgid "Content"
|
||
msgstr "obsah"
|
||
msgid "Graphics"
|
||
msgstr "grafika"
|
||
msgid "Information"
|
||
msgstr "Informace"
|
||
msgid "LIVE version"
|
||
msgstr "LIVE verze"
|
||
msgid "VDR version"
|
||
msgstr "VDR verze"
|
||
msgid "Features"
|
||
msgstr "Moduly"
|
||
msgid "active"
|
||
msgstr "aktivní"
|
||
msgid "required"
|
||
msgstr "vyżadováno"
|
||
msgid "Homepage"
|
||
msgstr "Domovská stránka"
|
||
msgid "Bugs and suggestions"
|
||
msgstr "Chyby a připomínky"
|
||
msgid "If you encounter any bugs or would like to suggest new features, please use our bugtracker"
|
||
msgstr "Pokud odhalíte nějaké chyby, příp. si přejete nové vlastnosti, použijte prosím bugtracker"
|
||
msgid "Search results"
|
||
msgstr "Výsledky vyhledávání"
|
||
msgid "No search results"
|
||
msgstr "žádné výsledky vyhledávání"
|
||
msgid "%A, %b %d %Y"
|
||
msgstr "%a, %d.%m. "
|
||
msgid "Click to view details."
|
||
msgstr "Detaily"
|
||
msgid "Couldn't find timer. Maybe you mistyped your request?"
|
||
msgstr "Nelze najít nahrávaní. Je správně zadáno?"
|
||
msgid "Please set a title for the timer!"
|
||
msgstr "Prosím nastavte název nahrávání!"
|
||
msgid "New timer"
|
||
msgstr "Nové nahrávání"
|
||
msgid "Title"
|
||
msgstr "Název"
|
||
msgid "Directory"
|
||
msgstr "Složka"
|
||
msgid "Weekday"
|
||
msgstr "Den v týdnu"
|
||
msgid "Use VPS"
|
||
msgstr "Použít VPS"
|
||
... | ... | |
msgid "Time"
|
||
msgstr ""
|
||
msgid "Switch to this channel."
|
||
msgstr "Přepnout"
|
||
msgid "Search for repeats."
|
||
msgstr "Vyhledat reprízy"
|
||
msgid "more"
|
||
msgstr "více"
|
||
msgid "Channel"
|
||
msgstr "Kanál"
|
||
msgid "playing recording"
|
||
msgstr "sledování nahrávky"
|
||
msgid "no epg info for current event!"
|
||
msgstr "chybí detaily pro tento pořad"
|
||
msgid "no epg info for current channel!"
|
||
msgstr "chybí program pro tento kanál"
|
||
msgid "no current channel!"
|
||
msgstr "není zvolen žádný kanál"
|
||
msgid "error retrieving status info!"
|
||
msgstr "chyba při zjišťování statusu!"
|
||
msgid "%I:%M:%S %p"
|
||
msgstr "%H:%M:%S"
|
||
msgid "Recordings"
|
||
msgstr "Nahrávky"
|
||
... | ... | |
msgid "Test"
|
||
msgstr ""
|
||
msgid "Find more at the Internet Movie Database."
|
||
msgstr "Vyhledej více na Internet Movie Database."
|
||
msgid "Stream this channel into browser."
|
||
msgstr "Přehrávej v prohlížeči"
|
||
msgid "Stream this recording into browser."
|
||
msgstr "Přehrávej tuto nahrávku v prohlížeči."
|
||
msgid "Stream this channel into media player."
|
||
msgstr ""
|
||
msgid "Stream this recording into media player."
|
||
msgstr ""
|
||
msgid "Record this"
|
||
msgstr "Nahrát"
|
||
msgid "loading data"
|
||
msgstr "aktualizace údajů"
|
||
msgid "an error occured!"
|
||
msgstr "problém!"
|
||
msgid "Request succeeded!"
|
||
msgstr "Požadevek úspěšný."
|
||
msgid "Request failed!"
|
||
msgstr "Požadavek selhal!"
|
||
msgid "January"
|
||
msgstr "leden"
|
||
msgid "February"
|
||
msgstr "únor"
|
||
msgid "March"
|
||
msgstr "březen"
|
||
msgid "April"
|
||
msgstr "duben"
|
||
msgid "May"
|
||
msgstr "květen"
|
||
msgid "June"
|
||
msgstr "červen"
|
||
msgid "July"
|
||
msgstr "červenec"
|
||
msgid "August"
|
||
msgstr "srpen"
|
||
msgid "September"
|
||
msgstr "září"
|
||
msgid "October"
|
||
msgstr "říjen"
|
||
msgid "November"
|
||
msgstr "listopad"
|
||
msgid "December"
|
||
msgstr "prosinec"
|
||
msgid "retrieving status ..."
|
||
msgstr "zjišťování stavu..."
|
||
msgid "Toggle updates on/off."
|
||
msgstr "aktualizovat změny ano/ne."
|
||
msgid "stop playback"
|
||
msgstr "ukončit přehrávání"
|
||
msgid "resume playback"
|
||
msgstr "pokračovat v přehrávání"
|
||
msgid "pause playback"
|
||
msgstr "přerušit přehrávání"
|
||
msgid "fast rewind"
|
||
msgstr "rychle zpět"
|
||
msgid "fast forward"
|
||
msgstr "rychle vpřed"
|
||
msgid "previous channel"
|
||
msgstr "předchozí kanál"
|
||
msgid "next channel"
|
||
msgstr "další kanál"
|
||
msgid "No server response!"
|
||
msgstr "Server neodpovídá!"
|
||
msgid "Failed to update infobox!"
|
||
msgstr "Aktualizace infookna selhala!"
|
||
msgid "Authors"
|
||
msgstr "Autoři"
|
||
msgid "Project Idea"
|
||
msgstr "nápad"
|
||
msgid "Webserver"
|
||
msgstr "web server"
|
||
msgid "Current Maintainer"
|
||
msgstr ""
|
||
msgid "Project leader"
|
||
msgstr "vedoucí týmu"
|
||
msgid "Content"
|
||
msgstr "obsah"
|
||
msgid "Graphics"
|
||
msgstr "grafika"
|
||
msgid "Information"
|
||
msgstr "Informace"
|
||
msgid "LIVE version"
|
||
msgstr "LIVE verze"
|
||
msgid "VDR version"
|
||
msgstr "VDR verze"
|
||
msgid "Features"
|
||
msgstr "Moduly"
|
||
msgid "active"
|
||
msgstr "aktivní"
|
||
msgid "required"
|
||
msgstr "vyżadováno"
|
||
msgid "Homepage"
|
||
msgstr "Domovská stránka"
|
||
msgid "Bugs and suggestions"
|
||
msgstr "Chyby a připomínky"
|
||
msgid "If you encounter any bugs or would like to suggest new features, please use our bugtracker"
|
||
msgstr "Pokud odhalíte nějaké chyby, příp. si přejete nové vlastnosti, použijte prosím bugtracker"
|
||
msgid "No timer defined"
|
||
msgstr "Nahrávání není nastaveno"
|
||
... | ... | |
msgid "no"
|
||
msgstr "ne"
|
||
msgid "VLC: live video stream"
|
||
msgstr "VLC: stream běžícího vysílání"
|
||
msgid "Couldn't find channel or no channels available. Maybe you mistyped your request?"
|
||
msgstr "Kanál je nedostupný, nebo neexistuje. Zkontrolujte zadání."
|
||
msgid "VLC: play recording"
|
||
msgstr "VLC: streamování nahrávky"
|
||
msgid "Stop"
|
||
msgstr ""
|
||
msgid "Play"
|
||
msgstr "Přehrávat"
|
||
msgid "Sound on"
|
||
msgstr "Se zvukem"
|
||
msgid "Sound off"
|
||
msgstr "Bez zvuku"
|
||
msgid "Fullscreen"
|
||
msgstr "Celá obrazovka"
|
||
msgid "Close"
|
||
msgstr "Zavřít"
|
||
msgid "VLC media URL"
|
||
msgstr "VLC adresa"
|
||
msgid "playing recording"
|
||
msgstr "sledování nahrávky"
|
||
msgid "no epg info for current event!"
|
||
msgstr "chybí detaily pro tento pořad"
|
||
msgid "no epg info for current channel!"
|
||
msgstr "chybí program pro tento kanál"
|
||
msgid "no current channel!"
|
||
msgstr "není zvolen žádný kanál"
|
||
msgid "error retrieving status info!"
|
||
msgstr "chyba při zjišťování statusu!"
|
||
msgid "%I:%M:%S %p"
|
||
msgstr "%H:%M:%S"
|
||
msgid "Searchtimers"
|
||
msgstr "Automatické nahrávání"
|
||
... | ... | |
msgid "List view"
|
||
msgstr "Souhrný pohled"
|
||
msgid "Couldn't find channel or no channels available. Maybe you mistyped your request?"
|
||
msgstr "Kanál je nedostupný, nebo neexistuje. Zkontrolujte zadání."
|
||
msgid "No schedules available for this channel"
|
||
msgstr "Pro kanál není dostupný program"
|
||
... | ... | |
msgid "Snapshot interval"
|
||
msgstr "Interval snímků obrazovky"
|
||
msgid "Stop"
|
||
msgstr ""
|
||
msgid "Page error"
|
||
msgstr "Chyba stránky"
|
||
... | ... | |
msgid "No EPG information available"
|
||
msgstr "Nejsou dostupné informace o programu"
|
||
#~ msgid "VLC media URL"
|
||
#~ msgstr "VLC adresa"
|
po/de_DE.po | ||
---|---|---|
msgid "New user"
|
||
msgstr "Neuen Benutzer anlegen"
|
||
msgid "Search results"
|
||
msgstr "Suchergebnisse"
|
||
msgid "No search results"
|
||
msgstr "keine Suchergebnisse"
|
||
msgid "%A, %b %d %Y"
|
||
msgstr "%A, %d.%m.%Y"
|
||
msgid "Click to view details."
|
||
msgstr "Für Details klicken."
|
||
msgid "Find more at the Internet Movie Database."
|
||
msgstr "Weitere Informationen in der Internet Movie Database."
|
||
msgid "Couldn't find timer. Maybe you mistyped your request?"
|
||
msgstr "Konnte Timer nicht finden. Evtl. fehlerhafte Anforderung?"
|
||
msgid "Stream this channel into media player."
|
||
msgstr ""
|
||
msgid "Please set a title for the timer!"
|
||
msgstr "Bitte einen Titel fï¿œr den Timer angeben!"
|
||
msgid "Stream this recording into media player."
|
||
msgstr ""
|
||
#. TRANSLATORS: only adjust the ordering and separators, don't translate the m's, d's and y's
|
||
msgid "mm/dd/yyyy"
|
||
msgstr "dd.mm.yyyy"
|
||
msgid "Record this"
|
||
msgstr "Diese Sendung aufnehmen"
|
||
msgid "Edit timer"
|
||
msgstr "Timer bearbeiten"
|
||
msgid "New timer"
|
||
msgstr "Neuen Timer anlegen"
|
||
msgid "loading data"
|
||
msgstr "Daten nachladen"
|
||
msgid "Title"
|
||
msgstr "Titel"
|
||
msgid "an error occured!"
|
||
msgstr "Es ist ein Fehler aufgetreten!"
|
||
msgid "Directory"
|
||
msgstr "Verzeichnis"
|
||
msgid "Request succeeded!"
|
||
msgstr "Aktion durchgeführt!"
|
||
msgid "Weekday"
|
||
msgstr "Wochentag"
|
||
msgid "Request failed!"
|
||
msgstr "Aktion fehlgeschlagen!"
|
||
msgid "Sunday"
|
||
msgstr "Sonntag"
|
||
msgid "Monday"
|
||
msgstr "Montag"
|
||
... | ... | |
msgid "Saturday"
|
||
msgstr "Samstag"
|
||
msgid "Sunday"
|
||
msgstr "Sonntag"
|
||
#. TRANSLATORS: only adjust the ordering and separators, don't translate the m's, d's and y's
|
||
msgid "mm/dd/yyyy"
|
||
msgstr "dd.mm.yyyy"
|
||
msgid "January"
|
||
msgstr "Januar"
|
||
msgid "February"
|
||
msgstr "Februar"
|
||
msgid "March"
|
||
msgstr "März"
|
||
msgid "April"
|
||
msgstr "April"
|
||
msgid "May"
|
||
msgstr "Mai"
|
||
msgid "June"
|
||
msgstr "Juni"
|
||
msgid "July"
|
||
msgstr "Juli"
|
||
msgid "August"
|
||
msgstr "August"
|
||
msgid "September"
|
||
msgstr "September"
|
||
msgid "October"
|
||
msgstr "Oktober"
|
||
msgid "November"
|
||
msgstr "November"
|
||
msgid "December"
|
||
msgstr "Dezember"
|
||
msgid "retrieving status ..."
|
||
msgstr "Hole Status ..."
|
||
msgid "Toggle updates on/off."
|
||
msgstr "Statusabfrage ein- oder ausschalten."
|
||
msgid "stop playback"
|
||
msgstr "Anhalten"
|
||
msgid "resume playback"
|
||
msgstr "Fortsetzen"
|
||
msgid "pause playback"
|
||
msgstr "Pause"
|
||
msgid "fast rewind"
|
||
msgstr "Suchlauf rückwärts"
|
||
msgid "fast forward"
|
||
msgstr "Suchlauf vorwärts"
|
||
msgid "previous channel"
|
||
msgstr "Sender zurück"
|
||
msgid "next channel"
|
||
msgstr "Sender vor"
|
||
msgid "No server response!"
|
||
msgstr "Der Server antwortet nicht!"
|
||
msgid "Failed to update infobox!"
|
||
msgstr "Kann Infobox nicht aktualisieren!"
|
||
msgid "Switch to this channel."
|
||
msgstr "Zu diesem Kanal umschalten."
|
||
msgid "Search for repeats."
|
||
msgstr "Nach Wiederholungen suchen."
|
||
msgid "Authors"
|
||
msgstr "Autoren"
|
||
msgid "Project Idea"
|
||
msgstr "Projekt Idee"
|
||
msgid "Webserver"
|
||
msgstr "Webserver"
|
||
msgid "Current Maintainer"
|
||
msgstr "Derzeitiger Entwickler"
|
||
msgid "Project leader"
|
||
msgstr "Projektleiter"
|
||
msgid "Content"
|
||
msgstr "Inhalte"
|
||
msgid "Graphics"
|
||
msgstr "Grafiken"
|
||
msgid "Information"
|
||
msgstr "Informationen"
|
||
msgid "LIVE version"
|
||
msgstr "LIVE Version"
|
||
msgid "VDR version"
|
||
msgstr "VDR Version"
|
||
msgid "Features"
|
||
msgstr "Unterstütze Plugins"
|
||
msgid "active"
|
||
msgstr "aktiv"
|
||
msgid "required"
|
||
msgstr "erforderlich"
|
||
msgid "Homepage"
|
||
msgstr "Homepage"
|
||
msgid "Bugs and suggestions"
|
||
msgstr "Fehlerberichte und Vorschläge"
|
||
msgid "If you encounter any bugs or would like to suggest new features, please use our bugtracker"
|
||
msgstr "Für Fehler oder Verbesserungsvorschläge steht unser Bugtracker bereit"
|
||
msgid "Search results"
|
||
msgstr "Suchergebnisse"
|
||
msgid "No search results"
|
||
msgstr "keine Suchergebnisse"
|
||
msgid "%A, %b %d %Y"
|
||
msgstr "%A, %d.%m.%Y"
|
||
msgid "Click to view details."
|
||
msgstr "Für Details klicken."
|
||
msgid "Couldn't find timer. Maybe you mistyped your request?"
|
||
msgstr "Konnte Timer nicht finden. Evtl. fehlerhafte Anforderung?"
|
||
msgid "Please set a title for the timer!"
|
||
msgstr "Bitte einen Titel fï¿œr den Timer angeben!"
|
||
msgid "New timer"
|
||
msgstr "Neuen Timer anlegen"
|
||
msgid "Title"
|
||
msgstr "Titel"
|
||
msgid "Directory"
|
||
msgstr "Verzeichnis"
|
||
msgid "Weekday"
|
||
msgstr "Wochentag"
|
||
msgid "Use VPS"
|
||
msgstr "VPS verwenden"
|
||
... | ... | |
msgid "Time"
|
||
msgstr "Zeit"
|
||
msgid "Switch to this channel."
|
||
msgstr "Zu diesem Kanal umschalten."
|
||
msgid "Search for repeats."
|
||
msgstr "Nach Wiederholungen suchen."
|
||
msgid "more"
|
||
msgstr "mehr"
|
||
msgid "Channel"
|
||
msgstr "Kanal"
|
||
msgid "playing recording"
|
||
msgstr "Wiedergabe"
|
||
msgid "no epg info for current event!"
|
||
msgstr "Keine Infos zur Sendung!"
|
||
msgid "no epg info for current channel!"
|
||
msgstr "Dieser Kanal hat kein EPG!"
|
||
msgid "no current channel!"
|
||
msgstr "Keinen Kanal gefunden!"
|
||
msgid "error retrieving status info!"
|
||
msgstr "Fehler: Status nicht verfügbar!"
|
||
msgid "%I:%M:%S %p"
|
||
msgstr "%H:%M:%S"
|
||
msgid "Recordings"
|
||
msgstr "Aufnahmen"
|
||
... | ... | |
msgid "Test"
|
||
msgstr "Testen"
|
||
msgid "Find more at the Internet Movie Database."
|
||
msgstr "Weitere Informationen in der Internet Movie Database."
|
||
msgid "Stream this channel into browser."
|
||
msgstr "Sendung im Browser anzeigen."
|
||
msgid "Stream this recording into browser."
|
||
msgstr "Aufnahme im Browser anzeigen."
|
||
msgid "Stream this channel into media player."
|
||
msgstr ""
|
||
msgid "Stream this recording into media player."
|
||
msgstr ""
|
||
msgid "Record this"
|
||
msgstr "Diese Sendung aufnehmen"
|
||
msgid "loading data"
|
||
msgstr "Daten nachladen"
|
||
msgid "an error occured!"
|
||
msgstr "Es ist ein Fehler aufgetreten!"
|
||
msgid "Request succeeded!"
|
||
msgstr "Aktion durchgeführt!"
|
||
msgid "Request failed!"
|
||
msgstr "Aktion fehlgeschlagen!"
|
||
msgid "January"
|
||
msgstr "Januar"
|
||
msgid "February"
|
||
msgstr "Februar"
|
||
msgid "March"
|
||
msgstr "März"
|
||
msgid "April"
|
||
msgstr "April"
|
||
msgid "May"
|
||
msgstr "Mai"
|
||
msgid "June"
|
||
msgstr "Juni"
|
||
msgid "July"
|
||
msgstr "Juli"
|
||
msgid "August"
|
||
msgstr "August"
|
||
msgid "September"
|
||
msgstr "September"
|
||
msgid "October"
|
||
msgstr "Oktober"
|
||
msgid "November"
|
||
msgstr "November"
|
||
msgid "December"
|
||
msgstr "Dezember"
|
||
msgid "retrieving status ..."
|
||
msgstr "Hole Status ..."
|
||
msgid "Toggle updates on/off."
|
||
msgstr "Statusabfrage ein- oder ausschalten."
|
||
msgid "stop playback"
|
||
msgstr "Anhalten"
|
||
msgid "resume playback"
|
||
msgstr "Fortsetzen"
|
||
msgid "pause playback"
|
||
msgstr "Pause"
|
||
- « Previous
- 1
- 2
- 3
- Next »