mirror of
https://github.com/vdr-projects/vdr.git
synced 2025-03-01 10:50:46 +00:00
Version 1.5.7
- All logging now goes to LOG_ERR, because some systems split error, info and debug messages into separate files, which repeatedly caused extra efforts to find out when incomplete log excerpts were attached to problem reports in the past. - Updated the Estonian OSD texts (thanks to Arthur Konovalov). - Fixed a problem with characters >0x7F in the modified version of skipspace() (thanks to Marco Schlüßler). - Fixed a bug I introduced when simplifying the original patch for detecting Premiere NVOD channel links (crash reported by Malte Schröder). - Internationalization is now done with 'gettext' (following a suggestion by Lucian Muresan). Plugin authors may want to use the Perl script 'i18n-to-gettext.pl' to convert their internationalized texts to the gettext format (see the instructions inside that script file). The function cPlugin::RegisterI18n() is still present for compatibility, but doesn't have any more functionality. So plugins that don't convert their texts to the gettext format will only present English texts. See PLUGINS.html, section "Internationalization", for instructions on how to make strings in arrays translatable. See README.i18n for information on how to create new or maintain existing translations. - The three letter language codes and their aliases are stored in i18n.c, and each translation file only contains one of them to link that language name to the code. - The 'newplugin' script has been extended to generate the Makefile section for i18n support. - The parameter OSDLanguage in 'setup.conf' is now a string and holds the locale code of the selected OSD language (e.g. en_US). If Setup.OSDLanguage is not set to a particular locale that is found in VDR's locale directory, the locale as defined in the system environment is used by default. - The list of tracks given in cStatus::SetAudioTrack() is now NULL terminated, so that plugins can actually use all the strings in the list, not just the one pointed to by Index (thanks to Alexander Rieger). - Fixed handling kLeft in the calls to cStatus::MsgOsdTextItem() (thanks to Alexander Rieger). - Added the "...or (at your option) any later version" phrase to the license information of all plugins, and also the 'newplugin' script (suggested by Ville Skyttä). Plugin authors may want to consider doing the same. - Fixed the link to the GPL2 at http://www.gnu.org in vdr.c (thanks to Ville Skyttä). - cBitmap::SetXpm() now checks whether the given Xpm pointer is not NULL, to avoid a crash with files that only contain "/* XPM */" (suggested by Andreas Mair). - Added a debug error message to cReceiver::~cReceiver() in case it is still attached to a device (thanks to Reinhard Nissl).
This commit is contained in:
parent
8849308cf9
commit
4c65b525dc
15
CONTRIBUTORS
15
CONTRIBUTORS
@ -1127,6 +1127,8 @@ Reinhard Nissl <rnissl@gmx.de>
|
||||
with open file handles when starting background commands
|
||||
for fixing handling error status in cDvbTuner::GetFrontendStatus()
|
||||
for fixing a busy loop in fast forward if the next video data file is missing
|
||||
for adding a debug error message to cReceiver::~cReceiver() in case it is still
|
||||
attached to a device
|
||||
|
||||
Richard Robson <richard_robson@beeb.net>
|
||||
for reporting freezing replay if a timer starts while in Transfer Mode from the
|
||||
@ -1405,6 +1407,7 @@ Marco Schl
|
||||
for fixing handling ChannelUp/Down keys if there is currently a replay running
|
||||
for fixing a buffer overflow in initializing the system character table
|
||||
for reporting a missing 'P' in vdr.c's SHUTDOWNCANCELROMPT macro
|
||||
for fixing a problem with characters >0x7F in the modified version of skipspace()
|
||||
|
||||
Jürgen Schmitz <j.schmitz@web.de>
|
||||
for reporting a bug in displaying the current channel when switching via the SVDRP
|
||||
@ -1519,6 +1522,7 @@ Lucian Muresan <lucianm@users.sourceforge.net>
|
||||
for making VDR actually use the iso8859-15 fonts
|
||||
for suggesting to make the function ExchangeChars()
|
||||
for reporting duplicate texts in i18n.c
|
||||
for suggesting to use 'gettext' for internationalization
|
||||
|
||||
Mattias Grönlund <Mattias@Gronlund.net>
|
||||
for pointing out a missing cleanup at program exit in case there is a problem
|
||||
@ -1676,6 +1680,9 @@ Ville Skytt
|
||||
for adapting cThread::ThreadId() to recent kernels
|
||||
for some improvements to the man pages
|
||||
for fixing some spelling errors in 'newplugin'
|
||||
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
|
||||
|
||||
Steffen Beyer <cpunk@reactor.de>
|
||||
for fixing setting the colored button help after deleting a recording in case the next
|
||||
@ -1793,6 +1800,8 @@ Alexander Rieger <Alexander.Rieger@inka.de>
|
||||
for reporting that the cTimer::operator=() messes up the cListObject's pointers
|
||||
for reporting a memory leak in the cTimer::operator=() when using the 'aux' string
|
||||
for fixing cTimer::operator=() in case a cTimer variable is assigned to itself
|
||||
for making the list of tracks given in cStatus::SetAudioTrack() NULL terminated
|
||||
for fixing handling kLeft in the calls to cStatus::MsgOsdTextItem()
|
||||
|
||||
Philip Prindeville <philipp_subx@redfish-solutions.com>
|
||||
for updates to 'sources.conf'
|
||||
@ -1919,11 +1928,13 @@ Franz Gangkofer <Franz.Gangkofer@cadsoft.de>
|
||||
|
||||
Malte Schröder <MalteSch@gmx.de>
|
||||
for reporting a crash after executing the SVDRP command CLRE
|
||||
for reporting a crash with the code for detecting Premiere NVOD channel links
|
||||
|
||||
Markus Hahn <mhahn@reel-multimedia.com>
|
||||
for suggesting to only start recordings if there is at least 300MB free disk space
|
||||
for suggesting that the "Back" key should restore the original string when pressed
|
||||
while editing a string item
|
||||
for fixing detection of Premiere NVOD channel links
|
||||
|
||||
Jaroslaw Swierczynski <swiergot@gmail.com>
|
||||
for updating the Polish OSD texts and the fontosd-iso8859-2.c file
|
||||
@ -2118,3 +2129,7 @@ Patrice Staudt <staudt@engsystem.net>
|
||||
Tobias Bratfisch <tobias@reel-multimedia.com>
|
||||
for improving numdigits(), isnumber() and strreplace()
|
||||
for suggesting to make skipspace() an inline function
|
||||
|
||||
Andreas Mair <andreas@vdr-developer.org>
|
||||
for suggesting to make cBitmap::SetXpm() checks whether the given Xpm pointer is
|
||||
not NULL
|
||||
|
49
HISTORY
49
HISTORY
@ -5293,8 +5293,55 @@ Video Disk Recorder Revision History
|
||||
- Made skipspace() an inline function (suggested by Tobias Bratfisch) and changed
|
||||
it to handle the most common case of 'no leading space' very fast, and avoid
|
||||
calling isspace(), which made the whole function a lot faster.
|
||||
- Fixed detection of Premiere NVOD channel links (thanks to anonymous).
|
||||
- Fixed detection of Premiere NVOD channel links (thanks to Markus Hahn).
|
||||
- Added a table of the used trick speed values to the description of
|
||||
cDevice::TrickSpeed() (suggested by Martin Dauskardt).
|
||||
- Added a missing 'P' to vdr.c's SHUTDOWNCANCELROMPT macro (reported by Marco
|
||||
Schlüßler).
|
||||
|
||||
2007-08-12: Version 1.5.7
|
||||
|
||||
- All logging now goes to LOG_ERR, because some systems split error, info and
|
||||
debug messages into separate files, which repeatedly caused extra efforts to
|
||||
find out when incomplete log excerpts were attached to problem reports in
|
||||
the past.
|
||||
- Updated the Estonian OSD texts (thanks to Arthur Konovalov).
|
||||
- Fixed a problem with characters >0x7F in the modified version of skipspace()
|
||||
(thanks to Marco Schlüßler).
|
||||
- Fixed a bug I introduced when simplifying the original patch for detecting
|
||||
Premiere NVOD channel links (crash reported by Malte Schröder).
|
||||
- Internationalization is now done with 'gettext' (following a suggestion by
|
||||
Lucian Muresan). Plugin authors may want to use the Perl script
|
||||
'i18n-to-gettext.pl' to convert their internationalized texts to the gettext
|
||||
format (see the instructions inside that script file). The function
|
||||
cPlugin::RegisterI18n() is still present for compatibility, but doesn't
|
||||
have any more functionality. So plugins that don't convert their texts to
|
||||
the gettext format will only present English texts.
|
||||
See PLUGINS.html, section "Internationalization", for instructions on how
|
||||
to make strings in arrays translatable.
|
||||
See README.i18n for information on how to create new or maintain existing
|
||||
translations.
|
||||
- The three letter language codes and their aliases are stored in i18n.c, and
|
||||
each translation file only contains one of them to link that language name
|
||||
to the code.
|
||||
- The 'newplugin' script has been extended to generate the Makefile section
|
||||
for i18n support.
|
||||
- The parameter OSDLanguage in 'setup.conf' is now a string and holds the locale
|
||||
code of the selected OSD language (e.g. en_US). If Setup.OSDLanguage is not
|
||||
set to a particular locale that is found in VDR's locale directory, the
|
||||
locale as defined in the system environment is used by default.
|
||||
- The list of tracks given in cStatus::SetAudioTrack() is now NULL terminated,
|
||||
so that plugins can actually use all the strings in the list, not just the
|
||||
one pointed to by Index (thanks to Alexander Rieger).
|
||||
- Fixed handling kLeft in the calls to cStatus::MsgOsdTextItem() (thanks to
|
||||
Alexander Rieger).
|
||||
- Added the "...or (at your option) any later version" phrase to the license
|
||||
information of all plugins, and also the 'newplugin' script (suggested by
|
||||
Ville Skyttä). Plugin authors may want to consider doing the same.
|
||||
- Fixed the link to the GPL2 at http://www.gnu.org in vdr.c (thanks to Ville
|
||||
Skyttä).
|
||||
- cBitmap::SetXpm() now checks whether the given Xpm pointer is not NULL, to
|
||||
avoid a crash with files that only contain "/* XPM */" (suggested by Andreas
|
||||
Mair).
|
||||
- Added a debug error message to cReceiver::~cReceiver() in case it is still
|
||||
attached to a device (thanks to Reinhard Nissl).
|
||||
|
1
INSTALL
1
INSTALL
@ -24,6 +24,7 @@ You will also need to install the following libraries, as well as their
|
||||
|
||||
fontconfig
|
||||
freetype2
|
||||
gettext
|
||||
libcap
|
||||
libjpeg
|
||||
|
||||
|
@ -6,7 +6,7 @@
|
||||
# See the main source file 'vdr.c' for copyright information and
|
||||
# how to reach the author.
|
||||
#
|
||||
# $Id: Make.config.template 1.10 2006/06/15 09:15:25 kls Exp $
|
||||
# $Id: Make.config.template 1.12 2007/08/12 12:04:17 kls Exp $
|
||||
|
||||
### The C compiler and options:
|
||||
|
||||
@ -26,6 +26,7 @@ endif
|
||||
#DVBDIR = /usr/src/v4l-dvb/linux
|
||||
MANDIR = /usr/local/man
|
||||
BINDIR = /usr/local/bin
|
||||
LOCDIR = /usr/share/vdr/locale # set to ./locale to run VDR from within its source directory
|
||||
|
||||
PLUGINDIR= ./PLUGINS
|
||||
PLUGINLIBDIR= $(PLUGINDIR)/lib
|
||||
|
36
Makefile
36
Makefile
@ -4,7 +4,7 @@
|
||||
# See the main source file 'vdr.c' for copyright information and
|
||||
# how to reach the author.
|
||||
#
|
||||
# $Id: Makefile 1.101 2007/06/16 10:48:59 kls Exp $
|
||||
# $Id: Makefile 1.102 2007/08/11 12:26:12 kls Exp $
|
||||
|
||||
.DELETE_ON_ERROR:
|
||||
|
||||
@ -17,6 +17,7 @@ CXXFLAGS ?= -g -O2 -Wall -Woverloaded-virtual
|
||||
LSIDIR = ./libsi
|
||||
MANDIR = /usr/local/man
|
||||
BINDIR = /usr/local/bin
|
||||
LOCDIR = /usr/share/vdr/locale
|
||||
LIBS = -ljpeg -lpthread -ldl -lcap -lfreetype -lfontconfig
|
||||
INCLUDES = -I/usr/include/freetype2
|
||||
|
||||
@ -58,6 +59,7 @@ DEFINES += -D_GNU_SOURCE
|
||||
|
||||
DEFINES += -DVIDEODIR=\"$(VIDEODIR)\"
|
||||
DEFINES += -DPLUGINDIR=\"$(PLUGINLIBDIR)\"
|
||||
DEFINES += -DLOCDIR=\"$(LOCDIR)\"
|
||||
|
||||
# The version numbers of VDR and the plugin API (taken from VDR's "config.h"):
|
||||
|
||||
@ -69,7 +71,7 @@ ifdef VFAT
|
||||
DEFINES += -DVFAT
|
||||
endif
|
||||
|
||||
all: vdr
|
||||
all: vdr i18n
|
||||
|
||||
# Implicit rules:
|
||||
|
||||
@ -95,6 +97,35 @@ vdr: $(OBJS) $(SILIB)
|
||||
$(SILIB):
|
||||
$(MAKE) -C $(LSIDIR) all
|
||||
|
||||
# Internationalization (I18N):
|
||||
|
||||
PODIR = po
|
||||
LOCALEDIR = locale
|
||||
I18Npo = $(wildcard $(PODIR)/*.po)
|
||||
I18Nmo = $(addsuffix .mo, $(foreach file, $(I18Npo), $(basename $(file))))
|
||||
I18Ndirs = $(notdir $(foreach file, $(I18Npo), $(basename $(file))))
|
||||
I18Npot = $(PODIR)/vdr.pot
|
||||
|
||||
%.mo: %.po
|
||||
msgfmt -c -o $@ $<
|
||||
|
||||
$(I18Npot): $(wildcard *.c)
|
||||
xgettext -C -cTRANSLATORS --no-wrap -F -k -ktr -ktrNOOP --msgid-bugs-address='<vdr-bugs@cadsoft.de>' -o $@ $(wildcard *.c)
|
||||
|
||||
$(I18Npo): $(I18Npot)
|
||||
msgmerge -U --no-wrap -F --backup=none -q $@ $<
|
||||
|
||||
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
|
||||
|
||||
install-i18n:
|
||||
@mkdir -p $(LOCDIR)
|
||||
@(cd $(LOCALEDIR); cp -r --parents * $(LOCDIR))
|
||||
|
||||
# The 'include' directory (for plugins):
|
||||
|
||||
include-dir:
|
||||
@ -169,6 +200,7 @@ srcdoc:
|
||||
clean:
|
||||
$(MAKE) -C $(LSIDIR) clean
|
||||
-rm -f $(OBJS) $(DEPFILE) vdr core* *~
|
||||
-rm -rf $(LOCALEDIR) $(PODIR)/*.mo $(PODIR)/*.pot
|
||||
-rm -rf include
|
||||
-rm -rf srcdoc
|
||||
CLEAN: clean
|
||||
|
102
PLUGINS.html
102
PLUGINS.html
@ -14,15 +14,18 @@ Copyright © 2006 Klaus Schmidinger<br>
|
||||
<a href="http://www.cadsoft.de/vdr">www.cadsoft.de/vdr</a>
|
||||
</center>
|
||||
<p>
|
||||
<!--X1.5.0--><table width=100%><tr><td bgcolor=#00AA00> </td><td width=100%>
|
||||
<!--X1.5.0--><table width=100%><tr><td bgcolor=#0000AA> </td><td width=100%>
|
||||
Important modifications introduced in version 1.5.0 are marked like this.
|
||||
<!--X1.5.0--></td></tr></table>
|
||||
<!--X1.5.1--><table width=100%><tr><td bgcolor=#AA0000> </td><td width=100%>
|
||||
<!--X1.5.1--><table width=100%><tr><td bgcolor=#00AA00> </td><td width=100%>
|
||||
Important modifications introduced in version 1.5.1 are marked like this.
|
||||
<!--X1.5.1--></td></tr></table>
|
||||
<!--X1.5.3--><table width=100%><tr><td bgcolor=#FF0000> </td><td width=100%>
|
||||
<!--X1.5.3--><table width=100%><tr><td bgcolor=#AA0000> </td><td width=100%>
|
||||
Important modifications introduced in version 1.5.3 are marked like this.
|
||||
<!--X1.5.3--></td></tr></table>
|
||||
<!--X1.5.7--><table width=100%><tr><td bgcolor=#FF0000> </td><td width=100%>
|
||||
Important modifications introduced in version 1.5.7 are marked like this.
|
||||
<!--X1.5.7--></td></tr></table>
|
||||
<p>
|
||||
VDR provides an easy to use plugin interface that allows additional functionality
|
||||
to be added to the program by implementing a dynamically loadable library file.
|
||||
@ -61,7 +64,7 @@ structures and allows it to hook itself into specific areas to perform special a
|
||||
<li><a href="#Housekeeping">Housekeeping</a>
|
||||
<li><a href="#Main thread hook">Main thread hook</a>
|
||||
<li><a href="#Activity">Activity</a>
|
||||
<!--X1.5.1--><table width=100%><tr><td bgcolor=#AA0000> </td><td width=100%>
|
||||
<!--X1.5.1--><table width=100%><tr><td bgcolor=#00AA00> </td><td width=100%>
|
||||
<li><a href="#Wakeup">Wakeup</a>
|
||||
<!--X1.5.1--></td></tr></table>
|
||||
<li><a href="#Setup parameters">Setup parameters</a>
|
||||
@ -85,7 +88,7 @@ structures and allows it to hook itself into specific areas to perform special a
|
||||
<li><a href="#Devices">Devices</a>
|
||||
<li><a href="#Audio">Audio</a>
|
||||
<li><a href="#Remote Control">Remote Control</a>
|
||||
<!--X1.5.0--><table width=100%><tr><td bgcolor=#00AA00> </td><td width=100%>
|
||||
<!--X1.5.0--><table width=100%><tr><td bgcolor=#0000AA> </td><td width=100%>
|
||||
<li><a href="#Conditional Access">Conditional Access</a>
|
||||
<!--X1.5.0--></td></tr></table>
|
||||
</ul>
|
||||
@ -684,7 +687,7 @@ be queried, and further prompts may show up. If all prompts have been confirmed,
|
||||
the shutdown will take place. As soon as one prompt is not confirmed, no
|
||||
further plugins will be queried and no shutdown will be done.
|
||||
|
||||
<!--X1.5.1--><table width=100%><tr><td bgcolor=#AA0000> </td><td width=100%>
|
||||
<!--X1.5.1--><table width=100%><tr><td bgcolor=#00AA00> </td><td width=100%>
|
||||
<a name="Wakeup"><hr><h2>Wakeup</h2>
|
||||
|
||||
<center><i><b>Wake me up before you go-go</b></i></center><p>
|
||||
@ -909,72 +912,38 @@ const char *MyConfigDir = cPlugin::ConfigDirectory();
|
||||
|
||||
<center><i><b>Welcome to Babylon!</b></i></center><p>
|
||||
|
||||
If a plugin displays texts to the user, it should implement internationalized
|
||||
versions of these texts and call the function
|
||||
|
||||
<p><table><tr><td bgcolor=#F0F0F0><pre>
|
||||
void RegisterI18n(const tI18nPhrase * const Phrases);
|
||||
</pre></td></tr></table><p>
|
||||
|
||||
to register them with VDR's internationalization mechanism.
|
||||
<p>
|
||||
The call to this function must be done in the <a href="#Getting started"><tt>Initialize()</tt></a>
|
||||
or <a href="#Getting started"><tt>Start()</tt></a> function of the plugin:
|
||||
|
||||
<p><table><tr><td bgcolor=#F0F0F0><pre>
|
||||
const tI18nPhrase Phrases[] = {
|
||||
{ "Hello world!",
|
||||
"Hallo Welt!",
|
||||
"",// TODO
|
||||
"",// TODO
|
||||
"",// TODO
|
||||
"",// TODO
|
||||
"",// TODO
|
||||
"",// TODO
|
||||
"",// TODO
|
||||
"",// TODO
|
||||
"",// TODO
|
||||
"",// TODO
|
||||
"",// TODO
|
||||
"",// TODO
|
||||
"",// TODO
|
||||
"",// TODO
|
||||
},
|
||||
{ NULL }
|
||||
};
|
||||
|
||||
void cPluginHello::Start(void)
|
||||
{
|
||||
RegisterI18n(Phrases);
|
||||
}
|
||||
</pre></td></tr></table><p>
|
||||
|
||||
Each entry of type <tt>tI18nPhrase</tt> must have exactly as many members as defined
|
||||
by the constant <tt>I18nNumLanguages</tt> in the file <tt>VDR/i18n.h</tt>, and the
|
||||
sequence of the various languages must be the same as defined in <tt>VDR/i18n.c</tt>.<br>
|
||||
<b>It is very important that the array is terminated with a <tt>{ NULL }</tt>
|
||||
entry!</b>.
|
||||
<p>
|
||||
Usually you won't be able to fill in all the different translations by yourself, so
|
||||
you may want to contact the maintainers of these languages (listed in the file
|
||||
<tt>VDR/i18n.c</tt>) and ask them to provide the additional translations.
|
||||
<p>
|
||||
The actual runtime selection of the texts corresponding to the selected language
|
||||
is done by wrapping each internationalized text with the <tt>tr()</tt> macro:
|
||||
<!--X1.5.7--><table width=100%><tr><td bgcolor=#FF0000> </td><td width=100%>
|
||||
If a plugin displays texts to the user, it should prepare for internationalization
|
||||
of these texts. All that is necessary for this is to mark every text that is
|
||||
presented to the user as translatable, as in
|
||||
|
||||
<p><table><tr><td bgcolor=#F0F0F0><pre>
|
||||
const char *s = tr("Hello world!");
|
||||
</pre></td></tr></table><p>
|
||||
|
||||
The text given here must be the first one defined in the related <i>Phrases</i>
|
||||
entry (which is the English version), and the returned pointer is either a translated
|
||||
version (if available) or the original string. In the latter case a message will be
|
||||
written to the log file, indicating that a translation is missing.
|
||||
Texts are first searched for in the <i>Phrases</i> registered for this plugin (if any)
|
||||
The text given here must be the English version, and the returned pointer is either
|
||||
a translated version (if available) or the original string.
|
||||
Texts are first searched for in the domain registered for this plugin (if any)
|
||||
and then in the global VDR texts. So a plugin can make use of texts defined by the
|
||||
core VDR code.
|
||||
<p>
|
||||
<!--X1.5.3--><table width=100%><tr><td bgcolor=#FF0000> </td><td width=100%>
|
||||
Sometimes texts are stored in an array, in which case they need to be marked
|
||||
differently, using the trNOOP() macro. The actual translation is then done
|
||||
when such a text is used, as in
|
||||
|
||||
<p><table><tr><td bgcolor=#F0F0F0><pre>
|
||||
const char *Texts = {
|
||||
trNOOP("First text"),
|
||||
trNOOP("Second text"),
|
||||
trNOOP("Third one")
|
||||
};
|
||||
|
||||
for (int i = 0; i < 3; i++)
|
||||
MyFunc(tr(Texts[i]));
|
||||
</pre></td></tr></table><p>
|
||||
|
||||
<p>
|
||||
<!--X1.5.3--><table width=100%><tr><td bgcolor=#AA0000> </td><td width=100%>
|
||||
The system VDR is running on may use a character encoding where a single character
|
||||
(or <i>symbol</i>) consists of more than one byte (UTF-8, as opposed to, for instance,
|
||||
ISO8859-1, where every character is represented by a single byte in memory).
|
||||
@ -986,6 +955,7 @@ and are defined in <tt>VDR/tools.h</tt>.
|
||||
Most of the time a plugin doesn't need to care about this, but when it comes to
|
||||
handling individual characters these functions may come in handy.
|
||||
<!--X1.5.3--></td></tr></table>
|
||||
<!--X1.5.7--></td></tr></table>
|
||||
|
||||
<a name="Custom services"><hr><h2>Custom services</h2>
|
||||
|
||||
@ -1635,7 +1605,7 @@ with the full required resolution. Only if this fails shall it use alternate
|
||||
areas. Drawing areas are always rectangular and may not overlap (but do not need
|
||||
to be adjacent).
|
||||
<p>
|
||||
<!--X1.5.3--><table width=100%><tr><td bgcolor=#FF0000> </td><td width=100%>
|
||||
<!--X1.5.3--><table width=100%><tr><td bgcolor=#AA0000> </td><td width=100%>
|
||||
Special consideration may have to be given to color usage if the OSD provides
|
||||
8bpp (256 colors). In that case, fonts may be drawn using <i>anti-aliasing</i>,
|
||||
which requires several blended color values between the foreground and background
|
||||
@ -2118,7 +2088,7 @@ Put(uint64 Code, bool Repeat = false, bool Release = false);
|
||||
|
||||
The other parameters have the same meaning as in the first version of this function.
|
||||
|
||||
<!--X1.5.0--><table width=100%><tr><td bgcolor=#00AA00> </td><td width=100%>
|
||||
<!--X1.5.0--><table width=100%><tr><td bgcolor=#0000AA> </td><td width=100%>
|
||||
<a name="Conditional Access"><hr><h2>Conditional Access</h2>
|
||||
|
||||
<center><i><b>Members only!</b></i></center><p>
|
||||
|
@ -49,3 +49,7 @@ VDR Plugin 'hello' Revision History
|
||||
2006-04-22: Version 0.1.1
|
||||
|
||||
- Updated the Finnish OSD texts (thanks to Rolf Ahrenberg).
|
||||
|
||||
2007-08-11: Version 0.2.0
|
||||
|
||||
- Switched to 'gettext' internationalization.
|
||||
|
@ -1,11 +1,13 @@
|
||||
#
|
||||
# Makefile for a Video Disk Recorder plugin
|
||||
#
|
||||
# $Id: Makefile 1.15 2006/09/09 12:38:35 kls Exp $
|
||||
# $Id: Makefile 1.16 2007/08/11 10:18:16 kls Exp $
|
||||
|
||||
# The official name of this plugin.
|
||||
# This name will be used in the '-P...' option of VDR to load the plugin.
|
||||
# By default the main source file also carries this name.
|
||||
# IMPORTANT: the presence of this macro is important for the Make.config
|
||||
# file. So it must be defined, even if it is not used here!
|
||||
#
|
||||
PLUGIN = hello
|
||||
|
||||
@ -45,25 +47,50 @@ DEFINES += -D_GNU_SOURCE -DPLUGIN_NAME_I18N='"$(PLUGIN)"'
|
||||
|
||||
### The object files (add further files here):
|
||||
|
||||
OBJS = $(PLUGIN).o i18n.o
|
||||
OBJS = $(PLUGIN).o
|
||||
|
||||
### Implicit rules:
|
||||
|
||||
%.o: %.c
|
||||
$(CXX) $(CXXFLAGS) -c $(DEFINES) $(INCLUDES) $<
|
||||
|
||||
# Dependencies:
|
||||
### Dependencies:
|
||||
|
||||
MAKEDEP = g++ -MM -MG
|
||||
MAKEDEP = $(CXX) -MM -MG
|
||||
DEPFILE = .dependencies
|
||||
$(DEPFILE): Makefile
|
||||
@$(MAKEDEP) $(DEFINES) $(INCLUDES) $(OBJS:%.o=%.c) > $@
|
||||
|
||||
-include $(DEPFILE)
|
||||
|
||||
### 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))))
|
||||
I18Npot = $(PODIR)/$(PLUGIN).pot
|
||||
|
||||
%.mo: %.po
|
||||
msgfmt -c -o $@ $<
|
||||
|
||||
$(I18Npot): $(wildcard *.c)
|
||||
xgettext -C -cTRANSLATORS --no-wrap -F -k -ktr -ktrNOOP --msgid-bugs-address='<vdr-bugs@cadsoft.de>' -o $@ $(wildcard *.c)
|
||||
|
||||
$(I18Npo): $(I18Npot)
|
||||
msgmerge -U --no-wrap -F --backup=none -q $@ $<
|
||||
|
||||
i18n: $(I18Nmo)
|
||||
@mkdir -p $(LOCALEDIR)
|
||||
for i in $(I18Ndirs); do\
|
||||
mkdir -p $(LOCALEDIR)/$$i/LC_MESSAGES;\
|
||||
cp $(PODIR)/$$i.mo $(LOCALEDIR)/$$i/LC_MESSAGES/$(PLUGIN).mo;\
|
||||
done
|
||||
|
||||
### Targets:
|
||||
|
||||
all: libvdr-$(PLUGIN).so
|
||||
all: libvdr-$(PLUGIN).so i18n
|
||||
|
||||
libvdr-$(PLUGIN).so: $(OBJS)
|
||||
$(CXX) $(CXXFLAGS) -shared $(OBJS) -o $@
|
||||
@ -78,4 +105,5 @@ dist: clean
|
||||
@echo Distribution package created as $(PACKAGE).tgz
|
||||
|
||||
clean:
|
||||
@-rm -f $(PODIR)/*.mo $(PODIR)/*.pot
|
||||
@-rm -f $(OBJS) $(DEPFILE) *.so *.tgz core* *~
|
||||
|
@ -6,6 +6,10 @@ Project's homepage: www.cadsoft.de/people/kls/vdr
|
||||
|
||||
Latest version available at: www.cadsoft.de/people/kls/vdr/software.htm
|
||||
|
||||
See the file COPYING for license information.
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
See the file COPYING for more information.
|
||||
|
||||
Description: This is a small demo of the VDR plugin interface.
|
||||
|
@ -3,18 +3,18 @@
|
||||
*
|
||||
* See the README file for copyright information and how to reach the author.
|
||||
*
|
||||
* $Id: hello.c 1.12 2006/04/22 09:31:52 kls Exp $
|
||||
* $Id: hello.c 1.13 2007/08/11 09:31:17 kls Exp $
|
||||
*/
|
||||
|
||||
#include <getopt.h>
|
||||
#include <stdlib.h>
|
||||
#include <vdr/i18n.h>
|
||||
#include <vdr/interface.h>
|
||||
#include <vdr/plugin.h>
|
||||
#include "i18n.h"
|
||||
|
||||
static const char *VERSION = "0.1.1";
|
||||
static const char *DESCRIPTION = "A friendly greeting";
|
||||
static const char *MAINMENUENTRY = "Hello";
|
||||
static const char *VERSION = "0.2.0";
|
||||
static const char *DESCRIPTION = trNOOP("A friendly greeting");
|
||||
static const char *MAINMENUENTRY = trNOOP("Hello");
|
||||
|
||||
class cPluginHello : public cPlugin {
|
||||
private:
|
||||
@ -115,7 +115,6 @@ bool cPluginHello::ProcessArgs(int argc, char *argv[])
|
||||
bool cPluginHello::Start(void)
|
||||
{
|
||||
// Start any background activities the plugin shall perform.
|
||||
RegisterI18n(Phrases);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -1,145 +0,0 @@
|
||||
/*
|
||||
* i18n.c: Internationalization
|
||||
*
|
||||
* See the README file for copyright information and how to reach the author.
|
||||
*
|
||||
* $Id: i18n.c 1.6 2006/04/22 09:30:57 kls Exp $
|
||||
*/
|
||||
|
||||
#include "i18n.h"
|
||||
|
||||
const tI18nPhrase Phrases[] = {
|
||||
{ "Hello",
|
||||
"Hallo",
|
||||
"",// TODO
|
||||
"",// TODO
|
||||
"",// TODO
|
||||
"",// TODO
|
||||
"",// TODO
|
||||
"",// TODO
|
||||
"Hei",
|
||||
"",// TODO
|
||||
"",// TODO
|
||||
"",// TODO
|
||||
"",// TODO
|
||||
"",// TODO
|
||||
"",// TODO
|
||||
"",// TODO
|
||||
"¿àØÒÕâ!",
|
||||
"",// TODO
|
||||
"",// TODO
|
||||
"",// TODO
|
||||
"Ahoj",
|
||||
},
|
||||
{ "Hello world!",
|
||||
"Hallo Welt!",
|
||||
"",// TODO
|
||||
"",// TODO
|
||||
"",// TODO
|
||||
"",// TODO
|
||||
"",// TODO
|
||||
"",// TODO
|
||||
"Hei maailma!",
|
||||
"",// TODO
|
||||
"",// TODO
|
||||
"",// TODO
|
||||
"",// TODO
|
||||
"",// TODO
|
||||
"",// TODO
|
||||
"",// TODO
|
||||
"·ÔàÐÒáâÒãÙ ÜØà!",
|
||||
"",// TODO
|
||||
"",// TODO
|
||||
"",// TODO
|
||||
"Ahoj svìte!",
|
||||
},
|
||||
{ "Howdy folks!",
|
||||
"Tach zusammen!",
|
||||
"",// TODO
|
||||
"",// TODO
|
||||
"",// TODO
|
||||
"",// TODO
|
||||
"",// TODO
|
||||
"",// TODO
|
||||
"Mitä kuuluu?",
|
||||
"",// TODO
|
||||
"",// TODO
|
||||
"",// TODO
|
||||
"",// TODO
|
||||
"",// TODO
|
||||
"",// TODO
|
||||
"",// TODO
|
||||
"ºÐÚ ßÞÖØÒÐÕâÕ?",
|
||||
"",// TODO
|
||||
"",// TODO
|
||||
"",// TODO
|
||||
"Nazdar vespolek!",
|
||||
},
|
||||
{ "A friendly greeting",
|
||||
"Ein freundlicher Gruß",
|
||||
"",// TODO
|
||||
"",// TODO
|
||||
"",// TODO
|
||||
"",// TODO
|
||||
"",// TODO
|
||||
"",// TODO
|
||||
"Ystävällisin terveisin",
|
||||
"",// TODO
|
||||
"",// TODO
|
||||
"",// TODO
|
||||
"",// TODO
|
||||
"",// TODO
|
||||
"",// TODO
|
||||
"",// TODO
|
||||
"´àãÖÕáÚÞÕ ßàØÒÕâáâÒØÕ",
|
||||
"",// TODO
|
||||
"",// TODO
|
||||
"",// TODO
|
||||
"Pøátelský pozdrav",
|
||||
},
|
||||
{ "Greeting time (s)",
|
||||
"Dauer des Grußes (s)",
|
||||
"",// TODO
|
||||
"",// TODO
|
||||
"",// TODO
|
||||
"",// TODO
|
||||
"",// TODO
|
||||
"",// TODO
|
||||
"Tervehdysaika (s)",
|
||||
"",// TODO
|
||||
"",// TODO
|
||||
"",// TODO
|
||||
"",// TODO
|
||||
"",// TODO
|
||||
"",// TODO
|
||||
"",// TODO
|
||||
"¿àÞÔÞÛÖØâÕÛìÝÞáâì ßàØÒÕâáâÒØï",
|
||||
"",// TODO
|
||||
"",// TODO
|
||||
"",// TODO
|
||||
"Èas pozdravu (s)",
|
||||
},
|
||||
{ "Use alternate greeting",
|
||||
"Alternativen Gruß verwenden",
|
||||
"",// TODO
|
||||
"",// TODO
|
||||
"",// TODO
|
||||
"",// TODO
|
||||
"",// TODO
|
||||
"",// TODO
|
||||
"Käytä vaihtoehtoista tervehdystä",
|
||||
"",// TODO
|
||||
"",// TODO
|
||||
"",// TODO
|
||||
"",// TODO
|
||||
"",// TODO
|
||||
"",// TODO
|
||||
"",// TODO
|
||||
"°ÛìâÕàÝÐâØÒÝÞÕ ßàØÒÕâáâÒØÕ",
|
||||
"",// TODO
|
||||
"",// TODO
|
||||
"",// TODO
|
||||
"Pou¾ít alternativní pozdrav",
|
||||
},
|
||||
{ NULL }
|
||||
};
|
@ -1,16 +0,0 @@
|
||||
/*
|
||||
* i18n.h: Internationalization
|
||||
*
|
||||
* See the README file for copyright information and how to reach the author.
|
||||
*
|
||||
* $Id: i18n.h 1.2 2002/05/11 14:48:16 kls Exp $
|
||||
*/
|
||||
|
||||
#ifndef _I18N__H
|
||||
#define _I18N__H
|
||||
|
||||
#include <vdr/i18n.h>
|
||||
|
||||
extern const tI18nPhrase Phrases[];
|
||||
|
||||
#endif //_I18N__H
|
42
PLUGINS/src/hello/po/ca_ES.po
Normal file
42
PLUGINS/src/hello/po/ca_ES.po
Normal file
@ -0,0 +1,42 @@
|
||||
# VDR plugin language source file.
|
||||
# Copyright (C) 2007 Klaus Schmidinger <kls@cadsoft.de>
|
||||
# This file is distributed under the same license as the VDR package.
|
||||
# Marc Rovira Vall <tm05462@salleURL.edu>, 2003
|
||||
# Ramon Roca <ramon.roca@xcombo.com>, 2003
|
||||
# Jordi Vilà <jvila@tinet.org>, 2003
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: VDR 1.5.7\n"
|
||||
"Report-Msgid-Bugs-To: <vdr-bugs@cadsoft.de>\n"
|
||||
"POT-Creation-Date: 2007-08-11 14:35+0200\n"
|
||||
"PO-Revision-Date: 2007-08-11 12:34+0200\n"
|
||||
"Last-Translator: Jordi Vilà <jvila@tinet.org>\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"
|
||||
|
||||
#: hello.c:16
|
||||
msgid "A friendly greeting"
|
||||
msgstr ""
|
||||
|
||||
#: hello.c:17
|
||||
msgid "Hello"
|
||||
msgstr ""
|
||||
|
||||
#: hello.c:60
|
||||
msgid "Greeting time (s)"
|
||||
msgstr ""
|
||||
|
||||
#: hello.c:61
|
||||
msgid "Use alternate greeting"
|
||||
msgstr ""
|
||||
|
||||
#: hello.c:129
|
||||
msgid "Hello world!"
|
||||
msgstr ""
|
||||
|
||||
#: hello.c:129
|
||||
msgid "Howdy folks!"
|
||||
msgstr ""
|
40
PLUGINS/src/hello/po/cs_CZ.po
Normal file
40
PLUGINS/src/hello/po/cs_CZ.po
Normal file
@ -0,0 +1,40 @@
|
||||
# VDR plugin language source file.
|
||||
# Copyright (C) 2007 Klaus Schmidinger <kls@cadsoft.de>
|
||||
# This file is distributed under the same license as the VDR package.
|
||||
# Vladimír Bárta <vladimir.barta@k2atmitec.cz>, 2006
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: VDR 1.5.7\n"
|
||||
"Report-Msgid-Bugs-To: <vdr-bugs@cadsoft.de>\n"
|
||||
"POT-Creation-Date: 2007-08-11 14:35+0200\n"
|
||||
"PO-Revision-Date: 2007-08-11 12:34+0200\n"
|
||||
"Last-Translator: Vladimír Bárta <vladimir.barta@k2atmitec.cz>\n"
|
||||
"Language-Team: <vdr@linuxtv.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=ISO-8859-2\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
|
||||
#: hello.c:16
|
||||
msgid "A friendly greeting"
|
||||
msgstr "Pøátelský pozdrav"
|
||||
|
||||
#: hello.c:17
|
||||
msgid "Hello"
|
||||
msgstr "Ahoj"
|
||||
|
||||
#: hello.c:60
|
||||
msgid "Greeting time (s)"
|
||||
msgstr "Èas pozdravu (s)"
|
||||
|
||||
#: hello.c:61
|
||||
msgid "Use alternate greeting"
|
||||
msgstr "Pou¾ít alternativní pozdrav"
|
||||
|
||||
#: hello.c:129
|
||||
msgid "Hello world!"
|
||||
msgstr "Ahoj svìte!"
|
||||
|
||||
#: hello.c:129
|
||||
msgid "Howdy folks!"
|
||||
msgstr "Nazdar vespolek!"
|
40
PLUGINS/src/hello/po/da_DK.po
Normal file
40
PLUGINS/src/hello/po/da_DK.po
Normal file
@ -0,0 +1,40 @@
|
||||
# VDR plugin language source file.
|
||||
# Copyright (C) 2007 Klaus Schmidinger <kls@cadsoft.de>
|
||||
# This file is distributed under the same license as the VDR package.
|
||||
# Mogens Elneff <mogens@elneff.dk>, 2004
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: VDR 1.5.7\n"
|
||||
"Report-Msgid-Bugs-To: <vdr-bugs@cadsoft.de>\n"
|
||||
"POT-Creation-Date: 2007-08-11 14:35+0200\n"
|
||||
"PO-Revision-Date: 2007-08-11 12:34+0200\n"
|
||||
"Last-Translator: Mogens Elneff <mogens@elneff.dk>\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"
|
||||
|
||||
#: hello.c:16
|
||||
msgid "A friendly greeting"
|
||||
msgstr ""
|
||||
|
||||
#: hello.c:17
|
||||
msgid "Hello"
|
||||
msgstr ""
|
||||
|
||||
#: hello.c:60
|
||||
msgid "Greeting time (s)"
|
||||
msgstr ""
|
||||
|
||||
#: hello.c:61
|
||||
msgid "Use alternate greeting"
|
||||
msgstr ""
|
||||
|
||||
#: hello.c:129
|
||||
msgid "Hello world!"
|
||||
msgstr ""
|
||||
|
||||
#: hello.c:129
|
||||
msgid "Howdy folks!"
|
||||
msgstr ""
|
40
PLUGINS/src/hello/po/de_DE.po
Normal file
40
PLUGINS/src/hello/po/de_DE.po
Normal file
@ -0,0 +1,40 @@
|
||||
# VDR plugin language source file.
|
||||
# Copyright (C) 2007 Klaus Schmidinger <kls@cadsoft.de>
|
||||
# This file is distributed under the same license as the VDR package.
|
||||
# Klaus Schmidinger <kls@cadsoft.de>, 2000
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: VDR 1.5.7\n"
|
||||
"Report-Msgid-Bugs-To: <vdr-bugs@cadsoft.de>\n"
|
||||
"POT-Creation-Date: 2007-08-11 14:35+0200\n"
|
||||
"PO-Revision-Date: 2007-08-11 12:34+0200\n"
|
||||
"Last-Translator: Klaus Schmidinger <kls@cadsoft.de>\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"
|
||||
|
||||
#: hello.c:16
|
||||
msgid "A friendly greeting"
|
||||
msgstr "Ein freundlicher Gruß"
|
||||
|
||||
#: hello.c:17
|
||||
msgid "Hello"
|
||||
msgstr "Hallo"
|
||||
|
||||
#: hello.c:60
|
||||
msgid "Greeting time (s)"
|
||||
msgstr "Dauer des Grußes (s)"
|
||||
|
||||
#: hello.c:61
|
||||
msgid "Use alternate greeting"
|
||||
msgstr "Alternativen Gruß verwenden"
|
||||
|
||||
#: hello.c:129
|
||||
msgid "Hello world!"
|
||||
msgstr "Hallo Welt!"
|
||||
|
||||
#: hello.c:129
|
||||
msgid "Howdy folks!"
|
||||
msgstr "Tach zusammen!"
|
40
PLUGINS/src/hello/po/el_GR.po
Normal file
40
PLUGINS/src/hello/po/el_GR.po
Normal file
@ -0,0 +1,40 @@
|
||||
# VDR plugin language source file.
|
||||
# Copyright (C) 2007 Klaus Schmidinger <kls@cadsoft.de>
|
||||
# This file is distributed under the same license as the VDR package.
|
||||
# Dimitrios Dimitrakos <mail@dimitrios.de>, 2002
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: VDR 1.5.7\n"
|
||||
"Report-Msgid-Bugs-To: <vdr-bugs@cadsoft.de>\n"
|
||||
"POT-Creation-Date: 2007-08-11 14:35+0200\n"
|
||||
"PO-Revision-Date: 2007-08-11 12:34+0200\n"
|
||||
"Last-Translator: Dimitrios Dimitrakos <mail@dimitrios.de>\n"
|
||||
"Language-Team: <vdr@linuxtv.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=ISO-8859-7\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
|
||||
#: hello.c:16
|
||||
msgid "A friendly greeting"
|
||||
msgstr ""
|
||||
|
||||
#: hello.c:17
|
||||
msgid "Hello"
|
||||
msgstr ""
|
||||
|
||||
#: hello.c:60
|
||||
msgid "Greeting time (s)"
|
||||
msgstr ""
|
||||
|
||||
#: hello.c:61
|
||||
msgid "Use alternate greeting"
|
||||
msgstr ""
|
||||
|
||||
#: hello.c:129
|
||||
msgid "Hello world!"
|
||||
msgstr ""
|
||||
|
||||
#: hello.c:129
|
||||
msgid "Howdy folks!"
|
||||
msgstr ""
|
40
PLUGINS/src/hello/po/es_ES.po
Normal file
40
PLUGINS/src/hello/po/es_ES.po
Normal file
@ -0,0 +1,40 @@
|
||||
# VDR plugin language source file.
|
||||
# Copyright (C) 2007 Klaus Schmidinger <kls@cadsoft.de>
|
||||
# This file is distributed under the same license as the VDR package.
|
||||
# Ruben Nunez Francisco <ruben.nunez@tang-it.com>, 2002
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: VDR 1.5.7\n"
|
||||
"Report-Msgid-Bugs-To: <vdr-bugs@cadsoft.de>\n"
|
||||
"POT-Creation-Date: 2007-08-11 14:35+0200\n"
|
||||
"PO-Revision-Date: 2007-08-11 12:34+0200\n"
|
||||
"Last-Translator: Ruben Nunez Francisco <ruben.nunez@tang-it.com>\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"
|
||||
|
||||
#: hello.c:16
|
||||
msgid "A friendly greeting"
|
||||
msgstr ""
|
||||
|
||||
#: hello.c:17
|
||||
msgid "Hello"
|
||||
msgstr ""
|
||||
|
||||
#: hello.c:60
|
||||
msgid "Greeting time (s)"
|
||||
msgstr ""
|
||||
|
||||
#: hello.c:61
|
||||
msgid "Use alternate greeting"
|
||||
msgstr ""
|
||||
|
||||
#: hello.c:129
|
||||
msgid "Hello world!"
|
||||
msgstr ""
|
||||
|
||||
#: hello.c:129
|
||||
msgid "Howdy folks!"
|
||||
msgstr ""
|
40
PLUGINS/src/hello/po/et_EE.po
Normal file
40
PLUGINS/src/hello/po/et_EE.po
Normal file
@ -0,0 +1,40 @@
|
||||
# VDR plugin language source file.
|
||||
# Copyright (C) 2007 Klaus Schmidinger <kls@cadsoft.de>
|
||||
# This file is distributed under the same license as the VDR package.
|
||||
# Arthur Konovalov <kasjas@hot.ee>, 2004
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: VDR 1.5.7\n"
|
||||
"Report-Msgid-Bugs-To: <vdr-bugs@cadsoft.de>\n"
|
||||
"POT-Creation-Date: 2007-08-11 14:35+0200\n"
|
||||
"PO-Revision-Date: 2007-08-11 12:34+0200\n"
|
||||
"Last-Translator: Arthur Konovalov <kasjas@hot.ee>\n"
|
||||
"Language-Team: <vdr@linuxtv.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=ISO-8859-13\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
|
||||
#: hello.c:16
|
||||
msgid "A friendly greeting"
|
||||
msgstr ""
|
||||
|
||||
#: hello.c:17
|
||||
msgid "Hello"
|
||||
msgstr ""
|
||||
|
||||
#: hello.c:60
|
||||
msgid "Greeting time (s)"
|
||||
msgstr ""
|
||||
|
||||
#: hello.c:61
|
||||
msgid "Use alternate greeting"
|
||||
msgstr ""
|
||||
|
||||
#: hello.c:129
|
||||
msgid "Hello world!"
|
||||
msgstr ""
|
||||
|
||||
#: hello.c:129
|
||||
msgid "Howdy folks!"
|
||||
msgstr ""
|
43
PLUGINS/src/hello/po/fi_FI.po
Normal file
43
PLUGINS/src/hello/po/fi_FI.po
Normal file
@ -0,0 +1,43 @@
|
||||
# VDR plugin language source file.
|
||||
# Copyright (C) 2007 Klaus Schmidinger <kls@cadsoft.de>
|
||||
# This file is distributed under the same license as the VDR package.
|
||||
# Hannu Savolainen <hannu@opensound.com>, 2002
|
||||
# Jaakko Hyvätti <jaakko@hyvatti.iki.fi>, 2002
|
||||
# Niko Tarnanen <niko.tarnanen@hut.fi>, 2003
|
||||
# Rolf Ahrenberg <rahrenbe@cc.hut.fi>, 2003
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: VDR 1.5.7\n"
|
||||
"Report-Msgid-Bugs-To: <vdr-bugs@cadsoft.de>\n"
|
||||
"POT-Creation-Date: 2007-08-11 14:35+0200\n"
|
||||
"PO-Revision-Date: 2007-08-11 12:34+0200\n"
|
||||
"Last-Translator: Rolf Ahrenberg <rahrenbe@cc.hut.fi>\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"
|
||||
|
||||
#: hello.c:16
|
||||
msgid "A friendly greeting"
|
||||
msgstr "Ystävällisin terveisin"
|
||||
|
||||
#: hello.c:17
|
||||
msgid "Hello"
|
||||
msgstr "Hei"
|
||||
|
||||
#: hello.c:60
|
||||
msgid "Greeting time (s)"
|
||||
msgstr "Tervehdysaika (s)"
|
||||
|
||||
#: hello.c:61
|
||||
msgid "Use alternate greeting"
|
||||
msgstr "Käytä vaihtoehtoista tervehdystä"
|
||||
|
||||
#: hello.c:129
|
||||
msgid "Hello world!"
|
||||
msgstr "Hei maailma!"
|
||||
|
||||
#: hello.c:129
|
||||
msgid "Howdy folks!"
|
||||
msgstr "Mitä kuuluu?"
|
43
PLUGINS/src/hello/po/fr_FR.po
Normal file
43
PLUGINS/src/hello/po/fr_FR.po
Normal file
@ -0,0 +1,43 @@
|
||||
# VDR plugin language source file.
|
||||
# Copyright (C) 2007 Klaus Schmidinger <kls@cadsoft.de>
|
||||
# This file is distributed under the same license as the VDR package.
|
||||
# Jean-Claude Repetto <jc@repetto.org>, 2001
|
||||
# Olivier Jacques <jacquesolivier@hotmail.com>, 2003
|
||||
# Gregoire Favre <greg@magma.unil.ch>, 2003
|
||||
# Nicolas Huillard <nhuillard@e-dition.fr>, 2005
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: VDR 1.5.7\n"
|
||||
"Report-Msgid-Bugs-To: <vdr-bugs@cadsoft.de>\n"
|
||||
"POT-Creation-Date: 2007-08-11 14:35+0200\n"
|
||||
"PO-Revision-Date: 2007-08-11 12:34+0200\n"
|
||||
"Last-Translator: Nicolas Huillard <nhuillard@e-dition.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"
|
||||
|
||||
#: hello.c:16
|
||||
msgid "A friendly greeting"
|
||||
msgstr ""
|
||||
|
||||
#: hello.c:17
|
||||
msgid "Hello"
|
||||
msgstr ""
|
||||
|
||||
#: hello.c:60
|
||||
msgid "Greeting time (s)"
|
||||
msgstr ""
|
||||
|
||||
#: hello.c:61
|
||||
msgid "Use alternate greeting"
|
||||
msgstr ""
|
||||
|
||||
#: hello.c:129
|
||||
msgid "Hello world!"
|
||||
msgstr ""
|
||||
|
||||
#: hello.c:129
|
||||
msgid "Howdy folks!"
|
||||
msgstr ""
|
41
PLUGINS/src/hello/po/hr_HR.po
Normal file
41
PLUGINS/src/hello/po/hr_HR.po
Normal file
@ -0,0 +1,41 @@
|
||||
# VDR plugin language source file.
|
||||
# Copyright (C) 2007 Klaus Schmidinger <kls@cadsoft.de>
|
||||
# This file is distributed under the same license as the VDR package.
|
||||
# Drazen Dupor <drazen.dupor@dupor.com>, 2004
|
||||
# Dino Ravnic <dino.ravnic@fer.hr>, 2004
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: VDR 1.5.7\n"
|
||||
"Report-Msgid-Bugs-To: <vdr-bugs@cadsoft.de>\n"
|
||||
"POT-Creation-Date: 2007-08-11 14:35+0200\n"
|
||||
"PO-Revision-Date: 2007-08-11 12:34+0200\n"
|
||||
"Last-Translator: Drazen Dupor <drazen.dupor@dupor.com>\n"
|
||||
"Language-Team: <vdr@linuxtv.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=ISO-8859-2\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
|
||||
#: hello.c:16
|
||||
msgid "A friendly greeting"
|
||||
msgstr ""
|
||||
|
||||
#: hello.c:17
|
||||
msgid "Hello"
|
||||
msgstr ""
|
||||
|
||||
#: hello.c:60
|
||||
msgid "Greeting time (s)"
|
||||
msgstr ""
|
||||
|
||||
#: hello.c:61
|
||||
msgid "Use alternate greeting"
|
||||
msgstr ""
|
||||
|
||||
#: hello.c:129
|
||||
msgid "Hello world!"
|
||||
msgstr ""
|
||||
|
||||
#: hello.c:129
|
||||
msgid "Howdy folks!"
|
||||
msgstr ""
|
41
PLUGINS/src/hello/po/hu_HU.po
Normal file
41
PLUGINS/src/hello/po/hu_HU.po
Normal file
@ -0,0 +1,41 @@
|
||||
# VDR plugin language source file.
|
||||
# Copyright (C) 2007 Klaus Schmidinger <kls@cadsoft.de>
|
||||
# This file is distributed under the same license as the VDR package.
|
||||
# Istvan Koenigsberger <istvnko@hotmail.com>, 2002
|
||||
# Guido Josten <guido.josten@t-online.de>, 2002
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: VDR 1.5.7\n"
|
||||
"Report-Msgid-Bugs-To: <vdr-bugs@cadsoft.de>\n"
|
||||
"POT-Creation-Date: 2007-08-11 14:35+0200\n"
|
||||
"PO-Revision-Date: 2007-08-11 12:34+0200\n"
|
||||
"Last-Translator: Istvan Koenigsberger <istvnko@hotmail.com>, Guido Josten <guido.josten@t-online.de>\n"
|
||||
"Language-Team: <vdr@linuxtv.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=ISO-8859-2\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
|
||||
#: hello.c:16
|
||||
msgid "A friendly greeting"
|
||||
msgstr ""
|
||||
|
||||
#: hello.c:17
|
||||
msgid "Hello"
|
||||
msgstr ""
|
||||
|
||||
#: hello.c:60
|
||||
msgid "Greeting time (s)"
|
||||
msgstr ""
|
||||
|
||||
#: hello.c:61
|
||||
msgid "Use alternate greeting"
|
||||
msgstr ""
|
||||
|
||||
#: hello.c:129
|
||||
msgid "Hello world!"
|
||||
msgstr ""
|
||||
|
||||
#: hello.c:129
|
||||
msgid "Howdy folks!"
|
||||
msgstr ""
|
42
PLUGINS/src/hello/po/it_IT.po
Normal file
42
PLUGINS/src/hello/po/it_IT.po
Normal file
@ -0,0 +1,42 @@
|
||||
# VDR plugin language source file.
|
||||
# Copyright (C) 2007 Klaus Schmidinger <kls@cadsoft.de>
|
||||
# This file is distributed under the same license as the VDR package.
|
||||
# Alberto Carraro <bertocar@tin.it>, 2001
|
||||
# Antonio Ospite <ospite@studenti.unina.it>, 2003
|
||||
# Sean Carlos <seanc@libero.it>, 2005
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: VDR 1.5.7\n"
|
||||
"Report-Msgid-Bugs-To: <vdr-bugs@cadsoft.de>\n"
|
||||
"POT-Creation-Date: 2007-08-11 14:35+0200\n"
|
||||
"PO-Revision-Date: 2007-08-11 12:34+0200\n"
|
||||
"Last-Translator: Sean Carlos <seanc@libero.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"
|
||||
|
||||
#: hello.c:16
|
||||
msgid "A friendly greeting"
|
||||
msgstr ""
|
||||
|
||||
#: hello.c:17
|
||||
msgid "Hello"
|
||||
msgstr ""
|
||||
|
||||
#: hello.c:60
|
||||
msgid "Greeting time (s)"
|
||||
msgstr ""
|
||||
|
||||
#: hello.c:61
|
||||
msgid "Use alternate greeting"
|
||||
msgstr ""
|
||||
|
||||
#: hello.c:129
|
||||
msgid "Hello world!"
|
||||
msgstr ""
|
||||
|
||||
#: hello.c:129
|
||||
msgid "Howdy folks!"
|
||||
msgstr ""
|
42
PLUGINS/src/hello/po/nl_NL.po
Normal file
42
PLUGINS/src/hello/po/nl_NL.po
Normal file
@ -0,0 +1,42 @@
|
||||
# VDR plugin language source file.
|
||||
# Copyright (C) 2007 Klaus Schmidinger <kls@cadsoft.de>
|
||||
# This file is distributed under the same license as the VDR package.
|
||||
# Arnold Niessen <niessen@iae.nl> <arnold.niessen@philips.com>, 2001
|
||||
# Hans Dingemans <hans.dingemans@tacticalops.nl>, 2003
|
||||
# Maarten Wisse <Maarten.Wisse@urz.uni-hd.de>, 2005
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: VDR 1.5.7\n"
|
||||
"Report-Msgid-Bugs-To: <vdr-bugs@cadsoft.de>\n"
|
||||
"POT-Creation-Date: 2007-08-11 14:35+0200\n"
|
||||
"PO-Revision-Date: 2007-08-11 12:34+0200\n"
|
||||
"Last-Translator: Maarten Wisse <Maarten.Wisse@urz.uni-hd.de>\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"
|
||||
|
||||
#: hello.c:16
|
||||
msgid "A friendly greeting"
|
||||
msgstr ""
|
||||
|
||||
#: hello.c:17
|
||||
msgid "Hello"
|
||||
msgstr ""
|
||||
|
||||
#: hello.c:60
|
||||
msgid "Greeting time (s)"
|
||||
msgstr ""
|
||||
|
||||
#: hello.c:61
|
||||
msgid "Use alternate greeting"
|
||||
msgstr ""
|
||||
|
||||
#: hello.c:129
|
||||
msgid "Hello world!"
|
||||
msgstr ""
|
||||
|
||||
#: hello.c:129
|
||||
msgid "Howdy folks!"
|
||||
msgstr ""
|
41
PLUGINS/src/hello/po/nn_NO.po
Normal file
41
PLUGINS/src/hello/po/nn_NO.po
Normal file
@ -0,0 +1,41 @@
|
||||
# VDR plugin language source file.
|
||||
# Copyright (C) 2007 Klaus Schmidinger <kls@cadsoft.de>
|
||||
# This file is distributed under the same license as the VDR package.
|
||||
# Jørgen Tvedt <pjtvedt@online.no>, 2001
|
||||
# Truls Slevigen <truls@slevigen.no>, 2002
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: VDR 1.5.7\n"
|
||||
"Report-Msgid-Bugs-To: <vdr-bugs@cadsoft.de>\n"
|
||||
"POT-Creation-Date: 2007-08-11 14:35+0200\n"
|
||||
"PO-Revision-Date: 2007-08-11 12:34+0200\n"
|
||||
"Last-Translator: Truls Slevigen <truls@slevigen.no>\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"
|
||||
|
||||
#: hello.c:16
|
||||
msgid "A friendly greeting"
|
||||
msgstr ""
|
||||
|
||||
#: hello.c:17
|
||||
msgid "Hello"
|
||||
msgstr ""
|
||||
|
||||
#: hello.c:60
|
||||
msgid "Greeting time (s)"
|
||||
msgstr ""
|
||||
|
||||
#: hello.c:61
|
||||
msgid "Use alternate greeting"
|
||||
msgstr ""
|
||||
|
||||
#: hello.c:129
|
||||
msgid "Hello world!"
|
||||
msgstr ""
|
||||
|
||||
#: hello.c:129
|
||||
msgid "Howdy folks!"
|
||||
msgstr ""
|
40
PLUGINS/src/hello/po/pl_PL.po
Normal file
40
PLUGINS/src/hello/po/pl_PL.po
Normal file
@ -0,0 +1,40 @@
|
||||
# VDR plugin language source file.
|
||||
# Copyright (C) 2007 Klaus Schmidinger <kls@cadsoft.de>
|
||||
# This file is distributed under the same license as the VDR package.
|
||||
# Michael Rakowski <mrak@gmx.de>, 2002
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: VDR 1.5.7\n"
|
||||
"Report-Msgid-Bugs-To: <vdr-bugs@cadsoft.de>\n"
|
||||
"POT-Creation-Date: 2007-08-11 14:35+0200\n"
|
||||
"PO-Revision-Date: 2007-08-11 12:34+0200\n"
|
||||
"Last-Translator: Michael Rakowski <mrak@gmx.de>\n"
|
||||
"Language-Team: <vdr@linuxtv.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=ISO-8859-2\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
|
||||
#: hello.c:16
|
||||
msgid "A friendly greeting"
|
||||
msgstr ""
|
||||
|
||||
#: hello.c:17
|
||||
msgid "Hello"
|
||||
msgstr ""
|
||||
|
||||
#: hello.c:60
|
||||
msgid "Greeting time (s)"
|
||||
msgstr ""
|
||||
|
||||
#: hello.c:61
|
||||
msgid "Use alternate greeting"
|
||||
msgstr ""
|
||||
|
||||
#: hello.c:129
|
||||
msgid "Hello world!"
|
||||
msgstr ""
|
||||
|
||||
#: hello.c:129
|
||||
msgid "Howdy folks!"
|
||||
msgstr ""
|
40
PLUGINS/src/hello/po/pt_PT.po
Normal file
40
PLUGINS/src/hello/po/pt_PT.po
Normal file
@ -0,0 +1,40 @@
|
||||
# VDR plugin language source file.
|
||||
# Copyright (C) 2007 Klaus Schmidinger <kls@cadsoft.de>
|
||||
# This file is distributed under the same license as the VDR package.
|
||||
# Paulo Lopes <pmml@netvita.pt>, 2001
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: VDR 1.5.7\n"
|
||||
"Report-Msgid-Bugs-To: <vdr-bugs@cadsoft.de>\n"
|
||||
"POT-Creation-Date: 2007-08-11 14:35+0200\n"
|
||||
"PO-Revision-Date: 2007-08-11 12:34+0200\n"
|
||||
"Last-Translator: Paulo Lopes <pmml@netvita.pt>\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"
|
||||
|
||||
#: hello.c:16
|
||||
msgid "A friendly greeting"
|
||||
msgstr ""
|
||||
|
||||
#: hello.c:17
|
||||
msgid "Hello"
|
||||
msgstr ""
|
||||
|
||||
#: hello.c:60
|
||||
msgid "Greeting time (s)"
|
||||
msgstr ""
|
||||
|
||||
#: hello.c:61
|
||||
msgid "Use alternate greeting"
|
||||
msgstr ""
|
||||
|
||||
#: hello.c:129
|
||||
msgid "Hello world!"
|
||||
msgstr ""
|
||||
|
||||
#: hello.c:129
|
||||
msgid "Howdy folks!"
|
||||
msgstr ""
|
41
PLUGINS/src/hello/po/ro_RO.po
Normal file
41
PLUGINS/src/hello/po/ro_RO.po
Normal file
@ -0,0 +1,41 @@
|
||||
# VDR plugin language source file.
|
||||
# Copyright (C) 2007 Klaus Schmidinger <kls@cadsoft.de>
|
||||
# This file is distributed under the same license as the VDR package.
|
||||
# Paul Lacatus <paul@campina.iiruc.ro>, 2002
|
||||
# Lucian Muresan <lucianm@users.sourceforge.net>, 2004
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: VDR 1.5.7\n"
|
||||
"Report-Msgid-Bugs-To: <vdr-bugs@cadsoft.de>\n"
|
||||
"POT-Creation-Date: 2007-08-11 14:35+0200\n"
|
||||
"PO-Revision-Date: 2007-08-11 12:34+0200\n"
|
||||
"Last-Translator: Lucian Muresan <lucianm@users.sourceforge.net>\n"
|
||||
"Language-Team: <vdr@linuxtv.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=ISO-8859-2\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
|
||||
#: hello.c:16
|
||||
msgid "A friendly greeting"
|
||||
msgstr ""
|
||||
|
||||
#: hello.c:17
|
||||
msgid "Hello"
|
||||
msgstr ""
|
||||
|
||||
#: hello.c:60
|
||||
msgid "Greeting time (s)"
|
||||
msgstr ""
|
||||
|
||||
#: hello.c:61
|
||||
msgid "Use alternate greeting"
|
||||
msgstr ""
|
||||
|
||||
#: hello.c:129
|
||||
msgid "Hello world!"
|
||||
msgstr ""
|
||||
|
||||
#: hello.c:129
|
||||
msgid "Howdy folks!"
|
||||
msgstr ""
|
40
PLUGINS/src/hello/po/ru_RU.po
Normal file
40
PLUGINS/src/hello/po/ru_RU.po
Normal file
@ -0,0 +1,40 @@
|
||||
# VDR plugin language source file.
|
||||
# Copyright (C) 2007 Klaus Schmidinger <kls@cadsoft.de>
|
||||
# This file is distributed under the same license as the VDR package.
|
||||
# Vyacheslav Dikonov <sdiconov@mail.ru>, 2004
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: VDR 1.5.7\n"
|
||||
"Report-Msgid-Bugs-To: <vdr-bugs@cadsoft.de>\n"
|
||||
"POT-Creation-Date: 2007-08-11 14:35+0200\n"
|
||||
"PO-Revision-Date: 2007-08-11 12:34+0200\n"
|
||||
"Last-Translator: Vyacheslav Dikonov <sdiconov@mail.ru>\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"
|
||||
|
||||
#: hello.c:16
|
||||
msgid "A friendly greeting"
|
||||
msgstr "´àãÖÕáÚÞÕ ßàØÒÕâáâÒØÕ"
|
||||
|
||||
#: hello.c:17
|
||||
msgid "Hello"
|
||||
msgstr "¿àØÒÕâ!"
|
||||
|
||||
#: hello.c:60
|
||||
msgid "Greeting time (s)"
|
||||
msgstr "¿àÞÔÞÛÖØâÕÛìÝÞáâì ßàØÒÕâáâÒØï"
|
||||
|
||||
#: hello.c:61
|
||||
msgid "Use alternate greeting"
|
||||
msgstr "°ÛìâÕàÝÐâØÒÝÞÕ ßàØÒÕâáâÒØÕ"
|
||||
|
||||
#: hello.c:129
|
||||
msgid "Hello world!"
|
||||
msgstr "·ÔàÐÒáâÒãÙ ÜØà!"
|
||||
|
||||
#: hello.c:129
|
||||
msgid "Howdy folks!"
|
||||
msgstr "ºÐÚ ßÞÖØÒÐÕâÕ?"
|
41
PLUGINS/src/hello/po/sl_SI.po
Normal file
41
PLUGINS/src/hello/po/sl_SI.po
Normal file
@ -0,0 +1,41 @@
|
||||
# VDR plugin language source file.
|
||||
# Copyright (C) 2007 Klaus Schmidinger <kls@cadsoft.de>
|
||||
# This file is distributed under the same license as the VDR package.
|
||||
# Miha Setina <mihasetina@softhome.net>, 2000
|
||||
# Matjaz Thaler <matjaz.thaler@guest.arnes.si>, 2003
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: VDR 1.5.7\n"
|
||||
"Report-Msgid-Bugs-To: <vdr-bugs@cadsoft.de>\n"
|
||||
"POT-Creation-Date: 2007-08-11 14:35+0200\n"
|
||||
"PO-Revision-Date: 2007-08-11 12:34+0200\n"
|
||||
"Last-Translator: Matjaz Thaler <matjaz.thaler@guest.arnes.si>\n"
|
||||
"Language-Team: <vdr@linuxtv.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=ISO-8859-2\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
|
||||
#: hello.c:16
|
||||
msgid "A friendly greeting"
|
||||
msgstr ""
|
||||
|
||||
#: hello.c:17
|
||||
msgid "Hello"
|
||||
msgstr ""
|
||||
|
||||
#: hello.c:60
|
||||
msgid "Greeting time (s)"
|
||||
msgstr ""
|
||||
|
||||
#: hello.c:61
|
||||
msgid "Use alternate greeting"
|
||||
msgstr ""
|
||||
|
||||
#: hello.c:129
|
||||
msgid "Hello world!"
|
||||
msgstr ""
|
||||
|
||||
#: hello.c:129
|
||||
msgid "Howdy folks!"
|
||||
msgstr ""
|
41
PLUGINS/src/hello/po/sv_SE.po
Normal file
41
PLUGINS/src/hello/po/sv_SE.po
Normal file
@ -0,0 +1,41 @@
|
||||
# VDR plugin language source file.
|
||||
# Copyright (C) 2007 Klaus Schmidinger <kls@cadsoft.de>
|
||||
# This file is distributed under the same license as the VDR package.
|
||||
# Tomas Prybil <tomas@prybil.se>, 2002
|
||||
# Jan Ekholm <chakie@infa.abo.fi>, 2003
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: VDR 1.5.7\n"
|
||||
"Report-Msgid-Bugs-To: <vdr-bugs@cadsoft.de>\n"
|
||||
"POT-Creation-Date: 2007-08-11 14:35+0200\n"
|
||||
"PO-Revision-Date: 2007-08-11 12:34+0200\n"
|
||||
"Last-Translator: Tomas Prybil <tomas@prybil.se>\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"
|
||||
|
||||
#: hello.c:16
|
||||
msgid "A friendly greeting"
|
||||
msgstr ""
|
||||
|
||||
#: hello.c:17
|
||||
msgid "Hello"
|
||||
msgstr ""
|
||||
|
||||
#: hello.c:60
|
||||
msgid "Greeting time (s)"
|
||||
msgstr ""
|
||||
|
||||
#: hello.c:61
|
||||
msgid "Use alternate greeting"
|
||||
msgstr ""
|
||||
|
||||
#: hello.c:129
|
||||
msgid "Hello world!"
|
||||
msgstr ""
|
||||
|
||||
#: hello.c:129
|
||||
msgid "Howdy folks!"
|
||||
msgstr ""
|
40
PLUGINS/src/hello/po/tr_TR.po
Normal file
40
PLUGINS/src/hello/po/tr_TR.po
Normal file
@ -0,0 +1,40 @@
|
||||
# VDR plugin language source file.
|
||||
# Copyright (C) 2007 Klaus Schmidinger <kls@cadsoft.de>
|
||||
# This file is distributed under the same license as the VDR package.
|
||||
# Oktay Yolgeçen <oktay_73@yahoo.de>, 2007
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: VDR 1.5.7\n"
|
||||
"Report-Msgid-Bugs-To: <vdr-bugs@cadsoft.de>\n"
|
||||
"POT-Creation-Date: 2007-08-11 14:35+0200\n"
|
||||
"PO-Revision-Date: 2007-08-11 12:34+0200\n"
|
||||
"Last-Translator: Oktay Yolgeçen <oktay_73@yahoo.de>\n"
|
||||
"Language-Team: <vdr@linuxtv.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=ISO-8859-9\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
|
||||
#: hello.c:16
|
||||
msgid "A friendly greeting"
|
||||
msgstr ""
|
||||
|
||||
#: hello.c:17
|
||||
msgid "Hello"
|
||||
msgstr ""
|
||||
|
||||
#: hello.c:60
|
||||
msgid "Greeting time (s)"
|
||||
msgstr ""
|
||||
|
||||
#: hello.c:61
|
||||
msgid "Use alternate greeting"
|
||||
msgstr ""
|
||||
|
||||
#: hello.c:129
|
||||
msgid "Hello world!"
|
||||
msgstr ""
|
||||
|
||||
#: hello.c:129
|
||||
msgid "Howdy folks!"
|
||||
msgstr ""
|
@ -6,7 +6,11 @@ Project's homepage: http://www.cadsoft.de/vdr
|
||||
|
||||
Latest version available at: http://www.cadsoft.de/vdr
|
||||
|
||||
See the file COPYING for license information.
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
See the file COPYING for more information.
|
||||
|
||||
Description:
|
||||
|
||||
|
@ -6,7 +6,11 @@ Project's homepage: www.cadsoft.de/vdr
|
||||
|
||||
Latest version available at: www.cadsoft.de/vdr
|
||||
|
||||
See the file COPYING for license information.
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
See the file COPYING for more information.
|
||||
|
||||
Description:
|
||||
|
||||
|
@ -6,7 +6,11 @@ Project's homepage: www.cadsoft.de/vdr
|
||||
|
||||
Latest version available at: www.cadsoft.de/vdr
|
||||
|
||||
See the file COPYING for license information.
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
See the file COPYING for more information.
|
||||
|
||||
Description:
|
||||
|
||||
|
@ -6,7 +6,11 @@ Project's homepage: www.cadsoft.de/vdr
|
||||
|
||||
Latest version available at: www.cadsoft.de/vdr
|
||||
|
||||
See the file COPYING for license information.
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
See the file COPYING for more information.
|
||||
|
||||
Description:
|
||||
|
||||
|
@ -6,6 +6,10 @@ Project's homepage: www.cadsoft.de/people/kls/vdr
|
||||
|
||||
Latest version available at: www.cadsoft.de/people/kls/vdr/software.htm
|
||||
|
||||
See the file COPYING for license information.
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
See the file COPYING for more information.
|
||||
|
||||
Description: This is an example that shows the use of cStatus.
|
||||
|
@ -6,7 +6,11 @@ Project's homepage: http://www.cadsoft.de/vdr
|
||||
|
||||
Latest version available at: http://www.cadsoft.de/vdr
|
||||
|
||||
See the file COPYING for license information.
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
See the file COPYING for more information.
|
||||
|
||||
Description:
|
||||
|
||||
|
42
README.i18n
Normal file
42
README.i18n
Normal file
@ -0,0 +1,42 @@
|
||||
Video Disk Recorder ('VDR') - Internationalization
|
||||
--------------------------------------------------
|
||||
|
||||
The internationalized texts of VDR and its plugins use the 'gettext'
|
||||
functionality. This file provides information on how to maintain
|
||||
these texts. The instructions apply equally to VDR itself or any
|
||||
plugin.
|
||||
|
||||
|
||||
How to translate to a new language
|
||||
----------------------------------
|
||||
|
||||
- Change into the source directory.
|
||||
- Do a 'make i18n' to have the current *.pot file created.
|
||||
- Make sure your locale is set to the language you want to
|
||||
translate to.
|
||||
- Change into the 'po' subdirectory and run 'msginit'. This
|
||||
will create a new *.po file for your language.
|
||||
- Edit the new *.po file and translate the texts.
|
||||
You can do this either with your favorite text editor, or
|
||||
with a specialited tool like POEdit, GTranslator, KBabel
|
||||
or whatever you have.
|
||||
|
||||
How to maintain an existing language file
|
||||
-----------------------------------------
|
||||
|
||||
- Do a 'make i18n' to have the *.po files brought up-to-date
|
||||
with the texts in the source code.
|
||||
- Edit the new *.po file and translate the texts.
|
||||
If you are using a plain text editor, you should search for
|
||||
empty strings ("") to find new, untranslated texts. Also,
|
||||
look for the "fuzzy" keyword to find translations that have
|
||||
been "guessed" from other, similar texts, and make sure they
|
||||
are correct. After that you may want to remove the "fuzzy"
|
||||
keyword. Specialized tools for maintaining translation
|
||||
files may provide particular functions to guide you through
|
||||
updating translations.
|
||||
|
||||
Once you have created or updated a translation file, please
|
||||
send it to the maintainer of the respective plugin (in case
|
||||
it belongs to a plugin) or to kls@cadsoft.de (for core VDR
|
||||
language files).
|
12
config.c
12
config.c
@ -4,7 +4,7 @@
|
||||
* See the main source file 'vdr.c' for copyright information and
|
||||
* how to reach the author.
|
||||
*
|
||||
* $Id: config.c 1.154 2007/06/23 09:42:49 kls Exp $
|
||||
* $Id: config.c 1.156 2007/08/12 12:09:37 kls Exp $
|
||||
*/
|
||||
|
||||
#include "config.h"
|
||||
@ -214,7 +214,7 @@ cSetup Setup;
|
||||
|
||||
cSetup::cSetup(void)
|
||||
{
|
||||
OSDLanguage = 0;
|
||||
strcpy(OSDLanguage, ""); // default is taken from environment
|
||||
strcpy(OSDSkin, "sttng");
|
||||
strcpy(OSDTheme, "default");
|
||||
PrimaryDVB = 1;
|
||||
@ -349,9 +349,9 @@ bool cSetup::Load(const char *FileName)
|
||||
|
||||
void cSetup::StoreLanguages(const char *Name, int *Values)
|
||||
{
|
||||
char buffer[I18nNumLanguages * 4];
|
||||
char buffer[I18nLanguages()->Size() * 4];
|
||||
char *q = buffer;
|
||||
for (int i = 0; i < I18nNumLanguages; i++) {
|
||||
for (int i = 0; i < I18nLanguages()->Size(); i++) {
|
||||
if (Values[i] < 0)
|
||||
break;
|
||||
const char *s = I18nLanguageCode(Values[i]);
|
||||
@ -369,7 +369,7 @@ void cSetup::StoreLanguages(const char *Name, int *Values)
|
||||
bool cSetup::ParseLanguages(const char *Value, int *Values)
|
||||
{
|
||||
int n = 0;
|
||||
while (Value && *Value && n < I18nNumLanguages) {
|
||||
while (Value && *Value && n < I18nLanguages()->Size()) {
|
||||
char buffer[4];
|
||||
strn0cpy(buffer, Value, sizeof(buffer));
|
||||
int i = I18nLanguageIndex(buffer);
|
||||
@ -384,7 +384,7 @@ bool cSetup::ParseLanguages(const char *Value, int *Values)
|
||||
|
||||
bool cSetup::Parse(const char *Name, const char *Value)
|
||||
{
|
||||
if (!strcasecmp(Name, "OSDLanguage")) OSDLanguage = atoi(Value);
|
||||
if (!strcasecmp(Name, "OSDLanguage")) { strn0cpy(OSDLanguage, Value, sizeof(OSDLanguage)); I18nSetLocale(OSDLanguage); }
|
||||
else if (!strcasecmp(Name, "OSDSkin")) Utf8Strn0Cpy(OSDSkin, Value, MaxSkinName);
|
||||
else if (!strcasecmp(Name, "OSDTheme")) Utf8Strn0Cpy(OSDTheme, Value, MaxThemeName);
|
||||
else if (!strcasecmp(Name, "PrimaryDVB")) PrimaryDVB = atoi(Value);
|
||||
|
16
config.h
16
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.294 2007/07/20 14:52:05 kls Exp $
|
||||
* $Id: config.h 1.296 2007/08/10 13:01:52 kls Exp $
|
||||
*/
|
||||
|
||||
#ifndef __CONFIG_H
|
||||
@ -22,13 +22,13 @@
|
||||
|
||||
// VDR's own version number:
|
||||
|
||||
#define VDRVERSION "1.5.6"
|
||||
#define VDRVERSNUM 10506 // Version * 10000 + Major * 100 + Minor
|
||||
#define VDRVERSION "1.5.7"
|
||||
#define VDRVERSNUM 10507 // Version * 10000 + Major * 100 + Minor
|
||||
|
||||
// The plugin API's version number:
|
||||
|
||||
#define APIVERSION "1.5.6"
|
||||
#define APIVERSNUM 10506 // Version * 10000 + Major * 100 + Minor
|
||||
#define APIVERSION "1.5.7"
|
||||
#define APIVERSNUM 10507 // 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
|
||||
@ -199,7 +199,7 @@ private:
|
||||
public:
|
||||
// Also adjust cMenuSetup (menu.c) when adding parameters here!
|
||||
int __BeginData__;
|
||||
int OSDLanguage;
|
||||
char OSDLanguage[I18N_MAX_LOCALE_LEN];
|
||||
char OSDSkin[MaxSkinName];
|
||||
char OSDTheme[MaxThemeName];
|
||||
int PrimaryDVB;
|
||||
@ -219,8 +219,8 @@ public:
|
||||
int TimeSource;
|
||||
int TimeTransponder;
|
||||
int MarginStart, MarginStop;
|
||||
int AudioLanguages[I18nNumLanguages + 1];
|
||||
int EPGLanguages[I18nNumLanguages + 1];
|
||||
int AudioLanguages[I18N_MAX_LANGUAGES + 1];
|
||||
int EPGLanguages[I18N_MAX_LANGUAGES + 1];
|
||||
int EPGScanTimeout;
|
||||
int EPGBugfixLevel;
|
||||
int EPGLinger;
|
||||
|
4
eit.c
4
eit.c
@ -8,7 +8,7 @@
|
||||
* Robert Schneider <Robert.Schneider@web.de> and Rolf Hakenes <hakenes@hippomi.de>.
|
||||
* Adapted to 'libsi' for VDR 1.3.0 by Marcel Wiesweg <marcel.wiesweg@gmx.de>.
|
||||
*
|
||||
* $Id: eit.c 1.124 2007/07/21 14:58:04 kls Exp $
|
||||
* $Id: eit.c 1.125 2007/07/28 13:16:43 kls Exp $
|
||||
*/
|
||||
|
||||
#include "eit.h"
|
||||
@ -199,7 +199,7 @@ cEIT::cEIT(cSchedules *Schedules, int Source, u_char Tid, const u_char *Data, bo
|
||||
else if (Setup.UpdateChannels >= 4) {
|
||||
cChannel *transponder = channel;
|
||||
if (channel->Tid() != ld->getTransportStreamId())
|
||||
channel = Channels.GetByTransponderID(linkID);
|
||||
transponder = Channels.GetByTransponderID(linkID);
|
||||
link = Channels.NewChannel(transponder, linkName, "", "", ld->getOriginalNetworkId(), ld->getTransportStreamId(), ld->getServiceId());
|
||||
//XXX patFilter->Trigger();
|
||||
}
|
||||
|
332
i18n-to-gettext.pl
Executable file
332
i18n-to-gettext.pl
Executable file
@ -0,0 +1,332 @@
|
||||
#!/usr/bin/perl -w
|
||||
|
||||
# Convert i18n texts to gettext
|
||||
#
|
||||
# Extracts all texts from the file i18n.c and creates language
|
||||
# specific *.po files.
|
||||
#
|
||||
# Usage: i18n-to-gettext.pl
|
||||
#
|
||||
# See the main source file 'vdr.c' for copyright information and
|
||||
# how to reach the author.
|
||||
#
|
||||
# $Id: i18n-to-gettext.pl 1.2 2007/08/12 10:02:01 kls Exp $
|
||||
|
||||
# How to convert an actual plugin:
|
||||
#
|
||||
# - If your code contains something like
|
||||
#
|
||||
# const char *Text = "Some text";
|
||||
# ...
|
||||
# Function(tr(Text));
|
||||
#
|
||||
# you need to enclose the text constant in trNOOP(...), as in
|
||||
#
|
||||
# const char *Text = trNOOP("Some text");
|
||||
#
|
||||
# The actual usage of the tr() macro remains unchanged.
|
||||
#
|
||||
# - If you have comments following the texts in your i18n.c file
|
||||
# that should be seen by the translators, move them from the
|
||||
# i18n.c file into the file where the text is actually used,
|
||||
# and mark them with the TRANSLATORS keyword, as in
|
||||
#
|
||||
# // TRANSLATORS: note the plural!
|
||||
# Add(new cMenuEditIntItem( tr("Setup.EPG$Preferred languages"), ...
|
||||
#
|
||||
# - Fill in your email address in the line
|
||||
# $MSGIDBUGS = "" ...
|
||||
# below, so that users can reach you in case there is a problem
|
||||
# with a message id.
|
||||
#
|
||||
# - Run this Perl script from within your plugin's source directory.
|
||||
# This script will run 'xgettext' to extract all of your texts
|
||||
# into a file named <pluginname>.pot. After that it will extract
|
||||
# your existing i18n texts from the file i18n.c (or wherever you
|
||||
# have defined them) and generate *.po files for all languages
|
||||
# currently known by VDR.
|
||||
#
|
||||
# - Your Makefile will be automatically adjusted to allow for
|
||||
# building the *.mo files necessary for supporting gettext().
|
||||
# Please check carefully whether the automatic adjustments have
|
||||
# succeeded, though. The modified Makefile will be written to
|
||||
# Makefile.new, so you can call this script any numer of times
|
||||
# in case you need to do some fine tuning of your texts (especially
|
||||
# adding some trNOOP() in case the script reports "missing phrases".
|
||||
# Once you're done converting your plugin source to using gettext,
|
||||
# rename Makefile.new to Makefile.
|
||||
#
|
||||
# - You may want to remove the old internationalized texts from your
|
||||
# source. Usually this means removing the files i18n.[hc], stripping
|
||||
# i18n.o from the OBJS variable in the Makefile and removing all
|
||||
# '#include "i18n.h"' lines from the rest of your source files.
|
||||
# These steps are not done automatically.
|
||||
|
||||
# Check for the existence of a Makefile:
|
||||
|
||||
die "Makefile not found!" unless (-f "Makefile");
|
||||
|
||||
# Determine the plugin name:
|
||||
|
||||
$PLUGIN = `grep '^PLUGIN *=' Makefile | head -1` || die "can't find plugin name!";
|
||||
$PLUGIN =~ s/.*= *(.*)\n/$1/;
|
||||
die "can't find plugin name!" unless ($PLUGIN);
|
||||
|
||||
# Locate the file containing the texts:
|
||||
|
||||
$I18NFILE = "";
|
||||
for ("i18n.c", `ls *.c`) { # try i18n.c explicitly first
|
||||
chomp($f = $_);
|
||||
if (-f $f && `grep tI18nPhrase $f`) {
|
||||
$I18NFILE = $f;
|
||||
last;
|
||||
}
|
||||
}
|
||||
die "can't find internationalized texts!" unless ($I18NFILE);
|
||||
|
||||
# Plugin specific information:
|
||||
|
||||
$TITLE = "VDR plugin language source file";
|
||||
$COPYRIGHT = "2007 Klaus Schmidinger <kls\@cadsoft.de>";
|
||||
$PACKAGE = "VDR";
|
||||
$VERSION = "1.5.7";
|
||||
$MSGIDBUGS = "" || die "enter your email address here"; # escape the '@', as in "user\@domain.tld"
|
||||
$LANGUAGETEAM = "<vdr\@linuxtv.org>";
|
||||
|
||||
# Gettext environment:
|
||||
|
||||
$XGETTEXT = "xgettext -C -cTRANSLATORS --no-wrap -F -k -ktr -ktrNOOP --msgid-bugs-address='$MSGIDBUGS'";
|
||||
$PODIR = "po";
|
||||
$POTFILE = "$PODIR/$PLUGIN.pot";
|
||||
|
||||
# Languages as known by VDR 1.5.6:
|
||||
|
||||
@LANGS = (
|
||||
"en_US",
|
||||
"de_DE",
|
||||
"sl_SI",
|
||||
"it_IT",
|
||||
"nl_NL",
|
||||
"pt_PT",
|
||||
"fr_FR",
|
||||
"nn_NO",
|
||||
"fi_FI",
|
||||
"pl_PL",
|
||||
"es_ES",
|
||||
"el_GR",
|
||||
"sv_SE",
|
||||
"ro_RO",
|
||||
"hu_HU",
|
||||
"ca_ES",
|
||||
"ru_RU",
|
||||
"hr_HR",
|
||||
"et_EE",
|
||||
"da_DK",
|
||||
"cs_CZ",
|
||||
"tr_TR"
|
||||
);
|
||||
|
||||
@CHARSETS = (
|
||||
"ISO-8859-15",
|
||||
"ISO-8859-15",
|
||||
"ISO-8859-2",
|
||||
"ISO-8859-15",
|
||||
"ISO-8859-15",
|
||||
"ISO-8859-1",
|
||||
"ISO-8859-1",
|
||||
"ISO-8859-1",
|
||||
"ISO-8859-15",
|
||||
"ISO-8859-2",
|
||||
"ISO-8859-15",
|
||||
"ISO-8859-7",
|
||||
"ISO-8859-1",
|
||||
"ISO-8859-2",
|
||||
"ISO-8859-2",
|
||||
"ISO-8859-1",
|
||||
"ISO-8859-5",
|
||||
"ISO-8859-2",
|
||||
"ISO-8859-13",
|
||||
"ISO-8859-15",
|
||||
"ISO-8859-2",
|
||||
"ISO-8859-9",
|
||||
);
|
||||
|
||||
@TRANSLATORS = (
|
||||
"Klaus Schmidinger <kls\@cadsoft.de>, 2000",
|
||||
"Klaus Schmidinger <kls\@cadsoft.de>, 2000",
|
||||
"Miha Setina <mihasetina\@softhome.net>, 2000; Matjaz Thaler <matjaz.thaler\@guest.arnes.si>, 2003",
|
||||
"Alberto Carraro <bertocar\@tin.it>, 2001; Antonio Ospite <ospite\@studenti.unina.it>, 2003; Sean Carlos <seanc\@libero.it>, 2005",
|
||||
"Arnold Niessen <niessen\@iae.nl> <arnold.niessen\@philips.com>, 2001; Hans Dingemans <hans.dingemans\@tacticalops.nl>, 2003; Maarten Wisse <Maarten.Wisse\@urz.uni-hd.de>, 2005",
|
||||
"Paulo Lopes <pmml\@netvita.pt>, 2001",
|
||||
"Jean-Claude Repetto <jc\@repetto.org>, 2001; Olivier Jacques <jacquesolivier\@hotmail.com>, 2003; Gregoire Favre <greg\@magma.unil.ch>, 2003; Nicolas Huillard <nhuillard\@e-dition.fr>, 2005",
|
||||
"Jørgen Tvedt <pjtvedt\@online.no>, 2001; Truls Slevigen <truls\@slevigen.no>, 2002",
|
||||
"Hannu Savolainen <hannu\@opensound.com>, 2002; Jaakko Hyvätti <jaakko\@hyvatti.iki.fi>, 2002; Niko Tarnanen <niko.tarnanen\@hut.fi>, 2003; Rolf Ahrenberg <rahrenbe\@cc.hut.fi>, 2003",
|
||||
"Michael Rakowski <mrak\@gmx.de>, 2002",
|
||||
"Ruben Nunez Francisco <ruben.nunez\@tang-it.com>, 2002",
|
||||
"Dimitrios Dimitrakos <mail\@dimitrios.de>, 2002",
|
||||
"Tomas Prybil <tomas\@prybil.se>, 2002; Jan Ekholm <chakie\@infa.abo.fi>, 2003",
|
||||
"Paul Lacatus <paul\@campina.iiruc.ro>, 2002; Lucian Muresan <lucianm\@users.sourceforge.net>, 2004",
|
||||
"Istvan Koenigsberger <istvnko\@hotmail.com>, 2002; Guido Josten <guido.josten\@t-online.de>, 2002",
|
||||
"Marc Rovira Vall <tm05462\@salleURL.edu>, 2003; Ramon Roca <ramon.roca\@xcombo.com>, 2003; Jordi Vilà <jvila\@tinet.org>, 2003",
|
||||
"Vyacheslav Dikonov <sdiconov\@mail.ru>, 2004",
|
||||
"Drazen Dupor <drazen.dupor\@dupor.com>, 2004; Dino Ravnic <dino.ravnic\@fer.hr>, 2004",
|
||||
"Arthur Konovalov <kasjas\@hot.ee>, 2004",
|
||||
"Mogens Elneff <mogens\@elneff.dk>, 2004",
|
||||
"Vladimír Bárta <vladimir.barta\@k2atmitec.cz>, 2006",
|
||||
"Oktay Yolgeçen <oktay_73\@yahoo.de>, 2007"
|
||||
);
|
||||
|
||||
@LASTTRANSLATOR = (
|
||||
"Klaus Schmidinger <kls\@cadsoft.de>",
|
||||
"Klaus Schmidinger <kls\@cadsoft.de>",
|
||||
"Matjaz Thaler <matjaz.thaler\@guest.arnes.si>",
|
||||
"Sean Carlos <seanc\@libero.it>",
|
||||
"Maarten Wisse <Maarten.Wisse\@urz.uni-hd.de>",
|
||||
"Paulo Lopes <pmml\@netvita.pt>",
|
||||
"Nicolas Huillard <nhuillard\@e-dition.fr>",
|
||||
"Truls Slevigen <truls\@slevigen.no>",
|
||||
"Rolf Ahrenberg <rahrenbe\@cc.hut.fi>",
|
||||
"Michael Rakowski <mrak\@gmx.de>",
|
||||
"Ruben Nunez Francisco <ruben.nunez\@tang-it.com>",
|
||||
"Dimitrios Dimitrakos <mail\@dimitrios.de>",
|
||||
"Tomas Prybil <tomas\@prybil.se>",
|
||||
"Lucian Muresan <lucianm\@users.sourceforge.net>",
|
||||
"Istvan Koenigsberger <istvnko\@hotmail.com>, Guido Josten <guido.josten\@t-online.de>",
|
||||
"Jordi Vilà <jvila\@tinet.org>",
|
||||
"Vyacheslav Dikonov <sdiconov\@mail.ru>",
|
||||
"Drazen Dupor <drazen.dupor\@dupor.com>",
|
||||
"Arthur Konovalov <kasjas\@hot.ee>",
|
||||
"Mogens Elneff <mogens\@elneff.dk>",
|
||||
"Vladimír Bárta <vladimir.barta\@k2atmitec.cz>",
|
||||
"Oktay Yolgeçen <oktay_73\@yahoo.de>"
|
||||
);
|
||||
|
||||
# Collect all translated texts:
|
||||
|
||||
open(F, $I18NFILE) || die "$I18NFILE: $!\n";
|
||||
while (<F>) {
|
||||
chomp;
|
||||
s/\t/ /g; # get rid of tabs
|
||||
s/ *$//; # get rid of trailing blanks
|
||||
s/^ *\/\/.*//; # remove comment lines
|
||||
s/, *\/\/.*/,/; # strip trailing comments
|
||||
next if (/^ *$/); # skip empty lines
|
||||
next unless ($found or $found = /const *tI18nPhrase .*{/); # sync on phrases
|
||||
next if (/const *tI18nPhrase .*{/); # skip sync line
|
||||
last if (/{ *NULL *}/); # stop after last phrase
|
||||
if (/{ *(.*),/) {
|
||||
$Original = $1;
|
||||
$Index = 0;
|
||||
}
|
||||
elsif (/}/) {
|
||||
}
|
||||
else {
|
||||
$Translated = $_;
|
||||
$Translated =~ s/ *(.*),/$1/;
|
||||
$Index++;
|
||||
$Map{$Original}[$Index] = $Translated;
|
||||
}
|
||||
}
|
||||
close(F);
|
||||
|
||||
# Generate the .pot file:
|
||||
|
||||
(mkdir($PODIR) || die "$PODIR: $!\n") unless -d $PODIR;
|
||||
|
||||
system("$XGETTEXT -o $POTFILE *.c");
|
||||
|
||||
# Generate .po files for all languages:
|
||||
|
||||
open(POT, $POTFILE) || die "$POTFILE: $!\n";
|
||||
@POT = <POT>;
|
||||
close(POT);
|
||||
|
||||
for ($Index = 1; $LANGS[$Index]; $Index++) {
|
||||
|
||||
$Authors = "# " . join("\n# ", split(/; */, $TRANSLATORS[$Index])) . "\n";
|
||||
|
||||
$POFILE = "$PODIR/$LANGS[$Index].po";
|
||||
open(PO, ">$POFILE") || die "$POFILE: $!\n";
|
||||
$msgid = "";
|
||||
for (@POT) {
|
||||
next if (/^#, fuzzy$/); # skip the 'fuzzy' keyword
|
||||
$msgid = $1 if (/^msgid (".+")/);
|
||||
$date = $1 if (/POT-Creation-Date: (.*)\\n/);
|
||||
$s = $_;
|
||||
if (!$msgid) {
|
||||
$s =~ s/SOME DESCRIPTIVE TITLE/$TITLE/;
|
||||
$s =~ s/YEAR THE PACKAGE'S COPYRIGHT HOLDER/$COPYRIGHT/;
|
||||
$s =~ s/PACKAGE/$PACKAGE/;
|
||||
$s =~ s/VERSION/$VERSION/;
|
||||
$s = $Authors if (/FIRST AUTHOR/);
|
||||
$s =~ s/YEAR-MO-DA HO:MI\+ZONE/$date/;
|
||||
$s =~ s/FULL NAME <EMAIL\@ADDRESS>/$LASTTRANSLATOR[$Index]/;
|
||||
$s =~ s/LANGUAGE <LL\@li\.org>/$LANGUAGETEAM/;
|
||||
$s =~ s/CHARSET/$CHARSETS[$Index]/;
|
||||
}
|
||||
else {
|
||||
$s =~ s/""/$Map{$msgid}[$Index]/ if ($msgid && /^msgstr ""/ && defined $Map{$msgid}[$Index]);
|
||||
$Used{$msgid} = 1;
|
||||
}
|
||||
print PO $s;
|
||||
}
|
||||
close(PO);
|
||||
}
|
||||
|
||||
# Report missing phrases:
|
||||
|
||||
for (keys %Map) {
|
||||
push(@Missing, "$_\n") unless $Used{$_};
|
||||
}
|
||||
|
||||
if (@Missing) {
|
||||
print "Missing phrases (may need to use trNOOP):\n\n";
|
||||
print sort(@Missing);
|
||||
}
|
||||
|
||||
# Adjust the Makefile:
|
||||
|
||||
$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))))
|
||||
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)
|
||||
|
||||
$(I18Npo): $(I18Npot)
|
||||
msgmerge -U --no-wrap -F --backup=none -q $@ $<
|
||||
|
||||
i18n: $(I18Nmo)
|
||||
@mkdir -p $(LOCALEDIR)
|
||||
for i in $(I18Ndirs); do\
|
||||
mkdir -p $(LOCALEDIR)/$$i/LC_MESSAGES;\
|
||||
cp $(PODIR)/$$i.mo $(LOCALEDIR)/$$i/LC_MESSAGES/$(PLUGIN).mo;\
|
||||
done
|
||||
|
||||
};
|
||||
|
||||
open(OLD, "Makefile") || die "Makefile: $!";
|
||||
open(NEW, ">Makefile.new") || die "Makefile.new: $!";
|
||||
while (<OLD>) {
|
||||
chomp;
|
||||
if (/Targets:/) {
|
||||
print NEW $MAKEI18N;
|
||||
}
|
||||
elsif (/^all:/) {
|
||||
$_ .= " i18n";
|
||||
}
|
||||
elsif (/^clean:/) {
|
||||
$_ .= "\n\t\@-rm -f \$(PODIR)/*.mo \$(PODIR)/*.pot";
|
||||
}
|
||||
print NEW "$_\n";
|
||||
}
|
||||
close(NEW);
|
||||
close(OLD);
|
51
i18n.h
51
i18n.h
@ -4,25 +4,58 @@
|
||||
* See the main source file 'vdr.c' for copyright information and
|
||||
* how to reach the author.
|
||||
*
|
||||
* $Id: i18n.h 1.20 2007/05/28 11:43:14 kls Exp $
|
||||
* $Id: i18n.h 1.21 2007/08/10 13:53:57 kls Exp $
|
||||
*/
|
||||
|
||||
#ifndef __I18N_H
|
||||
#define __I18N_H
|
||||
|
||||
#include <stdio.h>
|
||||
#include "tools.h"
|
||||
|
||||
const int I18nNumLanguages = 22;
|
||||
typedef const char *tI18nPhrase[22]; ///< obsolete - switch to 'gettext'!
|
||||
|
||||
typedef const char *tI18nPhrase[I18nNumLanguages];
|
||||
|
||||
void I18nRegister(const tI18nPhrase * const Phrases, const char *Plugin);
|
||||
#define I18N_DEFAULT_LOCALE "en_US"
|
||||
#define I18N_MAX_LOCALE_LEN 16 // for buffers that hold en_US etc.
|
||||
#define I18N_MAX_LANGUAGES 256 // for buffers that hold all available languages
|
||||
|
||||
void I18nInitialize(void);
|
||||
///< Detects all available locales and loads the language names and codes.
|
||||
void I18nRegister(const char *Plugin);
|
||||
///< Registers the named plugin, so that it can use internationalized texts.
|
||||
void I18nSetLocale(const char *Locale);
|
||||
///< Sets the current locale to Locale. The default locale is "en_US".
|
||||
///< If no such locale has been found in the call to I18nInitialize(),
|
||||
///< nothing happens.
|
||||
int I18nCurrentLanguage(void);
|
||||
///< Returns the index of the current language. This number stays the
|
||||
///< same for any given language while the program is running, but may
|
||||
///< be different when the program is run again (for instance because
|
||||
///< a locale has been added or removed). The default locale ("en_US")
|
||||
///< always has a zero index.
|
||||
void I18nSetLanguage(int Language);
|
||||
///< Sets the current language index to Language. If Language is outside
|
||||
///< the range of available languages, nothing happens.
|
||||
const cStringList *I18nLanguages(void);
|
||||
///< Returns the list of available languages. Values returned by
|
||||
///< I18nCurrentLanguage() are indexes into this list.
|
||||
const char *I18nTranslate(const char *s, const char *Plugin = NULL) __attribute_format_arg__(1);
|
||||
|
||||
const char * const * I18nLanguages(void);
|
||||
const char *I18nLanguageCode(int Index);
|
||||
///< Translates the given string (with optional Plugin context) into
|
||||
///< the current language. If no translation is available, the original
|
||||
///< string will be returned.
|
||||
const char *I18nLocale(int Language);
|
||||
///< Returns the locale code of the given Language (which is an index as
|
||||
///< returned by I18nCurrentLanguage()). If Language is outside the range
|
||||
///< of available languages, NULL is returned.
|
||||
const char *I18nLanguageCode(int Language);
|
||||
///< Returns the three letter language code of the given Language (which
|
||||
///< is an index as returned by I18nCurrentLanguage()). If Language is
|
||||
///< outside the range of available languages, NULL is returned.
|
||||
///< The returned string may consist of several alternative three letter
|
||||
///< language codes, separated by commas (as in "deu,ger").
|
||||
int I18nLanguageIndex(const char *Code);
|
||||
///< Returns the index of the language with the given three letter
|
||||
///< language Code. If no suitable language is found, -1 is returned.
|
||||
const char *I18nNormalizeLanguageCode(const char *Code);
|
||||
///< Returns a 3 letter language code that may not be zero terminated.
|
||||
///< If no normalized language code can be found, the given Code is returned.
|
||||
@ -44,4 +77,6 @@ bool I18nIsPreferredLanguage(int *PreferredLanguages, const char *LanguageCode,
|
||||
#define tr(s) I18nTranslate(s)
|
||||
#endif
|
||||
|
||||
#define trNOOP(s) (s)
|
||||
|
||||
#endif //__I18N_H
|
||||
|
@ -4,7 +4,7 @@
|
||||
* See the main source file 'vdr.c' for copyright information and
|
||||
* how to reach the author.
|
||||
*
|
||||
* $Id: interface.c 1.75 2006/03/31 14:20:04 kls Exp $
|
||||
* $Id: interface.c 1.76 2007/08/04 14:39:25 kls Exp $
|
||||
*/
|
||||
|
||||
#include "interface.h"
|
||||
@ -87,9 +87,7 @@ bool cInterface::QueryKeys(cRemote *Remote, cSkinDisplayMenu *DisplayMenu)
|
||||
eKeys NewKey = kUp;
|
||||
while (NewKey != kNone) {
|
||||
char *Prompt;
|
||||
char buf[32];
|
||||
snprintf(buf, sizeof(buf), "Key$%s", cKey::ToString(NewKey));
|
||||
asprintf(&Prompt, tr("Press key for '%s'"), tr(buf));
|
||||
asprintf(&Prompt, tr("Press key for '%s'"), cKey::ToString(NewKey, true));
|
||||
DisplayMenu->SetItem(Prompt, 4, false, false);
|
||||
free(Prompt);
|
||||
cRemote::Clear();
|
||||
|
133
keys.c
133
keys.c
@ -4,69 +4,69 @@
|
||||
* See the main source file 'vdr.c' for copyright information and
|
||||
* how to reach the author.
|
||||
*
|
||||
* $Id: keys.c 1.14 2006/10/14 10:18:05 kls Exp $
|
||||
* $Id: keys.c 1.15 2007/08/11 11:30:18 kls Exp $
|
||||
*/
|
||||
|
||||
#include "keys.h"
|
||||
#include "plugin.h"
|
||||
|
||||
static tKey keyTable[] = { // "Up" and "Down" must be the first two keys!
|
||||
{ kUp, "Up" },
|
||||
{ kDown, "Down" },
|
||||
{ kMenu, "Menu" },
|
||||
{ kOk, "Ok" },
|
||||
{ kBack, "Back" },
|
||||
{ kLeft, "Left" },
|
||||
{ kRight, "Right" },
|
||||
{ kRed, "Red" },
|
||||
{ kGreen, "Green" },
|
||||
{ kYellow, "Yellow" },
|
||||
{ kBlue, "Blue" },
|
||||
{ k0, "0" },
|
||||
{ k1, "1" },
|
||||
{ k2, "2" },
|
||||
{ k3, "3" },
|
||||
{ k4, "4" },
|
||||
{ k5, "5" },
|
||||
{ k6, "6" },
|
||||
{ k7, "7" },
|
||||
{ k8, "8" },
|
||||
{ k9, "9" },
|
||||
{ kInfo, "Info" },
|
||||
{ kPlay, "Play" },
|
||||
{ kPause, "Pause" },
|
||||
{ kStop, "Stop" },
|
||||
{ kRecord, "Record" },
|
||||
{ kFastFwd, "FastFwd" },
|
||||
{ kFastRew, "FastRew" },
|
||||
{ kNext, "Next" },
|
||||
{ kPrev, "Prev" },
|
||||
{ kPower, "Power" },
|
||||
{ kChanUp, "Channel+" },
|
||||
{ kChanDn, "Channel-" },
|
||||
{ kChanPrev, "PrevChannel"},
|
||||
{ kVolUp, "Volume+" },
|
||||
{ kVolDn, "Volume-" },
|
||||
{ kMute, "Mute" },
|
||||
{ kAudio, "Audio" },
|
||||
{ kSchedule, "Schedule" },
|
||||
{ kChannels, "Channels" },
|
||||
{ kTimers, "Timers" },
|
||||
{ kRecordings, "Recordings" },
|
||||
{ kSetup, "Setup" },
|
||||
{ kCommands, "Commands" },
|
||||
{ kUser1, "User1" },
|
||||
{ kUser2, "User2" },
|
||||
{ kUser3, "User3" },
|
||||
{ kUser4, "User4" },
|
||||
{ kUser5, "User5" },
|
||||
{ kUser6, "User6" },
|
||||
{ kUser7, "User7" },
|
||||
{ kUser8, "User8" },
|
||||
{ kUser9, "User9" },
|
||||
{ kNone, "" },
|
||||
{ k_Setup, "_Setup" },
|
||||
{ kNone, NULL },
|
||||
{ kUp, trNOOP("Key$Up") },
|
||||
{ kDown, trNOOP("Key$Down") },
|
||||
{ kMenu, trNOOP("Key$Menu") },
|
||||
{ kOk, trNOOP("Key$Ok") },
|
||||
{ kBack, trNOOP("Key$Back") },
|
||||
{ kLeft, trNOOP("Key$Left") },
|
||||
{ kRight, trNOOP("Key$Right") },
|
||||
{ kRed, trNOOP("Key$Red") },
|
||||
{ kGreen, trNOOP("Key$Green") },
|
||||
{ kYellow, trNOOP("Key$Yellow") },
|
||||
{ kBlue, trNOOP("Key$Blue") },
|
||||
{ k0, "0" },
|
||||
{ k1, "1" },
|
||||
{ k2, "2" },
|
||||
{ k3, "3" },
|
||||
{ k4, "4" },
|
||||
{ k5, "5" },
|
||||
{ k6, "6" },
|
||||
{ k7, "7" },
|
||||
{ k8, "8" },
|
||||
{ k9, "9" },
|
||||
{ kInfo, trNOOP("Key$Info") },
|
||||
{ kPlay, trNOOP("Key$Play") },
|
||||
{ kPause, trNOOP("Key$Pause") },
|
||||
{ kStop, trNOOP("Key$Stop") },
|
||||
{ kRecord, trNOOP("Key$Record") },
|
||||
{ kFastFwd, trNOOP("Key$FastFwd") },
|
||||
{ kFastRew, trNOOP("Key$FastRew") },
|
||||
{ kNext, trNOOP("Key$Next") },
|
||||
{ kPrev, trNOOP("Key$Prev") },
|
||||
{ kPower, trNOOP("Key$Power") },
|
||||
{ kChanUp, trNOOP("Key$Channel+") },
|
||||
{ kChanDn, trNOOP("Key$Channel-") },
|
||||
{ kChanPrev, trNOOP("Key$PrevChannel") },
|
||||
{ kVolUp, trNOOP("Key$Volume+") },
|
||||
{ kVolDn, trNOOP("Key$Volume-") },
|
||||
{ kMute, trNOOP("Key$Mute") },
|
||||
{ kAudio, trNOOP("Key$Audio") },
|
||||
{ kSchedule, trNOOP("Key$Schedule") },
|
||||
{ kChannels, trNOOP("Key$Channels") },
|
||||
{ kTimers, trNOOP("Key$Timers") },
|
||||
{ kRecordings, trNOOP("Key$Recordings") },
|
||||
{ kSetup, trNOOP("Key$Setup") },
|
||||
{ kCommands, trNOOP("Key$Commands") },
|
||||
{ kUser1, trNOOP("Key$User1") },
|
||||
{ kUser2, trNOOP("Key$User2") },
|
||||
{ kUser3, trNOOP("Key$User3") },
|
||||
{ kUser4, trNOOP("Key$User4") },
|
||||
{ kUser5, trNOOP("Key$User5") },
|
||||
{ kUser6, trNOOP("Key$User6") },
|
||||
{ kUser7, trNOOP("Key$User7") },
|
||||
{ kUser8, trNOOP("Key$User8") },
|
||||
{ kUser9, trNOOP("Key$User9") },
|
||||
{ kNone, "" },
|
||||
{ k_Setup, "_Setup" },
|
||||
{ kNone, NULL },
|
||||
};
|
||||
|
||||
// -- cKey -------------------------------------------------------------------
|
||||
@ -121,18 +121,29 @@ eKeys cKey::FromString(const char *Name)
|
||||
{
|
||||
if (Name) {
|
||||
for (tKey *k = keyTable; k->name; k++) {
|
||||
if (strcasecmp(k->name, Name) == 0)
|
||||
const char *n = k->name;
|
||||
const char *p = strchr(n, '$');
|
||||
if (p)
|
||||
n = p + 1;
|
||||
if (strcasecmp(n, Name) == 0)
|
||||
return k->type;
|
||||
}
|
||||
}
|
||||
return kNone;
|
||||
}
|
||||
|
||||
const char *cKey::ToString(eKeys Key)
|
||||
const char *cKey::ToString(eKeys Key, bool Translate)
|
||||
{
|
||||
for (tKey *k = keyTable; k->name; k++) {
|
||||
if (k->type == Key)
|
||||
return k->name;
|
||||
if (k->type == Key) {
|
||||
const char *n = k->name;
|
||||
if (Translate)
|
||||
n = tr(n);
|
||||
const char *p = strchr(n, '$');
|
||||
if (p)
|
||||
n = p + 1;
|
||||
return n;
|
||||
}
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
4
keys.h
4
keys.h
@ -4,7 +4,7 @@
|
||||
* See the main source file 'vdr.c' for copyright information and
|
||||
* how to reach the author.
|
||||
*
|
||||
* $Id: keys.h 1.11 2007/02/25 10:49:35 kls Exp $
|
||||
* $Id: keys.h 1.12 2007/08/04 14:40:23 kls Exp $
|
||||
*/
|
||||
|
||||
#ifndef __KEYS_H
|
||||
@ -100,7 +100,7 @@ public:
|
||||
bool Parse(char *s);
|
||||
bool Save(FILE *f);
|
||||
static eKeys FromString(const char *Name);
|
||||
static const char *ToString(eKeys Key);
|
||||
static const char *ToString(eKeys Key, bool Translate = false);
|
||||
};
|
||||
|
||||
class cKeys : public cConfig<cKey> {
|
||||
|
61
menu.c
61
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.456 2007/06/23 09:27:13 kls Exp $
|
||||
* $Id: menu.c 1.459 2007/08/12 10:44:35 kls Exp $
|
||||
*/
|
||||
|
||||
#include "menu.h"
|
||||
@ -630,7 +630,7 @@ eOSState cMenuText::ProcessKey(eKeys Key)
|
||||
case kRight|k_Repeat:
|
||||
case kRight:
|
||||
DisplayMenu()->Scroll(NORMALKEY(Key) == kUp || NORMALKEY(Key) == kLeft, NORMALKEY(Key) == kLeft || NORMALKEY(Key) == kRight);
|
||||
cStatus::MsgOsdTextItem(NULL, NORMALKEY(Key) == kUp);
|
||||
cStatus::MsgOsdTextItem(NULL, NORMALKEY(Key) == kUp || NORMALKEY(Key) == kLeft);
|
||||
return osContinue;
|
||||
default: break;
|
||||
}
|
||||
@ -980,7 +980,7 @@ eOSState cMenuEvent::ProcessKey(eKeys Key)
|
||||
case kRight|k_Repeat:
|
||||
case kRight:
|
||||
DisplayMenu()->Scroll(NORMALKEY(Key) == kUp || NORMALKEY(Key) == kLeft, NORMALKEY(Key) == kLeft || NORMALKEY(Key) == kRight);
|
||||
cStatus::MsgOsdTextItem(NULL, NORMALKEY(Key) == kUp);
|
||||
cStatus::MsgOsdTextItem(NULL, NORMALKEY(Key) == kUp || NORMALKEY(Key) == kLeft);
|
||||
return osContinue;
|
||||
default: break;
|
||||
}
|
||||
@ -1809,7 +1809,7 @@ eOSState cMenuRecording::ProcessKey(eKeys Key)
|
||||
case kRight|k_Repeat:
|
||||
case kRight:
|
||||
DisplayMenu()->Scroll(NORMALKEY(Key) == kUp || NORMALKEY(Key) == kLeft, NORMALKEY(Key) == kLeft || NORMALKEY(Key) == kRight);
|
||||
cStatus::MsgOsdTextItem(NULL, NORMALKEY(Key) == kUp);
|
||||
cStatus::MsgOsdTextItem(NULL, NORMALKEY(Key) == kUp || NORMALKEY(Key) == kLeft);
|
||||
return osContinue;
|
||||
default: break;
|
||||
}
|
||||
@ -2153,6 +2153,7 @@ void cMenuSetupBase::Store(void)
|
||||
class cMenuSetupOSD : public cMenuSetupBase {
|
||||
private:
|
||||
const char *useSmallFontTexts[3];
|
||||
int osdLanguageIndex;
|
||||
int numSkins;
|
||||
int originalSkinIndex;
|
||||
int skinIndex;
|
||||
@ -2171,6 +2172,7 @@ public:
|
||||
|
||||
cMenuSetupOSD::cMenuSetupOSD(void)
|
||||
{
|
||||
osdLanguageIndex = I18nCurrentLanguage();
|
||||
numSkins = Skins.Count();
|
||||
skinIndex = originalSkinIndex = Skins.Current()->Index();
|
||||
skinDescriptions = new const char*[numSkins];
|
||||
@ -2203,7 +2205,7 @@ void cMenuSetupOSD::Set(void)
|
||||
useSmallFontTexts[2] = tr("always");
|
||||
Clear();
|
||||
SetSection(tr("OSD"));
|
||||
Add(new cMenuEditStraItem(tr("Setup.OSD$Language"), &data.OSDLanguage, I18nNumLanguages, I18nLanguages()));
|
||||
Add(new cMenuEditStraItem(tr("Setup.OSD$Language"), &osdLanguageIndex, I18nLanguages()->Size(), &I18nLanguages()->At(0)));
|
||||
Add(new cMenuEditStraItem(tr("Setup.OSD$Skin"), &skinIndex, numSkins, skinDescriptions));
|
||||
if (themes.NumThemes())
|
||||
Add(new cMenuEditStraItem(tr("Setup.OSD$Theme"), &themeIndex, themes.NumThemes(), themes.Descriptions()));
|
||||
@ -2237,6 +2239,7 @@ eOSState cMenuSetupOSD::ProcessKey(eKeys Key)
|
||||
bool ModifiedApperance = false;
|
||||
|
||||
if (Key == kOk) {
|
||||
I18nSetLocale(data.OSDLanguage);
|
||||
if (skinIndex != originalSkinIndex) {
|
||||
cSkin *Skin = Skins.Get(skinIndex);
|
||||
if (Skin) {
|
||||
@ -2273,16 +2276,17 @@ eOSState cMenuSetupOSD::ProcessKey(eKeys Key)
|
||||
}
|
||||
}
|
||||
|
||||
int osdLanguage = data.OSDLanguage;
|
||||
int oldSkinIndex = skinIndex;
|
||||
int oldOsdLanguageIndex = osdLanguageIndex;
|
||||
eOSState state = cMenuSetupBase::ProcessKey(Key);
|
||||
|
||||
if (ModifiedApperance)
|
||||
SetDisplayMenu();
|
||||
|
||||
if (data.OSDLanguage != osdLanguage || skinIndex != oldSkinIndex) {
|
||||
int OriginalOSDLanguage = Setup.OSDLanguage;
|
||||
Setup.OSDLanguage = data.OSDLanguage;
|
||||
if (osdLanguageIndex != oldOsdLanguageIndex || skinIndex != oldSkinIndex) {
|
||||
strn0cpy(data.OSDLanguage, I18nLocale(osdLanguageIndex), sizeof(data.OSDLanguage));
|
||||
int OriginalOSDLanguage = I18nCurrentLanguage();
|
||||
I18nSetLanguage(osdLanguageIndex);
|
||||
|
||||
cSkin *Skin = Skins.Get(skinIndex);
|
||||
if (Skin) {
|
||||
@ -2294,7 +2298,7 @@ eOSState cMenuSetupOSD::ProcessKey(eKeys Key)
|
||||
}
|
||||
|
||||
Set();
|
||||
Setup.OSDLanguage = OriginalOSDLanguage;
|
||||
I18nSetLanguage(OriginalOSDLanguage);
|
||||
}
|
||||
return state;
|
||||
}
|
||||
@ -2313,7 +2317,7 @@ public:
|
||||
|
||||
cMenuSetupEPG::cMenuSetupEPG(void)
|
||||
{
|
||||
for (numLanguages = 0; numLanguages < I18nNumLanguages && data.EPGLanguages[numLanguages] >= 0; numLanguages++)
|
||||
for (numLanguages = 0; numLanguages < I18nLanguages()->Size() && data.EPGLanguages[numLanguages] >= 0; numLanguages++)
|
||||
;
|
||||
originalNumLanguages = numLanguages;
|
||||
SetSection(tr("EPG"));
|
||||
@ -2333,9 +2337,11 @@ void cMenuSetupEPG::Setup(void)
|
||||
Add(new cMenuEditBoolItem(tr("Setup.EPG$Set system time"), &data.SetSystemTime));
|
||||
if (data.SetSystemTime)
|
||||
Add(new cMenuEditTranItem(tr("Setup.EPG$Use time from transponder"), &data.TimeTransponder, &data.TimeSource));
|
||||
Add(new cMenuEditIntItem( tr("Setup.EPG$Preferred languages"), &numLanguages, 0, I18nNumLanguages));
|
||||
// TRANSLATORS: note the plural!
|
||||
Add(new cMenuEditIntItem( tr("Setup.EPG$Preferred languages"), &numLanguages, 0, I18nLanguages()->Size()));
|
||||
for (int i = 0; i < numLanguages; i++)
|
||||
Add(new cMenuEditStraItem(tr("Setup.EPG$Preferred language"), &data.EPGLanguages[i], I18nNumLanguages, I18nLanguages()));
|
||||
// TRANSLATORS: note the singular!
|
||||
Add(new cMenuEditStraItem(tr("Setup.EPG$Preferred language"), &data.EPGLanguages[i], I18nLanguages()->Size(), &I18nLanguages()->At(0)));
|
||||
|
||||
SetCurrent(Get(current));
|
||||
Display();
|
||||
@ -2365,7 +2371,7 @@ eOSState cMenuSetupEPG::ProcessKey(eKeys Key)
|
||||
if (numLanguages != oldnumLanguages || data.SetSystemTime != oldSetSystemTime) {
|
||||
for (int i = oldnumLanguages; i < numLanguages; i++) {
|
||||
data.EPGLanguages[i] = 0;
|
||||
for (int l = 0; l < I18nNumLanguages; l++) {
|
||||
for (int l = 0; l < I18nLanguages()->Size(); l++) {
|
||||
int k;
|
||||
for (k = 0; k < oldnumLanguages; k++) {
|
||||
if (data.EPGLanguages[k] == l)
|
||||
@ -2404,7 +2410,7 @@ public:
|
||||
|
||||
cMenuSetupDVB::cMenuSetupDVB(void)
|
||||
{
|
||||
for (numAudioLanguages = 0; numAudioLanguages < I18nNumLanguages && data.AudioLanguages[numAudioLanguages] >= 0; numAudioLanguages++)
|
||||
for (numAudioLanguages = 0; numAudioLanguages < I18nLanguages()->Size() && data.AudioLanguages[numAudioLanguages] >= 0; numAudioLanguages++)
|
||||
;
|
||||
originalNumAudioLanguages = numAudioLanguages;
|
||||
videoDisplayFormatTexts[0] = tr("pan&scan");
|
||||
@ -2433,9 +2439,9 @@ void cMenuSetupDVB::Setup(void)
|
||||
Add(new cMenuEditStraItem(tr("Setup.DVB$Video display format"), &data.VideoDisplayFormat, 3, videoDisplayFormatTexts));
|
||||
Add(new cMenuEditBoolItem(tr("Setup.DVB$Use Dolby Digital"), &data.UseDolbyDigital));
|
||||
Add(new cMenuEditStraItem(tr("Setup.DVB$Update channels"), &data.UpdateChannels, 6, updateChannelsTexts));
|
||||
Add(new cMenuEditIntItem( tr("Setup.DVB$Audio languages"), &numAudioLanguages, 0, I18nNumLanguages));
|
||||
Add(new cMenuEditIntItem( tr("Setup.DVB$Audio languages"), &numAudioLanguages, 0, I18nLanguages()->Size()));
|
||||
for (int i = 0; i < numAudioLanguages; i++)
|
||||
Add(new cMenuEditStraItem(tr("Setup.DVB$Audio language"), &data.AudioLanguages[i], I18nNumLanguages, I18nLanguages()));
|
||||
Add(new cMenuEditStraItem(tr("Setup.DVB$Audio language"), &data.AudioLanguages[i], I18nLanguages()->Size(), &I18nLanguages()->At(0)));
|
||||
|
||||
SetCurrent(Get(current));
|
||||
Display();
|
||||
@ -2455,7 +2461,7 @@ eOSState cMenuSetupDVB::ProcessKey(eKeys Key)
|
||||
if (numAudioLanguages != oldnumAudioLanguages) {
|
||||
for (int i = oldnumAudioLanguages; i < numAudioLanguages; i++) {
|
||||
data.AudioLanguages[i] = 0;
|
||||
for (int l = 0; l < I18nNumLanguages; l++) {
|
||||
for (int l = 0; l < I18nLanguages()->Size(); l++) {
|
||||
int k;
|
||||
for (k = 0; k < oldnumAudioLanguages; k++) {
|
||||
if (data.AudioLanguages[k] == l)
|
||||
@ -2826,7 +2832,7 @@ eOSState cMenuSetup::Restart(void)
|
||||
|
||||
eOSState cMenuSetup::ProcessKey(eKeys Key)
|
||||
{
|
||||
int osdLanguage = Setup.OSDLanguage;
|
||||
int osdLanguage = I18nCurrentLanguage();
|
||||
eOSState state = cOsdMenu::ProcessKey(Key);
|
||||
|
||||
switch (state) {
|
||||
@ -2842,7 +2848,7 @@ eOSState cMenuSetup::ProcessKey(eKeys Key)
|
||||
case osUser10: return Restart();
|
||||
default: ;
|
||||
}
|
||||
if (Setup.OSDLanguage != osdLanguage) {
|
||||
if (I18nCurrentLanguage() != osdLanguage) {
|
||||
Set();
|
||||
if (!HasSubMenu())
|
||||
Display();
|
||||
@ -2868,7 +2874,8 @@ cMenuPluginItem::cMenuPluginItem(const char *Name, int Index)
|
||||
|
||||
// --- cMenuMain -------------------------------------------------------------
|
||||
|
||||
#define STOP_RECORDING tr(" Stop recording ")
|
||||
// TRANSLATORS: note the leading and trailing blanks!
|
||||
#define STOP_RECORDING trNOOP(" Stop recording ")
|
||||
|
||||
cOsdObject *cMenuMain::pluginOsdObject = NULL;
|
||||
|
||||
@ -2967,6 +2974,7 @@ bool cMenuMain::Update(bool Force)
|
||||
replaying = NewReplaying;
|
||||
// Replay control:
|
||||
if (replaying && !stopReplayItem)
|
||||
// TRANSLATORS: note the leading blank!
|
||||
Add(stopReplayItem = new cOsdItem(tr(" Stop replaying"), osStopReplay));
|
||||
else if (stopReplayItem && !replaying) {
|
||||
Del(stopReplayItem->Index());
|
||||
@ -2980,6 +2988,7 @@ bool cMenuMain::Update(bool Force)
|
||||
// Editing control:
|
||||
bool CutterActive = cCutter::Active();
|
||||
if (CutterActive && !cancelEditingItem) {
|
||||
// TRANSLATORS: note the leading blank!
|
||||
Add(cancelEditingItem = new cOsdItem(tr(" Cancel editing"), osCancelEdit));
|
||||
result = true;
|
||||
}
|
||||
@ -2999,7 +3008,7 @@ bool cMenuMain::Update(bool Force)
|
||||
const char *s = NULL;
|
||||
while ((s = cRecordControls::GetInstantId(s)) != NULL) {
|
||||
char *buffer = NULL;
|
||||
asprintf(&buffer, "%s%s", STOP_RECORDING, s);
|
||||
asprintf(&buffer, "%s%s", tr(STOP_RECORDING), s);
|
||||
cOsdItem *item = new cOsdItem(osStopRecord);
|
||||
item->SetText(buffer, false);
|
||||
Add(item);
|
||||
@ -3015,7 +3024,7 @@ bool cMenuMain::Update(bool Force)
|
||||
eOSState cMenuMain::ProcessKey(eKeys Key)
|
||||
{
|
||||
bool HadSubMenu = HasSubMenu();
|
||||
int osdLanguage = Setup.OSDLanguage;
|
||||
int osdLanguage = I18nCurrentLanguage();
|
||||
eOSState state = cOsdMenu::ProcessKey(Key);
|
||||
HadSubMenu |= HasSubMenu();
|
||||
|
||||
@ -3029,7 +3038,7 @@ eOSState cMenuMain::ProcessKey(eKeys Key)
|
||||
case osStopRecord: if (Interface->Confirm(tr("Stop recording?"))) {
|
||||
cOsdItem *item = Get(Current());
|
||||
if (item) {
|
||||
cRecordControls::Stop(item->Text() + strlen(STOP_RECORDING));
|
||||
cRecordControls::Stop(item->Text() + strlen(tr(STOP_RECORDING)));
|
||||
return osEnd;
|
||||
}
|
||||
}
|
||||
@ -3080,7 +3089,7 @@ eOSState cMenuMain::ProcessKey(eKeys Key)
|
||||
if (!HasSubMenu() && Update(HadSubMenu))
|
||||
Display();
|
||||
if (Key != kNone) {
|
||||
if (Setup.OSDLanguage != osdLanguage) {
|
||||
if (I18nCurrentLanguage() != osdLanguage) {
|
||||
Set();
|
||||
if (!HasSubMenu())
|
||||
Display();
|
||||
@ -3482,6 +3491,7 @@ cDisplayTracks::cDisplayTracks(void)
|
||||
numTracks++;
|
||||
}
|
||||
}
|
||||
descriptions[numTracks] = 0;
|
||||
timeout.Set(TRACKTIMEOUT);
|
||||
displayTracks = Skins.Current()->DisplayTracks(tr("Button$Audio"), numTracks, descriptions);
|
||||
Show();
|
||||
@ -4026,6 +4036,7 @@ bool cReplayControl::ShowProgress(bool Initial)
|
||||
void cReplayControl::TimeSearchDisplay(void)
|
||||
{
|
||||
char buf[64];
|
||||
// TRANSLATORS: note the trailing blank!
|
||||
strcpy(buf, tr("Jump: "));
|
||||
int len = strlen(buf);
|
||||
char h10 = '0' + (timeSearchTime >> 24);
|
||||
|
4
menu.h
4
menu.h
@ -4,7 +4,7 @@
|
||||
* See the main source file 'vdr.c' for copyright information and
|
||||
* how to reach the author.
|
||||
*
|
||||
* $Id: menu.h 1.87 2007/01/05 10:40:54 kls Exp $
|
||||
* $Id: menu.h 1.88 2007/08/12 10:35:42 kls Exp $
|
||||
*/
|
||||
|
||||
#ifndef __MENU_H
|
||||
@ -115,7 +115,7 @@ private:
|
||||
cSkinDisplayTracks *displayTracks;
|
||||
cTimeMs timeout;
|
||||
eTrackType types[ttMaxTrackTypes];
|
||||
char *descriptions[ttMaxTrackTypes];
|
||||
char *descriptions[ttMaxTrackTypes + 1]; // list is NULL terminated
|
||||
int numTracks, track, audioChannel;
|
||||
static cDisplayTracks *currentDisplayTracks;
|
||||
virtual void Show(void);
|
||||
|
@ -4,7 +4,7 @@
|
||||
* See the main source file 'vdr.c' for copyright information and
|
||||
* how to reach the author.
|
||||
*
|
||||
* $Id: menuitems.c 1.49 2007/06/08 15:16:38 kls Exp $
|
||||
* $Id: menuitems.c 1.50 2007/08/04 09:12:18 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 = " abcdefghijklmnopqrstuvwxyz0123456789-.#~,/_@";
|
||||
const char *FileNameChars = trNOOP(" abcdefghijklmnopqrstuvwxyz0123456789-.#~,/_@");
|
||||
|
||||
// --- cMenuEditItem ---------------------------------------------------------
|
||||
|
||||
@ -316,7 +316,7 @@ void cMenuEditStrItem::LeaveEditMode(bool SaveValue)
|
||||
void cMenuEditStrItem::SetHelpKeys(void)
|
||||
{
|
||||
if (InEditMode())
|
||||
cSkinDisplay::Current()->SetButtons(tr("Button$ABC/abc"), tr(insert ? "Button$Overwrite" : "Button$Insert"), tr("Button$Delete"));
|
||||
cSkinDisplay::Current()->SetButtons(tr("Button$ABC/abc"), insert ? tr("Button$Overwrite") : tr("Button$Insert"), tr("Button$Delete"));
|
||||
else
|
||||
cSkinDisplay::Current()->SetButtons(NULL);
|
||||
}
|
||||
|
39
newplugin
39
newplugin
@ -12,7 +12,7 @@
|
||||
# See the main source file 'vdr.c' for copyright information and
|
||||
# how to reach the author.
|
||||
#
|
||||
# $Id: newplugin 1.32 2007/04/28 14:46:39 kls Exp $
|
||||
# $Id: newplugin 1.34 2007/08/12 11:04:39 kls Exp $
|
||||
|
||||
$PLUGIN_NAME = $ARGV[0] || die "Usage: newplugin <name>\n";
|
||||
|
||||
@ -35,7 +35,11 @@ Project's homepage: URL
|
||||
|
||||
Latest version available at: URL
|
||||
|
||||
See the file COPYING for license information.
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
See the file COPYING for more information.
|
||||
|
||||
Description:
|
||||
};
|
||||
@ -109,7 +113,7 @@ OBJS = \$(PLUGIN).o
|
||||
%.o: %.c
|
||||
\$(CXX) \$(CXXFLAGS) -c \$(DEFINES) \$(INCLUDES) \$<
|
||||
|
||||
# Dependencies:
|
||||
### Dependencies:
|
||||
|
||||
MAKEDEP = \$(CXX) -MM -MG
|
||||
DEPFILE = .dependencies
|
||||
@ -118,9 +122,34 @@ DEPFILE = .dependencies
|
||||
|
||||
-include \$(DEPFILE)
|
||||
|
||||
### 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))))
|
||||
I18Npot = \$(PODIR)/\$(PLUGIN).pot
|
||||
|
||||
%.mo: %.po
|
||||
msgfmt -c -o \$\@ \$<
|
||||
|
||||
\$(I18Npot): \$(wildcard *.c)
|
||||
xgettext -C -cTRANSLATORS --no-wrap -F -k -ktr -ktrNOOP --msgid-bugs-address='<see README>' -o \$\@ \$(wildcard *.c)
|
||||
|
||||
\$(I18Npo): \$(I18Npot)
|
||||
msgmerge -U --no-wrap -F --backup=none -q \$\@ \$<
|
||||
|
||||
i18n: \$(I18Nmo)
|
||||
\@mkdir -p \$(LOCALEDIR)
|
||||
for i in \$(I18Ndirs); do\\
|
||||
mkdir -p \$(LOCALEDIR)/\$\$i/LC_MESSAGES;\\
|
||||
cp \$(PODIR)/\$\$i.mo \$(LOCALEDIR)/\$\$i/LC_MESSAGES/\$(PLUGIN).mo;\\
|
||||
done
|
||||
|
||||
### Targets:
|
||||
|
||||
all: libvdr-\$(PLUGIN).so
|
||||
all: libvdr-\$(PLUGIN).so i18n
|
||||
|
||||
libvdr-\$(PLUGIN).so: \$(OBJS)
|
||||
\$(CXX) \$(CXXFLAGS) -shared \$(OBJS) -o \$\@
|
||||
@ -135,7 +164,7 @@ dist: clean
|
||||
\@echo Distribution package created as \$(PACKAGE).tgz
|
||||
|
||||
clean:
|
||||
\@-rm -f \$(OBJS) \$(DEPFILE) *.so *.tgz core* *~
|
||||
\@-rm -f \$(OBJS) \$(DEPFILE) *.so *.tgz core* *~ \$(PODIR)/*.mo \$(PODIR)/*.pot
|
||||
};
|
||||
|
||||
$MAIN = qq
|
||||
|
4
osd.c
4
osd.c
@ -4,7 +4,7 @@
|
||||
* See the main source file 'vdr.c' for copyright information and
|
||||
* how to reach the author.
|
||||
*
|
||||
* $Id: osd.c 1.71 2007/07/20 14:51:36 kls Exp $
|
||||
* $Id: osd.c 1.72 2007/08/12 11:33:17 kls Exp $
|
||||
*/
|
||||
|
||||
#include "osd.h"
|
||||
@ -321,6 +321,8 @@ bool cBitmap::LoadXpm(const char *FileName)
|
||||
|
||||
bool cBitmap::SetXpm(const char *const Xpm[], bool IgnoreNone)
|
||||
{
|
||||
if (!Xpm)
|
||||
return false;
|
||||
const char *const *p = Xpm;
|
||||
int w, h, n, c;
|
||||
if (4 != sscanf(*p, "%d %d %d %d", &w, &h, &n, &c)) {
|
||||
|
14
plugin.c
14
plugin.c
@ -4,7 +4,7 @@
|
||||
* See the main source file 'vdr.c' for copyright information and
|
||||
* how to reach the author.
|
||||
*
|
||||
* $Id: plugin.c 1.25 2007/02/24 13:44:23 kls Exp $
|
||||
* $Id: plugin.c 1.26 2007/08/05 12:48:50 kls Exp $
|
||||
*/
|
||||
|
||||
#include "plugin.h"
|
||||
@ -35,12 +35,12 @@ cPlugin::cPlugin(void)
|
||||
|
||||
cPlugin::~cPlugin()
|
||||
{
|
||||
I18nRegister(NULL, Name());
|
||||
}
|
||||
|
||||
void cPlugin::SetName(const char *s)
|
||||
{
|
||||
name = s;
|
||||
I18nRegister(name);
|
||||
}
|
||||
|
||||
const char *cPlugin::CommandLineHelp(void)
|
||||
@ -130,9 +130,9 @@ cString cPlugin::SVDRPCommand(const char *Command, const char *Option, int &Repl
|
||||
return NULL;
|
||||
}
|
||||
|
||||
void cPlugin::RegisterI18n(const tI18nPhrase * const Phrases)
|
||||
void cPlugin::RegisterI18n(const void *)
|
||||
{
|
||||
I18nRegister(Phrases, Name());
|
||||
dsyslog("plugin '%s' called obsolete function RegisterI18n()", Name());
|
||||
}
|
||||
|
||||
void cPlugin::SetConfigDirectory(const char *Dir)
|
||||
@ -338,10 +338,7 @@ bool cPluginManager::InitializePlugins(void)
|
||||
for (cDll *dll = dlls.First(); dll; dll = dlls.Next(dll)) {
|
||||
cPlugin *p = dll->Plugin();
|
||||
if (p) {
|
||||
int Language = Setup.OSDLanguage;
|
||||
Setup.OSDLanguage = 0; // the i18n texts are only available _after_ Start()
|
||||
isyslog("initializing plugin: %s (%s): %s", p->Name(), p->Version(), p->Description());
|
||||
Setup.OSDLanguage = Language;
|
||||
if (!p->Initialize())
|
||||
return false;
|
||||
}
|
||||
@ -354,10 +351,7 @@ bool cPluginManager::StartPlugins(void)
|
||||
for (cDll *dll = dlls.First(); dll; dll = dlls.Next(dll)) {
|
||||
cPlugin *p = dll->Plugin();
|
||||
if (p) {
|
||||
int Language = Setup.OSDLanguage;
|
||||
Setup.OSDLanguage = 0; // the i18n texts are only available _after_ Start()
|
||||
isyslog("starting plugin: %s", p->Name());
|
||||
Setup.OSDLanguage = Language;
|
||||
if (!p->Start())
|
||||
return false;
|
||||
p->started = true;
|
||||
|
4
plugin.h
4
plugin.h
@ -4,7 +4,7 @@
|
||||
* See the main source file 'vdr.c' for copyright information and
|
||||
* how to reach the author.
|
||||
*
|
||||
* $Id: plugin.h 1.14 2007/02/24 13:45:28 kls Exp $
|
||||
* $Id: plugin.h 1.15 2007/08/04 09:56:26 kls Exp $
|
||||
*/
|
||||
|
||||
#ifndef __PLUGIN_H
|
||||
@ -51,7 +51,7 @@ public:
|
||||
void SetupStore(const char *Name, const char *Value = NULL);
|
||||
void SetupStore(const char *Name, int Value);
|
||||
|
||||
void RegisterI18n(const tI18nPhrase * const Phrases);
|
||||
void RegisterI18n(const void *); ///< This function is obsolete and may be removed in future versions of VDR!
|
||||
|
||||
virtual bool Service(const char *Id, void *Data = NULL);
|
||||
virtual const char **SVDRPHelpPages(void);
|
||||
|
1272
po/ca_ES.po
Normal file
1272
po/ca_ES.po
Normal file
File diff suppressed because it is too large
Load Diff
1270
po/cs_CZ.po
Normal file
1270
po/cs_CZ.po
Normal file
File diff suppressed because it is too large
Load Diff
1270
po/da_DK.po
Normal file
1270
po/da_DK.po
Normal file
File diff suppressed because it is too large
Load Diff
1270
po/de_DE.po
Normal file
1270
po/de_DE.po
Normal file
File diff suppressed because it is too large
Load Diff
1270
po/el_GR.po
Normal file
1270
po/el_GR.po
Normal file
File diff suppressed because it is too large
Load Diff
1270
po/es_ES.po
Normal file
1270
po/es_ES.po
Normal file
File diff suppressed because it is too large
Load Diff
1270
po/et_EE.po
Normal file
1270
po/et_EE.po
Normal file
File diff suppressed because it is too large
Load Diff
1273
po/fi_FI.po
Normal file
1273
po/fi_FI.po
Normal file
File diff suppressed because it is too large
Load Diff
1273
po/fr_FR.po
Normal file
1273
po/fr_FR.po
Normal file
File diff suppressed because it is too large
Load Diff
1271
po/hr_HR.po
Normal file
1271
po/hr_HR.po
Normal file
File diff suppressed because it is too large
Load Diff
1271
po/hu_HU.po
Normal file
1271
po/hu_HU.po
Normal file
File diff suppressed because it is too large
Load Diff
1272
po/it_IT.po
Normal file
1272
po/it_IT.po
Normal file
File diff suppressed because it is too large
Load Diff
1272
po/nl_NL.po
Normal file
1272
po/nl_NL.po
Normal file
File diff suppressed because it is too large
Load Diff
1271
po/nn_NO.po
Normal file
1271
po/nn_NO.po
Normal file
File diff suppressed because it is too large
Load Diff
1270
po/pl_PL.po
Normal file
1270
po/pl_PL.po
Normal file
File diff suppressed because it is too large
Load Diff
1270
po/pt_PT.po
Normal file
1270
po/pt_PT.po
Normal file
File diff suppressed because it is too large
Load Diff
1271
po/ro_RO.po
Normal file
1271
po/ro_RO.po
Normal file
File diff suppressed because it is too large
Load Diff
1270
po/ru_RU.po
Normal file
1270
po/ru_RU.po
Normal file
File diff suppressed because it is too large
Load Diff
1271
po/sl_SI.po
Normal file
1271
po/sl_SI.po
Normal file
File diff suppressed because it is too large
Load Diff
1271
po/sv_SE.po
Normal file
1271
po/sv_SE.po
Normal file
File diff suppressed because it is too large
Load Diff
1270
po/tr_TR.po
Normal file
1270
po/tr_TR.po
Normal file
File diff suppressed because it is too large
Load Diff
@ -4,7 +4,7 @@
|
||||
* See the main source file 'vdr.c' for copyright information and
|
||||
* how to reach the author.
|
||||
*
|
||||
* $Id: receiver.c 1.6 2007/01/05 10:42:29 kls Exp $
|
||||
* $Id: receiver.c 1.7 2007/08/12 11:52:59 kls Exp $
|
||||
*/
|
||||
|
||||
#include "receiver.h"
|
||||
@ -38,7 +38,12 @@ cReceiver::cReceiver(tChannelID ChannelID, int Priority, int Pid, const int *Pid
|
||||
|
||||
cReceiver::~cReceiver()
|
||||
{
|
||||
Detach();
|
||||
if (device) {
|
||||
const char *msg = "ERROR: cReceiver has not been detached yet! This is a design fault and VDR will segfault now!";
|
||||
esyslog(msg);
|
||||
fprintf(stderr, "%s\n", msg);
|
||||
*(char *)0 = 0; // cause a segfault
|
||||
}
|
||||
}
|
||||
|
||||
bool cReceiver::WantsPid(int Pid)
|
||||
|
@ -4,7 +4,7 @@
|
||||
* See the main source file 'vdr.c' for copyright information and
|
||||
* how to reach the author.
|
||||
*
|
||||
* $Id: skinclassic.c 1.17 2007/06/17 13:53:09 kls Exp $
|
||||
* $Id: skinclassic.c 1.18 2007/07/29 12:35:03 kls Exp $
|
||||
*/
|
||||
|
||||
#include "skinclassic.h"
|
||||
@ -549,6 +549,7 @@ void cSkinClassicDisplayVolume::SetVolume(int Current, int Total, bool Mute)
|
||||
osd->DrawText(0, 0, tr("Key$Mute"), Theme.Color(clrVolumePrompt), Theme.Color(clrBackground), font);
|
||||
}
|
||||
else {
|
||||
// TRANSLATORS: note the trailing blank!
|
||||
const char *Prompt = tr("Volume ");
|
||||
int l = font->Width(Prompt);
|
||||
int p = (osd->Width() - l) * Current / Total;
|
||||
|
4
status.h
4
status.h
@ -4,7 +4,7 @@
|
||||
* See the main source file 'vdr.c' for copyright information and
|
||||
* how to reach the author.
|
||||
*
|
||||
* $Id: status.h 1.9 2005/12/31 15:15:25 kls Exp $
|
||||
* $Id: status.h 1.10 2007/08/12 10:34:40 kls Exp $
|
||||
*/
|
||||
|
||||
#ifndef __STATUS_H
|
||||
@ -40,7 +40,7 @@ protected:
|
||||
// absolutely or relative to the current volume.
|
||||
virtual void SetAudioTrack(int Index, const char * const *Tracks) {}
|
||||
// The audio track has been set to the one given by Index, which
|
||||
// points into the Tracks array of strings.
|
||||
// points into the Tracks array of strings. Tracks is NULL terminated.
|
||||
virtual void SetAudioChannel(int AudioChannel) {}
|
||||
// The audio channel has been set to the given value.
|
||||
// 0=stereo, 1=left, 2=right, -1=no information available.
|
||||
|
9
themes.c
9
themes.c
@ -4,7 +4,7 @@
|
||||
* See the main source file 'vdr.c' for copyright information and
|
||||
* how to reach the author.
|
||||
*
|
||||
* $Id: themes.c 1.6 2005/11/04 14:19:54 kls Exp $
|
||||
* $Id: themes.c 1.7 2007/08/05 14:11:35 kls Exp $
|
||||
*/
|
||||
|
||||
#include "themes.h"
|
||||
@ -18,7 +18,6 @@
|
||||
cTheme::cTheme(void)
|
||||
{
|
||||
name = strdup("default");
|
||||
memset(descriptions, 0, sizeof(descriptions));
|
||||
memset(colorNames, 0, sizeof(colorNames));
|
||||
memset(colorValues, 0, sizeof(colorValues));
|
||||
descriptions[0] = strdup("Default");
|
||||
@ -27,8 +26,6 @@ cTheme::cTheme(void)
|
||||
cTheme::~cTheme()
|
||||
{
|
||||
free(name);
|
||||
for (int i = 0; i < I18nNumLanguages; i++)
|
||||
free(descriptions[i]);
|
||||
for (int i = 0; i < MaxThemeColors; i++)
|
||||
free(colorNames[i]);
|
||||
}
|
||||
@ -77,7 +74,7 @@ bool cTheme::FileNameOk(const char *FileName, bool SetName)
|
||||
|
||||
const char *cTheme::Description(void)
|
||||
{
|
||||
char *s = descriptions[Setup.OSDLanguage];
|
||||
char *s = descriptions[I18nCurrentLanguage()];
|
||||
if (!s)
|
||||
s = descriptions[0];
|
||||
return s ? s : name;
|
||||
@ -167,7 +164,7 @@ bool cTheme::Save(const char *FileName)
|
||||
bool result = true;
|
||||
cSafeFile f(FileName);
|
||||
if (f.Open()) {
|
||||
for (int i = 0; i < I18nNumLanguages; i++) {
|
||||
for (int i = 0; i < I18nLanguages()->Size(); i++) {
|
||||
if (descriptions[i])
|
||||
fprintf(f, "Description%s%.*s = %s\n", i ? "." : "", 3, i ? I18nLanguageCode(i) : "", descriptions[i]);
|
||||
}
|
||||
|
5
themes.h
5
themes.h
@ -4,13 +4,14 @@
|
||||
* See the main source file 'vdr.c' for copyright information and
|
||||
* how to reach the author.
|
||||
*
|
||||
* $Id: themes.h 1.1 2004/05/15 14:22:16 kls Exp $
|
||||
* $Id: themes.h 1.2 2007/08/05 14:10:22 kls Exp $
|
||||
*/
|
||||
|
||||
#ifndef __THEMES_H
|
||||
#define __THEMES_H
|
||||
|
||||
#include "i18n.h"
|
||||
#include "tools.h"
|
||||
#include "osd.h"
|
||||
|
||||
class cTheme {
|
||||
@ -18,7 +19,7 @@ public:
|
||||
enum { MaxThemeColors = 128 };
|
||||
private:
|
||||
char *name;
|
||||
char *descriptions[I18nNumLanguages];
|
||||
cStringList descriptions;
|
||||
char *colorNames[MaxThemeColors];
|
||||
tColor colorValues[MaxThemeColors];
|
||||
bool FileNameOk(const char *FileName, bool SetName = false);
|
||||
|
5
timers.c
5
timers.c
@ -4,7 +4,7 @@
|
||||
* See the main source file 'vdr.c' for copyright information and
|
||||
* how to reach the author.
|
||||
*
|
||||
* $Id: timers.c 1.67 2007/06/16 10:41:21 kls Exp $
|
||||
* $Id: timers.c 1.68 2007/08/04 09:23:33 kls Exp $
|
||||
*/
|
||||
|
||||
#include "timers.h"
|
||||
@ -218,7 +218,8 @@ cString cTimer::PrintDay(time_t Day, int WeekDays, bool SingleByteChars)
|
||||
char buffer[DAYBUFFERSIZE];
|
||||
char *b = buffer;
|
||||
if (WeekDays) {
|
||||
const char *w = "MTWTFSS";
|
||||
// TRANSLATORS: the first character of each weekday, beginning with monday
|
||||
const char *w = trNOOP("MTWTFSS");
|
||||
if (!SingleByteChars)
|
||||
w = tr(w);
|
||||
while (*w) {
|
||||
|
19
tools.c
19
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.134 2007/07/21 13:02:45 kls Exp $
|
||||
* $Id: tools.c 1.135 2007/08/05 12:18:15 kls Exp $
|
||||
*/
|
||||
|
||||
#include "tools.h"
|
||||
@ -852,6 +852,7 @@ cString WeekDayName(int WeekDay)
|
||||
char buffer[16];
|
||||
WeekDay = WeekDay == 0 ? 6 : WeekDay - 1; // we start with Monday==0!
|
||||
if (0 <= WeekDay && WeekDay <= 6) {
|
||||
// TRANSLATORS: abbreviated weekdays, beginning with monday (must all be 3 letters!)
|
||||
const char *day = tr("MonTueWedThuFriSatSun");
|
||||
day += Utf8SymChars(day, WeekDay * 3);
|
||||
strn0cpy(buffer, day, min(Utf8SymChars(day, 3) + 1, int(sizeof(buffer))));
|
||||
@ -1178,12 +1179,12 @@ void cStringList::Clear(void)
|
||||
// --- cFileNameList ---------------------------------------------------------
|
||||
|
||||
// TODO better GetFileNames(const char *Directory, cStringList *List)?
|
||||
cFileNameList::cFileNameList(const char *Directory)
|
||||
cFileNameList::cFileNameList(const char *Directory, bool DirsOnly)
|
||||
{
|
||||
Load(Directory);
|
||||
Load(Directory, DirsOnly);
|
||||
}
|
||||
|
||||
bool cFileNameList::Load(const char *Directory)
|
||||
bool cFileNameList::Load(const char *Directory, bool DirsOnly)
|
||||
{
|
||||
Clear();
|
||||
if (Directory) {
|
||||
@ -1191,8 +1192,16 @@ bool cFileNameList::Load(const char *Directory)
|
||||
struct dirent *e;
|
||||
if (d.Ok()) {
|
||||
while ((e = d.Next()) != NULL) {
|
||||
if (strcmp(e->d_name, ".") && strcmp(e->d_name, ".."))
|
||||
if (strcmp(e->d_name, ".") && strcmp(e->d_name, "..")) {
|
||||
if (DirsOnly) {
|
||||
struct stat ds;
|
||||
if (stat(e->d_name, &ds) == 0) {
|
||||
if (S_ISDIR(ds.st_mode))
|
||||
continue;
|
||||
}
|
||||
}
|
||||
Append(strdup(e->d_name));
|
||||
}
|
||||
}
|
||||
Sort();
|
||||
return true;
|
||||
|
16
tools.h
16
tools.h
@ -4,7 +4,7 @@
|
||||
* See the main source file 'vdr.c' for copyright information and
|
||||
* how to reach the author.
|
||||
*
|
||||
* $Id: tools.h 1.104 2007/07/21 13:35:45 kls Exp $
|
||||
* $Id: tools.h 1.107 2007/08/05 12:11:52 kls Exp $
|
||||
*/
|
||||
|
||||
#ifndef __TOOLS_H
|
||||
@ -28,9 +28,9 @@ typedef unsigned char uchar;
|
||||
|
||||
extern int SysLogLevel;
|
||||
|
||||
#define esyslog(a...) void( (SysLogLevel > 0) ? syslog_with_tid(LOG_ERR, a) : void() )
|
||||
#define isyslog(a...) void( (SysLogLevel > 1) ? syslog_with_tid(LOG_INFO, a) : void() )
|
||||
#define dsyslog(a...) void( (SysLogLevel > 2) ? syslog_with_tid(LOG_DEBUG, a) : void() )
|
||||
#define esyslog(a...) void( (SysLogLevel > 0) ? syslog_with_tid(LOG_ERR, a) : void() )
|
||||
#define isyslog(a...) void( (SysLogLevel > 1) ? syslog_with_tid(LOG_ERR, a) : void() )
|
||||
#define dsyslog(a...) void( (SysLogLevel > 2) ? syslog_with_tid(LOG_ERR, a) : void() )
|
||||
|
||||
#define LOG_ERROR esyslog("ERROR (%s,%d): %m", __FILE__, __LINE__)
|
||||
#define LOG_ERROR_STR(s) esyslog("ERROR: %s: %m", s)
|
||||
@ -175,9 +175,9 @@ char *strreplace(char *s, char c1, char c2);
|
||||
char *strreplace(char *s, const char *s1, const char *s2); ///< re-allocates 's' and deletes the original string if necessary!
|
||||
inline char *skipspace(const char *s)
|
||||
{
|
||||
if (*s > ' ') // most strings don't have any leading space, so handle this case as fast as possible
|
||||
if ((uchar)*s > ' ') // most strings don't have any leading space, so handle this case as fast as possible
|
||||
return (char *)s;
|
||||
while (*s && *s <= ' ') // avoiding isspace() here, because it is much slower
|
||||
while (*s && (uchar)*s <= ' ') // avoiding isspace() here, because it is much slower
|
||||
s++;
|
||||
return (char *)s;
|
||||
}
|
||||
@ -487,8 +487,8 @@ public:
|
||||
|
||||
class cFileNameList : public cStringList {
|
||||
public:
|
||||
cFileNameList(const char *Directory = NULL);
|
||||
bool Load(const char *Directory);
|
||||
cFileNameList(const char *Directory = NULL, bool DirsOnly = false);
|
||||
bool Load(const char *Directory, bool DirsOnly = false);
|
||||
};
|
||||
|
||||
class cHashObject : public cListObject {
|
||||
|
7
vdr.5
7
vdr.5
@ -8,7 +8,7 @@
|
||||
.\" License as specified in the file COPYING that comes with the
|
||||
.\" vdr distribution.
|
||||
.\"
|
||||
.\" $Id: vdr.5 1.62 2007/06/03 13:21:34 kls Exp $
|
||||
.\" $Id: vdr.5 1.63 2007/08/05 12:58:35 kls Exp $
|
||||
.\"
|
||||
.TH vdr 5 "07 Jan 2007" "1.4.5" "Video Disk Recorder Files"
|
||||
.SH NAME
|
||||
@ -542,9 +542,10 @@ you can provide language specific descriptions as
|
||||
.br
|
||||
\fBDescription.ger = Blaut\(:one\fR
|
||||
|
||||
where the language code (as defined in VDR/i18n.c) is added to the keyword
|
||||
where the language code is added to the keyword
|
||||
"Description", separated by a dot. You can enter as many language specific
|
||||
descriptions as there are languages defined in VDR/i18n.h.
|
||||
descriptions as you like, but only those that have a corresponding locale
|
||||
messages file will be actually used.
|
||||
If a theme file doesn't contain a Description, the name of the theme (as
|
||||
given in the theme's file name) will be used.
|
||||
.SS AUDIO/VIDEO DATA
|
||||
|
8
vdr.c
8
vdr.c
@ -16,13 +16,13 @@
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
* Or, point your browser to http://www.gnu.org/copyleft/gpl.html
|
||||
* Or, point your browser to http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
|
||||
*
|
||||
* The author can be reached at kls@cadsoft.de
|
||||
*
|
||||
* The project's page is at http://www.cadsoft.de/vdr
|
||||
*
|
||||
* $Id: vdr.c 1.294 2007/07/22 11:40:01 kls Exp $
|
||||
* $Id: vdr.c 1.296 2007/08/12 11:22:04 kls Exp $
|
||||
*/
|
||||
|
||||
#include <getopt.h>
|
||||
@ -511,6 +511,10 @@ int main(int argc, char *argv[])
|
||||
cCharSetConv::SetSystemCharacterTable(CodeSet);
|
||||
}
|
||||
|
||||
// Initialize internationalization:
|
||||
|
||||
I18nInitialize();
|
||||
|
||||
// Main program loop variables - need to be here to have them initialized before any EXIT():
|
||||
|
||||
cOsdObject *Menu = NULL;
|
||||
|
Loading…
x
Reference in New Issue
Block a user