summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKlaus Schmidinger <kls (at) cadsoft (dot) de>2007-11-04 18:00:00 +0100
committerKlaus Schmidinger <kls (at) cadsoft (dot) de>2007-11-04 18:00:00 +0100
commit182cd78af06cee95594307b792b8951153c4888e (patch)
tree4b628340a8e403307a076f35a0e1fcf405762ba6
parentdbf38b7c68911187b6a48688b738c31612d35984 (diff)
downloadvdr-patch-lnbsharing-182cd78af06cee95594307b792b8951153c4888e.tar.gz
vdr-patch-lnbsharing-182cd78af06cee95594307b792b8951153c4888e.tar.bz2
Version 1.5.11vdr-1.5.11
- Fixed checking compatibility mode for old subtitles plugin (thanks to Marco Schlüßler). - Updated the French OSD texts (thanks to Michael Nival). - Updated the Estonian OSD texts (thanks to Arthur Konovalov). - Updated the Italian OSD texts (thanks to Diego Pierotto). - The "Play" key now starts replay of the selected recording in the Recordings menu (thanks to Ville Skyttä); - Improved shutdown handling (thanks to Udo Richter). - Housekeeping now waits for a while after a replay has ended (thanks to Udo Richter). - Added more special characters to the list of allowed characters when entering strings (thanks to Thomas Günther). - Added Ukrainian language texts (thanks to Yarema Aka Knedlyk). - Added a workaround for recovering from wrongfully interpreted "pre 1.3.19 PS1 packets". - Fixed a possible blocking in replay when subtitles are active. - Fixed displaying subtitles in live mode. - Fixed handling CONFDIR (thanks to Rolf Ahrenberg). - Added some missing 'const' keywords (thanks to Sascha Volkenandt). - The 'Allowed' parameter in cMenuEditStrItem() is now NULL by default, which results in using tr(FileNameChars) (suggested by Thomas Günther). - Added a missing '.' to the date returned by DayDateTime() (thanks to Lauri Nurmi). - Improved the 'i18n' target in the Makefile to avoid unnecessary work (thanks to Stefan Huelswitt). The 'newplugin' and 'i18n-to-gettext.pl' scripts have been changed accordingly. Plugin authors may want to adjust the 'i18n' target of their Makefiles. - Fixed a crash if no fonts are found (thanks to Mario Ivankovits and Clemens Kirchgatterer). - Fixed decoding filename characters in case there are not two hex digits after the '#' (reported by Helmut Auer).
-rw-r--r--CONTRIBUTORS27
-rw-r--r--HISTORY31
-rw-r--r--Makefile24
-rw-r--r--PLUGINS/src/hello/Makefile22
-rw-r--r--PLUGINS/src/skincurses/Makefile22
-rw-r--r--config.h10
-rw-r--r--device.c26
-rw-r--r--device.h4
-rw-r--r--dvbsubtitle.c17
-rw-r--r--font.c26
-rwxr-xr-xi18n-to-gettext.pl24
-rw-r--r--i18n.c3
-rw-r--r--menu.c9
-rw-r--r--menuitems.c8
-rw-r--r--menuitems.h4
-rwxr-xr-xnewplugin22
-rw-r--r--osdbase.h10
-rw-r--r--po/ca_ES.po6
-rw-r--r--po/cs_CZ.po8
-rw-r--r--po/da_DK.po8
-rw-r--r--po/de_DE.po8
-rw-r--r--po/el_GR.po6
-rw-r--r--po/es_ES.po8
-rw-r--r--po/et_EE.po78
-rw-r--r--po/fi_FI.po8
-rw-r--r--po/fr_FR.po39
-rw-r--r--po/hr_HR.po6
-rw-r--r--po/hu_HU.po8
-rw-r--r--po/it_IT.po38
-rw-r--r--po/nl_NL.po6
-rw-r--r--po/nn_NO.po4
-rw-r--r--po/pl_PL.po8
-rw-r--r--po/pt_PT.po4
-rw-r--r--po/ro_RO.po8
-rw-r--r--po/ru_RU.po8
-rw-r--r--po/sl_SI.po8
-rw-r--r--po/sv_SE.po8
-rw-r--r--po/tr_TR.po8
-rw-r--r--po/uk_UA.po999
-rw-r--r--recording.c11
-rw-r--r--remux.c7
-rw-r--r--shutdown.c13
-rw-r--r--thread.c4
-rw-r--r--tools.c4
-rw-r--r--vdr.c13
45 files changed, 1355 insertions, 268 deletions
diff --git a/CONTRIBUTORS b/CONTRIBUTORS
index 34b4803..e49400a 100644
--- a/CONTRIBUTORS
+++ b/CONTRIBUTORS
@@ -222,6 +222,7 @@ Stefan Huelswitt <huels@iname.com>
for reporting a double fdopen() in cPipe::Open()
for suggesting to increase the APIVERSION to allow plugins that relied on the
cStatus::MsgSetVolume() bug to react properly
+ for improving the 'i18n' target in the Makefile to avoid unnecessary work
Ulrich Röder <roeder@efr-net.de>
for pointing out that there are channels that have a symbol rate higher than 27500
@@ -587,6 +588,8 @@ Helmut Auer <vdr@helmutauer.de>
is a recording going on or about to start, and the user insists in shutting down now
for suggesting to make the channel entry timeout configurable
for a patch that was used to implement the SVDRP command REMO
+ for reporting a possible crash in decoding filename characters in case there are
+ not two hex digits after the '#'
Jeremy Hall <jhall@UU.NET>
for fixing an incomplete initialization of the filter parameters in eit.c
@@ -743,6 +746,7 @@ Georg Hitsch <georg@hitsch.at>
Clemens Kirchgatterer <clemens@thf.ath.cx>
for suggesting to change source directory name for plugins from 'SRC' to 'src'
for reporting a problem with user defined CFLAGS in libdtv/libvdr/Makefile
+ for suggesting an error log message if no fonts are found
Emil Naepflein <Emil.Naepflein@philosys.de>
for suggesting to take an active SVDRP connection into account when doing shutdown or
@@ -889,6 +893,7 @@ Ludwig Nussel <ludwig.nussel@web.de>
for a patch that was used for implementing setting the user id
for pointing out that the canonical spelling of codesets is with '-'
for a hint on using _nl_msg_cat_cntr
+ for adding some missing 'const' keywords
Thomas Koch <tom@harhar.net>
for his support in keeping the Premiere World channels up to date in 'channels.conf'
@@ -1028,6 +1033,7 @@ Rolf Ahrenberg <rahrenbe@cc.hut.fi>
the subtitles plugin
for implementing cDevice::CloseFilter()
for some fixes to PLUGINS.html
+ for fixing handling CONFDIR
Ralf Klueber <ralf.klueber@vodafone.com>
for reporting a bug in cutting a recording if there is only a single editing mark
@@ -1430,6 +1436,7 @@ Marco Schlüßler <marco@lordzodiac.de>
for implementing handling DVB subtitles
for fixing the description of DeviceSetAvailableTrack() and cReceiver(), and adding
an example ~cMyReceiver() in PLUGINS.html (thanks to Marco Schlüßler).
+ for fixing checking compatibility mode for old subtitles plugin
Jürgen Schmitz <j.schmitz@web.de>
for reporting a bug in displaying the current channel when switching via the SVDRP
@@ -1535,6 +1542,8 @@ Udo Richter <udo_richter@gmx.de>
for adding a missing error report to cCuttingThread::Action()
for reporting a problem in handling reallocated memory in cCharSetConv::Convert()
for fixing a new[]/delete mismatch in cMenuEditStrItem::LeaveEditMode()
+ for improving shutdown handling
+ for making housekeeping wait for a while after a replay has ended
Sven Kreiensen <svenk@kammer.uni-hannover.de>
for his help in keeping 'channels.conf.terr' up to date
@@ -1709,6 +1718,8 @@ Ville Skyttä <ville.skytta@iki.fi>
for suggesting to add the "...or (at your option) any later version" phrase to the
license information of all plugins, and also the 'newplugin' script
for fixing the link to the GPL2 at http://www.gnu.org in vdr.c
+ for making the "Play" key start replay of the selected recording in the Recordings
+ menu
Steffen Beyer <cpunk@reactor.de>
for fixing setting the colored button help after deleting a recording in case the next
@@ -1788,6 +1799,10 @@ Thomas Günther <tom1@toms-cafe.de>
for removing a duplicate ',' from the ca_ES.po file
for suggesting to add the 'ß' character to the "allowed characters" in the
de_DE.po file
+ for adding more special characters to the list of allowed characters when entering
+ strings
+ for suggesting to make the 'Allowed' parameter in cMenuEditStrItem() NULL by default,
+ which results in using tr(FileNameChars)
David Woodhouse <dwmw2@infradead.org>
for his help in replacing the get/put_unaligned() macros from asm/unaligned.h with
@@ -2210,3 +2225,15 @@ Elias Luttinen <el@iki.fi>
Torsten Kunkel <vdrml@tkunkel.de>
for pointing out that it was not obvious how to initiate internationalization
support for a plugin
+
+Michael Nival <mnival@club-internet.fr>
+ for translating OSD texts to the French language
+
+Yarema Aka Knedlyk <yupadmin@gmail.com>
+ for translating OSD texts to the Ukrainian language
+
+Lauri Nurmi <lanurmi@iki.fi>
+ for adding a missing '.' to the date returned by DayDateTime()
+
+Mario Ivankovits <mario@ops.co.at>
+ for fixing a crash if no fonts are found
diff --git a/HISTORY b/HISTORY
index 91d32fb..6984bbd 100644
--- a/HISTORY
+++ b/HISTORY
@@ -5487,3 +5487,34 @@ Video Disk Recorder Revision History
- Added cDevice::CloseFilter() to allow a device to have complete control over
both opening and closing section filters (thanks to Rolf Ahrenberg).
- Some fixes to PLUGINS.html (thanks to Rolf Ahrenberg).
+
+2007-11-04: Version 1.5.11
+
+- Fixed checking compatibility mode for old subtitles plugin (thanks to Marco
+ Schlüßler).
+- Updated the French OSD texts (thanks to Michael Nival).
+- Updated the Estonian OSD texts (thanks to Arthur Konovalov).
+- Updated the Italian OSD texts (thanks to Diego Pierotto).
+- The "Play" key now starts replay of the selected recording in the Recordings
+ menu (thanks to Ville Skyttä);
+- Improved shutdown handling (thanks to Udo Richter).
+- Housekeeping now waits for a while after a replay has ended (thanks to Udo Richter).
+- Added more special characters to the list of allowed characters when entering
+ strings (thanks to Thomas Günther).
+- Added Ukrainian language texts (thanks to Yarema Aka Knedlyk).
+- Added a workaround for recovering from wrongfully interpreted "pre 1.3.19 PS1 packets".
+- Fixed a possible blocking in replay when subtitles are active.
+- Fixed displaying subtitles in live mode.
+- Fixed handling CONFDIR (thanks to Rolf Ahrenberg).
+- Added some missing 'const' keywords (thanks to Sascha Volkenandt).
+- The 'Allowed' parameter in cMenuEditStrItem() is now NULL by default, which results
+ in using tr(FileNameChars) (suggested by Thomas Günther).
+- Added a missing '.' to the date returned by DayDateTime() (thanks to Lauri Nurmi).
+- Improved the 'i18n' target in the Makefile to avoid unnecessary work (thanks to
+ Stefan Huelswitt). The 'newplugin' and 'i18n-to-gettext.pl' scripts have been
+ changed accordingly. Plugin authors may want to adjust the 'i18n' target
+ of their Makefiles.
+- Fixed a crash if no fonts are found (thanks to Mario Ivankovits and Clemens
+ Kirchgatterer).
+- Fixed decoding filename characters in case there are not two hex digits after
+ the '#' (reported by Helmut Auer).
diff --git a/Makefile b/Makefile
index aea6995..f32773c 100644
--- a/Makefile
+++ b/Makefile
@@ -4,7 +4,7 @@
# See the main source file 'vdr.c' for copyright information and
# how to reach the author.
#
-# $Id: Makefile 1.108 2007/10/13 09:26:40 kls Exp $
+# $Id: Makefile 1.110 2007/11/04 10:15:59 kls Exp $
.DELETE_ON_ERROR:
@@ -27,7 +27,7 @@ PLUGINDIR= ./PLUGINS
PLUGINLIBDIR= $(PLUGINDIR)/lib
VIDEODIR = /video
-CONFDIR ?= $(VIDEODIR)
+CONFDIR = $(VIDEODIR)
DOXYGEN = /usr/bin/doxygen
DOXYFILE = Doxyfile
@@ -106,25 +106,25 @@ $(SILIB):
PODIR = po
LOCALEDIR = locale
I18Npo = $(wildcard $(PODIR)/*.po)
-I18Nmo = $(addsuffix .mo, $(foreach file, $(I18Npo), $(basename $(file))))
-I18Ndirs = $(notdir $(foreach file, $(I18Npo), $(basename $(file))))
+I18Nmsgs = $(addprefix $(LOCALEDIR)/, $(addsuffix /LC_MESSAGES/vdr.mo, $(notdir $(foreach file, $(I18Npo), $(basename $(file))))))
I18Npot = $(PODIR)/vdr.pot
%.mo: %.po
msgfmt -c -o $@ $<
$(I18Npot): $(wildcard *.c)
- xgettext -C -cTRANSLATORS --no-wrap --no-location -k -ktr -ktrNOOP --msgid-bugs-address='<vdr-bugs@cadsoft.de>' -o $@ $(wildcard *.c)
+ xgettext -C -cTRANSLATORS --no-wrap --no-location -k -ktr -ktrNOOP --msgid-bugs-address='<vdr-bugs@cadsoft.de>' -o $@ $^
-$(I18Npo): $(I18Npot)
+%.po: $(I18Npot)
msgmerge -U --no-wrap --no-location --backup=none -q $@ $<
+ @touch $@
-i18n: $(I18Nmo)
- @mkdir -p $(LOCALEDIR)
- for i in $(I18Ndirs); do\
- mkdir -p $(LOCALEDIR)/$$i/LC_MESSAGES;\
- cp $(PODIR)/$$i.mo $(LOCALEDIR)/$$i/LC_MESSAGES/vdr.mo;\
- done
+$(I18Nmsgs): $(LOCALEDIR)/%/LC_MESSAGES/vdr.mo: $(PODIR)/%.mo
+ @mkdir -p $(dir $@)
+ cp $< $@
+
+.PHONY: i18n
+i18n: $(I18Nmsgs)
install-i18n:
@mkdir -p $(DESTDIR)$(LOCDIR)
diff --git a/PLUGINS/src/hello/Makefile b/PLUGINS/src/hello/Makefile
index 92e8af4..185b527 100644
--- a/PLUGINS/src/hello/Makefile
+++ b/PLUGINS/src/hello/Makefile
@@ -1,7 +1,7 @@
#
# Makefile for a Video Disk Recorder plugin
#
-# $Id: Makefile 1.20 2007/10/14 09:23:04 kls Exp $
+# $Id: Makefile 1.21 2007/11/04 10:52:15 kls Exp $
# The official name of this plugin.
# This name will be used in the '-P...' option of VDR to load the plugin.
@@ -72,25 +72,25 @@ $(DEPFILE): Makefile
PODIR = po
LOCALEDIR = $(VDRDIR)/locale
I18Npo = $(wildcard $(PODIR)/*.po)
-I18Nmo = $(addsuffix .mo, $(foreach file, $(I18Npo), $(basename $(file))))
-I18Ndirs = $(notdir $(foreach file, $(I18Npo), $(basename $(file))))
+I18Nmsgs = $(addprefix $(LOCALEDIR)/, $(addsuffix /LC_MESSAGES/vdr-$(PLUGIN).mo, $(notdir $(foreach file, $(I18Npo), $(basename $(file))))))
I18Npot = $(PODIR)/$(PLUGIN).pot
%.mo: %.po
msgfmt -c -o $@ $<
$(I18Npot): $(wildcard *.c)
- xgettext -C -cTRANSLATORS --no-wrap --no-location -k -ktr -ktrNOOP --msgid-bugs-address='<vdr-bugs@cadsoft.de>' -o $@ $(wildcard *.c)
+ xgettext -C -cTRANSLATORS --no-wrap --no-location -k -ktr -ktrNOOP --msgid-bugs-address='<vdr-bugs@cadsoft.de>' -o $@ $^
-$(I18Npo): $(I18Npot)
+%.po: $(I18Npot)
msgmerge -U --no-wrap --no-location --backup=none -q $@ $<
+ @touch $@
-i18n: $(I18Npot) $(I18Nmo)
- @mkdir -p $(LOCALEDIR)
- for i in $(I18Ndirs); do\
- mkdir -p $(LOCALEDIR)/$$i/LC_MESSAGES;\
- cp $(PODIR)/$$i.mo $(LOCALEDIR)/$$i/LC_MESSAGES/vdr-$(PLUGIN).mo;\
- done
+$(I18Nmsgs): $(LOCALEDIR)/%/LC_MESSAGES/vdr-$(PLUGIN).mo: $(PODIR)/%.mo
+ @mkdir -p $(dir $@)
+ cp $< $@
+
+.PHONY: i18n
+i18n: $(I18Nmsgs)
### Targets:
diff --git a/PLUGINS/src/skincurses/Makefile b/PLUGINS/src/skincurses/Makefile
index 3eea4dd..17f8540 100644
--- a/PLUGINS/src/skincurses/Makefile
+++ b/PLUGINS/src/skincurses/Makefile
@@ -1,7 +1,7 @@
#
# Makefile for a Video Disk Recorder plugin
#
-# $Id: Makefile 1.13 2007/10/14 09:23:25 kls Exp $
+# $Id: Makefile 1.14 2007/11/04 10:52:13 kls Exp $
# The official name of this plugin.
# This name will be used in the '-P...' option of VDR to load the plugin.
@@ -70,25 +70,25 @@ $(DEPFILE): Makefile
PODIR = po
LOCALEDIR = $(VDRDIR)/locale
I18Npo = $(wildcard $(PODIR)/*.po)
-I18Nmo = $(addsuffix .mo, $(foreach file, $(I18Npo), $(basename $(file))))
-I18Ndirs = $(notdir $(foreach file, $(I18Npo), $(basename $(file))))
+I18Nmsgs = $(addprefix $(LOCALEDIR)/, $(addsuffix /LC_MESSAGES/vdr-$(PLUGIN).mo, $(notdir $(foreach file, $(I18Npo), $(basename $(file))))))
I18Npot = $(PODIR)/$(PLUGIN).pot
%.mo: %.po
msgfmt -c -o $@ $<
$(I18Npot): $(wildcard *.c)
- xgettext -C -cTRANSLATORS --no-wrap --no-location -k -ktr -ktrNOOP --msgid-bugs-address='<vdr-bugs@cadsoft.de>' -o $@ $(wildcard *.c)
+ xgettext -C -cTRANSLATORS --no-wrap --no-location -k -ktr -ktrNOOP --msgid-bugs-address='<vdr-bugs@cadsoft.de>' -o $@ $^
-$(I18Npo): $(I18Npot)
+%.po: $(I18Npot)
msgmerge -U --no-wrap --no-location --backup=none -q $@ $<
+ @touch $@
-i18n: $(I18Npot) $(I18Nmo)
- @mkdir -p $(LOCALEDIR)
- for i in $(I18Ndirs); do\
- mkdir -p $(LOCALEDIR)/$$i/LC_MESSAGES;\
- cp $(PODIR)/$$i.mo $(LOCALEDIR)/$$i/LC_MESSAGES/vdr-$(PLUGIN).mo;\
- done
+$(I18Nmsgs): $(LOCALEDIR)/%/LC_MESSAGES/vdr-$(PLUGIN).mo: $(PODIR)/%.mo
+ @mkdir -p $(dir $@)
+ cp $< $@
+
+.PHONY: i18n
+i18n: $(I18Nmsgs)
### Targets:
diff --git a/config.h b/config.h
index e51637f..02f1b53 100644
--- a/config.h
+++ b/config.h
@@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
- * $Id: config.h 1.299 2007/10/06 14:27:18 kls Exp $
+ * $Id: config.h 1.300 2007/10/17 18:34:17 kls Exp $
*/
#ifndef __CONFIG_H
@@ -22,13 +22,13 @@
// VDR's own version number:
-#define VDRVERSION "1.5.10"
-#define VDRVERSNUM 10510 // Version * 10000 + Major * 100 + Minor
+#define VDRVERSION "1.5.11"
+#define VDRVERSNUM 10511 // Version * 10000 + Major * 100 + Minor
// The plugin API's version number:
-#define APIVERSION "1.5.10"
-#define APIVERSNUM 10510 // Version * 10000 + Major * 100 + Minor
+#define APIVERSION "1.5.11"
+#define APIVERSNUM 10511 // Version * 10000 + Major * 100 + Minor
// When loading plugins, VDR searches them by their APIVERSION, which
// may be smaller than VDRVERSION in case there have been no changes to
diff --git a/device.c b/device.c
index 73decab..b8e5a8f 100644
--- a/device.c
+++ b/device.c
@@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
- * $Id: device.c 1.145 2007/10/14 13:09:19 kls Exp $
+ * $Id: device.c 1.147 2007/11/03 13:30:09 kls Exp $
*/
#include "device.h"
@@ -209,6 +209,9 @@ int cPesAssembler::PacketSize(const uchar *data)
// The default priority for non-primary devices:
#define DEFAULTPRIORITY -1
+// The minimum number of unknown PS1 packets to consider this a "pre 1.3.19 private stream":
+#define MIN_PRE_1_3_19_PRIVATESTREAM 10
+
int cDevice::numDevices = 0;
int cDevice::useDevice = 0;
int cDevice::nextCardIndex = 0;
@@ -931,7 +934,7 @@ void cDevice::ClrAvailableTracks(bool DescriptionsOnly, bool IdsOnly)
}
else
memset(availableTracks, 0, sizeof(availableTracks));
- pre_1_3_19_PrivateStream = false;
+ pre_1_3_19_PrivateStream = 0;
SetAudioChannel(0); // fall back to stereo
currentAudioTrackMissingCount = 0;
currentAudioTrack = ttNone;
@@ -1236,7 +1239,7 @@ int cDevice::PlayPesPacket(const uchar *Data, int Length, bool VideoOnly)
int PayloadOffset = Data[8] + 9;
// Compatibility mode for old subtitles plugin:
- if ((Data[PayloadOffset - 3] & 0x81) == 1 && Data[PayloadOffset - 2] == 0x81)
+ if ((Data[7] & 0x01) && (Data[PayloadOffset - 3] & 0x81) == 0x01 && Data[PayloadOffset - 2] == 0x81)
PayloadOffset--;
uchar SubStreamId = Data[PayloadOffset];
@@ -1245,11 +1248,13 @@ int cDevice::PlayPesPacket(const uchar *Data, int Length, bool VideoOnly)
// Compatibility mode for old VDR recordings, where 0xBD was only AC3:
pre_1_3_19_PrivateStreamDeteced:
- if (pre_1_3_19_PrivateStream) {
+ if (pre_1_3_19_PrivateStream > MIN_PRE_1_3_19_PRIVATESTREAM) {
SubStreamId = c;
SubStreamType = 0x80;
SubStreamIndex = 0;
}
+ else if (pre_1_3_19_PrivateStream)
+ pre_1_3_19_PrivateStream--; // every known PS1 packet counts down towards 0 to recover from glitches...
switch (SubStreamType) {
case 0x20: // SPU
case 0x30: // SPU
@@ -1277,11 +1282,14 @@ pre_1_3_19_PrivateStreamDeteced:
break;
default:
// Compatibility mode for old VDR recordings, where 0xBD was only AC3:
- if (!pre_1_3_19_PrivateStream) {
- dsyslog("switching to pre 1.3.19 Dolby Digital compatibility mode");
- ClrAvailableTracks();
- pre_1_3_19_PrivateStream = true;
- goto pre_1_3_19_PrivateStreamDeteced;
+ if (pre_1_3_19_PrivateStream <= MIN_PRE_1_3_19_PRIVATESTREAM) {
+ dsyslog("unknown PS1 packet, substream id = %02X (counter is at %d)", SubStreamId, pre_1_3_19_PrivateStream);
+ pre_1_3_19_PrivateStream += 2; // ...and every unknown PS1 packet counts up (the very first one counts twice, but that's ok)
+ if (pre_1_3_19_PrivateStream > MIN_PRE_1_3_19_PRIVATESTREAM) {
+ dsyslog("switching to pre 1.3.19 Dolby Digital compatibility mode - substream id = %02X", SubStreamId);
+ ClrAvailableTracks();
+ goto pre_1_3_19_PrivateStreamDeteced;
+ }
}
}
}
diff --git a/device.h b/device.h
index 825aadf..9bd823e 100644
--- a/device.h
+++ b/device.h
@@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
- * $Id: device.h 1.85 2007/10/14 13:09:12 kls Exp $
+ * $Id: device.h 1.86 2007/10/21 09:21:52 kls Exp $
*/
#ifndef __DEVICE_H
@@ -377,7 +377,7 @@ private:
cMutex mutexCurrentSubtitleTrack;
int currentAudioTrackMissingCount;
bool autoSelectPreferredSubtitleLanguage;
- bool pre_1_3_19_PrivateStream;
+ int pre_1_3_19_PrivateStream;
protected:
virtual void SetAudioTrackDevice(eTrackType Type);
///< Sets the current audio track to the given value.
diff --git a/dvbsubtitle.c b/dvbsubtitle.c
index 1f7e6b7..e845594 100644
--- a/dvbsubtitle.c
+++ b/dvbsubtitle.c
@@ -7,7 +7,7 @@
* Original author: Marco Schlüßler <marco@lordzodiac.de>
* With some input from the "subtitle plugin" by Pekka Virtanen <pekka.virtanen@sci.fi>
*
- * $Id: dvbsubtitle.c 1.1 2007/10/14 14:02:35 kls Exp $
+ * $Id: dvbsubtitle.c 1.2 2007/11/03 14:36:07 kls Exp $
*/
#include "dvbsubtitle.h"
@@ -692,7 +692,7 @@ int cDvbSubtitleConverter::Convert(const uchar *Data, int Length)
bool ResetSubtitleAssembler = Data[PayloadOffset + 3] == 0x00;
// Compatibility mode for old subtitles plugin:
- if ((Data[PayloadOffset - 3] & 0x81) == 1 && Data[PayloadOffset - 2] == 0x81) {
+ if ((Data[7] & 0x01) && (Data[PayloadOffset - 3] & 0x81) == 0x01 && Data[PayloadOffset - 2] == 0x81) {
PayloadOffset--;
SubstreamHeaderLength = 1;
ResetSubtitleAssembler = Data[8] >= 5;
@@ -730,8 +730,8 @@ int cDvbSubtitleConverter::Convert(const uchar *Data, int Length)
break;
}
}
- return Length;
}
+ return Length;
}
return 0;
}
@@ -767,7 +767,7 @@ void cDvbSubtitleConverter::Action(void)
//TODO sync on PTS? are there actually devices that don't deliver an STC?
}
Delta /= 90; // STC and PTS are in 1/90000s
- if (abs(Delta) <= MAXDELTA) {
+ if (Delta <= MAXDELTA) {
if (Delta <= 0) {
dbgconverter("Got %d bitmaps, showing #%d\n", bitmaps->Count(), sb->Index() + 1);
if (AssertOsd()) {
@@ -777,8 +777,8 @@ void cDvbSubtitleConverter::Action(void)
}
bitmaps->Del(sb);
}
- else
- WaitMs = min(max(Delta, int64_t(0)), int64_t(1000));
+ else if (Delta < WaitMs)
+ WaitMs = Delta;
}
else
bitmaps->Del(sb);
@@ -830,6 +830,8 @@ int cDvbSubtitleConverter::ExtractSegment(const uchar *Data, int Length, int64_t
pages->Add(page);
dbgpages("Create SubtitlePage %d (total pages = %d)\n", pageId, pages->Count());
}
+ if (Pts)
+ page->SetPts(Pts);
switch (segmentType) {
case PAGE_COMPOSITION_SEGMENT: {
dbgsegments("PAGE_COMPOSITION_SEGMENT\n");
@@ -837,8 +839,6 @@ int cDvbSubtitleConverter::ExtractSegment(const uchar *Data, int Length, int64_t
if (pageVersion == page->Version())
break; // no update
page->SetVersion(pageVersion);
- if (Pts)
- page->SetPts(Pts);
page->SetTimeout(Data[6]);
page->SetState((Data[6 + 1] & 0x0C) >> 2);
page->regions.Clear();
@@ -968,6 +968,7 @@ int cDvbSubtitleConverter::ExtractSegment(const uchar *Data, int Length, int64_t
dbgsegments("END_OF_DISPLAY_SET_SEGMENT\n");
FinishPage(page);
}
+ break;
default:
dbgsegments("*** unknown segment type: %02X\n", segmentType);
}
diff --git a/font.c b/font.c
index 19753bf..73b77fb 100644
--- a/font.c
+++ b/font.c
@@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
- * $Id: font.c 1.21 2007/06/23 11:25:42 kls Exp $
+ * $Id: font.c 1.22 2007/11/04 11:08:12 kls Exp $
*/
#include "font.h"
@@ -395,17 +395,21 @@ cString cFont::GetFontFileName(const char *FontName)
FcConfigSubstitute(NULL, pat, FcMatchPattern);
FcDefaultSubstitute(pat);
FcFontSet *fontset = FcFontSort(NULL, pat, FcFalse, NULL, NULL);
- for (int i = 0; i < fontset->nfont; i++) {
- FcBool scalable;
- FcPatternGetBool(fontset->fonts[i], FC_SCALABLE, 0, &scalable);
- if (scalable) {
- FcChar8 *s = NULL;
- FcPatternGetString(fontset->fonts[i], FC_FILE, 0, &s);
- FontFileName = (char *)s;
- break;
+ if (fontset) {
+ for (int i = 0; i < fontset->nfont; i++) {
+ FcBool scalable;
+ FcPatternGetBool(fontset->fonts[i], FC_SCALABLE, 0, &scalable);
+ if (scalable) {
+ FcChar8 *s = NULL;
+ FcPatternGetString(fontset->fonts[i], FC_FILE, 0, &s);
+ FontFileName = (char *)s;
+ break;
+ }
}
- }
- FcFontSetDestroy(fontset);
+ FcFontSetDestroy(fontset);
+ }
+ else
+ esyslog("ERROR: no usable font found for '%s'", FontName);
FcPatternDestroy(pat);
free(fn);
FcFini();
diff --git a/i18n-to-gettext.pl b/i18n-to-gettext.pl
index 1be38fa..309a472 100755
--- a/i18n-to-gettext.pl
+++ b/i18n-to-gettext.pl
@@ -10,7 +10,7 @@
# See the main source file 'vdr.c' for copyright information and
# how to reach the author.
#
-# $Id: i18n-to-gettext.pl 1.5 2007/10/14 14:14:22 kls Exp $
+# $Id: i18n-to-gettext.pl 1.6 2007/11/04 10:57:36 kls Exp $
# How to convert an actual plugin:
#
@@ -306,25 +306,25 @@ $MAKEI18N = q{### Internationalization (I18N):
PODIR = po
LOCALEDIR = $(VDRDIR)/locale
I18Npo = $(wildcard $(PODIR)/*.po)
-I18Nmo = $(addsuffix .mo, $(foreach file, $(I18Npo), $(basename $(file))))
-I18Ndirs = $(notdir $(foreach file, $(I18Npo), $(basename $(file))))
+I18Nmsgs = $(addprefix $(LOCALEDIR)/, $(addsuffix /LC_MESSAGES/vdr-$(PLUGIN).mo, $(notdir $(foreach file, $(I18Npo), $(basename $(file))))))
I18Npot = $(PODIR)/$(PLUGIN).pot
%.mo: %.po
msgfmt -c -o $@ $<
$(I18Npot): $(wildcard *.c)
- xgettext -C -cTRANSLATORS --no-wrap -F -k -ktr -ktrNOOP --msgid-bugs-address='<} . $MSGIDBUGS . q{>' -o $@ $(wildcard *.c)
+ xgettext -C -cTRANSLATORS --no-wrap --no-location -k -ktr -ktrNOOP --msgid-bugs-address='<} . $MSGIDBUGS . q{>' -o $@ $^
-$(I18Npo): $(I18Npot)
- msgmerge -U --no-wrap -F --backup=none -q $@ $<
+%.po: $(I18Npot)
+ msgmerge -U --no-wrap --no-location --backup=none -q $@ $<
+ @touch $@
-i18n: $(I18Npot) $(I18Nmo)
- @mkdir -p $(LOCALEDIR)
- for i in $(I18Ndirs); do\
- mkdir -p $(LOCALEDIR)/$$i/LC_MESSAGES;\
- cp $(PODIR)/$$i.mo $(LOCALEDIR)/$$i/LC_MESSAGES/vdr-$(PLUGIN).mo;\
- done
+$(I18Nmsgs): $(LOCALEDIR)/%/LC_MESSAGES/vdr-$(PLUGIN).mo: $(PODIR)/%.mo
+ @mkdir -p $(dir $@)
+ cp $< $@
+
+.PHONY: i18n
+i18n: $(I18Nmsgs)
};
diff --git a/i18n.c b/i18n.c
index da699d9..a018f23 100644
--- a/i18n.c
+++ b/i18n.c
@@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
- * $Id: i18n.c 1.317 2007/08/24 14:03:47 kls Exp $
+ * $Id: i18n.c 1.318 2007/11/01 10:38:27 kls Exp $
*
*
*/
@@ -59,6 +59,7 @@ const char *LanguageCodeList[] = {
"dan",
"cze,ces",
"tur",
+ "ukr",
NULL
};
diff --git a/menu.c b/menu.c
index 853d1e7..7b8ce9a 100644
--- a/menu.c
+++ b/menu.c
@@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
- * $Id: menu.c 1.463 2007/10/13 10:10:20 kls Exp $
+ * $Id: menu.c 1.465 2007/11/03 15:02:00 kls Exp $
*/
#include "menu.h"
@@ -251,7 +251,7 @@ void cMenuEditChannel::Setup(void)
// Parameters for all types of sources:
strn0cpy(name, data.name, sizeof(name));
- Add(new cMenuEditStrItem( tr("Name"), name, sizeof(name), tr(FileNameChars)));
+ Add(new cMenuEditStrItem( tr("Name"), name, sizeof(name)));
Add(new cMenuEditSrcItem( tr("Source"), &data.source));
Add(new cMenuEditIntItem( tr("Frequency"), &data.frequency));
Add(new cMenuEditIntItem( tr("Vpid"), &data.vpid, 0, 0x1FFF));
@@ -671,7 +671,7 @@ cMenuEditTimer::cMenuEditTimer(cTimer *Timer, bool New)
Add(new cMenuEditBitItem( tr("VPS"), &data.flags, tfVps));
Add(new cMenuEditIntItem( tr("Priority"), &data.priority, 0, MAXPRIORITY));
Add(new cMenuEditIntItem( tr("Lifetime"), &data.lifetime, 0, MAXLIFETIME));
- Add(new cMenuEditStrItem( tr("File"), data.file, sizeof(data.file), tr(FileNameChars)));
+ Add(new cMenuEditStrItem( tr("File"), data.file, sizeof(data.file)));
SetFirstDayItem();
}
Timers.IncBeingEdited();
@@ -2107,6 +2107,7 @@ eOSState cMenuRecordings::ProcessKey(eKeys Key)
if (state == osUnknown) {
switch (Key) {
+ case kPlay:
case kOk: return Play();
case kRed: return (helpKeys > 1 && RecordingCommands.Count()) ? Commands() : Play();
case kGreen: return Rewind();
@@ -2712,7 +2713,7 @@ cMenuSetupRecord::cMenuSetupRecord(void)
Add(new cMenuEditBoolItem(tr("Setup.Recording$Use VPS"), &data.UseVps));
Add(new cMenuEditIntItem( tr("Setup.Recording$VPS margin (s)"), &data.VpsMargin, 0));
Add(new cMenuEditBoolItem(tr("Setup.Recording$Mark instant recording"), &data.MarkInstantRecord));
- Add(new cMenuEditStrItem( tr("Setup.Recording$Name instant recording"), data.NameInstantRecord, sizeof(data.NameInstantRecord), tr(FileNameChars)));
+ Add(new cMenuEditStrItem( tr("Setup.Recording$Name instant recording"), data.NameInstantRecord, sizeof(data.NameInstantRecord)));
Add(new cMenuEditIntItem( tr("Setup.Recording$Instant rec. time (min)"), &data.InstantRecordTime, 1, MAXINSTANTRECTIME));
Add(new cMenuEditIntItem( tr("Setup.Recording$Max. video file size (MB)"), &data.MaxVideoFileSize, MINVIDEOFILESIZE, MAXVIDEOFILESIZE));
Add(new cMenuEditBoolItem(tr("Setup.Recording$Split edited files"), &data.SplitEditedFiles));
diff --git a/menuitems.c b/menuitems.c
index 732aea2..a7ceef2 100644
--- a/menuitems.c
+++ b/menuitems.c
@@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
- * $Id: menuitems.c 1.53 2007/10/13 12:05:37 kls Exp $
+ * $Id: menuitems.c 1.55 2007/11/03 15:01:01 kls Exp $
*/
#include "menuitems.h"
@@ -18,7 +18,7 @@
#define AUTO_ADVANCE_TIMEOUT 1500 // ms before auto advance when entering characters via numeric keys
-const char *FileNameChars = trNOOP(" abcdefghijklmnopqrstuvwxyz0123456789-.#~,/_@");
+const char *FileNameChars = trNOOP("FileNameChars$ abcdefghijklmnopqrstuvwxyz0123456789-.,#~\\^$[]|()*+?{}/:%@&");
// --- cMenuEditItem ---------------------------------------------------------
@@ -256,7 +256,7 @@ cMenuEditStrItem::cMenuEditStrItem(const char *Name, char *Value, int Length, co
{
value = Value;
length = Length;
- allowed = Allowed;
+ allowed = Allowed ? Allowed : tr(FileNameChars);
pos = -1;
offset = 0;
insert = uppercase = false;
@@ -285,7 +285,7 @@ void cMenuEditStrItem::EnterEditMode(void)
int l = strlen(allowed) + 1;
allowedUtf8 = new uint[l];
Utf8ToArray(allowed, allowedUtf8, l);
- const char *charMap = tr(" 0\t-.#~,/_@1\tabc2\tdef3\tghi4\tjkl5\tmno6\tpqrs7\ttuv8\twxyz9");
+ const char *charMap = tr("CharMap$ 0\t-.,1#~\\^$[]|()*+?{}/:%@&\tabc2\tdef3\tghi4\tjkl5\tmno6\tpqrs7\ttuv8\twxyz9");
l = strlen(charMap) + 1;
charMapUtf8 = new uint[l];
Utf8ToArray(charMap, charMapUtf8, l);
diff --git a/menuitems.h b/menuitems.h
index 50778b1..21890a3 100644
--- a/menuitems.h
+++ b/menuitems.h
@@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
- * $Id: menuitems.h 1.21 2007/06/08 11:53:37 kls Exp $
+ * $Id: menuitems.h 1.22 2007/11/03 14:59:47 kls Exp $
*/
#ifndef __MENUITEMS_H
@@ -101,7 +101,7 @@ protected:
void LeaveEditMode(bool SaveValue = false);
bool InEditMode(void) { return valueUtf8 != NULL; }
public:
- cMenuEditStrItem(const char *Name, char *Value, int Length, const char *Allowed);
+ cMenuEditStrItem(const char *Name, char *Value, int Length, const char *Allowed = NULL);
~cMenuEditStrItem();
virtual eOSState ProcessKey(eKeys Key);
};
diff --git a/newplugin b/newplugin
index 57d814e..e025f74 100755
--- a/newplugin
+++ b/newplugin
@@ -12,7 +12,7 @@
# See the main source file 'vdr.c' for copyright information and
# how to reach the author.
#
-# $Id: newplugin 1.38 2007/10/14 09:13:17 kls Exp $
+# $Id: newplugin 1.39 2007/11/04 10:42:52 kls Exp $
$PLUGIN_NAME = $ARGV[0] || die "Usage: newplugin <name>\n";
@@ -131,25 +131,25 @@ DEPFILE = .dependencies
PODIR = po
LOCALEDIR = \$(VDRDIR)/locale
I18Npo = \$(wildcard \$(PODIR)/*.po)
-I18Nmo = \$(addsuffix .mo, \$(foreach file, \$(I18Npo), \$(basename \$(file))))
-I18Ndirs = \$(notdir \$(foreach file, \$(I18Npo), \$(basename \$(file))))
+I18Nmsgs = \$(addprefix \$(LOCALEDIR)/, \$(addsuffix /LC_MESSAGES/vdr-\$(PLUGIN).mo, \$(notdir \$(foreach file, \$(I18Npo), \$(basename \$(file))))))
I18Npot = \$(PODIR)/\$(PLUGIN).pot
%.mo: %.po
msgfmt -c -o \$\@ \$<
\$(I18Npot): \$(wildcard *.c)
- xgettext -C -cTRANSLATORS --no-wrap --no-location -k -ktr -ktrNOOP --msgid-bugs-address='<see README>' -o \$\@ \$(wildcard *.c)
+ xgettext -C -cTRANSLATORS --no-wrap --no-location -k -ktr -ktrNOOP --msgid-bugs-address='<see README>' -o \$\@ \$^
-\$(I18Npo): \$(I18Npot)
+%.po: \$(I18Npot)
msgmerge -U --no-wrap --no-location --backup=none -q \$\@ \$<
+ \@touch \$\@
-i18n: \$(I18Npot) \$(I18Nmo)
- \@mkdir -p \$(LOCALEDIR)
- for i in \$(I18Ndirs); do\\
- mkdir -p \$(LOCALEDIR)/\$\$i/LC_MESSAGES;\\
- cp \$(PODIR)/\$\$i.mo \$(LOCALEDIR)/\$\$i/LC_MESSAGES/vdr-\$(PLUGIN).mo;\\
- done
+\$(I18Nmsgs): \$(LOCALEDIR)/%/LC_MESSAGES/vdr-\$(PLUGIN).mo: \$(PODIR)/%.mo
+ \@mkdir -p \$(dir \$@)
+ cp \$< \$\@
+
+.PHONY: i18n
+i18n: \$(I18Nmsgs)
### Targets:
diff --git a/osdbase.h b/osdbase.h
index 032a64e..b62b071 100644
--- a/osdbase.h
+++ b/osdbase.h
@@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
- * $Id: osdbase.h 1.16 2007/06/09 11:49:00 kls Exp $
+ * $Id: osdbase.h 1.17 2007/11/03 14:50:52 kls Exp $
*/
#ifndef __OSDBASE_H
@@ -57,11 +57,11 @@ public:
cOsdItem(eOSState State = osUnknown);
cOsdItem(const char *Text, eOSState State = osUnknown, bool Selectable = true);
virtual ~cOsdItem();
- bool Selectable(void) { return selectable; }
+ bool Selectable(void) const { return selectable; }
void SetText(const char *Text, bool Copy = true);
void SetSelectable(bool Selectable);
void SetFresh(bool Fresh);
- const char *Text(void) { return text; }
+ const char *Text(void) const { return text; }
virtual void Set(void) {}
virtual eOSState ProcessKey(eKeys Key);
};
@@ -77,7 +77,7 @@ public:
cOsdObject(bool FastResponse = false) { isMenu = false; needsFastResponse = FastResponse; }
virtual ~cOsdObject() {}
virtual bool NeedsFastResponse(void) { return needsFastResponse; }
- bool IsMenu(void) { return isMenu; }
+ bool IsMenu(void) const { return isMenu; }
virtual void Show(void);
virtual eOSState ProcessKey(eKeys Key) { return osUnknown; }
};
@@ -124,7 +124,7 @@ public:
cOsdMenu(const char *Title, int c0 = 0, int c1 = 0, int c2 = 0, int c3 = 0, int c4 = 0);
virtual ~cOsdMenu();
virtual bool NeedsFastResponse(void) { return subMenu ? subMenu->NeedsFastResponse() : cOsdObject::NeedsFastResponse(); }
- int Current(void) { return current; }
+ int Current(void) const { return current; }
void Add(cOsdItem *Item, bool Current = false, cOsdItem *After = NULL);
void Ins(cOsdItem *Item, bool Current = false, cOsdItem *Before = NULL);
virtual void Display(void);
diff --git a/po/ca_ES.po b/po/ca_ES.po
index afef808..c874f43 100644
--- a/po/ca_ES.po
+++ b/po/ca_ES.po
@@ -872,13 +872,13 @@ msgstr "Procés d'edició iniciat"
msgid "Editing process already active!"
msgstr "Procés d'edició iniciat anteriorment!"
-msgid " abcdefghijklmnopqrstuvwxyz0123456789-.#~,/_@"
-msgstr " aàbcçdeéèfghiíjklmnoòpqrstuúvwxyz0123456789-.#~,/_@·"
+msgid "FileNameChars$ abcdefghijklmnopqrstuvwxyz0123456789-.,#~\\^$[]|()*+?{}/:%@&"
+msgstr " aàbcçdeéèfghiíjklmnoòpqrstuúvwxyz0123456789-.,#~\\^$[]|()*+?{}/:%@&·"
msgid "yes"
msgstr "sí"
-msgid " 0\t-.#~,/_@1\tabc2\tdef3\tghi4\tjkl5\tmno6\tpqrs7\ttuv8\twxyz9"
+msgid "CharMap$ 0\t-.,1#~\\^$[]|()*+?{}/:%@&\tabc2\tdef3\tghi4\tjkl5\tmno6\tpqrs7\ttuv8\twxyz9"
msgstr ""
msgid "Button$ABC/abc"
diff --git a/po/cs_CZ.po b/po/cs_CZ.po
index e734719..cdd5715 100644
--- a/po/cs_CZ.po
+++ b/po/cs_CZ.po
@@ -870,14 +870,14 @@ msgstr "Editaèní proces zaèal"
msgid "Editing process already active!"
msgstr "Editaèní proces je ji¾ aktivní!"
-msgid " abcdefghijklmnopqrstuvwxyz0123456789-.#~,/_@"
-msgstr " aábcèdïeéìfghiíjklmnòoópqrøs¹t»uúùvwxyýz¾0123456789-.#~,/_@"
+msgid "FileNameChars$ abcdefghijklmnopqrstuvwxyz0123456789-.,#~\\^$[]|()*+?{}/:%@&"
+msgstr " aábcèdïeéìfghiíjklmnòoópqrøs¹t»uúùvwxyýz¾0123456789-.,#~\\^$[]|()*+?{}/:%@&"
msgid "yes"
msgstr "ano"
-msgid " 0\t-.#~,/_@1\tabc2\tdef3\tghi4\tjkl5\tmno6\tpqrs7\ttuv8\twxyz9"
-msgstr " 0\t-.#~,/_@1\tabcáè2\tdefïéì3\tghií4\tjkl5\tmnoòó6\tpqrsø¹7\ttuv»úù8\twxyzý¾9"
+msgid "CharMap$ 0\t-.,1#~\\^$[]|()*+?{}/:%@&\tabc2\tdef3\tghi4\tjkl5\tmno6\tpqrs7\ttuv8\twxyz9"
+msgstr " 0\t-.,1#~\\^$[]|()*+?{}/:%@&\tabcáè2\tdefïéì3\tghií4\tjkl5\tmnoòó6\tpqrsø¹7\ttuv»úù8\twxyzý¾9"
msgid "Button$ABC/abc"
msgstr "ABC/abc"
diff --git a/po/da_DK.po b/po/da_DK.po
index a5e38fa..b11e105 100644
--- a/po/da_DK.po
+++ b/po/da_DK.po
@@ -870,14 +870,14 @@ msgstr "Redigeringsproces startet"
msgid "Editing process already active!"
msgstr "Redigeringsproces er allerede aktiv!"
-msgid " abcdefghijklmnopqrstuvwxyz0123456789-.#~,/_@"
-msgstr " abcdefghijklmnopqrstuvwxyzæøå0123456789-.#~,/_@"
+msgid "FileNameChars$ abcdefghijklmnopqrstuvwxyz0123456789-.,#~\\^$[]|()*+?{}/:%@&"
+msgstr " abcdefghijklmnopqrstuvwxyzæøå0123456789-.,#~\\^$[]|()*+?{}/:%@&"
msgid "yes"
msgstr "ja"
-msgid " 0\t-.#~,/_@1\tabc2\tdef3\tghi4\tjkl5\tmno6\tpqrs7\ttuv8\twxyz9"
-msgstr " 0\t-.#~,/_@1\tabcæå2\tdef3\tghi4\tjkl5\tmnoø6\tpqrs7\ttuv8\twxyz9"
+msgid "CharMap$ 0\t-.,1#~\\^$[]|()*+?{}/:%@&\tabc2\tdef3\tghi4\tjkl5\tmno6\tpqrs7\ttuv8\twxyz9"
+msgstr " 0\t-.,1#~\\^$[]|()*+?{}/:%@&\tabcæå2\tdef3\tghi4\tjkl5\tmnoø6\tpqrs7\ttuv8\twxyz9"
msgid "Button$ABC/abc"
msgstr "ABC/abc"
diff --git a/po/de_DE.po b/po/de_DE.po
index cb5d78d..621c3fc 100644
--- a/po/de_DE.po
+++ b/po/de_DE.po
@@ -870,14 +870,14 @@ msgstr "Schnitt gestartet"
msgid "Editing process already active!"
msgstr "Schnitt bereits aktiv!"
-msgid " abcdefghijklmnopqrstuvwxyz0123456789-.#~,/_@"
-msgstr " aäbcdefghijklmnoöpqrsßtuüvwxyz0123456789-.#~,/_@"
+msgid "FileNameChars$ abcdefghijklmnopqrstuvwxyz0123456789-.,#~\\^$[]|()*+?{}/:%@&"
+msgstr " aäbcdefghijklmnoöpqrsßtuüvwxyz0123456789-.,#~\\^$[]|()*+?{}/:%@&"
msgid "yes"
msgstr "ja"
-msgid " 0\t-.#~,/_@1\tabc2\tdef3\tghi4\tjkl5\tmno6\tpqrs7\ttuv8\twxyz9"
-msgstr " 0\t-.#~,/_@1\tabcä2\tdef3\tghi4\tjkl5\tmnoö6\tpqrs7\ttuvü8\twxyz9"
+msgid "CharMap$ 0\t-.,1#~\\^$[]|()*+?{}/:%@&\tabc2\tdef3\tghi4\tjkl5\tmno6\tpqrs7\ttuv8\twxyz9"
+msgstr " 0\t-.,1#~\\^$[]|()*+?{}/:%@&\tabcä2\tdef3\tghi4\tjkl5\tmnoö6\tpqrsß7\ttuvü8\twxyz9"
msgid "Button$ABC/abc"
msgstr "ABC/abc"
diff --git a/po/el_GR.po b/po/el_GR.po
index f204815..1e79779 100644
--- a/po/el_GR.po
+++ b/po/el_GR.po
@@ -870,13 +870,13 @@ msgstr "Áñ÷éóå ç åðåîåñãáóßá"
msgid "Editing process already active!"
msgstr "Åðåîåñãáóßá âñßóêåôáé óÝ åîÝëéîç!"
-msgid " abcdefghijklmnopqrstuvwxyz0123456789-.#~,/_@"
-msgstr " áÜâãäåÝæçÞèéßêëìíîïüðñóòôõýö÷øùþ0123456789-.#~,/_@abcdefghijklmnopqrstuvwxyz"
+msgid "FileNameChars$ abcdefghijklmnopqrstuvwxyz0123456789-.,#~\\^$[]|()*+?{}/:%@&"
+msgstr " áÜâãäåÝæçÞèéßêëìíîïüðñóòôõýö÷øùþ0123456789-.,#~\\^$[]|()*+?{}/:%@&abcdefghijklmnopqrstuvwxyz"
msgid "yes"
msgstr "íáß"
-msgid " 0\t-.#~,/_@1\tabc2\tdef3\tghi4\tjkl5\tmno6\tpqrs7\ttuv8\twxyz9"
+msgid "CharMap$ 0\t-.,1#~\\^$[]|()*+?{}/:%@&\tabc2\tdef3\tghi4\tjkl5\tmno6\tpqrs7\ttuv8\twxyz9"
msgstr ""
msgid "Button$ABC/abc"
diff --git a/po/es_ES.po b/po/es_ES.po
index 82cc030..39450a8 100644
--- a/po/es_ES.po
+++ b/po/es_ES.po
@@ -870,14 +870,14 @@ msgstr "Proceso de edición iniciado"
msgid "Editing process already active!"
msgstr "¡El proceso de edición ya está activo!"
-msgid " abcdefghijklmnopqrstuvwxyz0123456789-.#~,/_@"
-msgstr " aábcçdeéfghiíjklmnñoópqrstuúvwxyz0123456789-.#~,/_@"
+msgid "FileNameChars$ abcdefghijklmnopqrstuvwxyz0123456789-.,#~\\^$[]|()*+?{}/:%@&"
+msgstr " aábcçdeéfghiíjklmnñoópqrstuúvwxyz0123456789-.,#~\\^$[]|()*+?{}/:%@&"
msgid "yes"
msgstr "sí"
-msgid " 0\t-.#~,/_@1\tabc2\tdef3\tghi4\tjkl5\tmno6\tpqrs7\ttuv8\twxyz9"
-msgstr " 0\t-.#~,/_@1\tabcáç2\tdefé3\tghií4\tjkl5\tmnoñó6\tpqrs7\ttuvú8\twxyz9"
+msgid "CharMap$ 0\t-.,1#~\\^$[]|()*+?{}/:%@&\tabc2\tdef3\tghi4\tjkl5\tmno6\tpqrs7\ttuv8\twxyz9"
+msgstr " 0\t-.,1#~\\^$[]|()*+?{}/:%@&\tabcáç2\tdefé3\tghií4\tjkl5\tmnoñó6\tpqrs7\ttuvú8\twxyz9"
msgid "Button$ABC/abc"
msgstr "ABC/abc"
diff --git a/po/et_EE.po b/po/et_EE.po
index fd63f1e..f8edfc1 100644
--- a/po/et_EE.po
+++ b/po/et_EE.po
@@ -166,7 +166,7 @@ msgid "Key$Audio"
msgstr "Audio"
msgid "Key$Subtitles"
-msgstr ""
+msgstr "Subtiitrid"
msgid "Key$Schedule"
msgstr "Kava"
@@ -187,31 +187,31 @@ msgid "Key$Commands"
msgstr "Käsud"
msgid "Key$User1"
-msgstr ""
+msgstr "Lisaklahv1"
msgid "Key$User2"
-msgstr ""
+msgstr "Lisaklahv2"
msgid "Key$User3"
-msgstr ""
+msgstr "Lisaklahv3"
msgid "Key$User4"
-msgstr ""
+msgstr "Lisaklahv4"
msgid "Key$User5"
-msgstr ""
+msgstr "Lisaklahv5"
msgid "Key$User6"
-msgstr ""
+msgstr "Lisaklahv6"
msgid "Key$User7"
-msgstr ""
+msgstr "Lisaklahv7"
msgid "Key$User8"
-msgstr ""
+msgstr "Lisaklahv8"
msgid "Key$User9"
-msgstr ""
+msgstr "Lisaklahv9"
msgid "Free To Air"
msgstr "FTA"
@@ -253,10 +253,10 @@ msgid "Dpid2"
msgstr "Dpid2"
msgid "Spid1"
-msgstr ""
+msgstr "Spid1"
msgid "Spid2"
-msgstr ""
+msgstr "Spid2"
msgid "Tpid"
msgstr "Tpid"
@@ -283,7 +283,7 @@ msgid "CoderateH"
msgstr "CoderateH"
msgid "none"
-msgstr "tühi"
+msgstr "puudu"
msgid "CoderateL"
msgstr "CoderateL"
@@ -397,7 +397,7 @@ msgid "Button$Next"
msgstr "Tulekul"
msgid "Button$Now"
-msgstr "Nüüd"
+msgstr "Hetkel"
msgid "Button$Schedule"
msgstr "Ajakava"
@@ -457,7 +457,7 @@ msgid "Recording commands"
msgstr "Salvestuse käsud"
msgid "never"
-msgstr "mitte kunagi"
+msgstr "ei"
msgid "skin dependent"
msgstr "kestast sõltuv"
@@ -529,10 +529,10 @@ msgid "Setup.OSD$Channel info time (s)"
msgstr "Kanaliinfo esitusaeg (s)"
msgid "Setup.OSD$Info on channel switch"
-msgstr "Kanaliinfo näitamine"
+msgstr "Kanaliinfo kuvamine"
msgid "Setup.OSD$Timeout requested channel info"
-msgstr "Kanaliinfo kuvamise ajapiirang"
+msgstr "Kanaliinfo ajapiirang"
msgid "Setup.OSD$Scroll pages"
msgstr "Lehekülje kerimine"
@@ -556,7 +556,7 @@ msgid "Setup.EPG$EPG scan timeout (h)"
msgstr "EPG skaneerimise viide (h)"
msgid "Setup.EPG$EPG bugfix level"
-msgstr "EPG veaparanduse tase"
+msgstr "EPG veaparandustase"
msgid "Setup.EPG$EPG linger time (min)"
msgstr "Vana EPG viide (min)"
@@ -565,7 +565,7 @@ msgid "Setup.EPG$Set system time"
msgstr "Kella sünkroniseerimine"
msgid "Setup.EPG$Use time from transponder"
-msgstr "Kella sünkroniseerimise transponder"
+msgstr "Sünkroniseerimise transponder"
#. TRANSLATORS: note the plural!
msgid "Setup.EPG$Preferred languages"
@@ -588,19 +588,19 @@ msgid "no"
msgstr "ei"
msgid "names only"
-msgstr "ainult nimed"
+msgstr "nimed"
msgid "PIDs only"
-msgstr "ainult PID-id"
+msgstr "PID-id"
msgid "names and PIDs"
-msgstr "nimi ja PID-id"
+msgstr "nimed ja PID-id"
msgid "add new channels"
-msgstr "uute kanalite lisamine"
+msgstr "kanalite lisamine"
msgid "add new transponders"
-msgstr "uute transponderite lisamine"
+msgstr "transponderite lisamine"
msgid "DVB"
msgstr "DVB"
@@ -627,22 +627,22 @@ msgid "Setup.DVB$Audio language"
msgstr "Audio keel"
msgid "Setup.DVB$Display subtitles"
-msgstr ""
+msgstr "Subtiitrite kuvamine"
msgid "Setup.DVB$Subtitle languages"
-msgstr ""
+msgstr "Subtiitrite keeli"
msgid "Setup.DVB$Subtitle language"
-msgstr ""
+msgstr "Subtiitri keel"
msgid "Setup.DVB$Subtitle offset"
-msgstr ""
+msgstr "Subtiitrite nihe"
msgid "Setup.DVB$Subtitle foreground transparency"
-msgstr ""
+msgstr "Subtiitri läbipaistvus"
msgid "Setup.DVB$Subtitle background transparency"
-msgstr ""
+msgstr "Subtiitri tausta läbipaistvus"
msgid "LNB"
msgstr "LNB"
@@ -837,13 +837,13 @@ msgid "No audio available!"
msgstr "Audio kättesaamatu!"
msgid "No subtitles"
-msgstr ""
+msgstr "Subtiitrid väljas"
msgid "Button$Subtitles"
-msgstr ""
+msgstr "Subtiitrid"
msgid "No subtitles available!"
-msgstr ""
+msgstr "Subtiitrid puuduvad"
msgid "Not enough disk space to start recording!"
msgstr "Ebapiisavalt kettaruumi salvestamise alustamiseks!"
@@ -870,14 +870,14 @@ msgstr "Redigeerimine algas"
msgid "Editing process already active!"
msgstr "Redigeerimine juba aktiivne!"
-msgid " abcdefghijklmnopqrstuvwxyz0123456789-.#~,/_@"
-msgstr " abcdefghijklmnopqrsðzþtuvwõäöüxy0123456789-.#~,/_@"
+msgid "FileNameChars$ abcdefghijklmnopqrstuvwxyz0123456789-.,#~\\^$[]|()*+?{}/:%@&"
+msgstr " abcdefghijklmnopqrsðzþtuvwõäöüxy0123456789-.,#~\\^$[]|()*+?{}/:%@&"
msgid "yes"
msgstr "jah"
-msgid " 0\t-.#~,/_@1\tabc2\tdef3\tghi4\tjkl5\tmno6\tpqrs7\ttuv8\twxyz9"
-msgstr " 0\t-.#~,/_@1\tabcä2\tdef3\tghi4\tjkl5\tmnoõö6\tpqrsð7\ttuvü8\twxyzþ9"
+msgid "CharMap$ 0\t-.,1#~\\^$[]|()*+?{}/:%@&\tabc2\tdef3\tghi4\tjkl5\tmno6\tpqrs7\ttuv8\twxyz9"
+msgstr " 0\t-.,1#~\\^$[]|()*+?{}/:%@&\tabcä2\tdef3\tghi4\tjkl5\tmnoõö6\tpqrsð7\ttuvü8\twxyzþ9"
msgid "Button$ABC/abc"
msgstr "ABC/abc"
@@ -904,7 +904,7 @@ msgid "Can't shutdown - option '-s' not given!"
msgstr "Väljalülitamine ebaõnnestus - '-s' parameeter puudub!"
msgid "Editing - shut down anyway?"
-msgstr "Redigeerimine aktiive - lülitan välja?"
+msgstr "Redigeerimine aktiive - lülitada välja?"
msgid "Recording - shut down anyway?"
msgstr "Salvestamine aktiivne - lülitada välja?"
@@ -921,7 +921,7 @@ msgid "Plugin %s wakes up in %ld min, continue?"
msgstr "Laiendusmoodul %s ärkab %ld minuti pärast, jätkata?"
msgid "Editing - restart anyway?"
-msgstr "Redigeerimine aktiivne - taaskäivitada?"
+msgstr "Redigeerimine aktiivne - restart?"
msgid "Recording - restart anyway?"
msgstr "Salvestamine aktiivne - restart?"
diff --git a/po/fi_FI.po b/po/fi_FI.po
index da676d0..6ab2638 100644
--- a/po/fi_FI.po
+++ b/po/fi_FI.po
@@ -873,14 +873,14 @@ msgstr "Muokkaus aloitettu"
msgid "Editing process already active!"
msgstr "Muokkaus on jo käynnissä!"
-msgid " abcdefghijklmnopqrstuvwxyz0123456789-.#~,/_@"
-msgstr " abcdefghijklmnopqrstuvwxyzåäö0123456789-.#~,/_@"
+msgid "FileNameChars$ abcdefghijklmnopqrstuvwxyz0123456789-.,#~\\^$[]|()*+?{}/:%@&"
+msgstr " abcdefghijklmnopqrstuvwxyzåäö0123456789-.,#~\\^$[]|()*+?{}/:%@&"
msgid "yes"
msgstr "kyllä"
-msgid " 0\t-.#~,/_@1\tabc2\tdef3\tghi4\tjkl5\tmno6\tpqrs7\ttuv8\twxyz9"
-msgstr " 0\t-.#~,/_@1\tabcäå2\tdef3\tghi4\tjkl5\tmnoö6\tpqrs7\ttuv8\twxyz9"
+msgid "CharMap$ 0\t-.,1#~\\^$[]|()*+?{}/:%@&\tabc2\tdef3\tghi4\tjkl5\tmno6\tpqrs7\ttuv8\twxyz9"
+msgstr " 0\t-.,1#~\\^$[]|()*+?{}/:%@&\tabcäå2\tdef3\tghi4\tjkl5\tmnoö6\tpqrs7\ttuv8\twxyz9"
msgid "Button$ABC/abc"
msgstr "ABC/abc"
diff --git a/po/fr_FR.po b/po/fr_FR.po
index d19d627..de25e80 100644
--- a/po/fr_FR.po
+++ b/po/fr_FR.po
@@ -7,15 +7,16 @@
# Nicolas Huillard <nhuillard@e-dition.fr>, 2005
# Pierre Briec <pbriec@free.fr>, 2006
# Bruno Roussel <bruno.roussel@free.fr>, 2007
+# Michael Nival <mnival@club-internet.fr>, 2007
#
msgid ""
msgstr ""
"Project-Id-Version: VDR 1.5.7\n"
"Report-Msgid-Bugs-To: <vdr-bugs@cadsoft.de>\n"
"POT-Creation-Date: 2007-10-13 11:29+0200\n"
-"PO-Revision-Date: 2007-08-17 13:45+0200\n"
-"Last-Translator: Bruno Roussel <bruno.roussel@free.fr>\n"
-"Language-Team: <vdr@linuxtv.org>\n"
+"PO-Revision-Date: 2007-10-18 16:12+0100\n"
+"Last-Translator: Michael Nival <mnival@club-internet.fr>\n"
+"Language-Team: <vdr@linuxtv.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=ISO-8859-1\n"
"Content-Transfer-Encoding: 8bit\n"
@@ -171,7 +172,7 @@ msgid "Key$Audio"
msgstr "Audio"
msgid "Key$Subtitles"
-msgstr ""
+msgstr "Sous-Titres"
msgid "Key$Schedule"
msgstr "Programmes"
@@ -258,10 +259,10 @@ msgid "Dpid2"
msgstr "PID AC3 (2)"
msgid "Spid1"
-msgstr ""
+msgstr "Sous-Titre (1)"
msgid "Spid2"
-msgstr ""
+msgstr "Sous-Titre (2)"
msgid "Tpid"
msgstr "PID Télétexte"
@@ -632,22 +633,22 @@ msgid "Setup.DVB$Audio language"
msgstr "Langue audio"
msgid "Setup.DVB$Display subtitles"
-msgstr ""
+msgstr "Afficher les Sous-Titres"
msgid "Setup.DVB$Subtitle languages"
-msgstr ""
+msgstr "Langues des Sous-Titres"
msgid "Setup.DVB$Subtitle language"
-msgstr ""
+msgstr "Langue de Sous-Titre"
msgid "Setup.DVB$Subtitle offset"
-msgstr ""
+msgstr "Offset du Sous-Titre"
msgid "Setup.DVB$Subtitle foreground transparency"
-msgstr ""
+msgstr "Transparence de l'avant-plan"
msgid "Setup.DVB$Subtitle background transparency"
-msgstr ""
+msgstr "Transparence du fond"
msgid "LNB"
msgstr "LNB"
@@ -842,13 +843,13 @@ msgid "No audio available!"
msgstr "Pas d'audio disponible !"
msgid "No subtitles"
-msgstr ""
+msgstr "Pas de Sous-Titres"
msgid "Button$Subtitles"
-msgstr ""
+msgstr "Sous-Titres"
msgid "No subtitles available!"
-msgstr ""
+msgstr "Pas de Sous-Titres disponible !"
msgid "Not enough disk space to start recording!"
msgstr "Espace disque insuffisant pour démarrer l'enregistrement !"
@@ -875,14 +876,14 @@ msgstr "Opération de montage lancée"
msgid "Editing process already active!"
msgstr "Montage déjà en cours !"
-msgid " abcdefghijklmnopqrstuvwxyz0123456789-.#~,/_@"
-msgstr " aàbcçdeéèêfghiîjklmnoôpqrstuùûvwxyz0123456789-.#~,/_@"
+msgid "FileNameChars$ abcdefghijklmnopqrstuvwxyz0123456789-.,#~\\^$[]|()*+?{}/:%@&"
+msgstr " aàbcçdeéèêfghiîjklmnoôpqrstuùûvwxyz0123456789-.,#~\\^$[]|()*+?{}/:%@&"
msgid "yes"
msgstr "oui"
-msgid " 0\t-.#~,/_@1\tabc2\tdef3\tghi4\tjkl5\tmno6\tpqrs7\ttuv8\twxyz9"
-msgstr " 0\t-.#~,/_@1\tabcàâç2\tdeféèê3\tghiîï4\tjkl5\tmnoô6\tpqrs7\ttuvù8\twxyz9"
+msgid "CharMap$ 0\t-.,1#~\\^$[]|()*+?{}/:%@&\tabc2\tdef3\tghi4\tjkl5\tmno6\tpqrs7\ttuv8\twxyz9"
+msgstr " 0\t-.,1#~\\^$[]|()*+?{}/:%@&\tabcàâç2\tdeféèê3\tghiîï4\tjkl5\tmnoô6\tpqrs7\ttuvù8\twxyz9"
msgid "Button$ABC/abc"
msgstr "ABC/abc"
diff --git a/po/hr_HR.po b/po/hr_HR.po
index 572cbd4..f0712a0 100644
--- a/po/hr_HR.po
+++ b/po/hr_HR.po
@@ -871,13 +871,13 @@ msgstr "Rezanje je zapoèeto"
msgid "Editing process already active!"
msgstr "Ureðivanje je veæ aktivirano!"
-msgid " abcdefghijklmnopqrstuvwxyz0123456789-.#~,/_@"
-msgstr " abcèædðefghijklmnopqrs¹tuvwxyz¾0123456789-.#~,/_@"
+msgid "FileNameChars$ abcdefghijklmnopqrstuvwxyz0123456789-.,#~\\^$[]|()*+?{}/:%@&"
+msgstr " abcèædðefghijklmnopqrs¹tuvwxyz¾0123456789-.,#~\\^$[]|()*+?{}/:%@&"
msgid "yes"
msgstr "da"
-msgid " 0\t-.#~,/_@1\tabc2\tdef3\tghi4\tjkl5\tmno6\tpqrs7\ttuv8\twxyz9"
+msgid "CharMap$ 0\t-.,1#~\\^$[]|()*+?{}/:%@&\tabc2\tdef3\tghi4\tjkl5\tmno6\tpqrs7\ttuv8\twxyz9"
msgstr ""
msgid "Button$ABC/abc"
diff --git a/po/hu_HU.po b/po/hu_HU.po
index a42dee0..6f8b9ad 100644
--- a/po/hu_HU.po
+++ b/po/hu_HU.po
@@ -872,14 +872,14 @@ msgstr "Vágás elindítva"
msgid "Editing process already active!"
msgstr "A vágás már aktivált!"
-msgid " abcdefghijklmnopqrstuvwxyz0123456789-.#~,/_@"
-msgstr " aábcdeéfghiíjklmnoóöõpqrstuúüûvwxyz0123456789-.#~,/_@"
+msgid "FileNameChars$ abcdefghijklmnopqrstuvwxyz0123456789-.,#~\\^$[]|()*+?{}/:%@&"
+msgstr " aábcdeéfghiíjklmnoóöõpqrstuúüûvwxyz0123456789-.,#~\\^$[]|()*+?{}/:%@&"
msgid "yes"
msgstr "igen"
-msgid " 0\t-.#~,/_@1\tabc2\tdef3\tghi4\tjkl5\tmno6\tpqrs7\ttuv8\twxyz9"
-msgstr " 0\t-.#~,/_@1\taábc2\tdeéf3\tghií4\tjkl5\tmnoóöõ6\tpqrs7\ttuúüûv8\twxyz9"
+msgid "CharMap$ 0\t-.,1#~\\^$[]|()*+?{}/:%@&\tabc2\tdef3\tghi4\tjkl5\tmno6\tpqrs7\ttuv8\twxyz9"
+msgstr " 0\t-.,1#~\\^$[]|()*+?{}/:%@&\taábc2\tdeéf3\tghií4\tjkl5\tmnoóöõ6\tpqrs7\ttuúüûv8\twxyz9"
msgid "Button$ABC/abc"
msgstr "ABC/abc"
diff --git a/po/it_IT.po b/po/it_IT.po
index 2a2ed95..18eced8 100644
--- a/po/it_IT.po
+++ b/po/it_IT.po
@@ -11,9 +11,9 @@ msgstr ""
"Project-Id-Version: VDR 1.5.7\n"
"Report-Msgid-Bugs-To: <vdr-bugs@cadsoft.de>\n"
"POT-Creation-Date: 2007-10-13 11:29+0200\n"
-"PO-Revision-Date: 2007-08-12 14:17+0200\n"
-"Last-Translator: Sean Carlos <seanc@libero.it>\n"
-"Language-Team: <vdr@linuxtv.org>\n"
+"PO-Revision-Date: 2007-10-16 02:15+0100\n"
+"Last-Translator: Diego Pierotto <vdr-italian@tiscali.it>\n"
+"Language-Team: <vdr@linuxtv.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=ISO-8859-15\n"
"Content-Transfer-Encoding: 8bit\n"
@@ -169,7 +169,7 @@ msgid "Key$Audio"
msgstr "Audio"
msgid "Key$Subtitles"
-msgstr ""
+msgstr "Key$Sottotitoli"
msgid "Key$Schedule"
msgstr "Programmi"
@@ -256,10 +256,10 @@ msgid "Dpid2"
msgstr "PID AC3 (2)"
msgid "Spid1"
-msgstr ""
+msgstr "Spid1"
msgid "Spid2"
-msgstr ""
+msgstr "Spid2"
msgid "Tpid"
msgstr "PID Teletext"
@@ -630,22 +630,22 @@ msgid "Setup.DVB$Audio language"
msgstr "Lingua per l'audio"
msgid "Setup.DVB$Display subtitles"
-msgstr ""
+msgstr "Setup.DVB$Mostra sottotitoli"
msgid "Setup.DVB$Subtitle languages"
-msgstr ""
+msgstr "Setup.DVB$Lingue sottotitoli"
msgid "Setup.DVB$Subtitle language"
-msgstr ""
+msgstr "Setup.DVB$Lingua sottotitoli"
msgid "Setup.DVB$Subtitle offset"
-msgstr ""
+msgstr "Setup.DVB$Posizione sottotitolo"
msgid "Setup.DVB$Subtitle foreground transparency"
-msgstr ""
+msgstr "Setup.DVB$Trasparenza primo piano sottotitoli"
msgid "Setup.DVB$Subtitle background transparency"
-msgstr ""
+msgstr "Setup.DVB$Trasparenza sfondo sottotitoli"
msgid "LNB"
msgstr "LNB"
@@ -840,13 +840,13 @@ msgid "No audio available!"
msgstr "Nessun audio disponibile!"
msgid "No subtitles"
-msgstr ""
+msgstr "Nessun sottotitolo"
msgid "Button$Subtitles"
-msgstr ""
+msgstr "Button$Sottotitoli"
msgid "No subtitles available!"
-msgstr ""
+msgstr "Nessun sottotitolo disponibile!"
msgid "Not enough disk space to start recording!"
msgstr "Spazio su disco insufficiente per registrare!"
@@ -873,14 +873,14 @@ msgstr "Processo di modifica iniziato"
msgid "Editing process already active!"
msgstr "Processo di modifica già attivo!"
-msgid " abcdefghijklmnopqrstuvwxyz0123456789-.#~,/_@"
-msgstr " aáàbcdeéèfghiìîjklmnoòpqrstuùvwxyz0123456789-.#~,/_@"
+msgid "FileNameChars$ abcdefghijklmnopqrstuvwxyz0123456789-.,#~\\^$[]|()*+?{}/:%@&"
+msgstr " aáàbcdeéèfghiìîjklmnoòpqrstuùvwxyz0123456789-.,#~\\^$[]|()*+?{}/:%@&"
msgid "yes"
msgstr "sì"
-msgid " 0\t-.#~,/_@1\tabc2\tdef3\tghi4\tjkl5\tmno6\tpqrs7\ttuv8\twxyz9"
-msgstr " 0\t-.#~,/_@1\taàbc2\tdeèf3\tghiì4\tjkl5\tmnoò6\tpqrs7\ttuùv8\twxyz9"
+msgid "CharMap$ 0\t-.,1#~\\^$[]|()*+?{}/:%@&\tabc2\tdef3\tghi4\tjkl5\tmno6\tpqrs7\ttuv8\twxyz9"
+msgstr " 0\t-.,1#~\\^$[]|()*+?{}/:%@&\taàbc2\tdeèf3\tghiì4\tjkl5\tmnoò6\tpqrs7\ttuùv8\twxyz9"
msgid "Button$ABC/abc"
msgstr "ABC/abc"
diff --git a/po/nl_NL.po b/po/nl_NL.po
index 449a848..c8a9b36 100644
--- a/po/nl_NL.po
+++ b/po/nl_NL.po
@@ -872,13 +872,13 @@ msgstr "Bewerken is gestart"
msgid "Editing process already active!"
msgstr "Bewerken is al actief!"
-msgid " abcdefghijklmnopqrstuvwxyz0123456789-.#~,/_@"
-msgstr " abcdefghijklmnopqrstuvwxyz0123456789-.#~,/_@áäàïóöòúüù"
+msgid "FileNameChars$ abcdefghijklmnopqrstuvwxyz0123456789-.,#~\\^$[]|()*+?{}/:%@&"
+msgstr " abcdefghijklmnopqrstuvwxyz0123456789-.,#~\\^$[]|()*+?{}/:%@&áäàïóöòúüù"
msgid "yes"
msgstr "ja"
-msgid " 0\t-.#~,/_@1\tabc2\tdef3\tghi4\tjkl5\tmno6\tpqrs7\ttuv8\twxyz9"
+msgid "CharMap$ 0\t-.,1#~\\^$[]|()*+?{}/:%@&\tabc2\tdef3\tghi4\tjkl5\tmno6\tpqrs7\ttuv8\twxyz9"
msgstr ""
msgid "Button$ABC/abc"
diff --git a/po/nn_NO.po b/po/nn_NO.po
index 50d75b2..8063992 100644
--- a/po/nn_NO.po
+++ b/po/nn_NO.po
@@ -871,13 +871,13 @@ msgstr "Redigeringsprosess startet"
msgid "Editing process already active!"
msgstr "Redigeringsprosessen er allerede aktiv!"
-msgid " abcdefghijklmnopqrstuvwxyz0123456789-.#~,/_@"
+msgid "FileNameChars$ abcdefghijklmnopqrstuvwxyz0123456789-.,#~\\^$[]|()*+?{}/:%@&"
msgstr ""
msgid "yes"
msgstr "ja"
-msgid " 0\t-.#~,/_@1\tabc2\tdef3\tghi4\tjkl5\tmno6\tpqrs7\ttuv8\twxyz9"
+msgid "CharMap$ 0\t-.,1#~\\^$[]|()*+?{}/:%@&\tabc2\tdef3\tghi4\tjkl5\tmno6\tpqrs7\ttuv8\twxyz9"
msgstr ""
msgid "Button$ABC/abc"
diff --git a/po/pl_PL.po b/po/pl_PL.po
index 426ea37..9663840 100644
--- a/po/pl_PL.po
+++ b/po/pl_PL.po
@@ -870,14 +870,14 @@ msgstr "Proces edycji rozpoczêty"
msgid "Editing process already active!"
msgstr "Proces edycji jest ju¿ aktywny!"
-msgid " abcdefghijklmnopqrstuvwxyz0123456789-.#~,/_@"
-msgstr " a±bcædeêfghijkl³mnñoópqrs¶tuvwxyz¼¿0123456789-.#~,/_@"
+msgid "FileNameChars$ abcdefghijklmnopqrstuvwxyz0123456789-.,#~\\^$[]|()*+?{}/:%@&"
+msgstr " a±bcædeêfghijkl³mnñoópqrs¶tuvwxyz¼¿0123456789-.,#~\\^$[]|()*+?{}/:%@&"
msgid "yes"
msgstr "tak"
-msgid " 0\t-.#~,/_@1\tabc2\tdef3\tghi4\tjkl5\tmno6\tpqrs7\ttuv8\twxyz9"
-msgstr " 0\t-.#~,/_@1\tabc2±æ\tdef3ê\tghi4\tjkl5³\tmno6ñó\tpqrs7¶\ttuv8\twxyz9¼¿"
+msgid "CharMap$ 0\t-.,1#~\\^$[]|()*+?{}/:%@&\tabc2\tdef3\tghi4\tjkl5\tmno6\tpqrs7\ttuv8\twxyz9"
+msgstr " 0\t-.,1#~\\^$[]|()*+?{}/:%@&\tabc2±æ\tdef3ê\tghi4\tjkl5³\tmno6ñó\tpqrs7¶\ttuv8\twxyz9¼¿"
msgid "Button$ABC/abc"
msgstr "ABC/abc"
diff --git a/po/pt_PT.po b/po/pt_PT.po
index 650f873..8439538 100644
--- a/po/pt_PT.po
+++ b/po/pt_PT.po
@@ -870,13 +870,13 @@ msgstr "Processo de modificação iniciado"
msgid "Editing process already active!"
msgstr "Processo de modificação já activo!"
-msgid " abcdefghijklmnopqrstuvwxyz0123456789-.#~,/_@"
+msgid "FileNameChars$ abcdefghijklmnopqrstuvwxyz0123456789-.,#~\\^$[]|()*+?{}/:%@&"
msgstr ""
msgid "yes"
msgstr "sim"
-msgid " 0\t-.#~,/_@1\tabc2\tdef3\tghi4\tjkl5\tmno6\tpqrs7\ttuv8\twxyz9"
+msgid "CharMap$ 0\t-.,1#~\\^$[]|()*+?{}/:%@&\tabc2\tdef3\tghi4\tjkl5\tmno6\tpqrs7\ttuv8\twxyz9"
msgstr ""
msgid "Button$ABC/abc"
diff --git a/po/ro_RO.po b/po/ro_RO.po
index 207c73c..52b3452 100644
--- a/po/ro_RO.po
+++ b/po/ro_RO.po
@@ -871,14 +871,14 @@ msgstr "Montajul înregistrãrii a început"
msgid "Editing process already active!"
msgstr "Montajul înregistrãrii este deja activ!"
-msgid " abcdefghijklmnopqrstuvwxyz0123456789-.#~,/_@"
-msgstr " aãâbcdefghiîjklmnopqrsºtþuvwxyz0123456789-.#~,/_@"
+msgid "FileNameChars$ abcdefghijklmnopqrstuvwxyz0123456789-.,#~\\^$[]|()*+?{}/:%@&"
+msgstr " aãâbcdefghiîjklmnopqrsºtþuvwxyz0123456789-.,#~\\^$[]|()*+?{}/:%@&"
msgid "yes"
msgstr "da"
-msgid " 0\t-.#~,/_@1\tabc2\tdef3\tghi4\tjkl5\tmno6\tpqrs7\ttuv8\twxyz9"
-msgstr " 0\t-.#~,/_@1\taãâbc2\tdef3\tghiî4\tjkl5\tmno6\tpqrsº7\ttþuv8\twxyz9"
+msgid "CharMap$ 0\t-.,1#~\\^$[]|()*+?{}/:%@&\tabc2\tdef3\tghi4\tjkl5\tmno6\tpqrs7\ttuv8\twxyz9"
+msgstr " 0\t-.,1#~\\^$[]|()*+?{}/:%@&\taãâbc2\tdef3\tghiî4\tjkl5\tmno6\tpqrsº7\ttþuv8\twxyz9"
msgid "Button$ABC/abc"
msgstr "ABC/abc"
diff --git a/po/ru_RU.po b/po/ru_RU.po
index f1a0f88..f752e0e 100644
--- a/po/ru_RU.po
+++ b/po/ru_RU.po
@@ -870,14 +870,14 @@ msgstr "½ÐçÐâ ÜÞÝâÐÖ ×ÐßØáØ"
msgid "Editing process already active!"
msgstr "¿àÞæÕáá ÒØÔÕÞÜÞÝâÐÖÐ ãÖÕ ×ÐßãéÕÝ!"
-msgid " abcdefghijklmnopqrstuvwxyz0123456789-.#~,/_@"
-msgstr " abcdefghijklmnopqrstuvwxyzÐÑÒÓÔÕñÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìîï0123456789-.#~,/_@"
+msgid "FileNameChars$ abcdefghijklmnopqrstuvwxyz0123456789-.,#~\\^$[]|()*+?{}/:%@&"
+msgstr " abcdefghijklmnopqrstuvwxyzÐÑÒÓÔÕñÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìîï0123456789-.,#~\\^$[]|()*+?{}/:%@&"
msgid "yes"
msgstr "ÔÐ"
-msgid " 0\t-.#~,/_@1\tabc2\tdef3\tghi4\tjkl5\tmno6\tpqrs7\ttuv8\twxyz9"
-msgstr " 0\t-.#~,/_@1\tabcÐÑÒÓ2\tdefÔÕñÖ×3\tghiØÙÚÛ4\tjklÜÝÞ5\tmnoßàá6\tpqrsâãäå7\ttuvæçèéê8\twxyzëìíîï9"
+msgid "CharMap$ 0\t-.,1#~\\^$[]|()*+?{}/:%@&\tabc2\tdef3\tghi4\tjkl5\tmno6\tpqrs7\ttuv8\twxyz9"
+msgstr " 0\t-.,1#~\\^$[]|()*+?{}/:%@&\tabcÐÑÒÓ2\tdefÔÕñÖ×3\tghiØÙÚÛ4\tjklÜÝÞ5\tmnoßàá6\tpqrsâãäå7\ttuvæçèéê8\twxyzëìíîï9"
msgid "Button$ABC/abc"
msgstr "°±²/ÐÑÒ"
diff --git a/po/sl_SI.po b/po/sl_SI.po
index e45c6d9..da1de4d 100644
--- a/po/sl_SI.po
+++ b/po/sl_SI.po
@@ -871,14 +871,14 @@ msgstr "Urejanje se je zaèelo"
msgid "Editing process already active!"
msgstr "Urejanje je ¾e aktivno!"
-msgid " abcdefghijklmnopqrstuvwxyz0123456789-.#~,/_@"
-msgstr " abcèdefghijklmnopqrs¹tuvwxyz¾0123456789-.#~,/_@"
+msgid "FileNameChars$ abcdefghijklmnopqrstuvwxyz0123456789-.,#~\\^$[]|()*+?{}/:%@&"
+msgstr " abcèdefghijklmnopqrs¹tuvwxyz¾0123456789-.,#~\\^$[]|()*+?{}/:%@&"
msgid "yes"
msgstr "da"
-msgid " 0\t-.#~,/_@1\tabc2\tdef3\tghi4\tjkl5\tmno6\tpqrs7\ttuv8\twxyz9"
-msgstr " 0\t-.#~,/_@1\tabcè2\tdef3\tghi4\tjkl5\tmno6\tpqrs¹7\ttuv8\twxyz¾9"
+msgid "CharMap$ 0\t-.,1#~\\^$[]|()*+?{}/:%@&\tabc2\tdef3\tghi4\tjkl5\tmno6\tpqrs7\ttuv8\twxyz9"
+msgstr " 0\t-.,1#~\\^$[]|()*+?{}/:%@&\tabcè2\tdef3\tghi4\tjkl5\tmno6\tpqrs¹7\ttuv8\twxyz¾9"
msgid "Button$ABC/abc"
msgstr "ABC/abc"
diff --git a/po/sv_SE.po b/po/sv_SE.po
index bc879a1..cde4ca7 100644
--- a/po/sv_SE.po
+++ b/po/sv_SE.po
@@ -871,14 +871,14 @@ msgstr "Redigeringen startar"
msgid "Editing process already active!"
msgstr "Redigeringen är redan aktiv!"
-msgid " abcdefghijklmnopqrstuvwxyz0123456789-.#~,/_@"
-msgstr " abcdefghijklmnopqrstuvwxyzåäö0123456789-.#~,/_@"
+msgid "FileNameChars$ abcdefghijklmnopqrstuvwxyz0123456789-.,#~\\^$[]|()*+?{}/:%@&"
+msgstr " abcdefghijklmnopqrstuvwxyzåäö0123456789-.,#~\\^$[]|()*+?{}/:%@&"
msgid "yes"
msgstr "ja"
-msgid " 0\t-.#~,/_@1\tabc2\tdef3\tghi4\tjkl5\tmno6\tpqrs7\ttuv8\twxyz9"
-msgstr " 0\t-.#~,/_@1\tabcåä2\tdef3\tghi4\tjkl5\tmnoö6\tpqrs7\ttuv8\twxyz"
+msgid "CharMap$ 0\t-.,1#~\\^$[]|()*+?{}/:%@&\tabc2\tdef3\tghi4\tjkl5\tmno6\tpqrs7\ttuv8\twxyz9"
+msgstr " 0\t-.,1#~\\^$[]|()*+?{}/:%@&\tabcåä2\tdef3\tghi4\tjkl5\tmnoö6\tpqrs7\ttuv8\twxyz"
msgid "Button$ABC/abc"
msgstr "ABC/abc"
diff --git a/po/tr_TR.po b/po/tr_TR.po
index 3036d13..461a322 100644
--- a/po/tr_TR.po
+++ b/po/tr_TR.po
@@ -870,14 +870,14 @@ msgstr "Kesim baþlandý"
msgid "Editing process already active!"
msgstr "Kesim henüz aktif!"
-msgid " abcdefghijklmnopqrstuvwxyz0123456789-.#~,/_@"
-msgstr " abcçdefgðhýijklmnoöprsþtuüvyz0123456789-.#~,/_@"
+msgid "FileNameChars$ abcdefghijklmnopqrstuvwxyz0123456789-.,#~\\^$[]|()*+?{}/:%@&"
+msgstr " abcçdefgðhýijklmnoöprsþtuüvyz0123456789-.,#~\\^$[]|()*+?{}/:%@&"
msgid "yes"
msgstr "evet"
-msgid " 0\t-.#~,/_@1\tabc2\tdef3\tghi4\tjkl5\tmno6\tpqrs7\ttuv8\twxyz9"
-msgstr " 0\t-.#~,/_@1\tabcç2\tdef3\tgðhýi4\tjkl5\tmnoö6\tprsþ7\ttuüv8\tyz9"
+msgid "CharMap$ 0\t-.,1#~\\^$[]|()*+?{}/:%@&\tabc2\tdef3\tghi4\tjkl5\tmno6\tpqrs7\ttuv8\twxyz9"
+msgstr " 0\t-.,1#~\\^$[]|()*+?{}/:%@&\tabcç2\tdef3\tgðhýi4\tjkl5\tmnoö6\tprsþ7\ttuüv8\tyz9"
msgid "Button$ABC/abc"
msgstr "ABC/abc"
diff --git a/po/uk_UA.po b/po/uk_UA.po
new file mode 100644
index 0000000..fdddc90
--- /dev/null
+++ b/po/uk_UA.po
@@ -0,0 +1,999 @@
+# VDR language source file.
+# Copyright (C) 2007 Klaus Schmidinger <kls@cadsoft.de>
+# This file is distributed under the same license as the VDR package.
+# Yarema Aka Knedlyk <yupadmin@gmail.com>, 2007
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: VDR 1.5.10\n"
+"Report-Msgid-Bugs-To: <vdr-bugs@cadsoft.de>\n"
+"POT-Creation-Date: 2007-11-01 11:36+0100\n"
+"PO-Revision-Date: 2007-08-12 14:17+0200\n"
+"Last-Translator: Yarema Aka Knedlyk <yupadmin@gmail.com>\n"
+"Language-Team: <vdr@linuxtv.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ISO-8859-5\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+msgid "*** Invalid Channel ***"
+msgstr "*** ½ÕßàÐÒØÛìÝØÙ ÚÐÝÐÛ ***"
+
+msgid "Channel not available!"
+msgstr "ºÐÝÐÛ ÝÕÔÞáâãßÝØÙ!"
+
+msgid "Can't start Transfer Mode!"
+msgstr "½ÕÜÞÖÛØÒÞ ÒÚÛîçØâØ àÕÖØÜ ßàÞßãáÚã!"
+
+msgid "Starting EPG scan"
+msgstr "¿ÞçØÝÐî EPG-áÚÐÝãÒÐÝÝï"
+
+msgid "No title"
+msgstr "±Õ× ÝÐ×ÒØ"
+
+#. TRANSLATORS: The name of the language, as written natively
+msgid "LanguageName$English"
+msgstr "ÃÚàÐ÷ÝáìÚÐ"
+
+#. TRANSLATORS: The 3-letter code of the language
+msgid "LanguageCode$eng"
+msgstr "ukr"
+
+msgid "Phase 1: Detecting RC code type"
+msgstr "ºàÞÚ 1: ²Ø×ÝÐçÕÝÝï âØßã ÚÞÔã ßãÛìâÐ"
+
+msgid "Press any key on the RC unit"
+msgstr "½ÐâØáÝöâì ÑãÔì-ïÚã ÚÝÞßÚã ÝÐ ßãÛìâö"
+
+msgid "RC code detected!"
+msgstr "²Ø×ÝÐçÕÝÞ ÚÞÔ ßãÛìâÐ!"
+
+msgid "Do not press any key..."
+msgstr "½Õ ÝÐâØáÚÐÙâÕ ÚÝÞßÚØ..."
+
+msgid "Phase 2: Learning specific key codes"
+msgstr "ºàÞÚ 2: ¿àØßØáãÒÐÝÝï ÚÞÔöÒ ÔÛï ÒöÔßÞÒöÔÝØå ÚÝÞßÞÚ"
+
+#, c-format
+msgid "Press key for '%s'"
+msgstr "½ÐâØáÝöâì ÚÝÞßÚã '%s'"
+
+msgid "Press 'Up' to confirm"
+msgstr "½ÐâØáÝöâì '²ÒÕàå' ÔÛï ßöÔâÒÕàÔÖÕÝÝï"
+
+msgid "Press 'Down' to continue"
+msgstr "½ÐâØáÝöâì '²ÝØ×' ÔÛï ßàÞÔÞÒÖÕÝÝï"
+
+msgid "(press 'Up' to go back)"
+msgstr "(½ÐâØáÝöâì '²ÒÕàå' ÔÛï ßÞÒÕàÝÕÝÝï)"
+
+msgid "(press 'Down' to end key definition)"
+msgstr "(½ÐâØáÝöâì '²ÝØ×' ÔÛï ×ÐÚöÝçÕÝÝï ÝÐáâàÞÙÚØ ßãÛìâÐ)"
+
+msgid "(press 'Menu' to skip this key)"
+msgstr "(½ÐâØáÝöâì '¼ÕÝî' éÞÑ ßàÞßãáâØâØ ÚÝÞßÚã)"
+
+msgid "Learning Remote Control Keys"
+msgstr "½ÐÒçÐÝÝï ßãÛìâÐ"
+
+msgid "Phase 3: Saving key codes"
+msgstr "ºàÞÚ 3: ·ÐßÐÜ'ïâÞÒãÒÐÝÝï ÚÞÔöÒ ÚÝÞßÞÚ"
+
+msgid "Press 'Up' to save, 'Down' to cancel"
+msgstr "½ÐâØáÝöâì '²ÒÕàå' ÔÛï ×ÐÚöÝçÕÝÝï, '²ÝØ×' ÔÛï ÒöÔÜÞÒØ"
+
+msgid "Key$Up"
+msgstr "²ÒÕàå"
+
+msgid "Key$Down"
+msgstr "²ÝØ×"
+
+msgid "Key$Menu"
+msgstr "¼ÕÝî"
+
+msgid "Key$Ok"
+msgstr "Ok"
+
+msgid "Key$Back"
+msgstr "½Ð×ÐÔ"
+
+msgid "Key$Left"
+msgstr "½ÐÛöÒÞ"
+
+msgid "Key$Right"
+msgstr "½ÐßàÐÒÞ"
+
+msgid "Key$Red"
+msgstr "ÇÕàÒÞÝÐ"
+
+msgid "Key$Green"
+msgstr "·ÕÛÕÝÐ"
+
+msgid "Key$Yellow"
+msgstr "¶ÞÒâÐ"
+
+msgid "Key$Blue"
+msgstr "ÁØÝï"
+
+msgid "Key$Info"
+msgstr "¦ÝäÞ"
+
+msgid "Key$Play"
+msgstr "¿àÞÓàÐÒÐÝÝï"
+
+msgid "Key$Pause"
+msgstr "¿Ðã×Ð"
+
+msgid "Key$Stop"
+msgstr "ÁâÞß"
+
+msgid "Key$Record"
+msgstr "·ÐßØá"
+
+msgid "Key$FastFwd"
+msgstr "¿àÞÚàãâÚÐ ÒßÕàÕÔ"
+
+msgid "Key$FastRew"
+msgstr "¿àÞÚàãâÚÐ ÝÐ×ÐÔ"
+
+msgid "Key$Next"
+msgstr "²ßÕàÕÔ"
+
+msgid "Key$Prev"
+msgstr "½Ð×ÐÔ"
+
+msgid "Key$Power"
+msgstr "²ØÚÛîçØâØ"
+
+msgid "Key$Channel+"
+msgstr "ºÐÝÐÛ +"
+
+msgid "Key$Channel-"
+msgstr "ºÐÝÐÛ -"
+
+msgid "Key$PrevChannel"
+msgstr "¿ÞßÕàÕÔÝöÙ ÚÐÝÐÛ"
+
+msgid "Key$Volume+"
+msgstr "³ãçÝöáâì +"
+
+msgid "Key$Volume-"
+msgstr "³ãçÝöáâì -"
+
+msgid "Key$Mute"
+msgstr "²ØÚÛîçØâØ ×ÒãÚ"
+
+msgid "Key$Audio"
+msgstr "¼ÞÒÐ"
+
+msgid "Key$Subtitles"
+msgstr "ÁãÑâØâàØ"
+
+msgid "Key$Schedule"
+msgstr "ÂÕÛÕÓöÔ"
+
+msgid "Key$Channels"
+msgstr "ºÐÝÐÛØ"
+
+msgid "Key$Timers"
+msgstr "ÂÐÙÜÕàØ"
+
+msgid "Key$Recordings"
+msgstr "·ÐßØáØ"
+
+msgid "Key$Setup"
+msgstr "½ÐÛÐèâãÒÐÝÝï"
+
+msgid "Key$Commands"
+msgstr "ºÞÜÐÝÔØ"
+
+msgid "Key$User1"
+msgstr ""
+
+msgid "Key$User2"
+msgstr ""
+
+msgid "Key$User3"
+msgstr ""
+
+msgid "Key$User4"
+msgstr ""
+
+msgid "Key$User5"
+msgstr ""
+
+msgid "Key$User6"
+msgstr ""
+
+msgid "Key$User7"
+msgstr ""
+
+msgid "Key$User8"
+msgstr ""
+
+msgid "Key$User9"
+msgstr ""
+
+msgid "Free To Air"
+msgstr "FTA (ÝÕ×ÐÚÞÔÞÒÐÝÞ)"
+
+msgid "encrypted"
+msgstr "×ÐÚÞÔÞÒÐÝÞ"
+
+msgid "auto"
+msgstr "ÐÒâÞ"
+
+msgid "Edit channel"
+msgstr "ÀÕÔÐÚâãÒÐÝÝï ÚÐÝÐÛã"
+
+msgid "Name"
+msgstr "½Ð×ÒÐ"
+
+msgid "Source"
+msgstr "´ÖÕàÕÛÞ"
+
+msgid "Frequency"
+msgstr "ÇÐáâÞâÐ"
+
+msgid "Vpid"
+msgstr "Vpid (ÒöÔÕÞ)"
+
+msgid "Ppid"
+msgstr "Ppid"
+
+msgid "Apid1"
+msgstr "Apid1 (ÐãÔöÞ 1)"
+
+msgid "Apid2"
+msgstr "Apid2 (ÐãÔöÞ 2)"
+
+msgid "Dpid1"
+msgstr "Dpid1 (AC3 1)"
+
+msgid "Dpid2"
+msgstr "Dpid2 (AC3 2)"
+
+msgid "Spid1"
+msgstr ""
+
+msgid "Spid2"
+msgstr ""
+
+msgid "Tpid"
+msgstr "Tpid (âÕÛÕâÕÚáâ)"
+
+msgid "CA"
+msgstr "CA (ÔÕÚÞÔÕà)"
+
+msgid "Sid"
+msgstr "Sid"
+
+msgid "Polarization"
+msgstr "¿ÞÛïàØ×Ðæöï"
+
+msgid "Srate"
+msgstr "ÁØÜÒ. èÒØÔÚöáâì"
+
+msgid "Inversion"
+msgstr "¦ÝÒÕàáöï"
+
+msgid "off"
+msgstr "ÒØÚÛ"
+
+msgid "CoderateH"
+msgstr "CoderateH"
+
+msgid "none"
+msgstr "ÝöçÞÓÞ"
+
+msgid "CoderateL"
+msgstr "CoderateL"
+
+msgid "Modulation"
+msgstr "¼ÞÔãÛïæöï"
+
+msgid "Bandwidth"
+msgstr "´öÐßÐ×ÞÝ"
+
+msgid "Transmission"
+msgstr "¿ÕàÕÔÐçÐ"
+
+msgid "Guard"
+msgstr "·ÐåØáâ"
+
+msgid "Hierarchy"
+msgstr "¦ôàÐàåöï"
+
+msgid "Channel settings are not unique!"
+msgstr "½ÐáâàÞÙÚØ ÚÐÝÐÛã ÝÕ ôÔØÝö!"
+
+msgid "Channels"
+msgstr "ºÐÝÐÛØ"
+
+msgid "Button$Edit"
+msgstr "ÀÕÔÐÚâãÒÐâØ"
+
+msgid "Button$New"
+msgstr "´ÞÔÐâØ"
+
+msgid "Button$Delete"
+msgstr "²ØÔÐÛØâØ"
+
+msgid "Button$Mark"
+msgstr "¿ÕàÕÜöáâØâØ"
+
+msgid "Channel is being used by a timer!"
+msgstr "ºÐÝÐÛ ×ÐÝïâØÙ âÐÙÜÕàÞÜ!"
+
+msgid "Delete channel?"
+msgstr "²ØÔÐÛØâØ ÚÐÝÐÛ?"
+
+msgid "Edit timer"
+msgstr "½ÐÛÐèâãÒÐÝÝï âÐÙÜÕàÐ"
+
+msgid "Active"
+msgstr "°ÚâØÒÞÒÐÝÞ"
+
+msgid "Channel"
+msgstr "ºÐÝÐÛ"
+
+msgid "Day"
+msgstr "´ÕÝì"
+
+msgid "Start"
+msgstr "¿ÞçÐâÞÚ"
+
+msgid "Stop"
+msgstr "ºöÝÕæì"
+
+msgid "VPS"
+msgstr "VPS ßÞßàÐÒÚÐ"
+
+msgid "Priority"
+msgstr "¿àöÞàØâÕâ"
+
+msgid "Lifetime"
+msgstr "ÁâàÞÚ ×ÑÕàöÓÐÝÝï"
+
+msgid "File"
+msgstr "ÄÐÙÛ"
+
+msgid "First day"
+msgstr "¿ÕàèØÙ ÔÕÝì"
+
+msgid "Timers"
+msgstr "ÂÐÙÜÕàØ"
+
+msgid "Button$On/Off"
+msgstr "²ÚÛ/²ØÚÛ"
+
+msgid "Button$Info"
+msgstr "¦ÝäÞ"
+
+msgid "Delete timer?"
+msgstr "²ØÔÐÛØâØ âÐÙÜÕà?"
+
+msgid "Timer still recording - really delete?"
+msgstr "¹ÔÕ ×ÐßØá ßÞ âÐÙÜÕàã - ÔöÙáÝÞ ÒØÔÐÛØâØ?"
+
+msgid "Event"
+msgstr "¿ÕàÕÔÐçÐ"
+
+msgid "Button$Timer"
+msgstr "ÂÐÙÜÕà"
+
+msgid "Button$Record"
+msgstr "·ÐßØá"
+
+msgid "Button$Switch"
+msgstr "¿ÕàÕÚÛîçØâØ"
+
+msgid "What's on now?"
+msgstr "·ÐàÐ× Ò Õäöàö:"
+
+msgid "What's on next?"
+msgstr "´ÐÛö Ò ßàÞÓàÐÜö:"
+
+msgid "Button$Next"
+msgstr "´ÐÛö"
+
+msgid "Button$Now"
+msgstr "·ÐàÐ×"
+
+msgid "Button$Schedule"
+msgstr "¿àÞÓàÐÜÐ"
+
+msgid "Can't switch channel!"
+msgstr "½ÕÜÞÖÛØÒÞ ßÕàÕÚÛîçØâØ ÚÐÝÐÛ!"
+
+#, c-format
+msgid "Schedule - %s"
+msgstr "¿àÞÓàÐÜÐ - %s"
+
+#, c-format
+msgid "This event - %s"
+msgstr "Æï ßÕàÕÔÐçÐ - %s"
+
+msgid "This event - all channels"
+msgstr "Æï ßÕàÕÔÐçÐ - Òáö ÚÐÝÐÛØ"
+
+msgid "All events - all channels"
+msgstr "²áö ßÕàÕÔÐçö - Òáö ÚÐÝÐÛØ"
+
+#, c-format
+msgid "Please enter %d digits!"
+msgstr "½ÐâØáÝöâì %d æØäàØ"
+
+msgid "CAM not responding!"
+msgstr "CAM ÝÕ ÒöÔßÞÒöÔÐô"
+
+msgid "Recording info"
+msgstr "¿àÞ ×ÐßØá"
+
+msgid "Button$Play"
+msgstr "¿àÞÓàÐÒÐâØ"
+
+msgid "Button$Rewind"
+msgstr "½Ð×ÐÔ"
+
+msgid "Recordings"
+msgstr "·ÐßØáØ"
+
+msgid "Button$Open"
+msgstr "²öÔÚàØâØ"
+
+msgid "Commands"
+msgstr "ºÞÜÐÝÔØ"
+
+msgid "Error while accessing recording!"
+msgstr "¿ÞÜØÛÚÐ ÔÞáâãßã ÔÞ ×ÐßØáã!"
+
+msgid "Delete recording?"
+msgstr "²ØâÕàâØ ×ÐßØá?"
+
+msgid "Error while deleting recording!"
+msgstr "¿ÞÜØÛÚÐ ÒØÔÐÛÕÝÝï ×ÐßØáã!"
+
+msgid "Recording commands"
+msgstr "ºÞÜÐÝÔØ ×ÐßØáã"
+
+msgid "never"
+msgstr "ÝöÚÞÛØ"
+
+msgid "skin dependent"
+msgstr "×ÓöÔÝÞ × áâØÛÕÜ"
+
+msgid "always"
+msgstr "×ÐÒÖÔØ"
+
+msgid "OSD"
+msgstr "¼ÕÝî"
+
+msgid "Setup.OSD$Language"
+msgstr "¼ÞÒÐ"
+
+msgid "Setup.OSD$Skin"
+msgstr "ÁâØÛì"
+
+msgid "Setup.OSD$Theme"
+msgstr "ÂÕÜÐ"
+
+msgid "Setup.OSD$Left"
+msgstr "²öÔáâãß ×ÛöÒÐ"
+
+msgid "Setup.OSD$Top"
+msgstr "²öÔáâãß ×ÒÕàåã"
+
+msgid "Setup.OSD$Width"
+msgstr "ÈØàØÝÐ"
+
+msgid "Setup.OSD$Height"
+msgstr "²ØáÞâÐ"
+
+msgid "Setup.OSD$Message time (s)"
+msgstr "ÂàØÒÐÛöáâì ßÞÚÐ×ã ßÞÒöÔÞÜÛÕÝì (áÕÚ)"
+
+msgid "Setup.OSD$Use small font"
+msgstr "²ØÚÞàØáâÞÒãÒÐâØ ÜÐÛØÙ èàØäâ"
+
+msgid "Setup.OSD$Anti-alias"
+msgstr "·ÓÛÐÔÖØÒÐÝÝï èàØäâöÒ"
+
+msgid "Setup.OSD$Default font"
+msgstr "ÁâÐÝÔÐàâÝØÙ äÞÝâ"
+
+msgid "Setup.OSD$Small font"
+msgstr "¼ÐÛØÙ äÞÝâ"
+
+msgid "Setup.OSD$Fixed font"
+msgstr "ÄöÚáÞÒÐÝØÙ äÞÝâ"
+
+msgid "Setup.OSD$Default font size (pixel)"
+msgstr "ÀÐ×Üöà äÞÝâÐ ÔÛï ÜÕÝî (pixel)"
+
+msgid "Setup.OSD$Small font size (pixel)"
+msgstr "ÀÐ×Üöà ÜÐÛÞÓÞ äÞÝâÐ (pixel)"
+
+msgid "Setup.OSD$Fixed font size (pixel)"
+msgstr "ÀÐ×Üöà äöÚáÞÒÐÝÞÓÞ äÞÝâÐ (pixel)"
+
+msgid "Setup.OSD$Channel info position"
+msgstr "¿ÞÛÞÖÕÝÝï ÒöÚÝÐ öÝäÞàÜÐæö÷ ßàÞ ÚÐÝÐÛ"
+
+msgid "bottom"
+msgstr "ÒÝØ×ã"
+
+msgid "top"
+msgstr "ÒÒÕàåã"
+
+msgid "Setup.OSD$Channel info time (s)"
+msgstr "¿ÞÚÐ× öÝäÞàÜÐæö÷ ßàÞ ÚÐÝÐÛ (áÕÚ)"
+
+msgid "Setup.OSD$Info on channel switch"
+msgstr "¿ÞÚÐ×ãÒÐâØ öÝäÞàÜÐæöî ßàÞ ÚÐÝÐÛ"
+
+msgid "Setup.OSD$Timeout requested channel info"
+msgstr "¦ÝäÞàÜÐæöî ßàÞ ÚÐÝÐÛ ×ÐÚàØâØ"
+
+msgid "Setup.OSD$Scroll pages"
+msgstr "¿àÞÚàãâÚÐ áâÞàöÝÞÚ ÜÕÝî"
+
+msgid "Setup.OSD$Scroll wraps"
+msgstr "ÆØÚÛöçÝÐ ßàÞÚàãâÚÐ"
+
+msgid "Setup.OSD$Menu key closes"
+msgstr "ºÝÞßÚã ¼ÕÝî ×ÐÚàØâØ"
+
+msgid "Setup.OSD$Recording directories"
+msgstr "ºÐâÐÛÞÓØ ×ÑÕàöÓÐÝÝï ×ÐßØáöÒ"
+
+msgid "EPG"
+msgstr "ÂÕÛÕÓöÔ"
+
+msgid "Button$Scan"
+msgstr "ÁÚÐÝãàÞÒÐâØ"
+
+msgid "Setup.EPG$EPG scan timeout (h)"
+msgstr "·ÐâàØÜÚÐ áÚÐÝãÒÐÝÝï âÕÛÕÓöÔÐ (ç)"
+
+msgid "Setup.EPG$EPG bugfix level"
+msgstr "ÀöÒÕÝì ÚÞàÕÚæö÷ ßÞÜØÛÞÚ"
+
+msgid "Setup.EPG$EPG linger time (min)"
+msgstr "·ÑÕàöÓÐÝÝï ×ÐáâÐàöÛØå ÔÐÝØå (åÒ)"
+
+msgid "Setup.EPG$Set system time"
+msgstr "²âÐÝÞÒØâØ áØáâÕÜØÙ çÐá"
+
+msgid "Setup.EPG$Use time from transponder"
+msgstr "²ØÚÞàØáâÐâØ çÐá âàÐÝáßÞÝÔÕàÐ"
+
+#. TRANSLATORS: note the plural!
+msgid "Setup.EPG$Preferred languages"
+msgstr "±ÐÖÐÝö ÜÞÒØ (âÕÛÕÓöÔ)"
+
+#. TRANSLATORS: note the singular!
+msgid "Setup.EPG$Preferred language"
+msgstr "²ØÑàÐÝÞ"
+
+msgid "pan&scan"
+msgstr "ßÐÝÞàÐÜãÒÐâØ"
+
+msgid "letterbox"
+msgstr "×ÜÕÝèãÒÐâØ"
+
+msgid "center cut out"
+msgstr "ÞÑàö×ÐâØ ×ÑÞÚã"
+
+msgid "no"
+msgstr "Ýö"
+
+msgid "names only"
+msgstr "âöÛìÚØ ÝÐ×ÒØ"
+
+msgid "PIDs only"
+msgstr "ÂöÛìÚØ PIDØ"
+
+msgid "names and PIDs"
+msgstr "ÝÐ×ÒØ ö PIDØ"
+
+msgid "add new channels"
+msgstr "ÔÞÔÐâØ ÝÞÒö ÚÐÝÐÛØ"
+
+msgid "add new transponders"
+msgstr "ÔÞÔÐâØ ÝÞÒö âàÐÝáßÞÝÔÕàØ"
+
+msgid "DVB"
+msgstr "DVB"
+
+msgid "Setup.DVB$Primary DVB interface"
+msgstr "¾áÝÞÒÝØÙ DVB-ßàØáâàöÙ"
+
+msgid "Setup.DVB$Video format"
+msgstr "ÄÞàÜÐâ ÒöÔÕÞ"
+
+msgid "Setup.DVB$Video display format"
+msgstr "ÈØàÞÚÞÕÚàÐÝÕ ×ÞÑàÐÖÕÝÝï"
+
+msgid "Setup.DVB$Use Dolby Digital"
+msgstr "²ÚÛîçØâØ Dolby Digital"
+
+msgid "Setup.DVB$Update channels"
+msgstr "¾ÝÞÒÛîÒÐâØ ÝÐáâàÞÙÚØ ÚÐÝÐÛöÒ"
+
+msgid "Setup.DVB$Audio languages"
+msgstr "±ÐÖÐÝö ÜÞÒØ (×ÒãÚ)"
+
+msgid "Setup.DVB$Audio language"
+msgstr "²ØÑàÐÝÞ"
+
+msgid "Setup.DVB$Display subtitles"
+msgstr "¿ÞÚÐ×ãÒÐâØ áãÑâØâàØ"
+
+msgid "Setup.DVB$Subtitle languages"
+msgstr "¼ÞÒØ áãÑâØâàöÒ"
+
+msgid "Setup.DVB$Subtitle language"
+msgstr "¼ÞÒÐ áãÑâØâàöÒ"
+
+msgid "Setup.DVB$Subtitle offset"
+msgstr "²öÔáâãß áãÑâØâàöÒ"
+
+msgid "Setup.DVB$Subtitle foreground transparency"
+msgstr ""
+
+msgid "Setup.DVB$Subtitle background transparency"
+msgstr ""
+
+msgid "LNB"
+msgstr "ºÞÝÒÕàâÕà"
+
+msgid "Setup.LNB$Use DiSEqC"
+msgstr "²ØÚÞàØáâÞÒãÒÐâØ DiSEqC"
+
+msgid "Setup.LNB$SLOF (MHz)"
+msgstr "ÇÐáâÞâÐ ßÕàÕÚÛîçÐÝÝï (SLOF) (¼³æ)"
+
+msgid "Setup.LNB$Low LNB frequency (MHz)"
+msgstr "½ØÖÝï çÐáâÞâÐ ÚÞÝÒÕàâÕàÐ (¼³æ)"
+
+msgid "Setup.LNB$High LNB frequency (MHz)"
+msgstr "²ÕàåÝï çÐáâÞâÐ ÚÞÝÒÕàâÕàÐ (¼³æ)"
+
+msgid "CAM reset"
+msgstr "¿ÕàÕ×ÐÒÐÝâÐÖÕÝÝï CAM"
+
+msgid "CAM present"
+msgstr "CAM ßàØáãâÝöÙ"
+
+msgid "CAM ready"
+msgstr "CAM ÓÞâÞÒØÙ"
+
+msgid "CAM"
+msgstr "ÃÜÞÒÝØÙ ÔÞáâãß"
+
+msgid "Button$Menu"
+msgstr "¼ÕÝî"
+
+msgid "Button$Reset"
+msgstr "ÁÚØÝãâØ"
+
+msgid "Opening CAM menu..."
+msgstr "²öÔÚàØÒÐî ÜÕÝî ÜÞÔãÛï ãÜÞÒÝÞÓÞ ÔÞáâãßã (CAM)"
+
+msgid "Can't open CAM menu!"
+msgstr "¼ÕÝî CAM-ÜÞÔãÛï ÝÕÔÞáâãßÝÕ!"
+
+msgid "CAM is in use - really reset?"
+msgstr "CAM ÒØÚÞàØáâÞÒãôâìáï - ÔöÙáÝÞ ßÕàÕ×ÐÒÐÝâÐÖØâØ?"
+
+msgid "Can't reset CAM!"
+msgstr "¿ÞÜØÛÚÐ ßÕàÕ×ÐßãáÚã CAM-ÜÞÔãÛï!"
+
+msgid "Recording"
+msgstr "·ÐßØá"
+
+msgid "Setup.Recording$Margin at start (min)"
+msgstr "²ØßÕàÕÔÖÕÝÝï ßÞçÐâÚã ×ÐßØáã (åÒ)"
+
+msgid "Setup.Recording$Margin at stop (min)"
+msgstr "·Ðßö×ÝÕÝÝï ×ãßØÝÚØ ×ÐßØáã (åÒ)"
+
+msgid "Setup.Recording$Primary limit"
+msgstr "¼öÝ. ßàöÞàØâÕâ ×ÐåÞßÛÕÝÝï ÞáÝ. ßàØáâàÞî"
+
+msgid "Setup.Recording$Default priority"
+msgstr "¿àöÞàØâÕâ âÐÙÜÕàÐ ßÞ ×ÐÜÞÒçãÒÐÝÝî"
+
+msgid "Setup.Recording$Default lifetime (d)"
+msgstr "ÁâàÞÚ ×ÑÕàöÓÐÝÝï ×ÐßØáã ßÞ ×ÐÜÞÒçãÒÐÝÝî (Ô)"
+
+msgid "Setup.Recording$Pause priority"
+msgstr "¿àöÞàØâÕâ ÒöÔÚÛÐÔÕÝÞÓÞ ßÕàÕÓÛïÔã"
+
+msgid "Setup.Recording$Pause lifetime (d)"
+msgstr "·ÑÕàöÓÐÝÝï ÒöÔÚÛÐÔÕÝÞÓÞ ßÕàÕÓÛïÔã (Ô)"
+
+msgid "Setup.Recording$Use episode name"
+msgstr "³àãßãÒÐâØ äÐÙÛØ ßÞ Õßö×ÞÔÐå"
+
+msgid "Setup.Recording$Use VPS"
+msgstr "²ØÚÞàØáâÞÒãÒÐâØ áØÓÝÐÛØ VPS"
+
+msgid "Setup.Recording$VPS margin (s)"
+msgstr "±ãäÕàÝØÙ çÐá VPS (áÕÚ)"
+
+msgid "Setup.Recording$Mark instant recording"
+msgstr "²öÔÜöçÐâØ ×àÞÑÛÕÝö ÒàãçÝã ×ÐßØáØ"
+
+msgid "Setup.Recording$Name instant recording"
+msgstr "ÁåÕÜÐ ÝÐÙÜÕÝãÒÐÝì àãçÝØå ×ÐßØáöÒ"
+
+msgid "Setup.Recording$Instant rec. time (min)"
+msgstr "¿àÞâïÖÝöáâì àãçÝÞÓÞ ×ÐßØáã (åÒ)"
+
+msgid "Setup.Recording$Max. video file size (MB)"
+msgstr "¼ÐÚá. àÐ×Üöà ÒöÔÕÞäÐÙÛã (¼Ñ)"
+
+msgid "Setup.Recording$Split edited files"
+msgstr "´öÛØâØ ÒöÔàÕÔÐÚâÞÒÐÝö äÐÙÛØ"
+
+msgid "Replay"
+msgstr "¿ÕàÕÓÛïÔ"
+
+msgid "Setup.Replay$Multi speed mode"
+msgstr "±ÐÓÐâÞèÒØÔÚöáÝØÙ àÕÖØÜ"
+
+msgid "Setup.Replay$Show replay mode"
+msgstr "²öÞÑàÐÖÐâØ àÕÖØÜ ßÕàÕÓÛïÔã"
+
+msgid "Setup.Replay$Resume ID"
+msgstr "ID ßÕàÕÓÛïÔã"
+
+msgid "Miscellaneous"
+msgstr "Àö×ÝÕ"
+
+msgid "Setup.Miscellaneous$Min. event timeout (min)"
+msgstr "¼öÝ. çÐá ÞçöÚãÒÐÝÝï ßÞÔö÷ (åÒ)"
+
+msgid "Setup.Miscellaneous$Min. user inactivity (min)"
+msgstr "¼öÝ. çÐá ÞçöÚãÒÐÝÝï ÒÒÞÔã (åÒ)"
+
+msgid "Setup.Miscellaneous$SVDRP timeout (s)"
+msgstr "·ÐâàØÜÚÚÐ ÞÑàØÒã ×'ôÔÝÐÝÝï SVDRP (áÕÚ)"
+
+msgid "Setup.Miscellaneous$Zap timeout (s)"
+msgstr "·ÐâàØÜÚÐ ßÕàÕÚÛîçÐÝÝï ÚÐÝÐÛã (áÕÚ)"
+
+msgid "Setup.Miscellaneous$Channel entry timeout (ms)"
+msgstr "·ÐâàØÜÚÐ çÐáã ÔÛï ÒßàÞÒÐÔÖÕÝÝï ÚÐÝÐÛã (ms)"
+
+msgid "Setup.Miscellaneous$Initial channel"
+msgstr "ºÐÝÐÛ ßàØ ÒÚÛîçÐÝÝî"
+
+msgid "Setup.Miscellaneous$as before"
+msgstr "ïÚ àÐÝöèÕ"
+
+msgid "Setup.Miscellaneous$Initial volume"
+msgstr "³ãçÝöáâì ßàØ ÒÚÛîçÕÝÝö"
+
+msgid "Plugins"
+msgstr "¼ÞÔãÛö àÞ×èØàÕÝÝï"
+
+msgid "This plugin has no setup parameters!"
+msgstr "¼ÞÔãÛì ÝÕ ÜÐô ßÐàÐÜÕâàöÒ ÝÐÛÐèâãÒÐÝì!"
+
+msgid "Setup"
+msgstr "½ÐÛÐèâãÒÐÝÝï"
+
+msgid "Restart"
+msgstr "¿ÕàÕ×ÐßãáâØâØ"
+
+msgid "Really restart?"
+msgstr "´öÙáÝÞ ßÕàÕ×ÐßãáâØâØ?"
+
+#. TRANSLATORS: note the leading and trailing blanks!
+msgid " Stop recording "
+msgstr " ·ãßØÝØâØ ×ÐßØá "
+
+msgid "Schedule"
+msgstr "ÂÕÛÕÓöÔ"
+
+msgid "VDR"
+msgstr "VDR"
+
+msgid "Disk"
+msgstr "´ØáÚ"
+
+msgid "free"
+msgstr "ÒöÛìÝÞ"
+
+#. TRANSLATORS: note the leading blank!
+msgid " Stop replaying"
+msgstr " ·ãßØÝØâØ ßàÞÓàÐÒÐÝÝï"
+
+msgid "Button$Audio"
+msgstr "¼ÞÒÐ"
+
+msgid "Button$Pause"
+msgstr "¿Ðã×Ð"
+
+msgid "Button$Stop"
+msgstr "ÁâÞß"
+
+msgid "Button$Resume"
+msgstr "¿àÞÔÞÒÖØâØ"
+
+#. TRANSLATORS: note the leading blank!
+msgid " Cancel editing"
+msgstr " ¿ÕàÕàÒÐâØ ÜÞÝâÐÖ ×ÐßØáã"
+
+msgid "Stop recording?"
+msgstr "¿àØßØÝØâØ ×ÐßØá?"
+
+msgid "Cancel editing?"
+msgstr "¿ÕàÕàÒÐâØ àÕÔÐÚâãÒÐÝÝï?"
+
+msgid "No audio available!"
+msgstr "²öÔáãâÝöÙ ×ÒãÚ!"
+
+msgid "No subtitles"
+msgstr "½ÕÜÐô áãÑâØâàöÒ"
+
+msgid "Button$Subtitles"
+msgstr "ÁãÑâØâàØ"
+
+msgid "No subtitles available!"
+msgstr "ÁãÑâØâàöÒ ÝÕÜÐô!"
+
+msgid "Not enough disk space to start recording!"
+msgstr "½ÕÔÞáâÐâÝìÞ Üöáæï ÝÐ ÔØáÚã ÔÛï ßÞçÐâÚã ×ÐßØáã"
+
+msgid "No free DVB device to record!"
+msgstr "½ÕÜÐô ÒöÛìÝÞÓÞ DVB-ßàØáâàÞî ÔÛï ×ÐßØáã!"
+
+msgid "Pausing live video..."
+msgstr "ÀÕÖØÜ ÒöÔÚÛÐÔÕÝÞÓÞ ßÕàÕÓÛïÔã..."
+
+#. TRANSLATORS: note the trailing blank!
+msgid "Jump: "
+msgstr "¿ÕàÕÙâØ: "
+
+msgid "No editing marks defined!"
+msgstr "½Õ ×ÐÔÐÝÞ ÜöâÞÚ ÔÛï ÜÞÝâÐÖã!"
+
+msgid "Can't start editing process!"
+msgstr "½ÕÜÞÖÛØÒÞ ßÞçÐâØ ÜÞÝâÐÖ ×ÐßØáã!"
+
+msgid "Editing process started"
+msgstr "¼ÞÝâÐÖ ×ÐßØáã ßÞçÐÒáï"
+
+msgid "Editing process already active!"
+msgstr "¿àÞæÕá ÒöÔÕÞÜÞÝâÐÖã ÒÖÕ ×ÐßãéÕÝØÙ!"
+
+#, fuzzy
+msgid "FileNameChars$ abcdefghijklmnopqrstuvwxyz0123456789-.,#~\\^$[]|()*+?{}/:%@&"
+msgstr " abcdefghijklmnopqrstuvwxyzÐÑÒÓÔÕôñÖ×Øö÷ÙÚÛÜÝÞßàáâãäåæçèéêëìîï0123456789-.#~,/_@"
+
+msgid "yes"
+msgstr "âÐÚ"
+
+#, fuzzy
+msgid "CharMap$ 0\t-.,1#~\\^$[]|()*+?{}/:%@&\tabc2\tdef3\tghi4\tjkl5\tmno6\tpqrs7\ttuv8\twxyz9"
+msgstr " 0\t-.#~,/_@1\tabcÐÑÒÓ2\tdefÔÕôñÖ×3\tghiØö÷ÙÚÛ4\tjklÜÝÞ5\tmnoßàá6\tpqrsâãäå7\ttuvæçèéê8\twxyzëìíîï9"
+
+msgid "Button$ABC/abc"
+msgstr "°±²/ÐÑÒ"
+
+msgid "Button$Overwrite"
+msgstr "·ÐÜöÝÐ"
+
+msgid "Button$Insert"
+msgstr "²áâÐÒÚÐ"
+
+msgid "Plugin"
+msgstr "¼ÞÔãÛì"
+
+msgid "Up/Dn for new location - OK to move"
+msgstr "½ÐâØáÚÐÙâÕ \"²ÒÕàå\"/\"²ÝØ×\" ÔÛï ÒØÑÞàã ßÞ×Øæö÷, Ð ßÞâöÜ \"OK\""
+
+msgid "Channel locked (recording)!"
+msgstr "ºÐÝÐÛ ×ÐÑÛÞÚÞÒÐÝÞ (ÙÔÕ ×ÐßØá)!"
+
+msgid "Low disk space!"
+msgstr "½ÕÔÞáâÐâÝìÞ Üöáæï ÝÐ ÔØáÚã!"
+
+msgid "Can't shutdown - option '-s' not given!"
+msgstr "²ØÚÛîçÕÝÝÝï ÝÕÜÞÖÛØÒÕ - ÝÕ ×ÐÔÐÝÞ ßÐàÐÜÕâà '-s'!"
+
+msgid "Editing - shut down anyway?"
+msgstr "¹ÔÕ ÜÞÝâÐÖ - ÔöÙáÝÞ ÒØÚÛîçØâØ?"
+
+msgid "Recording - shut down anyway?"
+msgstr "¹ÔÕ ×ÐßØá - ÔöÙáÝÞ ÒØÚÛîçØâØ?"
+
+#, c-format
+msgid "Recording in %ld minutes, shut down anyway?"
+msgstr "ÇÕàÕ× %ld åÒØÛØÝ ßÞçÝÕâìáï ×ÐßØá - ÔöÙáÝÞ ÒØÚÛîçØâØ?"
+
+msgid "shut down anyway?"
+msgstr "ÔöÙáÝÞ ÒØÚÛîçØâØ?"
+
+#, c-format
+msgid "Plugin %s wakes up in %ld min, continue?"
+msgstr "Plugin %s ßàÞáÝÕâìáï çÕàÕ× %ld åÒØÛØÝ - ßàÞÔÞÒÖØâØ?"
+
+msgid "Editing - restart anyway?"
+msgstr "¿àÞæÕá ÜÞÝâÐÖã - ÔöÙáÝÞ ßÕàÕ×ÐßãáâØâØ?"
+
+msgid "Recording - restart anyway?"
+msgstr "¹ÔÕ ×ÐßØá - ÔöÙáÝÞ ßÕàÕ×ÐßãáâØâØ?"
+
+msgid "restart anyway?"
+msgstr "ÔöÙáÝÞ ßÕàÕ×ÐßãáâØâØ?"
+
+#. TRANSLATORS: note the trailing blank!
+msgid "Volume "
+msgstr "³ãçÝöáâì "
+
+msgid "Classic VDR"
+msgstr "ºÛÐáØçÝØÙ"
+
+msgid "ST:TNG Panels"
+msgstr "ST:TNG ßÐÝÕÛö"
+
+#. TRANSLATORS: the first character of each weekday, beginning with monday
+msgid "MTWTFSS"
+msgstr "¿²ÁÇ¿Á½"
+
+#. TRANSLATORS: abbreviated weekdays, beginning with monday (must all be 3 letters!)
+msgid "MonTueWedThuFriSatSun"
+msgstr "¿ÞݲâàÁàÔÇâÒ¿âÝÁãѽÕÔ"
+
+msgid "Monday"
+msgstr "¿ÞÝÕÔöÛÞÚ"
+
+msgid "Tuesday"
+msgstr "²öÒâÞàÞÚ"
+
+msgid "Wednesday"
+msgstr "ÁÕàÕÔÐ"
+
+msgid "Thursday"
+msgstr "ÇÕâÒÕà"
+
+msgid "Friday"
+msgstr "¿'ïâÝØæï"
+
+msgid "Saturday"
+msgstr "ÁãÑÞâÐ"
+
+msgid "Sunday"
+msgstr "½ÕÔöÛï"
+
+msgid "Upcoming VPS recording!"
+msgstr "VPS-·ÐßØá áÚÞàÞ ßÞçÝÕâìáï"
+
+msgid "Recording started"
+msgstr "·ÐßØá ßÞçÐÒáï"
+
+msgid "VDR will shut down later - press Power to force"
+msgstr "VDR ÒØÚÛîçØâìáï ßßö×ÝöèÕ - ÝÐâØáÝöâì Power ÔÛï ßàØèÒØÔèÕÝÝï"
+
+msgid "Press any key to cancel shutdown"
+msgstr "½ÐâØáÝöâì ÑãÔì-ïÚã ÚÝÞßÚã ÔÛï ÒöÔÜöÝØ ÒØÚÛîçÕÝÝï."
+
+msgid "Switching primary DVB..."
+msgstr "·ÜöÝÐ ÞáÝÞÒÝÞÓÞ DVB-ßàØáâàÞî..."
+
+msgid "Editing process failed!"
+msgstr "¿ÞÜØÛÚÐ ßöÔ çÐá ÜÞÝâÐÖã ×ÐßØáã!"
+
+msgid "Editing process finished"
+msgstr "¼ÞÝâÐÖ ×ÐÚöÝçÕÝÞ"
+
+msgid "Press any key to cancel restart"
+msgstr "½ÐâØáÝöâì ÑãÔì-ïÚã ÚÝÞßÚã ÔÛï ÒöÔÜöÝØ ßÕàÕ×ÐÒÐÝâÐÖÕÝÝï"
+
+#, c-format
+msgid "VDR will shut down in %s minutes"
+msgstr "VDR ÒØÚÛîçØâìáï çÕàÕ× %s åÒØÛØÝ"
diff --git a/recording.c b/recording.c
index 5184611..7999f72 100644
--- a/recording.c
+++ b/recording.c
@@ -4,10 +4,11 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
- * $Id: recording.c 1.156 2007/10/14 10:21:54 kls Exp $
+ * $Id: recording.c 1.157 2007/11/04 11:17:43 kls Exp $
*/
#include "recording.h"
+#include <ctype.h>
#include <dirent.h>
#include <errno.h>
#include <fcntl.h>
@@ -448,12 +449,14 @@ char *ExchangeChars(char *s, bool ToFileSystem)
case '/': *p = '~'; break;
// encoded characters:
case '#': {
- if (strlen(p) > 2) {
+ if (strlen(p) > 2 && isxdigit(*(p + 1)) && isxdigit(*(p + 2))) {
char buf[3];
sprintf(buf, "%c%c", *(p + 1), *(p + 2));
unsigned char c = strtol(buf, NULL, 16);
- *p = c;
- memmove(p + 1, p + 3, strlen(p) - 2);
+ if (c) {
+ *p = c;
+ memmove(p + 1, p + 3, strlen(p) - 2);
+ }
}
}
break;
diff --git a/remux.c b/remux.c
index aed3829..78c86fd 100644
--- a/remux.c
+++ b/remux.c
@@ -11,7 +11,7 @@
* The cRepacker family's code was originally written by Reinhard Nissl <rnissl@gmx.de>,
* and adapted to the VDR coding style by Klaus.Schmidinger@cadsoft.de.
*
- * $Id: remux.c 1.59 2007/09/22 12:08:22 kls Exp $
+ * $Id: remux.c 1.60 2007/11/03 14:18:07 kls Exp $
*/
#include "remux.h"
@@ -1427,6 +1427,7 @@ int cDolbyRepacker::BreakAt(const uchar *Data, int Count)
#define MMAX_PLENGTH (64*MAX_PLENGTH) // some stations send PES packets that are extremely large, e.g. DVB-T in Finland or HDTV 1920x1080
#define IPACKS 2048
+#define SUBTITLE_PACKS KILOBYTE(32)
// Start codes:
#define SC_SEQUENCE 0xB3 // "sequence header code"
@@ -1911,7 +1912,7 @@ cRemux::cRemux(int VPid, const int *APids, const int *DPids, const int *SPids, b
if (SPids) {
int n = 0;
while (*SPids && numTracks < MAXTRACKS && n < MAXSPIDS)
- ts2pes[numTracks++] = new cTS2PES(*SPids++, resultBuffer, IPACKS, 0x00, 0x20 + n++);
+ ts2pes[numTracks++] = new cTS2PES(*SPids++, resultBuffer, SUBTITLE_PACKS, 0x00, 0x20 + n++);
}
}
@@ -2009,7 +2010,7 @@ int cRemux::Put(const uchar *Data, int Count)
break;
if (Data[i] != TS_SYNC_BYTE)
break;
- if (resultBuffer->Free() < 2 * IPACKS)
+ if (resultBuffer->Free() < SUBTITLE_PACKS)
break; // A cTS2PES might write one full packet and also a small rest
int pid = GetPid(Data + i + 1);
if (Data[i + 3] & 0x10) { // got payload
diff --git a/shutdown.c b/shutdown.c
index 4029a78..4fde544 100644
--- a/shutdown.c
+++ b/shutdown.c
@@ -6,7 +6,7 @@
*
* Original version written by Udo Richter <udo_richter@gmx.de>.
*
- * $Id: shutdown.c 1.1 2007/02/24 17:24:11 kls Exp $
+ * $Id: shutdown.c 1.2 2007/10/19 14:33:40 kls Exp $
*/
#include "shutdown.h"
@@ -110,9 +110,11 @@ void cShutdownHandler::CheckManualStart(int ManualStart)
// Set inactive after MinUserInactivity
SetUserInactiveTimeout();
}
- else
+ else {
// Set inactive from now on
+ dsyslog("scheduled wakeup time in %ld minutes, assuming automatic start of VDR", Delta / 60);
SetUserInactive();
+ }
}
void cShutdownHandler::SetShutdownCommand(const char *ShutdownCommand)
@@ -126,8 +128,13 @@ void cShutdownHandler::CallShutdownCommand(time_t WakeupTime, int Channel, const
time_t Delta = WakeupTime ? WakeupTime - time(NULL) : 0;
cString cmd = cString::sprintf("%s %ld %ld %d \"%s\" %d", shutdownCommand, WakeupTime, Delta, Channel, *strescape(File, "\"$"), UserShutdown);
isyslog("executing '%s'", *cmd);
- if (SystemExec(cmd, true) == 0)
+ int Status = SystemExec(cmd, true);
+ if (!WIFEXITED(Status) || WEXITSTATUS(Status))
+ esyslog("SystemExec() failed with status %d", Status);
+ else {
Setup.NextWakeupTime = WakeupTime; // Remember this wakeup time for comparison on reboot
+ Setup.Save();
+ }
}
void cShutdownHandler::SetUserInactiveTimeout(int Seconds, bool Force)
diff --git a/thread.c b/thread.c
index a0647d0..9583124 100644
--- a/thread.c
+++ b/thread.c
@@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
- * $Id: thread.c 1.62 2007/08/24 13:15:48 kls Exp $
+ * $Id: thread.c 1.63 2007/10/19 14:30:13 kls Exp $
*/
#include "thread.h"
@@ -518,7 +518,7 @@ int SystemExec(const char *Command, bool Detached)
if (Detached) {
// Fork again and let first child die - grandchild stays alive without parent
if (fork() > 0)
- exit(0);
+ _exit(0);
// Start a new session
pid_t sid = setsid();
if (sid < 0)
diff --git a/tools.c b/tools.c
index bbbcf82..ba7b0cf 100644
--- a/tools.c
+++ b/tools.c
@@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
- * $Id: tools.c 1.136 2007/10/13 12:00:21 kls Exp $
+ * $Id: tools.c 1.137 2007/11/03 15:34:07 kls Exp $
*/
#include "tools.h"
@@ -896,7 +896,7 @@ cString DayDateTime(time_t t)
time(&t);
struct tm tm_r;
tm *tm = localtime_r(&t, &tm_r);
- snprintf(buffer, sizeof(buffer), "%s %02d.%02d %02d:%02d", *WeekDayName(tm->tm_wday), tm->tm_mday, tm->tm_mon + 1, tm->tm_hour, tm->tm_min);
+ snprintf(buffer, sizeof(buffer), "%s %02d.%02d. %02d:%02d", *WeekDayName(tm->tm_wday), tm->tm_mday, tm->tm_mon + 1, tm->tm_hour, tm->tm_min);
return buffer;
}
diff --git a/vdr.c b/vdr.c
index b22dec3..a4e6e1f 100644
--- a/vdr.c
+++ b/vdr.c
@@ -22,7 +22,7 @@
*
* The project's page is at http://www.cadsoft.de/vdr
*
- * $Id: vdr.c 1.300 2007/08/26 14:36:48 kls Exp $
+ * $Id: vdr.c 1.302 2007/11/03 14:46:29 kls Exp $
*/
#include <getopt.h>
@@ -181,6 +181,7 @@ int main(int argc, char *argv[])
#define DEFAULTSVDRPPORT 2001
#define DEFAULTWATCHDOG 0 // seconds
+#define DEFAULTCONFDIR CONFDIR
#define DEFAULTPLUGINDIR PLUGINDIR
#define DEFAULTEPGDATAFILENAME "epg.data"
@@ -382,8 +383,7 @@ int main(int argc, char *argv[])
if (DisplayHelp) {
printf("Usage: vdr [OPTIONS]\n\n" // for easier orientation, this is column 80|
" -a CMD, --audio=CMD send Dolby Digital audio to stdin of command CMD\n"
- " -c DIR, --config=DIR read config files from DIR (default is to read them\n"
- " from the video directory)\n"
+ " -c DIR, --config=DIR read config files from DIR (default: %s)\n"
" -d, --daemon run in daemon mode\n"
" -D NUM, --device=NUM use only the given DVB device (NUM = 0, 1, 2...)\n"
" there may be several -D options (default: all DVB\n"
@@ -425,6 +425,7 @@ int main(int argc, char *argv[])
" -w SEC, --watchdog=SEC activate the watchdog timer with a timeout of SEC\n"
" seconds (default: %d); '0' disables the watchdog\n"
"\n",
+ DEFAULTCONFDIR,
DEFAULTEPGDATAFILENAME,
DEFAULTPLUGINDIR,
LIRC_DEVICE,
@@ -523,6 +524,7 @@ int main(int argc, char *argv[])
int PreviousChannel[2] = { 1, 1 };
int PreviousChannelIndex = 0;
time_t LastChannelChanged = time(NULL);
+ time_t LastInteract = 0;
int MaxLatencyTime = 0;
bool InhibitEpgScan = false;
bool IsInfoMenu = false;
@@ -536,7 +538,7 @@ int main(int argc, char *argv[])
// Configuration data:
if (!ConfigDirectory)
- ConfigDirectory = CONFDIR;
+ ConfigDirectory = DEFAULTCONFDIR;
cPlugin::SetConfigDirectory(ConfigDirectory);
cThemes::SetThemesDirectory(AddDirectory(ConfigDirectory, "themes"));
@@ -1069,6 +1071,7 @@ int main(int argc, char *argv[])
}
Interact = Menu ? Menu : cControl::Control(); // might have been closed in the mean time
if (Interact) {
+ LastInteract = Now;
eOSState state = Interact->ProcessKey(key);
if (state == osUnknown && Interact != cControl::Control()) {
if (ISMODELESSKEY(key) && cControl::Control()) {
@@ -1195,7 +1198,7 @@ int main(int argc, char *argv[])
ShutdownHandler.countdown.Cancel();
}
- if (!Interact && !cRecordControls::Active() && !cCutter::Active() && !Interface->HasSVDRPConnection() && (Now - cRemote::LastActivity()) > ACTIVITYTIMEOUT) {
+ if ((Now - LastInteract) > ACTIVITYTIMEOUT && !cRecordControls::Active() && !cCutter::Active() && !Interface->HasSVDRPConnection() && (Now - cRemote::LastActivity()) > ACTIVITYTIMEOUT) {
// Handle housekeeping tasks
// Shutdown: