mirror of
				https://github.com/vdr-projects/vdr.git
				synced 2025-03-01 10:50:46 +00:00 
			
		
		
		
	Switched I18N to gettext
This commit is contained in:
		@@ -1520,6 +1520,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<47>nlund <Mattias@Gronlund.net>
 | 
			
		||||
 for pointing out a missing cleanup at program exit in case there is a problem
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										18
									
								
								HISTORY
									
									
									
									
									
								
							
							
						
						
									
										18
									
								
								HISTORY
									
									
									
									
									
								
							@@ -5299,7 +5299,7 @@ Video Disk Recorder Revision History
 | 
			
		||||
- Added a missing 'P' to vdr.c's SHUTDOWNCANCELROMPT macro (reported by Marco
 | 
			
		||||
  Schl<68><6C>ler).
 | 
			
		||||
 | 
			
		||||
2007-07-28: Version 1.5.7
 | 
			
		||||
2007-08-11: 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
 | 
			
		||||
@@ -5310,3 +5310,19 @@ Video Disk Recorder Revision History
 | 
			
		||||
  (thanks to Marco Schl<68><6C>ler).
 | 
			
		||||
- Fixed a bug I introduced when simplifying the original patch for detecting
 | 
			
		||||
  Premiere NVOD channel links (crash reported by Malte Schr<68>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 '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 selcted OSD language (e.g. en_US). Therefore, when you first run
 | 
			
		||||
  this version of VDR you may have to select your desired OSD language again.
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										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.11 2007/08/11 10:50:44 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
 | 
			
		||||
 | 
			
		||||
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* *~
 | 
			
		||||
 
 | 
			
		||||
@@ -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
 | 
			
		||||
    "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!",
 | 
			
		||||
    "",// TODO
 | 
			
		||||
    "",// TODO
 | 
			
		||||
    "",// TODO
 | 
			
		||||
    "Ahoj",
 | 
			
		||||
  },
 | 
			
		||||
  { "Hello world!",
 | 
			
		||||
    "Hallo Welt!",
 | 
			
		||||
    "",// TODO
 | 
			
		||||
    "",// TODO
 | 
			
		||||
    "",// TODO
 | 
			
		||||
    "",// TODO
 | 
			
		||||
    "",// TODO
 | 
			
		||||
    "",// TODO
 | 
			
		||||
    "Hei maailma!",
 | 
			
		||||
    "",// TODO
 | 
			
		||||
    "",// TODO
 | 
			
		||||
    "",// TODO
 | 
			
		||||
    "",// TODO
 | 
			
		||||
    "",// TODO
 | 
			
		||||
    "",// TODO
 | 
			
		||||
    "",// TODO
 | 
			
		||||
    "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>!",
 | 
			
		||||
    "",// TODO
 | 
			
		||||
    "",// TODO
 | 
			
		||||
    "",// TODO
 | 
			
		||||
    "Ahoj sv<73>te!",
 | 
			
		||||
  },
 | 
			
		||||
  { "Howdy folks!",
 | 
			
		||||
    "Tach zusammen!",
 | 
			
		||||
    "",// TODO
 | 
			
		||||
    "",// TODO
 | 
			
		||||
    "",// TODO
 | 
			
		||||
    "",// TODO
 | 
			
		||||
    "",// TODO
 | 
			
		||||
    "",// TODO
 | 
			
		||||
    "Mit<EFBFBD> kuuluu?",
 | 
			
		||||
    "",// TODO
 | 
			
		||||
    "",// TODO
 | 
			
		||||
    "",// TODO
 | 
			
		||||
    "",// TODO
 | 
			
		||||
    "",// TODO
 | 
			
		||||
    "",// TODO
 | 
			
		||||
    "",// TODO
 | 
			
		||||
    "<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?",
 | 
			
		||||
    "",// TODO
 | 
			
		||||
    "",// TODO
 | 
			
		||||
    "",// TODO
 | 
			
		||||
    "Nazdar vespolek!",
 | 
			
		||||
  },
 | 
			
		||||
  { "A friendly greeting",
 | 
			
		||||
    "Ein freundlicher Gru<72>",
 | 
			
		||||
    "",// TODO
 | 
			
		||||
    "",// TODO
 | 
			
		||||
    "",// TODO
 | 
			
		||||
    "",// TODO
 | 
			
		||||
    "",// TODO
 | 
			
		||||
    "",// TODO
 | 
			
		||||
    "Yst<EFBFBD>v<EFBFBD>llisin terveisin",
 | 
			
		||||
    "",// TODO
 | 
			
		||||
    "",// TODO
 | 
			
		||||
    "",// TODO
 | 
			
		||||
    "",// TODO
 | 
			
		||||
    "",// TODO
 | 
			
		||||
    "",// TODO
 | 
			
		||||
    "",// TODO
 | 
			
		||||
    "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",
 | 
			
		||||
    "",// TODO
 | 
			
		||||
    "",// TODO
 | 
			
		||||
    "",// TODO
 | 
			
		||||
    "P<EFBFBD><EFBFBD>telsk<EFBFBD> pozdrav",
 | 
			
		||||
  },
 | 
			
		||||
  { "Greeting time (s)",
 | 
			
		||||
    "Dauer des Gru<72>es (s)",
 | 
			
		||||
    "",// TODO
 | 
			
		||||
    "",// TODO
 | 
			
		||||
    "",// TODO
 | 
			
		||||
    "",// TODO
 | 
			
		||||
    "",// TODO
 | 
			
		||||
    "",// TODO
 | 
			
		||||
    "Tervehdysaika (s)",
 | 
			
		||||
    "",// TODO
 | 
			
		||||
    "",// TODO
 | 
			
		||||
    "",// TODO
 | 
			
		||||
    "",// TODO
 | 
			
		||||
    "",// TODO
 | 
			
		||||
    "",// TODO
 | 
			
		||||
    "",// TODO
 | 
			
		||||
    "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",
 | 
			
		||||
    "",// TODO
 | 
			
		||||
    "",// TODO
 | 
			
		||||
    "",// TODO
 | 
			
		||||
    "<EFBFBD>as pozdravu (s)",
 | 
			
		||||
  },
 | 
			
		||||
  { "Use alternate greeting",
 | 
			
		||||
    "Alternativen Gru<72> verwenden",
 | 
			
		||||
    "",// TODO
 | 
			
		||||
    "",// TODO
 | 
			
		||||
    "",// TODO
 | 
			
		||||
    "",// TODO
 | 
			
		||||
    "",// TODO
 | 
			
		||||
    "",// TODO
 | 
			
		||||
    "K<EFBFBD>yt<EFBFBD> vaihtoehtoista tervehdyst<73>",
 | 
			
		||||
    "",// TODO
 | 
			
		||||
    "",// TODO
 | 
			
		||||
    "",// TODO
 | 
			
		||||
    "",// TODO
 | 
			
		||||
    "",// TODO
 | 
			
		||||
    "",// TODO
 | 
			
		||||
    "",// TODO
 | 
			
		||||
    "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",
 | 
			
		||||
    "",// TODO
 | 
			
		||||
    "",// TODO
 | 
			
		||||
    "",// TODO
 | 
			
		||||
    "Pou<EFBFBD><EFBFBD>t alternativn<76> 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<69> <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<69> <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<69>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<69>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<><50>telsk<73> pozdrav"
 | 
			
		||||
 | 
			
		||||
#: hello.c:17
 | 
			
		||||
msgid "Hello"
 | 
			
		||||
msgstr "Ahoj"
 | 
			
		||||
 | 
			
		||||
#: hello.c:60
 | 
			
		||||
msgid "Greeting time (s)"
 | 
			
		||||
msgstr "<22>as pozdravu (s)"
 | 
			
		||||
 | 
			
		||||
#: hello.c:61
 | 
			
		||||
msgid "Use alternate greeting"
 | 
			
		||||
msgstr "Pou<6F><75>t alternativn<76> pozdrav"
 | 
			
		||||
 | 
			
		||||
#: hello.c:129
 | 
			
		||||
msgid "Hello world!"
 | 
			
		||||
msgstr "Ahoj sv<73>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<72>"
 | 
			
		||||
 | 
			
		||||
#: hello.c:17
 | 
			
		||||
msgid "Hello"
 | 
			
		||||
msgstr "Hallo"
 | 
			
		||||
 | 
			
		||||
#: hello.c:60
 | 
			
		||||
msgid "Greeting time (s)"
 | 
			
		||||
msgstr "Dauer des Gru<72>es (s)"
 | 
			
		||||
 | 
			
		||||
#: hello.c:61
 | 
			
		||||
msgid "Use alternate greeting"
 | 
			
		||||
msgstr "Alternativen Gru<72> 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<79>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<73>v<EFBFBD>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<79> vaihtoehtoista tervehdyst<73>"
 | 
			
		||||
 | 
			
		||||
#: hello.c:129
 | 
			
		||||
msgid "Hello world!"
 | 
			
		||||
msgstr "Hei maailma!"
 | 
			
		||||
 | 
			
		||||
#: hello.c:129
 | 
			
		||||
msgid "Howdy folks!"
 | 
			
		||||
msgstr "Mit<69> 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 "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"
 | 
			
		||||
 | 
			
		||||
#: hello.c:17
 | 
			
		||||
msgid "Hello"
 | 
			
		||||
msgstr "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!"
 | 
			
		||||
 | 
			
		||||
#: hello.c:60
 | 
			
		||||
msgid "Greeting time (s)"
 | 
			
		||||
msgstr "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"
 | 
			
		||||
 | 
			
		||||
#: hello.c:61
 | 
			
		||||
msgid "Use alternate greeting"
 | 
			
		||||
msgstr "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"
 | 
			
		||||
 | 
			
		||||
#: hello.c:129
 | 
			
		||||
msgid "Hello world!"
 | 
			
		||||
msgstr "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>!"
 | 
			
		||||
 | 
			
		||||
#: hello.c:129
 | 
			
		||||
msgid "Howdy folks!"
 | 
			
		||||
msgstr "<22><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?"
 | 
			
		||||
							
								
								
									
										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<67>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<67>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 ""
 | 
			
		||||
							
								
								
									
										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.155 2007/08/10 12:58:08 kls Exp $
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#include "config.h"
 | 
			
		||||
@@ -214,7 +214,7 @@ cSetup Setup;
 | 
			
		||||
 | 
			
		||||
cSetup::cSetup(void)
 | 
			
		||||
{
 | 
			
		||||
  OSDLanguage = 0;
 | 
			
		||||
  strcpy(OSDLanguage, I18N_DEFAULT_LOCALE);
 | 
			
		||||
  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);
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										8
									
								
								config.h
									
									
									
									
									
								
							
							
						
						
									
										8
									
								
								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.295 2007/07/28 09:45:27 kls Exp $
 | 
			
		||||
 * $Id: config.h 1.296 2007/08/10 13:01:52 kls Exp $
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifndef __CONFIG_H
 | 
			
		||||
@@ -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;
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										328
									
								
								i18n-to-gettext.pl
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										328
									
								
								i18n-to-gettext.pl
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,328 @@
 | 
			
		||||
#!/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.1 2007/08/11 10:36:33 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.
 | 
			
		||||
#
 | 
			
		||||
# - 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<79>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<69> <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<69>r B<>rta <vladimir.barta\@k2atmitec.cz>, 2006",
 | 
			
		||||
  "Oktay Yolge<67>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<69> <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<69>r B<>rta <vladimir.barta\@k2atmitec.cz>",
 | 
			
		||||
  "Oktay Yolge<67>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
 | 
			
		||||
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
`mv Makefile Makefile.old`;
 | 
			
		||||
open(OLD, "Makefile.old") || die "Makefile.old: $!";
 | 
			
		||||
open(NEW, ">Makefile") || die "Makefile: $!";
 | 
			
		||||
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> {
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										54
									
								
								menu.c
									
									
									
									
									
								
							
							
						
						
									
										54
									
								
								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.457 2007/08/10 13:13:13 kls Exp $
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#include "menu.h"
 | 
			
		||||
@@ -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();
 | 
			
		||||
@@ -4026,6 +4035,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,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);
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										33
									
								
								newplugin
									
									
									
									
									
								
							
							
						
						
									
										33
									
								
								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.33 2007/08/10 15:54:46 kls Exp $
 | 
			
		||||
 | 
			
		||||
$PLUGIN_NAME = $ARGV[0] || die "Usage: newplugin <name>\n";
 | 
			
		||||
 | 
			
		||||
@@ -109,7 +109,7 @@ OBJS = \$(PLUGIN).o
 | 
			
		||||
%.o: %.c
 | 
			
		||||
	\$(CXX) \$(CXXFLAGS) -c \$(DEFINES) \$(INCLUDES) \$<
 | 
			
		||||
 | 
			
		||||
# Dependencies:
 | 
			
		||||
### Dependencies:
 | 
			
		||||
 | 
			
		||||
MAKEDEP = \$(CXX) -MM -MG
 | 
			
		||||
DEPFILE = .dependencies
 | 
			
		||||
@@ -118,9 +118,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 +160,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
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										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: 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;
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										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;
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										6
									
								
								tools.h
									
									
									
									
									
								
							
							
						
						
									
										6
									
								
								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.106 2007/07/28 12:54:49 kls Exp $
 | 
			
		||||
 * $Id: tools.h 1.107 2007/08/05 12:11:52 kls Exp $
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifndef __TOOLS_H
 | 
			
		||||
@@ -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
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										6
									
								
								vdr.c
									
									
									
									
									
								
							
							
						
						
									
										6
									
								
								vdr.c
									
									
									
									
									
								
							@@ -22,7 +22,7 @@
 | 
			
		||||
 *
 | 
			
		||||
 * 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.295 2007/08/05 09:53:20 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;
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user