diff options
-rw-r--r-- | CONTRIBUTORS | 17 | ||||
-rw-r--r-- | HISTORY | 24 | ||||
-rw-r--r-- | INSTALL | 9 | ||||
-rw-r--r-- | MANUAL | 8 | ||||
-rw-r--r-- | PLUGINS/src/sky/channels.conf.sky | 2 | ||||
-rw-r--r-- | channels.c | 26 | ||||
-rw-r--r-- | channels.conf | 14 | ||||
-rw-r--r-- | config.h | 6 | ||||
-rw-r--r-- | dvbdevice.c | 24 | ||||
-rw-r--r-- | dvbdevice.h | 4 | ||||
-rw-r--r-- | dvbspu.c | 73 | ||||
-rw-r--r-- | dvbspu.h | 4 | ||||
-rw-r--r-- | epg.c | 3 | ||||
-rw-r--r-- | i18n.c | 249 | ||||
-rw-r--r-- | i18n.h | 4 | ||||
-rw-r--r-- | menuitems.c | 32 | ||||
-rw-r--r-- | skins.c | 8 | ||||
-rw-r--r-- | timers.c | 6 | ||||
-rw-r--r-- | timers.h | 6 | ||||
-rw-r--r-- | vdr.c | 13 |
20 files changed, 454 insertions, 78 deletions
diff --git a/CONTRIBUTORS b/CONTRIBUTORS index b869c6b..000ed46 100644 --- a/CONTRIBUTORS +++ b/CONTRIBUTORS @@ -187,6 +187,7 @@ Stefan Huelswitt <huels@iname.com> available to plugins, and to add a SetText() function for reporting a bug in setting the title in the replay display of the "Classic VDR" skin in case a shorter title is set after a longer one + for fixing handling of pmAudioOnlyBlack Ulrich Röder <roeder@efr-net.de> for pointing out that there are channels that have a symbol rate higher than @@ -732,6 +733,8 @@ Sascha Volkenandt <sascha@akv-soft.de> some broken graphics tools for fixing a memory leak in theme description handling for pointing out a "near miss" condition in cCondVar + for reporting a bug in cChannel::SetName() in case only the ShortName or Provider + has changed Malcolm Caldwell <malcolm.caldwell@ntu.edu.au> for modifying LOF handling to allow for C-band reception @@ -997,6 +1000,8 @@ Andreas Regel <andreas.regel@gmx.de> for fixing handling bitmap indexes for 256 color mode for reporting a bug in removing the "scanning recordings..." message in case the video directory is empty + for pointing out a missing call to cStatus::MsgOsdtatusMessage(NULL) in + cSkins::Message() Thomas Bergwinkl <Thomas.Bergwinkl@t-online.de> for fixing the validity check for channel IDs, because some providers use TIDs @@ -1071,6 +1076,9 @@ Marco Schlüßler <marco@lordzodiac.de> for reporting a problem with initialization of the main program loop variables with older compiler versions for adding the 'portal name' to cChannels + for fixing the cDvbSpuDecoder + for fixing a short glitch when starting a recording on the primary device while + in replay or transfer mode Jürgen Schmitz <j.schmitz@web.de> for reporting a bug in displaying the current channel when switching via the SVDRP @@ -1132,3 +1140,12 @@ Mattias Grönlund <Mattias@Gronlund.net> Uwe Hanke <uhanke@gmx.de> for fixing some typos in the Makefile's 'font' target + +Mogens Elneff <mogens@elneff.dk> + for translating OSD texts to the Danish language + +Joachim Wilke <vdr@joachim-wilke.de> + for reporting missing calls to cStatus::MsgOsdClear() in cSkins::Message() + +Sascha Klek <sklek@gmx.de> + for reporting a problem with the '0' key in the "Day" item of the "Timers" menu @@ -359,7 +359,7 @@ Video Disk Recorder Revision History the EPG scanner). - The EPG scanner now starts with the first channel (it used to start with the second channel). -- Reacitvated setting the PNR. +- Reactivated setting the PNR. - Adapted the frame scanning to the new muxing of the driver. - The new compile time option REMOTE=NONE can be used to compile VDR without any remote control support (for applications where it shall be controlled @@ -3116,3 +3116,25 @@ Video Disk Recorder Revision History - Now displaying the name of the remote control for which the keys are being learned inside the menu to avoid overwriting the date/time in the 'classic' skin (thanks to Oliver Endriss for reporting this one). + +2004-11-14: Version 1.3.16 + +- Fixed cChannel::SetName() in case only the ShortName or Provider has changed + (thanks to Sascha Volkenandt for reporting this one). +- Added Danish language texts (thanks to Mogens Elneff). +- Reactivated the NPTL check at startup because there appear to be still + unsolved problems when running on NPTL systems. +- Added missing calls to cStatus::MsgOsdClear() in cSkins::Message() (thanks + to Joachim Wilke for reporting this one, and Andreas Regel for additional + input). +- Fixed the cDvbSpuDecoder (thanks to Marco Schlüßler). +- Fixed handling of pmAudioOnlyBlack (thanks to Stefan Huelswitt). +- Fixed a short glitch when starting a recording on the primary device while + in replay or transfer mode (thanks to Marco Schlüßler). +- Added missing initialization of cEvent::seen. +- Checking PID language codes for ISO 639 compliance to avoid problems with + funny characters. Invalid language codes will be stored as "???". +- The '0' key now toggles the "Day" item in the "Timers" menu between "single + shot" and "repeating". The keys '1'...'7' can be used to toggle the individual + days ('1' is monday). Thanks to Sascha Klek for reporting a problem with the + '0' key in the "Day" item of the "Timers" menu. @@ -7,7 +7,14 @@ Version 1.3 IMPORTANT NOTES: ---------------- -Please make sure your environment is NOT set to use UTF-8 or +VDR currently doesn't work with NPTL ("Native Posix Thread Library"). +Either don't use NPTL, or set the environment variable + + LD_ASSUME_KERNEL=2.4.1 + +before running VDR. + +Also, please make sure your environment is NOT set to use UTF-8 or any other multibyte character representation. Check the value of your $LANG or $LC_CTYPE environment variable, and if it contains something like "de_DE.UTF-8", make sure you set it to something like "de_DE.iso8859-1" @@ -24,7 +24,7 @@ Version 1.2 Green - Language New New Ins/Ovr Rewind Skip -60s Yellow - Pause live Delete Delete Delete Delete Skip +60s Blue - Stop/Resume Mark On/Off(1) - Summary Stop - 0..9 Ch select - Sort(3) - Numeric inp. Exec cmd(2) Editing + 0..9 Ch select - Sort(3) Day(4) Numeric inp. Exec cmd(2) Editing In a numerical input field (like the response to a CAM enquiry) the keys 0..9 are used to enter the data, and the Left key can be used to delete the last @@ -73,6 +73,9 @@ Version 1.2 (2) See "Processing Recordings" below. (3) In the "Channels" menu the '0' key switches the sort mode through "by number", "by name" and "by provider". + (4) In the "Timers" menu, when on the "Day" item, the '0' key toggles between + a single shot and a repeating timer. If "Day" indicates a repeating timer, + the keys '1'...'7' can be used to toggle the individual days ('1' is monday). * Navigating through the On Screen Menus @@ -369,6 +372,9 @@ Version 1.2 by listing the days of the week on which they shall record. For example, a timer that shall record every monday and wednesday would have a Day setting of "M-W----". + The '0' key toggles between a single shot and a repeating timer. + If "Day" indicates a repeating timer, the keys '1'...'7' can be + used to toggle the individual days ('1' is monday). Start: The start time of the timer in hh:mm as 24 hour ("military") time. Stop: The stop time of the timer. VPS: Defines whether the timer shall use VPS (if available). If this diff --git a/PLUGINS/src/sky/channels.conf.sky b/PLUGINS/src/sky/channels.conf.sky index 4b6e1af..d40837f 100644 --- a/PLUGINS/src/sky/channels.conf.sky +++ b/PLUGINS/src/sky/channels.conf.sky @@ -18,7 +18,7 @@ # S28.2E-2-2027-4705:106:sky_one S28.2E-2-2027-5104:107:sky_one_mix -S28.2E-2-2054-10240:175:itv2 +S28.2E-2-2054-10240:118:itv2 S28.2E-2-2023-4905:130:scifi S28.2E-2-2025-5904:127:paramount S28.2E-2-2009-6201:551:discovery @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: channels.c 1.30 2004/10/31 12:54:06 kls Exp $ + * $Id: channels.c 1.31 2004/11/02 18:07:05 kls Exp $ */ #include "channels.h" @@ -358,15 +358,23 @@ void cChannel::SetId(int Nid, int Tid, int Sid, int Rid) void cChannel::SetName(const char *Name, const char *ShortName, const char *Provider) { - if (!isempty(Name) && strcmp(name, Name) != 0) { - if (Number()) { - dsyslog("changing name of channel %d from '%s,%s;%s' to '%s,%s;%s'", Number(), name, shortName, provider, Name, ShortName, Provider); - modification |= CHANNELMOD_NAME; - Channels.SetModified(); + if (!isempty(Name)) { + bool nn = strcmp(name, Name) != 0; + bool ns = strcmp(shortName, ShortName) != 0; + bool np = strcmp(provider, Provider) != 0; + if (nn || ns || np) { + if (Number()) { + dsyslog("changing name of channel %d from '%s,%s;%s' to '%s,%s;%s'", Number(), name, shortName, provider, Name, ShortName, Provider); + modification |= CHANNELMOD_NAME; + Channels.SetModified(); + } + if (nn) + name = strcpyrealloc(name, Name); + if (ns) + shortName = strcpyrealloc(shortName, ShortName); + if (np) + provider = strcpyrealloc(provider, Provider); } - name = strcpyrealloc(name, Name); - shortName = strcpyrealloc(shortName, ShortName); - provider = strcpyrealloc(provider, Provider); } } diff --git a/channels.conf b/channels.conf index acb25d5..95ccdf1 100644 --- a/channels.conf +++ b/channels.conf @@ -24,7 +24,7 @@ VOX;RTL World:12187:hC34:S19.2E:27500:167:136=deu:71:0:12060:1:1089:0 KABEL1;ProSiebenSat.1:12480:vC34:S19.2E:27500:511:512=deu:33:0:899:133:33:0 NEUN LIVE Television,NEUN LIVE;BetaDigital:12480:vC34:S19.2E:27500:767:768=deu:35:0:897:133:33:0 DSF;BetaDigital:12480:vC34:S19.2E:27500:1023:1024=deu:0:0:900:133:33:0 -HSE24;BetaDigital:12480:vC34:S19.2E:27500:1279:1280=deu:37:0:40:133:33:0 +HSE24,HSE24;BetaDigital:12480:vC34:S19.2E:27500:1279:1280=deu:37:0:40:133:33:0 Bloomberg TV Germany;Bloomberg:12551:vC56:S19.2E:22000:162:99=deu:0:0:12160:1:1108:0 EURONEWS;CSAT:11817:vC34:S19.2E:27500:163:92=fra,93=eng,94=ita,95=esl,91=rus,98=por,99=deu:0:0:8004:1:1070:0 rbb Brandenburg;ARD:12109:hC34:S19.2E:27500:501:502=deu:504:0:28205:1:1073:0 @@ -48,8 +48,8 @@ PREMIERE START,START;PREMIERE:11797:hC34:S19.2E:27500:255:256=deu:32:1702,1801,1 PREMIERE 1,PREM 1;PREMIERE:11797:hC34:S19.2E:27500:511:512=deu,513=deu;515=deu:32:1702,1801,1722:10:133:2:0 PREMIERE 2,PREM 2;PREMIERE:11797:hC34:S19.2E:27500:1791:1792=deu,1793=deu;1795=deu:32:1702,1722,1801:11:133:2:0 PREMIERE 3,PREM 3;PREMIERE:11797:hC34:S19.2E:27500:2303:2304=deu,2305=deu:32:1722,1801,1702:43:133:2:0 -PREMIERE 4,PREM 4;PREMIERE:11797:hC34:S19.2E:27500:767:768=deu,769=deu:32:1801,1722,1702:9:133:2:0 -PREMIERE 5,PREM 5;PREMIERE:11797:hC34:S19.2E:27500:1279:1280=deu,1281=deu:32:1722,1702,1801:29:133:2:0 +PREMIERE 4,PREM 4;PREMIERE:11797:hC34:S19.2E:27500:767:768=deu:32:1801,1722,1702:9:133:2:0 +PREMIERE 5,PREM 5;PREMIERE:11797:hC34:S19.2E:27500:1279:1280=deu:32:1722,1702,1801:29:133:2:0 PREMIERE 6,PREM 6;PREMIERE:11797:hC34:S19.2E:27500:1535:1536=deu:32:1702,1722,1801:41:133:2:0 PREMIERE 7,PREM 7;PREMIERE:11797:hC34:S19.2E:27500:1023:1024=deu:32:1722,1702,1801:20:133:2:0 DISNEY CHANNEL,DISNEY;PREMIERE:11758:hC34:S19.2E:27500:2559:2560=deu:0:1722,1702,1801:34:133:17:0 @@ -59,7 +59,7 @@ PREMIERE DIREKT,DIREKT;PREMIERE:12031:hC34:S19.2E:27500:2815:2816=deu,2817=deu;2 BEATE-UHSE.TV,B-UHSE;PREMIERE:12070:hC34:S19.2E:27500:1023:1024=deu:32:1801,1702,1722:21:133:1:0 DIREKT EROTIK,EROTIK;PREMIERE:12031:hC34:S19.2E:27500:1279:0:0:1722,1702,1801:513:133:4:0 :Sportsworld -PREMIERE SPORT 1,SPORT 1;PREMIERE:11719:hC34:S19.2E:27500:255:256=deu,257=deu:32:1801,1702,1722:17:133:3:0 +Konferenz:11719:hC34:S19.2E:27500:255:256=deu,257=deu:32:1801,1702,1722:17:133:3:0 PREMIERE SPORT 2,SPORT 2;PREMIERE:12031:hC34:S19.2E:27500:3839:3840=deu,3841=deu:32:1722,1702,1801:27:133:4:0 :Beta Digital N24;ProSiebenSat.1:12480:vC34:S19.2E:27500:2047:2048=deu:36:0:47:133:33:0 @@ -82,10 +82,10 @@ Chamber TV;Chambre des Députées:12551:vC56:S19.2E:22000:55:56=ltz:0:0:12180:1:11 RTL TELE Letzebuerg:12551:vC56:S19.2E:22000:168:144=eng,146=fra,151=ltz:74:0:3994:1:1108:0 Yorin;CANAL+:12574:hC56:S19.2E:22000:512+8190:84=dut:33:622,602,100:5010:53:1109:0 MTV2 Pop Channel;MTV Networks:12226:hC34:S19.2E:27500:513+8190:661=deu:577:0:28640:1:1091:0 +MTV Central;MTV Networks:11739:vC34:S19.2E:27500:3031:3032:3034:0:28653:1:1066:0 Via 1 - Schöner Reisen:12148:h:S19.2E:27500:511:512:0:0:44:0:0:0 VIVA;VIVA Fernsehen GmbH & Co. KG:12669:vC56:S19.2E:22000:309:310=deu:311:0:12732:1:1116:0 VIVA PLUS;VIVA Fernsehen GmbH & Co. KG:12551:vC56:S19.2E:22000:171:172=deu:173:0:12120:1:1108:0 -MTV Central;MTV Networks:11739:vC34:S19.2E:27500:3031:3032:3034:0:28653:1:1066:0 QVC Deutschland;QVC:12551:vC56:S19.2E:22000:165:166:167:0:12100:1:1108:0 TELE 5;BetaDigital:12480:vC34:S19.2E:27500:1535:1536=deu:38:0:51:133:33:0 :@201 Sky @@ -94,7 +94,7 @@ Sky Mix;BSkyB:12226:hC23:S28.2E:27500:2314+2304:2315=eng,2316=NAR:2317:960,961:5 ITV2;BSkyB:10906:vC56:S28.2E:22000:2350:2351=eng,2352=eng:2353:960,961:10240:2:2054:0 Sci-Fi;BSkyB:12148:hC23:S28.2E:27500:2314+2304:2315=eng:2316:960,961:4905:2:2023:0 Paramount;BSkyB:12187:hC23:S28.2E:27500:2313+2304:2314=eng:2315:960,961:5904:2:2025:0 -Discovery;BSkyB:11875:hC23:S28.2E:27500:2304:2306=eng,2307=NAR:2305:960,961:6201:2:2009:0 +Discovery;BSkyB:11875:hC23:S28.2E:27500:2304:2306=eng,2307:2305:960,961:6201:2:2009:0 Sky Movies 1;BSkyB:11836:hC23:S28.2E:27500:2310+2304:2311=eng,2312=NAR;2314=eng:2313:960,961:4303:2:2007:0 Sky Movies 2;BSkyB:11836:hC23:S28.2E:27500:2305+2304:2306=eng,2307=NAR;2309=eng:2308:960,961:4302:2:2007:0 Sky Movies 3;BSkyB:11836:hC23:S28.2E:27500:2315+2304:2316=eng,2317=NAR;2319=eng:2318:960,961:4403:2:2007:0 @@ -114,7 +114,7 @@ Animal Plnt+;BSkyB:12070:hC23:S28.2E:27500:2314+2307:2315=eng:0:960,961:50002:2: S1T;BSkyB:12285:vC23:S28.2E:27500:2311+2304:2312=eng,2313=NAR:2307:960,961:4409:2:2030:0 CNN;BSkyB:12051:vC23:S28.2E:27500:2313:2315=eng:2314:0:7140:2:2018:0 BBC PARL'MNT:12129:vC23:S28.2E:27500:2304:2306=eng,2307=eng:2305:0:7300:2:2022:0 -Olisat;T-Systems/MTI:11200:vC56:S13.0E:27500:413:414=ita:0:0:4733:318:13400:0 +Olisat / Telefe;T-Systems/MTI:11200:vC56:S13.0E:27500:413:414=ita:0:0:4733:318:13400:0 EURO1080:12168:vC34:S19.2E:27500:308:256:0:FF:21100:1:1088:0 Astra HD:12441:vC34:S19.2E:27500:133+80:134:0:FF:29700:0:0:0 :@1000 New channels @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: config.h 1.203 2004/10/31 16:17:02 kls Exp $ + * $Id: config.h 1.204 2004/11/02 17:20:27 kls Exp $ */ #ifndef __CONFIG_H @@ -20,8 +20,8 @@ #include "i18n.h" #include "tools.h" -#define VDRVERSION "1.3.15" -#define VDRVERSNUM 10315 // Version * 10000 + Major * 100 + Minor +#define VDRVERSION "1.3.16" +#define VDRVERSNUM 10316 // Version * 10000 + Major * 100 + Minor #define MAXPRIORITY 99 #define MAXLIFETIME 99 diff --git a/dvbdevice.c b/dvbdevice.c index fb87ae4..2702f95 100644 --- a/dvbdevice.c +++ b/dvbdevice.c @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: dvbdevice.c 1.102 2004/10/30 14:53:30 kls Exp $ + * $Id: dvbdevice.c 1.104 2004/11/07 10:27:19 kls Exp $ */ #include "dvbdevice.h" @@ -681,14 +681,15 @@ int cDvbDevice::OpenFilter(u_short Pid, u_char Tid, u_char Mask) return -1; } -void cDvbDevice::TurnOffLiveMode(void) +void cDvbDevice::TurnOffLiveMode(bool LiveView) { - // Avoid noise while switching: - - CHECK(ioctl(fd_audio, AUDIO_SET_MUTE, true)); - CHECK(ioctl(fd_video, VIDEO_SET_BLANK, true)); - CHECK(ioctl(fd_audio, AUDIO_CLEAR_BUFFER)); - CHECK(ioctl(fd_video, VIDEO_CLEAR_BUFFER)); + if (LiveView) { + // Avoid noise while switching: + CHECK(ioctl(fd_audio, AUDIO_SET_MUTE, true)); + CHECK(ioctl(fd_video, VIDEO_SET_BLANK, true)); + CHECK(ioctl(fd_audio, AUDIO_CLEAR_BUFFER)); + CHECK(ioctl(fd_video, VIDEO_CLEAR_BUFFER)); + } // Turn off live PIDs: @@ -781,7 +782,7 @@ bool cDvbDevice::SetChannelDevice(const cChannel *Channel, bool LiveView) // Turn off live PIDs if necessary: if (TurnOffLivePIDs) - TurnOffLiveMode(); + TurnOffLiveMode(LiveView); // Set the tuner: @@ -897,10 +898,9 @@ bool cDvbDevice::SetPlayMode(ePlayMode PlayMode) CHECK(ioctl(fd_audio, AUDIO_SET_MUTE, false)); break; case pmAudioVideo: - if (playMode == pmNone) - TurnOffLiveMode(); - // continue with next... case pmAudioOnlyBlack: + if (playMode == pmNone) + TurnOffLiveMode(true); CHECK(ioctl(fd_video, VIDEO_SET_BLANK, true)); CHECK(ioctl(fd_audio, AUDIO_SELECT_SOURCE, AUDIO_SOURCE_MEMORY)); CHECK(ioctl(fd_audio, AUDIO_SET_AV_SYNC, PlayMode == pmAudioVideo)); diff --git a/dvbdevice.h b/dvbdevice.h index 7dd6174..1817f37 100644 --- a/dvbdevice.h +++ b/dvbdevice.h @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: dvbdevice.h 1.29 2004/10/30 14:48:27 kls Exp $ + * $Id: dvbdevice.h 1.30 2004/11/07 10:25:16 kls Exp $ */ #ifndef __DVBDEVICE_H @@ -56,7 +56,7 @@ public: private: cDvbTuner *dvbTuner; - void TurnOffLiveMode(void); + void TurnOffLiveMode(bool LiveView); public: virtual bool ProvidesSource(int Source) const; virtual bool ProvidesTransponder(const cChannel *Channel) const; @@ -8,7 +8,7 @@ * * parts of this file are derived from the OMS program. * - * $Id: dvbspu.c 1.7 2004/05/22 14:02:32 kls Exp $ + * $Id: dvbspu.c 1.8 2004/11/06 11:50:13 kls Exp $ */ #include <assert.h> @@ -319,25 +319,42 @@ int cDvbSpuDecoder::ScaleYres(int value) return value; } -void cDvbSpuDecoder::DrawBmp(sDvbSpuRect & size, cBitmap * bmp) +sDvbSpuRect cDvbSpuDecoder::CalcAreaSize(sDvbSpuRect fgsize, cBitmap *fgbmp, sDvbSpuRect bgsize, cBitmap *bgbmp) { - int x2 = size.x2; - while ((x2 - size.x1 + 1) & 0x03) - x2++; - tArea Area = { size.x1, size.y1, x2, size.y2, 2 }; - osd->SetAreas(&Area, 1); - if (x2 > size.x2) - osd->DrawRectangle(size.x2 + 1, size.y1, x2, size.y2, clrTransparent); - osd->DrawBitmap(size.x1, size.y1, *bmp); - delete bmp; + sDvbSpuRect size; + if (fgbmp && bgbmp) { + size.x1 = min(fgsize.x1, bgsize.x1); + size.y1 = min(fgsize.y1, bgsize.y1); + size.x2 = max(fgsize.x2, bgsize.x2); + size.y2 = max(fgsize.y2, bgsize.y2); + } + else if (fgbmp) { + size.x1 = fgsize.x1; + size.y1 = fgsize.y1; + size.x2 = fgsize.x2; + size.y2 = fgsize.y2; + } + else if (bgbmp) { + size.x1 = bgsize.x1; + size.y1 = bgsize.y1; + size.x2 = bgsize.x2; + size.y2 = bgsize.y2; + } + else { + size.x1 = 0; + size.y1 = 0; + size.x2 = 0; + size.y2 = 0; + } + return size; } void cDvbSpuDecoder::Draw(void) { - Hide(); - - if (!spubmp) + if (!spubmp) { + Hide(); return; + } cBitmap *fg = NULL; cBitmap *bg = NULL; @@ -362,18 +379,28 @@ void cDvbSpuDecoder::Draw(void) } } - if (bg || fg) { - if (osd == NULL) - if ((osd = cOsdProvider::NewOsd(0, 0)) == NULL) { - dsyslog("NewOsd failed\n"); - return; - } + sDvbSpuRect areaSize = CalcAreaSize(hlsize, fg, bgsize, bg); - if (fg) - DrawBmp(hlsize, fg); + if (!fg || !bg || !osd) { + Hide(); + } + + if (bg || fg) { + if (osd == NULL) { + osd = cOsdProvider::NewOsd(0, 0); + int x2 = areaSize.x2; + while ((x2 - areaSize.x1 + 1) & 0x03) + x2++; + tArea Area = { areaSize.x1, areaSize.y1, x2, areaSize.y2, (fg && bg) ? 4 : 2 }; + osd->SetAreas(&Area, 1); + } if (bg) - DrawBmp(bgsize, bg); + osd->DrawBitmap(bgsize.x1, bgsize.y1, *bg); + if (fg) + osd->DrawBitmap(hlsize.x1, hlsize.y1, *fg); + delete fg; + delete bg; osd->Flush(); } @@ -8,7 +8,7 @@ * * parts of this file are derived from the OMS program. * - * $Id: dvbspu.h 1.5 2004/06/12 12:57:55 kls Exp $ + * $Id: dvbspu.h 1.6 2004/11/06 11:42:37 kls Exp $ */ #ifndef __DVBSPU_H @@ -130,7 +130,7 @@ class cDvbSpuDecoder:public cSpuDecoder { int ScaleYcoord(int value); int ScaleYres(int value); - void DrawBmp(sDvbSpuRect & size, cBitmap * bmp); + sDvbSpuRect CalcAreaSize(sDvbSpuRect fgsize, cBitmap *fgbmp, sDvbSpuRect bgsize, cBitmap *bgbmp); public: cDvbSpuDecoder(); @@ -7,7 +7,7 @@ * Original version (as used in VDR before 1.3.0) written by * Robert Schneider <Robert.Schneider@web.de> and Rolf Hakenes <hakenes@hippomi.de>. * - * $Id: epg.c 1.21 2004/10/31 16:12:36 kls Exp $ + * $Id: epg.c 1.22 2004/11/07 10:43:30 kls Exp $ */ #include "epg.h" @@ -31,6 +31,7 @@ cEvent::cEvent(tChannelID ChannelID, u_int16_t EventID) startTime = 0; duration = 0; vps = 0; + SetSeen(); } cEvent::~cEvent() @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: i18n.c 1.161 2004/11/01 14:18:48 kls Exp $ + * $Id: i18n.c 1.163 2004/11/14 14:28:29 kls Exp $ * * Translations provided by: * @@ -25,6 +25,7 @@ * Russian Vyacheslav Dikonov <sdiconov@mail.ru> * Croatian Drazen Dupor <drazen.dupor@dupor.com> * Estonian Arthur Konovalov <kasjas@hot.ee> + * Danish Mogens Elneff <mogens@elneff.dk> * */ @@ -74,6 +75,7 @@ */ #include "i18n.h" +#include <ctype.h> #include "config.h" #include "tools.h" @@ -98,6 +100,7 @@ const tI18nPhrase Phrases[] = { "ÀãááÚØÙ", // Russian "Hrvatski", "Eesti", + "Dansk", }, // The character set needed for this language (this MUST be the second phrase!): { "iso8859-1", @@ -119,6 +122,7 @@ const tI18nPhrase Phrases[] = { "iso8859-5", "iso8859-2", "iso8859-15", // or iso8859-1 as alternative + "iso8859-1", }, // The 3-letter names of the language (this MUST be the third phrase!): { "eng,dos", @@ -140,6 +144,7 @@ const tI18nPhrase Phrases[] = { "rus", "hrv", "est", + "dan", }, // Menu titles: { "VDR", @@ -161,6 +166,7 @@ const tI18nPhrase Phrases[] = { "VDR", "VDR", "VDR", + "VDR", }, { "Schedule", "Programm", @@ -181,6 +187,7 @@ const tI18nPhrase Phrases[] = { "ÂÕÛÕÓØÔ", "Raspored", "Kava", + "Programoversigt", }, { "Channels", "Kanäle", @@ -201,6 +208,7 @@ const tI18nPhrase Phrases[] = { "ºÐÝÐÛë", "Programi", "Kanalid", + "Kanaler", }, { "Timers", "Timer", @@ -221,6 +229,7 @@ const tI18nPhrase Phrases[] = { "ÂÐÙÜÕàë", "Termini", "Taimer", + "Timere", }, { "Recordings", "Aufzeichnungen", @@ -241,6 +250,7 @@ const tI18nPhrase Phrases[] = { "·ÐßØáØ", "Snimke", "Salvestused", + "Optagelser", }, { "Setup", "Einstellungen", @@ -261,6 +271,7 @@ const tI18nPhrase Phrases[] = { "½ÐáâàÞÙÚÐ", "Konfiguracija", "Sätted", + "Indstillinger", }, { "Commands", "Befehle", @@ -281,6 +292,7 @@ const tI18nPhrase Phrases[] = { "ºÞÜÐÝÔë", "Naredbe", "Käsud", + "Kommandoer", }, { "Recording commands", "Befehle für Aufzeichnungen", @@ -301,6 +313,7 @@ const tI18nPhrase Phrases[] = { "ºÞÜÐÝÔë ×ÐßØáØ", "Naredbe za snimanje", "Salvestuse käsud", + "Optage kommandoer", }, { "Edit channel", "Kanal editieren", @@ -321,6 +334,7 @@ const tI18nPhrase Phrases[] = { "ÀÕÔÐÚâØàÞÒÐÝØÕ ÚÐÝÐÛÐ", "Ureðivanje programa", "Kanali muutmine", + "Rediger kanal", }, { "Edit timer", "Timer editieren", @@ -341,6 +355,7 @@ const tI18nPhrase Phrases[] = { "ÃáâÐÝÞÒÚÐ âÐÙÜÕàÐ", "Ureðivanje termina", "Taimeri muutmine", + "Rediger timer", }, { "Event", "Sendung", @@ -361,6 +376,7 @@ const tI18nPhrase Phrases[] = { "¿ÕàÕÔÐçÐ", "Emisija", "Sündmus", + "Udsendelse", }, { "Summary", "Inhalt", @@ -381,6 +397,7 @@ const tI18nPhrase Phrases[] = { "¾ßØáÐÝØÕ", "Sadr¾aj", "Kokkuvõte", + "Omtale", }, { "Schedule - %s", "Programm - %s", @@ -401,6 +418,7 @@ const tI18nPhrase Phrases[] = { "¿àÞÓàÐÜÜÐ - %s", "Raspored - %s", "Programm - %s", + "Program - %s", }, { "What's on now?", "Was läuft jetzt?", @@ -421,6 +439,7 @@ const tI18nPhrase Phrases[] = { "ÁÕÙçÐá Ò íäØàÕ:", "©to je trenutno na programu?", "Hetkel eetris", + "Hvilket program vises nu?", }, { "What's on next?", "Was läuft als nächstes?", @@ -441,6 +460,7 @@ const tI18nPhrase Phrases[] = { "´ÐÛÕÕ Ò ßàÞÓàÐÜÜÕ:", "©to slijedi?", "Järgmisena eetris", + "Hvilket næste program vises?", }, // Button texts (should not be more than 10 characters!): { "Edit", @@ -462,6 +482,7 @@ const tI18nPhrase Phrases[] = { "ÀÕÔÐÚâØàÞÒÐâì", "Promjeni", "Muuda", + "Rediger", }, { "New", "Neu", @@ -482,6 +503,7 @@ const tI18nPhrase Phrases[] = { "´ÞÑÐÒØâì", "Novi", "Uus", + "Ny", }, { "Delete", "Löschen", @@ -502,6 +524,7 @@ const tI18nPhrase Phrases[] = { "ÃÔÐÛØâì", "Obri¹i", "Kustuta", + "Slet", }, { "Mark", "Markieren", @@ -522,6 +545,7 @@ const tI18nPhrase Phrases[] = { "¿ÕàÕÜÕáâØâì", "Oznaèi", "Siirda", + "Markér", }, { "On/Off", "Ein/Aus", @@ -542,6 +566,7 @@ const tI18nPhrase Phrases[] = { "²ÚÛ/²ëÚÛ", "De-/Aktiviraj", "Sees/Väljas", + "Til/Fra", }, { "Record", "Aufnehmen", @@ -562,6 +587,7 @@ const tI18nPhrase Phrases[] = { "·ÐßØáì", "Snimi", "Salvesta", + "Optag", }, { "Play", "Wiedergabe", @@ -582,6 +608,7 @@ const tI18nPhrase Phrases[] = { "²ÞáßàÞØ×ÒÕáâØ", "Start", "Start", + "Afspil", }, { "Rewind", "Anfang", @@ -602,6 +629,7 @@ const tI18nPhrase Phrases[] = { "½Ð×ÐÔ", "Na poèetak", "Algusesse", + "Forfra", }, { "Button$Stop", "Beenden", @@ -622,6 +650,7 @@ const tI18nPhrase Phrases[] = { "ÁâÞß", "Stop", "Stopp", + "Stop", }, { "Resume", "Weiter", @@ -642,6 +671,7 @@ const tI18nPhrase Phrases[] = { "¿àÞÔÞÛÖØâì", "Nastavi", "Jätka", + "Fortsæt", }, { "Summary", "Inhalt", @@ -662,6 +692,7 @@ const tI18nPhrase Phrases[] = { "¾ßØáÐÝØÕ", "Sadr¾aj", "Kokkuvõte", + "Omtale", }, { "Open", "Öffnen", @@ -682,6 +713,7 @@ const tI18nPhrase Phrases[] = { "¾âÚàëâì", "Otvori", "Ava", + "Åbn", }, { "Switch", "Umschalten", @@ -702,6 +734,7 @@ const tI18nPhrase Phrases[] = { "¿ÕàÕÚÛîçØâì", "Prebaci", "Vali", + "Skift", }, { "Now", "Jetzt", @@ -722,6 +755,7 @@ const tI18nPhrase Phrases[] = { "ÁÕÙçÐá", "Trenutno", "Nüüd", + "Nu", }, { "Next", "Nächste", @@ -742,6 +776,7 @@ const tI18nPhrase Phrases[] = { "´ÐÛÕÕ", "Slijedi", "Järgmine", + "Næste", }, { "Button$Schedule", "Programm", @@ -762,6 +797,7 @@ const tI18nPhrase Phrases[] = { "¿àÞÓàÐÜÜÐ", "Raspored", "Kava", + "Program", }, { "Language", "Sprache", @@ -782,6 +818,7 @@ const tI18nPhrase Phrases[] = { "Ï×ëÚ", "Jezik", "Keel", + "Sprog", }, { "Eject", "Auswerfen", @@ -802,6 +839,7 @@ const tI18nPhrase Phrases[] = { "¸×ÒÛÕçì", "Izbaci", "Ava", + "Skub ud", }, { "ABC/abc", "ABC/abc", @@ -822,6 +860,7 @@ const tI18nPhrase Phrases[] = { "°±²/ÐÑÒ", "ABC/abc", "ABC/abc", + "ABC/abc", }, { "Insert", "Einfügen", @@ -842,6 +881,7 @@ const tI18nPhrase Phrases[] = { "²áâÐÒÚÐ", "Umetni", "Lisa (INS)", + "Indsæt", }, { "Overwrite", "Überschreiben", @@ -862,6 +902,7 @@ const tI18nPhrase Phrases[] = { "·ÐÜÕÝÐ", "Prepi¹i", "Asenda (OVR)", + "Overskriv", }, { "Menu", "Menü", @@ -882,6 +923,7 @@ const tI18nPhrase Phrases[] = { "¼ÕÝî", "Izbor", "Menüü", + "Menu", }, { "Reset", "Reset", @@ -902,6 +944,7 @@ const tI18nPhrase Phrases[] = { "ÁÑàÞá", "Reset", "Reset", + "Nulstille", }, { "Scan", "Scan", @@ -922,6 +965,7 @@ const tI18nPhrase Phrases[] = { "ÁÚÐÝØàÞÒÐâì", "Pretra¾i", "Uuenda", + "Skan", }, // Confirmations: { "Delete channel?", @@ -943,6 +987,7 @@ const tI18nPhrase Phrases[] = { "ÃÔÐÛØâì ÚÐÝÐÛ?", "Obrisati program?", "Kustutan kanali?", + "Slet kanal?", }, { "Delete timer?", "Timer löschen?", @@ -963,6 +1008,7 @@ const tI18nPhrase Phrases[] = { "ÃÔÐÛØâì âÐÙÜÕà?", "Obrisati termin?", "Kustutan taimeri?", + "Slet timer?", }, { "Delete recording?", "Aufzeichnung löschen?", @@ -983,6 +1029,7 @@ const tI18nPhrase Phrases[] = { "ÁâÕàÕâì ×ÐßØáì?", "Obrisati snimku?", "Kustutan salvestuse?", + "Slet optagelse", }, { "Timer still recording - really delete?", "Timer zeichnet auf - trotzdem löschen?", @@ -1003,6 +1050,7 @@ const tI18nPhrase Phrases[] = { "¸Ôñâ ×ÐßØáì ßÞ âÐÙÜÕàã - ÔÕÙáâÒØâÕÛìÝÞ ãÔÐÛØâì?", "Jo¹ snimam - zaista obrisati?", "Salvestus aktiivne - kustutan?", + "Timerstyret optagelse i gang - slet alligevel?", }, { "Stop recording?", "Aufzeichnung beenden?", @@ -1023,6 +1071,7 @@ const tI18nPhrase Phrases[] = { "¿àÕÚàÐâØâì ×ÐßØáì?", "Zaustaviti snimanje?", "Lõpetan salvestamise?", + "Stop optagelse?", }, { "on primary interface", "auf dem primären Interface", @@ -1043,6 +1092,7 @@ const tI18nPhrase Phrases[] = { "ÝÐ ÞáÝÞÒÝÞÜ ãáâàÞÙáâÒÕ", "na primarnom ureðaju", "peavastuvõtjal", + "på primær enhed", }, { "Cancel editing?", "Schneiden abbrechen?", @@ -1063,6 +1113,7 @@ const tI18nPhrase Phrases[] = { "¿àÕàÒÐâì àÕÔÐÚâØàÞÒÐÝØÕ?", "Otkazati ureðivanje?", "Tühistan muudatuse?", + "Afbryd redigering?", }, { "Really restart?", "Wirklich neu starten?", @@ -1083,6 +1134,7 @@ const tI18nPhrase Phrases[] = { "´ÕÙáâÒØâÕÛìÝÞ ßÕàÕ×ÐßãáâØâì?", "Zaista ponovo pokrenuti?", "Restart?", + "Vil du virkelig genstarte?", }, { "Recording - restart anyway?", "Aufnahme läuft - trotzdem neu starten?", @@ -1103,6 +1155,7 @@ const tI18nPhrase Phrases[] = { "¸Ôñâ ×ÐßØáì - ÔÕÙáâÒØâÕÛìÝÞ ßÕàÕ×ÐßãáâØâì?", "Snimanje traje - svejedno restart sistema?", "Salvestamine aktiivne - restart?", + "Optagelse igang - genstart alligevel?", }, { "Recording - shut down anyway?", "Aufnahme läuft - trotzdem ausschalten?", @@ -1123,6 +1176,7 @@ const tI18nPhrase Phrases[] = { "¸Ôñâ ×ÐßØáì - ÔÕÙáâÒØâÕÛìÝÞ ÒëÚÛîçØâì?", "Snimanje traje - svejedno iskljuèiti?", "Salvestamine aktiivne - lülitan välja?", + "Optagelse igang - sluk alligevel?", }, { "Recording in %d minutes, shut down anyway?", "Aufnahme in %d Minuten - trotzdem ausschalten?", @@ -1143,6 +1197,7 @@ const tI18nPhrase Phrases[] = { "ÇÕàÕ× %d ÜØÝãâ ÝÐçÝñâáï ×ÐßØáì - ÔÕÙáâÒØâÕÛìÝÞ ÒëÚÛîçØâì?", "Snimanje za %d minuta - svejedno iskljuèiti?", "Salvestamine algab %d minuti pärast - lülitan välja?", + "Optagelse om %d minutter - sluk alligevel?", }, { "Press any key to cancel shutdown", "Taste drücken um Shutdown abzubrechen", @@ -1163,6 +1218,7 @@ const tI18nPhrase Phrases[] = { "½ÐÖÜØâÕ ÛîÑãî ÚÝÞßÚã çâÞÑë ÞâÜÕÝØâì ÒëÚÛîçÕÝØÕ.", "Pritisnite tipku ako ne ¾elite ugasiti sistem", "Vajuta suvalist klahvi väljalülitamise tühistamiseks", + "Tryk vilkårlig tast for at annullere sluk", }, // Channel parameters: { "Name", @@ -1184,6 +1240,7 @@ const tI18nPhrase Phrases[] = { "½Ð×ÒÐÝØÕ", "Naziv", "Nimi", + "Navn", }, { "Frequency", "Frequenz", @@ -1204,6 +1261,7 @@ const tI18nPhrase Phrases[] = { "ÇÐáâÞâÐ", "Frekvencija", "Sagedus", + "Frekvens", }, { "Polarization", "Polarisation", @@ -1224,6 +1282,7 @@ const tI18nPhrase Phrases[] = { "¿ÞÛïàØ×ÐæØï", "Polarizacija", "Polarisatsioon", + "Polarisation", }, { "Source", "Quelle", @@ -1244,6 +1303,7 @@ const tI18nPhrase Phrases[] = { "¸áâÞçÝØÚ", "Izvor", "Allikas", + "Kilde", }, { "Srate", "Srate", @@ -1264,6 +1324,7 @@ const tI18nPhrase Phrases[] = { "ÁØÜÒ. áÚÞàÞáâì", "Srate", // hrv "Srate", + "Srate", }, { "Vpid", "Vpid", @@ -1284,6 +1345,7 @@ const tI18nPhrase Phrases[] = { "Vpid (ÒØÔÕÞ)", "Vpid", "Vpid", + "Vpid", }, { "Ppid", "Ppid", @@ -1304,6 +1366,7 @@ const tI18nPhrase Phrases[] = { "Ppid", "Ppid", "Ppid", + "Ppid", }, { "Apid1", "Apid1", @@ -1324,6 +1387,7 @@ const tI18nPhrase Phrases[] = { "Apid1 (ÐãÔØÞ 1)", "Apid1", // hrv "Apid1", + "Apid1", }, { "Apid2", "Apid2", @@ -1344,6 +1408,7 @@ const tI18nPhrase Phrases[] = { "Apid2 (ÐãÔØÞ 2)", "Apid2", // hrv "Apid2", + "Apid2", }, { "Dpid1", "Dpid1", @@ -1364,6 +1429,7 @@ const tI18nPhrase Phrases[] = { "Dpid1 (AC3 1)", "Dpid1", // hrv "Dpid1", + "Dpid1", }, { "Dpid2", "Dpid2", @@ -1384,6 +1450,7 @@ const tI18nPhrase Phrases[] = { "Dpid2 (AC3 2)", "Dpid2", // hrv "Dpid2", + "Dpid2", }, { "Tpid", "Tpid", @@ -1404,6 +1471,7 @@ const tI18nPhrase Phrases[] = { "Tpid (âÕÛÕâÕÚáâ)", "Tpid", // hrv "Tpid", + "Tpid", }, { "CA", "CA", @@ -1424,6 +1492,7 @@ const tI18nPhrase Phrases[] = { "CA (ÔÕÚÞÔÕà)", "Kodiranje (CA)", "CA", + "CA", }, { "Sid", "Sid", @@ -1444,6 +1513,7 @@ const tI18nPhrase Phrases[] = { "Sid", "Sid", // hrv "Sid", + "Sid", }, { "Inversion", "Inversion", @@ -1464,6 +1534,7 @@ const tI18nPhrase Phrases[] = { "¸ÝÒÕàáØï", "Inverzija", "Inversioon", + "Inversion", }, { "Bandwidth", "Bandwidth", @@ -1484,6 +1555,7 @@ const tI18nPhrase Phrases[] = { "´ØÐßÐ×ÞÝ", "Bandwidth", // hrv "Pojasna ¹irina", "Ribalaius", + "Båndbredde", }, { "CoderateH", "CoderateH", @@ -1504,6 +1576,7 @@ const tI18nPhrase Phrases[] = { "CoderateH", "CoderateH", // hrv "CoderateH", + "CoderateH", }, { "CoderateL", "CoderateL", @@ -1524,6 +1597,7 @@ const tI18nPhrase Phrases[] = { "CoderateL", "CoderateL", // hrv "CoderateL", + "CoderateL", }, { "Modulation", "Modulation", @@ -1544,6 +1618,7 @@ const tI18nPhrase Phrases[] = { "¼ÞÔãÛïæØï", "Modulacija", "Modulatsioon", + "Modulation", }, { "Transmission", "Transmission", @@ -1564,6 +1639,7 @@ const tI18nPhrase Phrases[] = { "¿ÕàÕÔÐçÐ", "Prijenos", "Transmissioon", + "Transmission", }, { "Guard", "Guard", @@ -1584,6 +1660,7 @@ const tI18nPhrase Phrases[] = { "·ÐéØâÐ", "Za¹tita", "Guard", + "Guard", }, { "Hierarchy", "Hierarchy", @@ -1604,6 +1681,7 @@ const tI18nPhrase Phrases[] = { "¸ÕàÐàåØï", "Hijerarhija", "Hierarhia", + "Hierarki", }, // Timer parameters: { "Active", @@ -1625,6 +1703,7 @@ const tI18nPhrase Phrases[] = { "°ÚâØÒØàÞÒÐÝ", "Aktivan", "Aktiivne", + "Aktiv", }, { "Channel", "Kanal", @@ -1645,6 +1724,7 @@ const tI18nPhrase Phrases[] = { "ºÐÝÐÛ", "Program", "Kanal", + "Kanal", }, { "Day", "Tag", @@ -1665,6 +1745,7 @@ const tI18nPhrase Phrases[] = { "´ÕÝì", "Dan", "Päev", + "Dag", }, { "Start", "Anfang", @@ -1685,6 +1766,7 @@ const tI18nPhrase Phrases[] = { "½ÐçÐÛÞ", "Poèetak", "Start", + "Start", }, { "Stop", "Ende", @@ -1705,6 +1787,7 @@ const tI18nPhrase Phrases[] = { "ºÞÝÕæ", "Kraj", "Stopp", + "Stop", }, { "VPS", "VPS", @@ -1725,6 +1808,7 @@ const tI18nPhrase Phrases[] = { "VPS ßÞßàÐÒÚÐ", "VPS", // hrv "VPS", + "VPS", }, { "Priority", "Priorität", @@ -1745,6 +1829,7 @@ const tI18nPhrase Phrases[] = { "¿àØÞàØâÕâ", "Prioritet", "Prioriteet", + "Prioritet", }, { "Lifetime", "Lebensdauer", @@ -1765,6 +1850,7 @@ const tI18nPhrase Phrases[] = { "ÁàÞÚ åàÐÝÕÝØï", "Trajanje", "Eluiga", + "Levetid", }, { "File", "Datei", @@ -1785,6 +1871,7 @@ const tI18nPhrase Phrases[] = { "ÄÐÙÛ", "Datoteka", "Fail", + "Fil", }, { "First day", "Erster Tag", @@ -1805,6 +1892,7 @@ const tI18nPhrase Phrases[] = { "¿ÕàÒëÙ ÔÕÝì", "Prvi dan", "Esimene päev", + "Første dag", }, // Error messages: { "Channel is being used by a timer!", @@ -1826,6 +1914,7 @@ const tI18nPhrase Phrases[] = { "ºÐÝÐÛ ×ÐÝïâ âÐÙÜÕàÞÜ!", "Program je trenutno zauzet terminom za snimanje", "Kanal on taimeri kasutuses!", + "Kanal anvendes af en timer!", }, { "Can't switch channel!", "Kanal kann nicht umgeschaltet werden!", @@ -1846,6 +1935,7 @@ const tI18nPhrase Phrases[] = { "½ÕÒÞ×ÜÞÖÝÞ ßÕàÕÚÛîçØâì ÚÐÝÐÛ!", "Ne mogu prebaciti program!", "Kanali vahetus ei ole võimalik!", + "Kan ikke skifte kanal!", }, { "Timer is recording!", "Timer zeichnet gerade auf!", @@ -1866,6 +1956,7 @@ const tI18nPhrase Phrases[] = { "¸Ôñâ ×ÐßØáì ßÞ âÐÙÜÕàã!", "Snimanje po definiranom terminu!", "Taimeri salvestamine!", + "Timer optager nu!", }, { "Error while accessing recording!", "Fehler beim Ansprechen der Aufzeichnung!", @@ -1886,6 +1977,7 @@ const tI18nPhrase Phrases[] = { "¾èØÑÚÐ ÔÞáâãßÐ Ú ×ÐßØáØ!", "Gre¹ka pri pristupanju snimke!", "Salvestuse taasesitus ebaõnnestus!", + "Fejl ved læsning af optagelse!", }, { "Error while deleting recording!", "Fehler beim Löschen der Aufzeichnung!", @@ -1906,6 +1998,7 @@ const tI18nPhrase Phrases[] = { "¾èØÑÚÐ ãÔÐÛÕÝØï ×ÐßØáØ!", "Gre¹ka pri brisanju snimke!", "Salvestuse kustutamine ebaõnnestus!", + "Fejl ved sletning af optagelse!", }, { "*** Invalid Channel ***", "*** Ungültiger Kanal ***", @@ -1926,6 +2019,7 @@ const tI18nPhrase Phrases[] = { "*** ½ÕßàÐÒØÛìÝëÙ ÚÐÝÐÛ ***", "*** Neispravan program ***", "*** Vigane kanal ***", + "*** Ugyldig kanal! ***", }, { "No free DVB device to record!", "Keine freie DVB-Karte zum Aufnehmen!", @@ -1946,6 +2040,7 @@ const tI18nPhrase Phrases[] = { "½Õâ áÒÞÑÞÔÝÞÓÞ DVB-ãáâàÞÙáâÒÐ ÔÛï ×ÐßØáØ!", "Nema slobodnog DVB ureðaja za snimanje!", "Puudub vaba DVB seade salvestamiseks!", + "Ingen fri DVB enhed til optagelse!", }, { "Channel not available!", "Kanal nicht verfügbar!", @@ -1966,6 +2061,7 @@ const tI18nPhrase Phrases[] = { "ºÐÝÐÛ ÝÕÔÞáâãßÕÝ!", "Program nije dostupan!", "Kanal ei ole kättesaadav!", + "Kanal er ikke tilgængelig!", }, { "Channel settings are not unique!", "Kanaleinstellungen sind nicht eindeutig!", @@ -1986,6 +2082,7 @@ const tI18nPhrase Phrases[] = { "½ÐáâàÞÙÚØ ÚÐÝÐÛÐ ÝÕ ãÝØÚÐÛìÝë!", "Parametri programa nisu jednoznaèni!", "Kanaliseaded ei ole unikaalsed!", + "Kanalindstillinger er ikke entydige!", }, { "Channel locked (recording)!", "Kanal blockiert (zeichnet auf)!", @@ -2006,6 +2103,7 @@ const tI18nPhrase Phrases[] = { "ºÐÝÐÛ ×ÐÑÛÞÚØàÞÒÐÝ (ØÔñâ ×ÐßØáì)!", "Program blokiran (snimanje)!", "Kanal lukus (salvestamine aktiivne)!", + "Kanal blokeret (optagelse i gang)", }, { "Can't start Transfer Mode!", "Transfer-Mode kann nicht gestartet werden!", @@ -2026,6 +2124,7 @@ const tI18nPhrase Phrases[] = { "½ÕÒÞ×ÜÞÖÝÞ ÒÚÛîçØâì àÕÖØÜ ßàÞßãáÚÐ!", // ??? "Ne mogu zapoèeti 'prijenosni' naèin!", "Siirdemooduse start ebaõnnestus!", + "Kan ikke starte Transfer Mode!", }, { "No editing marks defined!", "Keine Schnittmarken gesetzt!", @@ -2046,6 +2145,7 @@ const tI18nPhrase Phrases[] = { "½Õ ×ÐÔÐÝë ÜÕâÚØ ÔÛï ÜÞÝâÐÖÐ!", "Nijedna prekidna toèka nije postavljena!", "Redigeerimise markerid puuduvad!", + "Der er ikke sat nogen redigeringsmærker!", }, { "Can't start editing process!", "Schnitt kann nicht gestartet werden!", @@ -2066,6 +2166,7 @@ const tI18nPhrase Phrases[] = { "½ÕÒÞ×ÜÞÖÝÞ ÝÐçÐâì ÜÞÝâÐÖ ×ÐßØáØ!", "Ne mogu zapoèeti ureðivanje!", "Redigeerimise start ebaõnnestus!", + "Kan ikke starte redigeringsprocessen!", }, { "Editing process already active!", "Schnitt bereits aktiv!", @@ -2086,6 +2187,7 @@ const tI18nPhrase Phrases[] = { "¿àÞæÕáá ÒØÔÕÞÜÞÝâÐÖÐ ãÖÕ ×ÐßãéÕÝ!", "Ureðivanje je veæ aktivirano!", "Redigeerimine on juba aktiivne!", + "Redigeringsproces er allerede aktiv!", }, { "Can't shutdown - option '-s' not given!", "Shutdown unmöglich - Option '-s' fehlt!", @@ -2106,6 +2208,7 @@ const tI18nPhrase Phrases[] = { "²ëÚÛîçÕÝØÕ ÝÕÒÞ×ÜÞÖÝÞ - ÝÕ ×ÐÔÐÝ ßÐàÐÜÕâà '-s'!", "Ga¹enje nemoguæe - nedostaje opcija '-s'!", "Väljalülitamine ebaõnnestus - '-s' parameeter puudub!", + "Kan ikke slukke - parameter '-s' ikke angivet!", }, { "Low disk space!", "Platte beinahe voll!", @@ -2126,6 +2229,7 @@ const tI18nPhrase Phrases[] = { "½ÕÔÞáâÐâÞçÝÞ ÜÕáâÐ ÝÐ ÔØáÚÕ!", "Nedovoljno prostora na disku", "Kõvaketas peaaegu täis!", + "Kun lidt diskplads tilbage!", }, { "Can't open CAM menu!", "CAM-Menü kann nicht geöffnet werden!", @@ -2146,6 +2250,7 @@ const tI18nPhrase Phrases[] = { "¼ÕÝî CAM-ÜÞÔãÛï ÝÕÔÞáâãßÝÞ!", "Ne mogu otvoriti CAM izbor!", "Ei saa avada CAM menüüd!", + "Kan ikke åbne CAM menuen!", }, { "Can't reset CAM!", "CAM-Reset fehlgeschlagen!", @@ -2166,6 +2271,7 @@ const tI18nPhrase Phrases[] = { "¾èØÑÚÐ ßÕàÕ×ÐßãáÚÐ CAM-ÜÞÔãÛï!", "Ne mogu resetirati CAM", "CAM mooduli taaskäivitus ebaõnnestus!", + "Kan ikke nulstille CAM!", }, { "CAM has been reset", "CAM wurde zurückgesetzt!", @@ -2186,6 +2292,7 @@ const tI18nPhrase Phrases[] = { "CAM-ÜÞÔãÛì ßÕàÕ×ÐßãéÕÝ!", "CAM je resetiran!", "CAM mooduli taaskäivitus tehtud", + "CAM er blevet nulstillet", }, // Setup pages: { "OSD", @@ -2207,6 +2314,7 @@ const tI18nPhrase Phrases[] = { "¼ÕÝî", "OSD", "Ekraanimenüü", + "OSD", }, { "EPG", "EPG", @@ -2227,6 +2335,7 @@ const tI18nPhrase Phrases[] = { "ÂÕÛÕÓØÔ", "Pregled emisija (EPG)", "EPG", + "EPG", }, { "DVB", "DVB", @@ -2247,6 +2356,7 @@ const tI18nPhrase Phrases[] = { "DVB", "DVB", "DVB", + "DVB", }, { "LNB", "LNB", @@ -2267,6 +2377,7 @@ const tI18nPhrase Phrases[] = { "ºÞÝÒÕàâÕà", "LNB", "LNB", + "LNB", }, { "CICAM", "CICAM", @@ -2287,6 +2398,7 @@ const tI18nPhrase Phrases[] = { "ÃáÛÞÒÝëÙ ÔÞáâãß", "CICAM", "CICAM", + "CICAM", }, { "Recording", "Aufnahme", @@ -2307,6 +2419,7 @@ const tI18nPhrase Phrases[] = { "·ÐßØáì", "Snimanje", "Salvestamine", + "Optagelse", }, { "Replay", "Wiedergabe", @@ -2327,6 +2440,7 @@ const tI18nPhrase Phrases[] = { "²ÞáßàÞØ×ÒÕÔÕÝØÕ", "Reprodukcija", "Taasesitus", + "Afspilning", }, { "Miscellaneous", "Sonstiges", @@ -2347,6 +2461,7 @@ const tI18nPhrase Phrases[] = { "¿àÞçÕÕ", "Ostalo", "Muud sätted", + "Diverse", }, { "Plugins", "Plugins", @@ -2367,6 +2482,7 @@ const tI18nPhrase Phrases[] = { "¼ÞÔãÛØ àÐáèØàÕÝØï", "Dodaci (Plugins)", "Laiendusmoodulid", + "Plugins", }, { "Plugin", "Plugin", @@ -2387,6 +2503,7 @@ const tI18nPhrase Phrases[] = { "¼ÞÔãÛì", "Plugin", "Laiendusmoodul", + "Plugin", }, { "Restart", "Neustart", @@ -2407,6 +2524,7 @@ const tI18nPhrase Phrases[] = { "¿ÕàÕ×ÐßãáâØâì", "Restart sistema", "Restart", + "Genstart", }, // Setup parameters: { "Setup.OSD$Language", @@ -2428,6 +2546,7 @@ const tI18nPhrase Phrases[] = { "Ï×ëÚ", "Jezik", "Keel", + "Sprog", }, { "Setup.OSD$Skin", "Oberfläche", @@ -2448,6 +2567,7 @@ const tI18nPhrase Phrases[] = { "ÁâØÛì", "Povr¹ina", "Kest", + "Skin", }, { "Setup.OSD$Theme", "Thema", @@ -2468,6 +2588,7 @@ const tI18nPhrase Phrases[] = { "¿ÐÛØâàÐ", "Tema", "Teema", + "Tema", }, { "Setup.OSD$Left", "Links", @@ -2488,6 +2609,7 @@ const tI18nPhrase Phrases[] = { "¾âáâãß áÛÕÒÐ", "Lijevo", "Vasakule", + "Venstre", }, { "Setup.OSD$Top", "Oben", @@ -2508,6 +2630,7 @@ const tI18nPhrase Phrases[] = { "¾âáâãß áÒÕàåã", "Gore", "Ülesse", + "Top", }, { "Setup.OSD$Width", "Breite", @@ -2528,6 +2651,7 @@ const tI18nPhrase Phrases[] = { "ÈØàØÝÐ", "©irina", "Laius", + "Bredde", }, { "Setup.OSD$Height", "Höhe", @@ -2548,6 +2672,7 @@ const tI18nPhrase Phrases[] = { "²ëáÞâÐ", "Visina", "Kõrgus", + "Højde", }, { "Setup.OSD$Message time (s)", "Anzeigedauer für Nachrichten (s)", @@ -2568,6 +2693,7 @@ const tI18nPhrase Phrases[] = { "´ÛØâÕÛìÝÞáâì ßÞÚÐ×Ð áÞÞÑéÕÝØÙ (áÕÚ)", "Vrijeme prikaza poruka (s)", "Kanaliteate esitusaeg (s)", + "Tid beskeder skal vises (s)", }, { "Setup.OSD$Use small font", "Kleine Schrift benutzen", @@ -2588,6 +2714,7 @@ const tI18nPhrase Phrases[] = { "¸áßÞÛì×ÞÒÐâì ÜÕÛÚØÙ èàØäâ", "Koristi mala slova", "Väikese fondi kasutamine", + "Anvend lille skrift", }, { "never", "nie", @@ -2608,6 +2735,7 @@ const tI18nPhrase Phrases[] = { "ÝØÚÞÓÔÐ", "nikada", "mitte kunagi", + "aldrig", }, { "skin dependent", "je nach Oberfläche", @@ -2628,6 +2756,7 @@ const tI18nPhrase Phrases[] = { "áÞÓÛÐáÝÞ âÕÜÕ", "ovisno o povr¹ini", "kestast sõltuv", + "skin afhængig", }, { "always", "immer", @@ -2648,6 +2777,7 @@ const tI18nPhrase Phrases[] = { "ÒáÕÓÔÐ", "uvijek", "alati", + "altid", }, { "Setup.OSD$Channel info position", "Kanal-Info Position", @@ -2668,6 +2798,7 @@ const tI18nPhrase Phrases[] = { "¿ÞÛÞÖÕÝØÕ ÞÚÝÐ ØÝäÞàÜÐæØØ Þ ÚÐÝÐÛÕ", "Pozicija informacije o programu", "Kanaliinfo asukoht", + "Placering af kanalinfo", }, { "Setup.OSD$Info on channel switch", "Info beim Kanalwechsel", @@ -2688,6 +2819,7 @@ const tI18nPhrase Phrases[] = { "¿ÞÚÐ×ëÒÐâì ØÝäÞàÜÐæØî Þ ÚÐÝÐÛÕ", "Informacije kod promjene kanala", "Näita kanaliteadet", + "Info ved kanalskift", }, { "Setup.OSD$Scroll pages", "Seitenweise scrollen", @@ -2708,6 +2840,7 @@ const tI18nPhrase Phrases[] = { "¿àÞÚàãâÚÐ áâàÐÝØæ ÜÕÝî", "Listaj po stranicama", "Lehekülje kerimine", + "Rul sider", }, { "Setup.OSD$Sort timers", "Timer sortieren", @@ -2728,6 +2861,7 @@ const tI18nPhrase Phrases[] = { "ÁÞàâØàÞÒÚÐ âÐÙÜÕàÞÒ", "Sortiraj termine", "Taimeri sorteerimine", + "Sorter timere", }, { "Setup.OSD$Recording directories", "Aufnahmeverzeichnisse", @@ -2748,6 +2882,7 @@ const tI18nPhrase Phrases[] = { "ºÐâÐÛÞÓØ åàÐÝÕÝØï ×ÐßØáÕÙ", "Imenik za snimke", "Salvesta kausta nime", + "Optagelser i foldere", }, { "Setup.EPG$EPG scan timeout (h)", "Zeit bis EPG Scan (h)", @@ -2768,6 +2903,7 @@ const tI18nPhrase Phrases[] = { "·ÐÔÕàÖÚÐ áÚÐÝØàÞÒÐÝØï âÕÛÕÓØÔÐ (ç)", "Vrijeme do EPG pregleda (h)", "EPG skaneerimise viide (h)", + "Tid før EPG skanning (t)", }, { "Setup.EPG$EPG bugfix level", "EPG Fehlerbereinigung", @@ -2788,6 +2924,7 @@ const tI18nPhrase Phrases[] = { "ÃàÞÒÕÝì ÚÞààÕÚæØØ ÞèØÑÞÚ", "Nivo popravka EPG gre¹aka", "EPG veaparanduse tase", + "Niveau for EPG fejlrettelse", }, { "Setup.EPG$EPG linger time (min)", "Alte EPG-Daten anzeigen (min)",// TODO @@ -2808,6 +2945,7 @@ const tI18nPhrase Phrases[] = { "ÅàÐÝÕÝØÕ ãáâÐàÕÒèØå ÔÐÝÝëå (ÜØÝ)", "Prika¾i stare EPG podatke (min)", "Vana EPG viide (min)", + "Vise gammel EPG info (min)", }, { "Setup.EPG$Set system time", "Systemzeit stellen", @@ -2828,6 +2966,7 @@ const tI18nPhrase Phrases[] = { "ÃáâÐÝÞÒØâì áØáâÕÜÝÞÕ ÒàÕÜï", "Podesi vrijeme sistema", "Kella sünkroniseerimine", + "Indstil system tid", }, { "Setup.EPG$Use time from transponder", "Transponder für Systemzeit", @@ -2848,6 +2987,7 @@ const tI18nPhrase Phrases[] = { "¸áßÞÛì×ÞÒÐâì ÒàÕÜï âàÐÝáßÞÝÔÕàÐ", "Transponder za pode¹avanje sata", "Kella sünkroniseerimise transponder", + "Anvend tid fra transponder", }, { "Setup.EPG$Preferred languages", // note the plural "Bevorzugte Sprachen", @@ -2868,6 +3008,7 @@ const tI18nPhrase Phrases[] = { "¿àÕÔßÞçØâÐÕÜëÕ ï×ëÚØ", "Preferirani jezici", "Eelistatuid keeli", + "Foretrukne sprog", }, { "Setup.EPG$Preferred language", // note the singular "Bevorzugte Sprache", @@ -2888,6 +3029,7 @@ const tI18nPhrase Phrases[] = { "²ëÑàÐÝ", "Preferirani jezik", "Eelistatud keel", + "Foretrukket sprog", }, { "Setup.DVB$Primary DVB interface", "Primäres DVB Interface", @@ -2908,6 +3050,7 @@ const tI18nPhrase Phrases[] = { "¾áÝÞÒÝÞÕ DVB-ãáâàÞÙáâÒÞ", "Primarni DVB ureðaj", "Esmane DVB seade", + "Primær DVB enhed", }, { "Setup.DVB$Video format", "Video Format", @@ -2928,6 +3071,7 @@ const tI18nPhrase Phrases[] = { "ÄÞàÜÐâ ÒØÔÕÞ", "Video format", "TV külgsuhe", + "Video format", }, { "Setup.DVB$Update channels", "Kanäle aktualisieren", @@ -2948,6 +3092,7 @@ const tI18nPhrase Phrases[] = { "¾ÑÝÞÒÛïâì ÝÐáâàÞÙÚØ ÚÐÝÐÛÞÒ", "Aktualiziraj programe", "Kanalite uuendamine", + "Opdatér kanaler", }, { "names only", "nur Namen", @@ -2968,6 +3113,7 @@ const tI18nPhrase Phrases[] = { "âÞÛìÚÞ ÝÐ×ÒÐÝØï", "samo imena", "ainult nimed", + "kun navne", }, { "names and PIDs", "Namen und PIDs", @@ -2988,6 +3134,7 @@ const tI18nPhrase Phrases[] = { "ÝÐ×ÒÐÝØï Ø PIDë", "imena i identifikatore (PIDs)", "nimed ja PID-id", + "navne og PIDs", }, { "add new channels", "neue Kanäle hinzufügen", @@ -3008,6 +3155,7 @@ const tI18nPhrase Phrases[] = { "ÝÞÒëÕ ÚÐÝÐÛë", "dodaj nove programe", "lisa uued kanalid", + "tilf. ny kanaler", }, { "add new transponders", "neue Transponder hinzufügen", @@ -3028,6 +3176,7 @@ const tI18nPhrase Phrases[] = { "ÝÞÒ. âàÐÝáßÞÝÔÕàë", "dodaj nove transpondere", // hrv TODO transponderi == odasiljaèi? "lisa uued transponderid", + "tilf. ny transp.", }, { "Setup.LNB$SLOF (MHz)", "SLOF (MHz)", @@ -3048,6 +3197,7 @@ const tI18nPhrase Phrases[] = { "ÇÐáâÞâÐ ßÕàÕÚÛîçÕÝØï (SLOF) (¼³æ)", "Frekv. preklopa SLOF (MHz)", "SLOF (MHz)", + "SLOF (MHz)", }, { "Setup.LNB$Low LNB frequency (MHz)", "Untere LNB-Frequenz (MHz)", @@ -3068,6 +3218,7 @@ const tI18nPhrase Phrases[] = { "½ØÖÝïï çÐáâÞâÐ ÚÞÝÒÕàâÕàÐ (¼³æ)", "Donja LNB frekv. (MHz)", "Alumine (LO) LNB sagedus (MHz)", + "Nedre LNB frekvens (MHz)", }, { "Setup.LNB$High LNB frequency (MHz)", "Obere LNB-Frequenz (MHz)", @@ -3088,6 +3239,7 @@ const tI18nPhrase Phrases[] = { "²ÕàåÝïï çÐáâÞâÐ ÚÞÝÒÕàâÕàÐ (¼³æ)", "Gornja LNB frekv. (MHz)", "Ülemine (HI) LNB sagedus (MHz)", + "Øvre LNB frekvens (MHz)", }, { "Setup.LNB$Use DiSEqC", "DiSEqC benutzen", @@ -3108,6 +3260,7 @@ const tI18nPhrase Phrases[] = { "¸áßÞÛì×ÞÒÐâì DiSEqC", "Koristi DiSEqC", "DiSEqC kasutamine", + "Anvend DiSEqC", }, { "Setup.CICAM$CICAM DVB", "CICAM DVB", @@ -3128,6 +3281,7 @@ const tI18nPhrase Phrases[] = { "CAM-ÜÞÔãÛì DVB", "CICAM DVB", "CICAM DVB", + "CICAM DVB", }, { "Setup.Recording$Margin at start (min)", "Zeitpuffer bei Anfang (min)", @@ -3148,6 +3302,7 @@ const tI18nPhrase Phrases[] = { "¾ßÕàÕÖÕÝØÕ ÝÐçÐÛÐ ×ÐßØáØ (ÜØÝ)", "Rezerva na poèetku snimanja (min)", "Salvestamise algusvaru (min)", + "Margin ved start (min)", }, { "Setup.Recording$Margin at stop (min)", "Zeitpuffer bei Ende (min)", @@ -3168,6 +3323,7 @@ const tI18nPhrase Phrases[] = { "·ÐßÐ×ÔëÒÐÝØÕ ÞáâÐÝÞÒÚØ ×ÐßØáØ (ÜØÝ)", "Rezerva na kraju (min)", "Salvestamise lõpuvaru (min)", + "Margin ved stop (min)", }, { "Setup.Recording$Primary limit", "Primär-Limit", @@ -3188,6 +3344,7 @@ const tI18nPhrase Phrases[] = { "¼ØÝ. ßàØÞàØâÕâ ×ÐåÒÐâÐ ÞáÝ. ãáâàÞÙáâÒÐ", "Standardno ogranièenje", "Esmase seadme prioriteet", + "Primær grænse", }, { "Setup.Recording$Default priority", "Default Priorität", @@ -3208,6 +3365,7 @@ const tI18nPhrase Phrases[] = { "¿àØÞàØâÕâ âÐÙÜÕàÐ ßÞ ãÜÞÛçÐÝØî", "Standardni prioritet", "Vaikimisi prioriteet", + "Standard prioritet", }, { "Setup.Recording$Default lifetime (d)", "Default Lebensdauer (d)", @@ -3228,6 +3386,7 @@ const tI18nPhrase Phrases[] = { "ÁàÞÚ åàÐÝÕÝØï ×ÐßØáØ ßÞ ãÜÞÛçÐÝØî (Ô)", "Standardno trajanje (d)", "Salvestuse eluiga (päevi)", + "Standard levetid (d)", }, { "Setup.Recording$Pause priority", "Pause Priorität", @@ -3248,6 +3407,7 @@ const tI18nPhrase Phrases[] = { "¿àØÞàØâÕâ ÞâÛÞÖÕÝÝÞÓÞ ßàÞáÜÞâàÐ", "Prioritet pauze", "Pausi prioriteet", + "Pause prioritet", }, { "Setup.Recording$Pause lifetime (d)", "Pause Lebensdauer (d)", @@ -3268,6 +3428,7 @@ const tI18nPhrase Phrases[] = { "ÅàÐÝÕÝØÕ ÞâÛÞÖÕÝÝÞÓÞ ßàÞáÜÞâàÐ (Ô)", "Trajanje pauze (d)", "Pausi eluiga (päevi)", + "Pause levetid (d)", }, { "Setup.Recording$Use episode name", "Episodenname verwenden", @@ -3288,6 +3449,7 @@ const tI18nPhrase Phrases[] = { "³àãßßØàÞÒÐâì äÐÙÛë ßÞ íßØ×ÞÔÐÜ", "Koristi ime epizode", "Kasuta episoodi nime", + "Anvend udsendelsesnavn", }, { "Setup.Recording$Use VPS", "VPS benutzen", @@ -3308,6 +3470,7 @@ const tI18nPhrase Phrases[] = { "¸áßÞÛì×ÞÒÐâì áØÓÝÐÛë VPS", "Koristi VPS", "Kasuta VPS-i", + "Anvend VPS", }, { "Setup.Recording$VPS margin (s)", "Zeitpuffer bei VPS (s)", @@ -3328,6 +3491,7 @@ const tI18nPhrase Phrases[] = { "±ãäÕàÝÞÕ ÒàÕÜï VPS (áÕÚ)", "Vremenska rezerva kod VPS (s)", "VPS-i algusvaru (s)", + "VPS margin (s)", }, { "Setup.Recording$Mark instant recording", "Direktaufzeichnung markieren", @@ -3348,6 +3512,7 @@ const tI18nPhrase Phrases[] = { "¾âÜÕçÐâì áÔÕÛÐÝÝëÕ ÒàãçÝãî ×ÐßØáØ", "Oznaèi direktno snimanje", "Märgista otsesalvestusi", + "Markér direkte optagelse", }, { "Setup.Recording$Name instant recording", "Direktaufzeichnung benennen", @@ -3368,6 +3533,7 @@ const tI18nPhrase Phrases[] = { "ÁåÕÜÐ ØÜÕÝÞÒÐÝØï àãçÝëå ×ÐßØáÕÙ", "Imenuj direktno snimanje", "Otsesalvestuse nimi", + "Navngiv direkte optagelse", }, { "Setup.Recording$Instant rec. time (min)", "Dauer der Direktaufzeichnung (min)", @@ -3388,6 +3554,7 @@ const tI18nPhrase Phrases[] = { "´ÛØâÕÛìÝÞáâì àãçÝÞÙ ×ÐßØáØ (ÜØÝ)", "Trajanje direktnog snimanja (min)", "Otsesalvestuse kestus (min)", + "Længde af direkte optagelse (min)", }, { "Setup.Recording$Record Dolby Digital", "Dolby Digital Ton aufzeichnen", @@ -3408,6 +3575,7 @@ const tI18nPhrase Phrases[] = { "·ÐßØáëÒÐâì ×ÒãÚ Dolby Digital", "Snimi 'Dolby digital' ton", "Dolby Digital salvestamine", + "Optag Dolby Digital lyd", }, { "Setup.Recording$Max. video file size (MB)", "Max. Video Dateigröße (MB)", @@ -3428,6 +3596,7 @@ const tI18nPhrase Phrases[] = { "¼ÐÚá. àÐ×ÜÕà ÒØÔÕÞäÐÙÛÐ (¼Ñ)", "Maksimalna velièina datoteke (MB)", "Maksimaalne failisuurus (MB)", + "Max. video filstørrelse (MB)", }, { "Setup.Recording$Split edited files", "Editierte Dateien aufteilen", @@ -3448,6 +3617,7 @@ const tI18nPhrase Phrases[] = { "´ÕÛØâì ÞâàÕÔÐÚâØàÞÒÐÝÝëÕ äÐÙÛë", "Podijeli ureðene datoteke", "Tükelda redigeeritud faile", + "Opdel redigerede filer", }, { "Setup.Replay$Multi speed mode", "MultiSpeed Modus", @@ -3468,6 +3638,7 @@ const tI18nPhrase Phrases[] = { "¼ÝÞÓÞáÚÞàÞáâÝÞÙ àÕÖØÜ", "MultiSpeed naèin", "Multi-kiiruse moodus", + "Multi hastighedsmodus", }, { "Setup.Replay$Show replay mode", "Wiedergabestatus anzeigen", @@ -3488,6 +3659,7 @@ const tI18nPhrase Phrases[] = { "¾âÞÑàÐÖÐâì àÕÖØÜ ÒÞáßàÞØ×ÒÕÔÕÝØï", // ??? "Prika¾i naèin prikazivanja", "Korduse moodus", + "Vis afspilningsmodus", }, { "Setup.Replay$Resume ID", "Wiedergabe ID", @@ -3508,6 +3680,7 @@ const tI18nPhrase Phrases[] = { "ID ÒÞáßàÞØ×ÒÕÔÕÝØï", // ??? "ID nastavka", "Jätkamise ID", + "Genoptagelses ID", }, { "Setup.Miscellaneous$Min. event timeout (min)", "Mindest Event Pause (min)", @@ -3528,6 +3701,7 @@ const tI18nPhrase Phrases[] = { "¼ØÝ. ÒàÕÜï ÞÖØÔÐÝØï áÞÑëâØï (ÜØÝ)", "Najmanje vrijeme pauze", "Min. sündmuse kestus (min)", + "Mindste hændelsespause (min)", }, { "Setup.Miscellaneous$Min. user inactivity (min)", "Mindest Benutzer-Inaktivität (min)", @@ -3548,6 +3722,7 @@ const tI18nPhrase Phrases[] = { "¼ØÝ. ÒàÕÜï ÞÖØÔÐÝØï ÒÒÞÔÐ (ÜØÝ)", "Najmanje vrijeme neaktivnosti (min)", "Min. kasutaja tegevusetus (min)", + "Min. bruger inaktivitet (min)", }, { "Setup.Miscellaneous$SVDRP timeout (s)", "SVDRP Timeout (s)", @@ -3568,6 +3743,7 @@ const tI18nPhrase Phrases[] = { "·ÐÔÕàÖÚÐ ÞÑàëÒÐ áÞÕÔ. SVDRP (áÕÚ)", "SVDRP vrijeme neaktivnosti", "SVDRP ooteaeg (s)", + "SVDRP timeout (s)", }, { "Setup.Miscellaneous$Zap timeout (s)", "Zap Timeout (s)", @@ -3588,6 +3764,7 @@ const tI18nPhrase Phrases[] = { "·ÐÔÕàÖÚÐ ßÕàÕÚÛîçÕÝØï ÚÐÝÐÛÐ (áÕÚ)", "",// hrv TODO "Kanalivahetuse ooteaeg (s)", + "Zap timeout (s)", }, // The days of the week: { "MTWTFSS", @@ -3609,6 +3786,7 @@ const tI18nPhrase Phrases[] = { "¿²ÁÇ¿²Á", "PUSÈPSN", // hrv "ETKNRLP", + "MTOTFLS", }, { "MonTueWedThuFriSatSun", // must all be 3 letters! "MonDieMitDonFreSamSon", @@ -3629,6 +3807,7 @@ const tI18nPhrase Phrases[] = { "¿ÞݲâàÁàÔÇâÒ¿âÝÁãѲáÚ", "PonUtoSriÈetPetSubNed", // hrv " E T K N R L P ", + "ManTirOnsTorFreLørSøn", }, // The allowed characters in strings: { " abcdefghijklmnopqrstuvwxyz0123456789-.#~", @@ -3650,6 +3829,7 @@ const tI18nPhrase Phrases[] = { " abcdefghijklmnopqrstuvwxyzÐÑÒÓÔÕñÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìîï0123456789-.#~", " abcèædðefghijklmnopqrs¹tuvwxyz¾0123456789-.#~", // hrv " abcdefghijklmnopqrsðzþtuvwõäöüxyå0123456789-.#~", + " abcdefghijklmnopqrstuvwxyzæøå0123456789-.#~", }, // Learning keys: { "Learning Remote Control Keys", @@ -3671,6 +3851,7 @@ const tI18nPhrase Phrases[] = { "²ÒÞÔ ÚÞÔÞÒ ÚÝÞßÞÚ ßãÛìâÐ", "Uèenje kôda daljinskog upravljaèa", "Kaugjuhtimispuldi õpetamine", + "Lærer fjernbetjeningstaster", }, { "Phase 1: Detecting RC code type", "Phase 1: FB Code feststellen", @@ -3691,6 +3872,7 @@ const tI18nPhrase Phrases[] = { "ÈÐÓ 1: ¾ßàÕÔÕÛÕÝØÕ âØßÐ ÚÞÔÐ ßãÛìâÐ", "Faza 1: detektiranje kôda daljinskog upravljaèa.", "Aste 1: Koodeerimissüsteemi tuvastamine", + "Fase 1: Detekterer fjernbetjenings-kodetype", }, { "Press any key on the RC unit", "Eine Taste auf der FB drücken", @@ -3711,6 +3893,7 @@ const tI18nPhrase Phrases[] = { "½ÐÖÜØâÕ ÛîÑãî ÚÝÞßÚã ÝÐ ßãÛìâÕ", "Pritisnite tipku na daljinskom upravljaèu", "Vajuta puldil suvalist klahvi", + "Tryk vilkårlig tast på fjernbetjeningen", }, { "RC code detected!", "FB Code erkannt!", @@ -3731,6 +3914,7 @@ const tI18nPhrase Phrases[] = { "¾ÑÝÐàãÖÕÝ ÚÞÔ ßãÛìâÐ!", "Kôd daljinskog upravljaèa je prepoznat!", "Koodeerimissüsteem tuvastatud!", + "Fjernbetjenings-kodetype fundet!", }, { "Do not press any key...", "Keine Taste drücken...", @@ -3751,6 +3935,7 @@ const tI18nPhrase Phrases[] = { "½Õ ÝÐÖØÜÐÙâÕ ÚÝÞßÚØ...", "Ne pritiskajte tipku...", "Ära vajuta puldil ühtki klahvi...", + "Tryk ikke på nogen tast...", }, { "Phase 2: Learning specific key codes", "Phase 2: Einzelne Tastencodes lernen", @@ -3771,6 +3956,7 @@ const tI18nPhrase Phrases[] = { "ÈÐÓ 2: ·ÐÔÐÝØÕ ÚÞÔÞÒ ÞâÔÕÛìÝëå ÚÝÞßÞÚ", "Faza 2: Uèenje posebnih kôdova", "Aste 2: Klahvide õpetamine", + "Fase 2: Lær individuelle tast koder", }, { "Press key for '%s'", "Taste für '%s' drücken", @@ -3791,6 +3977,7 @@ const tI18nPhrase Phrases[] = { "½ÐÖÜØâÕ ÚÝÞßÚã '%s'", "Pritisnite tipku za '%s'", "Vajuta klahvile '%s'", + "Tryk tasten for '%s'", }, { "Press 'Up' to confirm", "'Auf' drücken zum Bestätigen", @@ -3811,6 +3998,7 @@ const tI18nPhrase Phrases[] = { "½ÐÖÜØâÕ '²ÒÕàå' çâÞÑë ßÞÔâÒÕàÔØâì", "Pritisnite 'Gore' za potvrdu", "Kinnitamiseks vajuta 'Üles'", + "Tryk 'Op' for at bekræfte", }, { "Press 'Down' to continue", "'Ab' drücken zum Weitermachen", @@ -3831,6 +4019,7 @@ const tI18nPhrase Phrases[] = { "½ÐÖÜØâÕ '²ÝØ×' çâÞÑë ßàÞÔÞÛÖØâì", "Pritisnite 'Dolje' za nastavak", "Jätkamiseks vajuta 'Alla'", + "Tryk 'Ned' for at fortsætte", }, { "(press 'Up' to go back)", "('Auf' drücken um zurückzugehen)", @@ -3851,6 +4040,7 @@ const tI18nPhrase Phrases[] = { "(½ÐÖÜØâÕ '²ÒÕàå' çâÞÑë ÒÕàÝãâìáï)", "(pritisnite 'Gore' za nazad)", "(tagasiminekuks vajuta 'Üles')", + "(tryk 'Op' for at gå tilbage)", }, { "(press 'Down' to end key definition)", "('Ab' drücken zum Beenden)", @@ -3871,6 +4061,7 @@ const tI18nPhrase Phrases[] = { "(½ÐÖÜØâÕ '²ÝØ×' çâÞÑë ×ÐÚÞÝçØâì ÝÐáâàÞÙÚã ßãÛìâÐ)", "(pritisnite 'Dolje' za kraj)", "(lõpetamiseks vajuta 'Alla')", + "(tryk 'Ned' for at afslutte indlæringen)", }, { "(press 'Menu' to skip this key)", "('Menü' drücken zum Überspringen)", @@ -3891,6 +4082,7 @@ const tI18nPhrase Phrases[] = { "(½ÐÖÜØâÕ '¼ÕÝî' çâÞÑë ßàÞßãáâØâì ÚÝÞßÚã)", "pritisnite 'Izbor' da preskoèite ovu tipku", "(selle klahvi vahelejätmiseks vajuta 'Menüü')", + "(tryk 'Menu' for at springe denne tast over)", }, { "Phase 3: Saving key codes", "Phase 3: Codes abspeichern", @@ -3911,6 +4103,7 @@ const tI18nPhrase Phrases[] = { "ÈÐÓ 3: ·ÐßÞÜØÝÐÝØÕ ÚÞÔÞÒ ÚÝÞßÞÚ", "Faza 3: Spremanje kôdova tipki", "Aste 3: Klavhikoodide salvestamine", + "Fase 3: Gemmer tast koder", }, { "Press 'Up' to save, 'Down' to cancel", "'Auf' speichert, 'Ab' bricht ab", @@ -3931,6 +4124,7 @@ const tI18nPhrase Phrases[] = { "½ÐÖÜØâÕ '²ÒÕàå' çâÞÑë ×ÐßÞÜÝØâì, '²ÝØ×' çâÞÑë ÞâÚÐ×Ðâìáï", "'Gore' za potvrdu, 'Dolje' za prekid", "Salvestamiseks vajuta 'Üles' ja katkestamiseks 'Alla'", + "Tryk 'Op' for at gemme, 'Ned' for at annullere", }, // Key names: { "Up", @@ -3952,6 +4146,7 @@ const tI18nPhrase Phrases[] = { "²ÒÕàå", "Gore", "Üles", + "Op", }, { "Down", "Ab", @@ -3972,6 +4167,7 @@ const tI18nPhrase Phrases[] = { "²ÝØ×", "Dolje", "Alla", + "Ned", }, { "Menu", "Menü", @@ -3992,6 +4188,7 @@ const tI18nPhrase Phrases[] = { "¼ÕÝî", "Izbor", "Menüü", + "Menu", }, { "Ok", "Ok", @@ -4012,6 +4209,7 @@ const tI18nPhrase Phrases[] = { "Ok", "Ok", "Ok", + "Ok", }, { "Back", "Zurück", @@ -4032,6 +4230,7 @@ const tI18nPhrase Phrases[] = { "½Ð×ÐÔ", "Nazad", "Tagasi", + "Tilbage", }, { "Left", "Links", @@ -4052,6 +4251,7 @@ const tI18nPhrase Phrases[] = { "½ÐÛÕÒÞ", "Lijevo", "Vasakule", + "Venstre", }, { "Right", "Rechts", @@ -4072,6 +4272,7 @@ const tI18nPhrase Phrases[] = { "½ÐßàÐÒÞ", "Desno", "Paremale", + "Højre", }, { "Red", "Rot", @@ -4092,6 +4293,7 @@ const tI18nPhrase Phrases[] = { "ºàÐáÝëÙ", "Crveno", "Punane", + "Rød", }, { "Green", "Grün", @@ -4112,6 +4314,7 @@ const tI18nPhrase Phrases[] = { "·ÕÛñÝëÙ", "Zeleno", "Roheline", + "Grøn", }, { "Yellow", "Gelb", @@ -4132,6 +4335,7 @@ const tI18nPhrase Phrases[] = { "¶ñÛâëÙ", "®uto", "Kollane", + "Gul", }, { "Blue", "Blau", @@ -4152,6 +4356,7 @@ const tI18nPhrase Phrases[] = { "ÁØÝØÙ", "Plavo", "Sinine", + "Blå", }, { "Play", "Wiedergabe", @@ -4172,6 +4377,7 @@ const tI18nPhrase Phrases[] = { "²ÞáßàÞØ×ÒÕÔÕÝØÕ", "Start", "Start", + "Afspil", }, { "Pause", "Pause", @@ -4192,6 +4398,7 @@ const tI18nPhrase Phrases[] = { "¿Ðã×Ð", "Pauza", "Paus", + "Pause", }, { "Stop", "Stop", @@ -4212,6 +4419,7 @@ const tI18nPhrase Phrases[] = { "ÁâÞß", "Stop", "Stopp", + "Stop", }, { "Record", "Aufnehmen", @@ -4232,6 +4440,7 @@ const tI18nPhrase Phrases[] = { "·ÐßØáì", "Snimaj", "Salvestamine", + "Optag", }, { "FastFwd", "Vorlauf", @@ -4252,6 +4461,7 @@ const tI18nPhrase Phrases[] = { "²ßÕàñÔ", "Naprijed", "Edasikerimine", + "Spol fremad", }, { "FastRew", "Rücklauf", @@ -4272,6 +4482,7 @@ const tI18nPhrase Phrases[] = { "½Ð×ÐÔ", "Nazad", "Tagasikerimine", + "Spol tilbage", }, { "Power", "Ausschalten", @@ -4292,6 +4503,7 @@ const tI18nPhrase Phrases[] = { "²ëÚÛîçØâì", "Iskljuèi", "Toide", + "Sluk", }, { "Channel+", "Kanal+", @@ -4312,6 +4524,7 @@ const tI18nPhrase Phrases[] = { "ºÐÝÐÛ +", "Program +", "Kanal+", + "Kanal+", }, { "Channel-", "Kanal-", @@ -4332,6 +4545,7 @@ const tI18nPhrase Phrases[] = { "ºÐÝÐÛ -", "Program -", "Kanal-", + "Kanal-", }, { "Volume+", "Lautstärke+", @@ -4352,6 +4566,7 @@ const tI18nPhrase Phrases[] = { "³àÞÜÚÞáâì +", "Glasnije", // hrv "Glasnocca +" "Helitugevus+", + "Lydstyrke+", }, { "Volume-", "Lautstärke-", @@ -4372,6 +4587,7 @@ const tI18nPhrase Phrases[] = { "³àÞÜÚÞáâì -", "Ti¹e", // hrv Glasnocca -" "Helitugevus-", + "Lydstyrke-", }, { "Mute", "Stumm", @@ -4392,6 +4608,7 @@ const tI18nPhrase Phrases[] = { "²ëÚÛîçØâì ×ÒãÚ", "Bez zvuka", "Hääletu", + "Sluk lyd", }, // Miscellaneous: { "yes", @@ -4413,6 +4630,7 @@ const tI18nPhrase Phrases[] = { "ÔÐ", "da", "jah", + "ja", }, { "no", "nein", @@ -4433,6 +4651,7 @@ const tI18nPhrase Phrases[] = { "ÝÕâ", "ne", "ei", + "nej", }, { "off", "aus", @@ -4453,6 +4672,7 @@ const tI18nPhrase Phrases[] = { "ÒëÚÛ", "ugasi", "välja", + "fra", }, { "none", "keine", @@ -4473,6 +4693,7 @@ const tI18nPhrase Phrases[] = { "ÝØçÕÓÞ", "nijedan", "tühi", + "ingen", }, { "auto", "auto", @@ -4493,6 +4714,7 @@ const tI18nPhrase Phrases[] = { "ÐÒâÞ", "automatski", "automaatne", + "automatisk", }, { "top", "oben", @@ -4513,6 +4735,7 @@ const tI18nPhrase Phrases[] = { "áÒÕàåã", "gore", "üleval", + "top", }, { "bottom", "unten", @@ -4533,6 +4756,7 @@ const tI18nPhrase Phrases[] = { "áÝØ×ã", "dolje", "all", + "bund", }, { "Disk", "Disk", @@ -4553,6 +4777,7 @@ const tI18nPhrase Phrases[] = { "´ØáÚ", "Disk", "Ketas", + "Disk", }, { "free", "frei", @@ -4573,6 +4798,7 @@ const tI18nPhrase Phrases[] = { "áÒÞÑÞÔÝÞ", "slobodno", "vaba", + "fri", }, { "Jump: ", // note the trailing blank "Springen: ", @@ -4593,6 +4819,7 @@ const tI18nPhrase Phrases[] = { "¿ÕàÕÙâØ: ", "Skoèi: ", "Hüpe: ", + "Hop: ", }, { "Volume ", // note the trailing blank "Lautstärke ", @@ -4613,6 +4840,7 @@ const tI18nPhrase Phrases[] = { "³àÞÜÚÞáâì ", "Glasnoæa ", "Helitugevus ", + "Lydstyrke ", }, { " Stop replaying", // note the leading blank! " Wiedergabe beenden", @@ -4633,6 +4861,7 @@ const tI18nPhrase Phrases[] = { " ¿àÕÚàÐâØâì ÒÞáßàÞØ×ÒÕÔÕÝØÕ", " Prekini reprodukciju", " Lõpeta kordus", + " Stop afspilning", }, { " Stop recording ", // note the leading and trailing blanks! " Aufzeichnung beenden ", @@ -4653,6 +4882,7 @@ const tI18nPhrase Phrases[] = { " ¿àÕÚàÐâØâì ×ÐßØáì ", " Prekini snimanje ", " Lõpeta salvestamine ", + " Stop optagelse ", }, { " Cancel editing", // note the leading blank! " Schneiden abbrechen", @@ -4673,6 +4903,7 @@ const tI18nPhrase Phrases[] = { " ¿àÕàÒÐâì ÜÞÝâÐÖ ×ÐßØáØ", " Prekini ureðivanje", " Katkesta monteerimine", + " Afbryd redigering", }, { "Switching primary DVB...", "Primäres Interface wird umgeschaltet...", @@ -4693,6 +4924,7 @@ const tI18nPhrase Phrases[] = { "ÁÜÕÝÐ ÞáÝÞÒÝÞÓÞ DVB-ãáâàÞÙáâÒÐ...", "Preklapanje primarnog DVB ureðaja...", "Esmase DVB seadme ümberlülitus...", + "Skifter primær DVB enhed...", }, { "Up/Dn for new location - OK to move", "Auf/Ab für neue Position - dann OK", @@ -4713,6 +4945,7 @@ const tI18nPhrase Phrases[] = { "½ÐÖØÜÐÙâÕ \"²ÒÕàå\"/\"²ÝØ×\" ÔÛï ÒëÑÞàÐ ßÞ×ØæØØ, Ð ×ÐâÕÜ \"OK\"", "Gore/Dolje na novu poziciju - zatim OK", "'Üles/Alla' uus asukoht - 'OK' kinnitus", + "Op/Ned for ny placering - OK for at flytte", }, { "Editing process started", "Schnitt gestartet", @@ -4733,6 +4966,7 @@ const tI18nPhrase Phrases[] = { "½ÐçÐâ ÜÞÝâÐÖ ×ÐßØáØ", "Rezanje je zapoèeto", "Redigeerimine algas", + "Redigeringsproces startet", }, { "Editing process finished", "Schnitt beendet", @@ -4753,6 +4987,7 @@ const tI18nPhrase Phrases[] = { "¼ÞÝâÐÖ ÞÚÞÝçÕÝ", "Rezanje zavr¹eno", "Redigeerimine on lõpetatud", + "Redigeringsproces afsluttet", }, { "Editing process failed!", "Schnitt gescheitert!", @@ -4773,6 +5008,7 @@ const tI18nPhrase Phrases[] = { "¾èØÑÚÐ ÒÞ ÒàÕÜï ÜÞÝâÐÖÐ ×ÐßØáØ!", "Rezanje neuspje¹no!", "Redigeerimine ebaõnnestus", + "Redigeringsproces fejlede!", }, { "scanning recordings...", "Aufzeichnungen werden durchsucht...", @@ -4793,6 +5029,7 @@ const tI18nPhrase Phrases[] = { "ÁÚÐÝØàÞÒÐÝØÕ ×ÐßØáÕÙ...", "pretra¾ivanje snimljenog...", "salvestuste skaneerimine...", + "skanner optagelser...", }, { "Pausing live video...", "Live-Signal wird angehalten...", @@ -4813,6 +5050,7 @@ const tI18nPhrase Phrases[] = { "ÀÕÖØÜ ÞâÛÞÖÕÝÝÞÓÞ ßàÞáÜÞâàÐ...", "Zaustavljanje ¾ivog signala...", "Saate edastamise peatamine...", + "Pausere live udsendelse...", }, { "This plugin has no setup parameters!", "Dieses Plugin hat keine Setup-Parameter!", @@ -4833,6 +5071,7 @@ const tI18nPhrase Phrases[] = { "¼ÞÔãÛì ÝÕ ØÜÕÕâ ßÐàÐÜÕâàÞÒ ÝÐáâàÞÙÚØ!", "Ovaj dodatak (Plugin) nema parametara!", "Sellel laienudusmoodulil ei ole seadeid!", + "Denne plugin har ingen parametre", }, { "Classic VDR", "Klassischer VDR", @@ -4853,6 +5092,7 @@ const tI18nPhrase Phrases[] = { "ºÛÐááØçÕáÚØÙ", "Klasiècni VDR", "Klassikaline VDR", + "Klassisk VDR", }, { "ST:TNG Panels", "ST:TNG Konsolen", @@ -4873,6 +5113,7 @@ const tI18nPhrase Phrases[] = { "ST:TNG ßÐÝÕÛØ", "ST:TNG Konzole", "ST:TNG konsool", + "ST:TNG konsol", }, { NULL } }; @@ -4982,6 +5223,12 @@ int I18nLanguageIndex(const char *Code) const char *I18nNormalizeLanguageCode(const char *Code) { + if (Code[0] && !isalnum(Code[0]) || Code[1] && !isalnum(Code[1]) || Code[2] && !isalnum(Code[2])) { + // ISO 639 language codes are defined as alphabetical characters, but digits are apparently + // also used, for instance for "2ch" + //dsyslog("invalid language code: '%s'", Code); + return "???"; + } int n = I18nLanguageIndex(Code); return n >= 0 ? I18nLanguageCode(n) : Code; } @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: i18n.h 1.13 2004/10/16 11:50:41 kls Exp $ + * $Id: i18n.h 1.14 2004/11/02 17:21:19 kls Exp $ */ #ifndef __I18N_H @@ -12,7 +12,7 @@ #include <stdio.h> -const int I18nNumLanguages = 19; +const int I18nNumLanguages = 20; typedef const char *tI18nPhrase[I18nNumLanguages]; diff --git a/menuitems.c b/menuitems.c index ee92dc9..dea2029 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.19 2004/06/19 09:45:45 kls Exp $ + * $Id: menuitems.c 1.20 2004/11/14 16:16:21 kls Exp $ */ #include "menuitems.h" @@ -495,7 +495,7 @@ eOSState cMenuEditChanItem::ProcessKey(eKeys Key) } } break; - default : return cMenuEditIntItem::ProcessKey(Key); + default: return cMenuEditIntItem::ProcessKey(Key); } return osContinue; } @@ -606,7 +606,33 @@ eOSState cMenuEditDayItem::ProcessKey(eKeys Key) return cMenuEditIntItem::ProcessKey(Key); Set(); break; - default : return cMenuEditIntItem::ProcessKey(Key); + default: { + if (d >= 0) { + if (k1 <= Key && Key <= k7) { + int v = *value ^ (1 << (Key - k1)); + if ((v & 0xFF) != 0) { + *value = v; // can't let this become all 0 + Set(); + } + break; + } + } + int v = *value; + eOSState result = cMenuEditIntItem::ProcessKey(Key); + if (result == osContinue && Key == k0) { + if (d >= 0) { + *value = cTimer::GetMDay(time(NULL)); + d = -1; + Set(); + } + else if (*value == 0 || *value == v) { + d = cTimer::GetWDay(time(NULL)); + *value = days[d]; + Set(); + } + } + return result; + } } return osContinue; } @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: skins.c 1.1 2004/05/15 12:34:38 kls Exp $ + * $Id: skins.c 1.3 2004/11/07 09:46:46 kls Exp $ */ #include "skins.h" @@ -183,13 +183,17 @@ eKeys cSkins::Message(eMessageType Type, const char *s, int Seconds) if (displayMessage) { delete displayMessage; displayMessage = NULL; + cStatus::MsgOsdClear(); } - else + else { cSkinDisplay::Current()->SetMessage(Type, NULL); + cStatus::MsgOsdStatusMessage(NULL); + } } else if (!s && displayMessage) { delete displayMessage; displayMessage = NULL; + cStatus::MsgOsdClear(); } return k; } @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: timers.c 1.16 2004/10/31 16:41:30 kls Exp $ + * $Id: timers.c 1.17 2004/11/14 16:02:42 kls Exp $ */ #include "timers.h" @@ -256,13 +256,13 @@ bool cTimer::IsSingleEvent(void) const return (day & 0x80000000) == 0; } -int cTimer::GetMDay(time_t t) const +int cTimer::GetMDay(time_t t) { struct tm tm_r; return localtime_r(&t, &tm_r)->tm_mday; } -int cTimer::GetWDay(time_t t) const +int cTimer::GetWDay(time_t t) { struct tm tm_r; int weekday = localtime_r(&t, &tm_r)->tm_wday; @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: timers.h 1.10 2004/10/31 16:41:17 kls Exp $ + * $Id: timers.h 1.11 2004/11/14 16:02:28 kls Exp $ */ #ifndef __TIMERS_H @@ -64,8 +64,8 @@ public: bool Parse(const char *s); bool Save(FILE *f); bool IsSingleEvent(void) const; - int GetMDay(time_t t) const; - int GetWDay(time_t t) const; + static int GetMDay(time_t t); + static int GetWDay(time_t t); bool DayMatches(time_t t) const; static time_t IncDay(time_t t, int Days); static time_t SetTime(time_t t, int SecondsFromMidnight); @@ -22,7 +22,7 @@ * * The project's page is at http://www.cadsoft.de/vdr * - * $Id: vdr.c 1.192 2004/10/31 10:17:23 kls Exp $ + * $Id: vdr.c 1.193 2004/11/06 10:30:30 kls Exp $ */ #include <getopt.h> @@ -87,6 +87,17 @@ static void Watchdog(int signum) int main(int argc, char *argv[]) { +#ifdef _CS_GNU_LIBPTHREAD_VERSION + // Check for NPTL and exit if present - VDR apparently doesn't run well with NPTL: + char LibPthreadVersion[128]; + if (confstr(_CS_GNU_LIBPTHREAD_VERSION, LibPthreadVersion, sizeof(LibPthreadVersion)) > 0) { + if (strstr(LibPthreadVersion, "NPTL")) { + fprintf(stderr, "vdr: please turn off NPTL by setting 'export LD_ASSUME_KERNEL=2.4.1' before starting VDR\n"); + return 2; + } + } +#endif + // Check for UTF-8 and exit if present - asprintf() will fail if it encounters 8 bit ASCII codes char *LangEnv; if ((LangEnv = getenv("LANG")) != NULL && strcasestr(LangEnv, "utf") || |