2007-06-20 Marcus Brinkmann <marcus@g10code.de>
authorMarcus Brinkmann <mb@g10code.com>
Wed, 20 Jun 2007 01:38:06 +0000 (01:38 +0000)
committerMarcus Brinkmann <mb@g10code.com>
Wed, 20 Jun 2007 01:38:06 +0000 (01:38 +0000)
* po: New directory.
* m4/po.m4: New file, from gettext-0.16.1.
* m4/progtest.m4: New file, from gettext-0.16.1.
* m4/nls.m4: New file, from gettext-0.16.1.
* Makefile.am (SUBDIRS): Add po.
* configure.ac: Invoke AM_PO_SUBDIRS.
(AC_CONFIG_FILES): Add po/Makefile.in.

* src/installer.nsi: Do not insert MUI_LANGUAGE "German".
* src/gpg4win.nsi, src/gpg4win-src.nsi: Add include dir
${TOP_SRCDIR}/po.  Include "../po/catalogs.nsi".
* src/inst-gnupg.nsi: Move translation string DESC_Menu_gnupg_faq
from here ...
* src/inst-gpg4win.nsi: ... to here.

* src/g4wihelp.nsi, src/installer.nsi, src/inst-eudoragpg.nsi,
src/inst-gnupg.nsi, src/inst-gpa.nsi, src/inst-gpg4win.nsi,
src/inst-gpgee.nsi, src/inst-gpgol.nsi,
src/inst-man_advanced_de.nsi, src/inst-man_advanced_en.nsi,
src/inst-man_novice_de.nsi, src/inst-man_novice_en.nsi,
src/inst-sylpheed-claws.nsi, src/inst-winpt.nsi: Remove German
translation.

po/
2007-06-20  Marcus Brinkmann  <marcus@g10code.de>

* Makevars, LINGUAS, nsis-xgettext.sh, nsis-xgettext.awk,
nsis-msgfmt.c, Rules-nsis, de.po, README.nsis: New files.

2007-06-20  gettextize  <bug-gnu-gettext@gnu.org>

* Makefile.in.in: New file, from gettext-0.16.1.
* remove-potcdate.sin: New file, from gettext-0.16.1.
* POTFILES.in: New file.

35 files changed:
ChangeLog
Makefile.am
TODO
configure.ac
m4/nls.m4 [new file with mode: 0644]
m4/po.m4 [new file with mode: 0644]
m4/progtest.m4 [new file with mode: 0644]
po/ChangeLog [new file with mode: 0644]
po/LINGUAS [new file with mode: 0644]
po/Makefile.in.in [new file with mode: 0644]
po/Makevars [new file with mode: 0644]
po/POTFILES.in [new file with mode: 0644]
po/README.nsis [new file with mode: 0644]
po/Rules-nsis [new file with mode: 0644]
po/de.po [new file with mode: 0644]
po/nsis-msgfmt.c [new file with mode: 0644]
po/nsis-xgettext.awk [new file with mode: 0644]
po/nsis-xgettext.sh [new file with mode: 0644]
po/remove-potcdate.sin [new file with mode: 0644]
src/g4wihelp.nsi
src/gpg4win-src.nsi
src/gpg4win.nsi
src/inst-eudoragpg.nsi
src/inst-gnupg.nsi
src/inst-gpa.nsi
src/inst-gpg4win.nsi
src/inst-gpgee.nsi
src/inst-gpgol.nsi
src/inst-man_advanced_de.nsi
src/inst-man_advanced_en.nsi
src/inst-man_novice_de.nsi
src/inst-man_novice_en.nsi
src/inst-sylpheed-claws.nsi
src/inst-winpt.nsi
src/installer.nsi

index b0b90fa..fb2eb28 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,28 @@
+2007-06-20  Marcus Brinkmann  <marcus@g10code.de>
+
+       * po: New directory.
+       * m4/po.m4: New file, from gettext-0.16.1.
+       * m4/progtest.m4: New file, from gettext-0.16.1.
+       * m4/nls.m4: New file, from gettext-0.16.1.
+       * Makefile.am (SUBDIRS): Add po.
+       * configure.ac: Invoke AM_PO_SUBDIRS.
+       (AC_CONFIG_FILES): Add po/Makefile.in.
+
+       * src/installer.nsi: Do not insert MUI_LANGUAGE "German".
+       * src/gpg4win.nsi, src/gpg4win-src.nsi: Add include dir
+       ${TOP_SRCDIR}/po.  Include "../po/catalogs.nsi".
+       * src/inst-gnupg.nsi: Move translation string DESC_Menu_gnupg_faq
+       from here ...   
+       * src/inst-gpg4win.nsi: ... to here.
+
+       * src/g4wihelp.nsi, src/installer.nsi, src/inst-eudoragpg.nsi,
+       src/inst-gnupg.nsi, src/inst-gpa.nsi, src/inst-gpg4win.nsi,
+       src/inst-gpgee.nsi, src/inst-gpgol.nsi,
+       src/inst-man_advanced_de.nsi, src/inst-man_advanced_en.nsi,
+       src/inst-man_novice_de.nsi, src/inst-man_novice_en.nsi,
+       src/inst-sylpheed-claws.nsi, src/inst-winpt.nsi: Remove German
+       translation.
+       
 2007-06-18  Marcus Brinkmann  <marcus@g10code.de>
 
        * src/inst-w32pth.nsi: Install shared library.
index 6504ffa..19619de 100644 (file)
@@ -21,7 +21,7 @@ ACLOCAL_AMFLAGS = -I m4
 AUTOMAKE_OPTIONS = dist-bzip2
 DISTCHECK_CONFIGURE_FLAGS = --host=i586-mingw32msvc --disable-pkg-man_advanced_en 
 
-SUBDIRS = packages include doc src
+SUBDIRS = po packages include doc src
 
 EXTRA_DIST = autogen.sh README.SVN \
         patches/pthreads-w32-2-7-0-release/01-make.patch \
diff --git a/TODO b/TODO
index 143015b..a2877e4 100644 (file)
--- a/TODO
+++ b/TODO
@@ -9,6 +9,21 @@
 
   (04-* is not required).
 
+* I18n:
+
+** There is no advantage to conditionally define translation strings,
+   as the tables are purged of unnecessary strings by makensis.  Thus
+   we should probably define strings where they are used, rather in the
+   inst-*.nsi files of the package to which they belong.  This would
+   also simplify management of po/POFILES.in.
+** /bin/bash is used unconditionally in po/Makevars.
+** nsis-msgfmt could check if a language file (nlf/nsh) exists for the
+   installed version of makensis/Modern UI.
+** po/Rules-nsis requires a compiler for the build platform, and an installed
+   libgettextpo.  None of this is configurable at this point.
+** nsis-xgettext.awk could be made more robust, although there is no
+   strong need.
+** Test what happens with --disable-nls.
 
 * Build system
 ** Some versions of strip don't work.
index 705453e..76c6d67 100644 (file)
@@ -60,6 +60,10 @@ AM_MAINTAINER_MODE
 AC_CANONICAL_HOST
 AM_CONFIG_HEADER(config.h)
 
+# Language support
+AM_PO_SUBDIRS
+
+
 AC_SUBST(PACKAGE)
 AC_SUBST(VERSION)
 AC_SUBST(MANUALVERSION_EINSTEIGER)
@@ -218,7 +222,8 @@ fi
 
 # Finalize.
 
-AC_CONFIG_FILES(Makefile packages/Makefile include/Makefile src/Makefile)
+AC_CONFIG_FILES(Makefile)
+AC_CONFIG_FILES(packages/Makefile include/Makefile src/Makefile po/Makefile.in)
 AC_CONFIG_FILES(include/config.nsi src/gpg4win.mk)
 AC_CONFIG_FILES(doc/Makefile)
 AC_CONFIG_FILES(doc/logo/Makefile)
diff --git a/m4/nls.m4 b/m4/nls.m4
new file mode 100644 (file)
index 0000000..7967cc2
--- /dev/null
+++ b/m4/nls.m4
@@ -0,0 +1,31 @@
+# nls.m4 serial 3 (gettext-0.15)
+dnl Copyright (C) 1995-2003, 2005-2006 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+dnl
+dnl This file can can be used in projects which are not available under
+dnl the GNU General Public License or the GNU Library General Public
+dnl License but which still want to provide support for the GNU gettext
+dnl functionality.
+dnl Please note that the actual code of the GNU gettext library is covered
+dnl by the GNU Library General Public License, and the rest of the GNU
+dnl gettext package package is covered by the GNU General Public License.
+dnl They are *not* in the public domain.
+
+dnl Authors:
+dnl   Ulrich Drepper <drepper@cygnus.com>, 1995-2000.
+dnl   Bruno Haible <haible@clisp.cons.org>, 2000-2003.
+
+AC_PREREQ(2.50)
+
+AC_DEFUN([AM_NLS],
+[
+  AC_MSG_CHECKING([whether NLS is requested])
+  dnl Default is enabled NLS
+  AC_ARG_ENABLE(nls,
+    [  --disable-nls           do not use Native Language Support],
+    USE_NLS=$enableval, USE_NLS=yes)
+  AC_MSG_RESULT($USE_NLS)
+  AC_SUBST(USE_NLS)
+])
diff --git a/m4/po.m4 b/m4/po.m4
new file mode 100644 (file)
index 0000000..00133ef
--- /dev/null
+++ b/m4/po.m4
@@ -0,0 +1,428 @@
+# po.m4 serial 13 (gettext-0.15)
+dnl Copyright (C) 1995-2006 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+dnl
+dnl This file can can be used in projects which are not available under
+dnl the GNU General Public License or the GNU Library General Public
+dnl License but which still want to provide support for the GNU gettext
+dnl functionality.
+dnl Please note that the actual code of the GNU gettext library is covered
+dnl by the GNU Library General Public License, and the rest of the GNU
+dnl gettext package package is covered by the GNU General Public License.
+dnl They are *not* in the public domain.
+
+dnl Authors:
+dnl   Ulrich Drepper <drepper@cygnus.com>, 1995-2000.
+dnl   Bruno Haible <haible@clisp.cons.org>, 2000-2003.
+
+AC_PREREQ(2.50)
+
+dnl Checks for all prerequisites of the po subdirectory.
+AC_DEFUN([AM_PO_SUBDIRS],
+[
+  AC_REQUIRE([AC_PROG_MAKE_SET])dnl
+  AC_REQUIRE([AC_PROG_INSTALL])dnl
+  AC_REQUIRE([AM_PROG_MKDIR_P])dnl defined by automake
+  AC_REQUIRE([AM_NLS])dnl
+
+  dnl Perform the following tests also if --disable-nls has been given,
+  dnl because they are needed for "make dist" to work.
+
+  dnl Search for GNU msgfmt in the PATH.
+  dnl The first test excludes Solaris msgfmt and early GNU msgfmt versions.
+  dnl The second test excludes FreeBSD msgfmt.
+  AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt,
+    [$ac_dir/$ac_word --statistics /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1 &&
+     (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)],
+    :)
+  AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT)
+
+  dnl Test whether it is GNU msgfmt >= 0.15.
+changequote(,)dnl
+  case `$MSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in
+    '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) MSGFMT_015=: ;;
+    *) MSGFMT_015=$MSGFMT ;;
+  esac
+changequote([,])dnl
+  AC_SUBST([MSGFMT_015])
+changequote(,)dnl
+  case `$GMSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in
+    '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) GMSGFMT_015=: ;;
+    *) GMSGFMT_015=$GMSGFMT ;;
+  esac
+changequote([,])dnl
+  AC_SUBST([GMSGFMT_015])
+
+  dnl Search for GNU xgettext 0.12 or newer in the PATH.
+  dnl The first test excludes Solaris xgettext and early GNU xgettext versions.
+  dnl The second test excludes FreeBSD xgettext.
+  AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext,
+    [$ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1 &&
+     (if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)],
+    :)
+  dnl Remove leftover from FreeBSD xgettext call.
+  rm -f messages.po
+
+  dnl Test whether it is GNU xgettext >= 0.15.
+changequote(,)dnl
+  case `$XGETTEXT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in
+    '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) XGETTEXT_015=: ;;
+    *) XGETTEXT_015=$XGETTEXT ;;
+  esac
+changequote([,])dnl
+  AC_SUBST([XGETTEXT_015])
+
+  dnl Search for GNU msgmerge 0.11 or newer in the PATH.
+  AM_PATH_PROG_WITH_TEST(MSGMERGE, msgmerge,
+    [$ac_dir/$ac_word --update -q /dev/null /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1], :)
+
+  dnl Installation directories.
+  dnl Autoconf >= 2.60 defines localedir. For older versions of autoconf, we
+  dnl have to define it here, so that it can be used in po/Makefile.
+  test -n "$localedir" || localedir='${datadir}/locale'
+  AC_SUBST([localedir])
+
+  AC_CONFIG_COMMANDS([po-directories], [[
+    for ac_file in $CONFIG_FILES; do
+      # Support "outfile[:infile[:infile...]]"
+      case "$ac_file" in
+        *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;;
+      esac
+      # PO directories have a Makefile.in generated from Makefile.in.in.
+      case "$ac_file" in */Makefile.in)
+        # Adjust a relative srcdir.
+        ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'`
+        ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`"
+        ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'`
+        # In autoconf-2.13 it is called $ac_given_srcdir.
+        # In autoconf-2.50 it is called $srcdir.
+        test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir"
+        case "$ac_given_srcdir" in
+          .)  top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;;
+          /*) top_srcdir="$ac_given_srcdir" ;;
+          *)  top_srcdir="$ac_dots$ac_given_srcdir" ;;
+        esac
+        # Treat a directory as a PO directory if and only if it has a
+        # POTFILES.in file. This allows packages to have multiple PO
+        # directories under different names or in different locations.
+        if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then
+          rm -f "$ac_dir/POTFILES"
+          test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES"
+          cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[  ]*\$/d" -e "s,.*,     $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES"
+          POMAKEFILEDEPS="POTFILES.in"
+          # ALL_LINGUAS, POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES depend
+          # on $ac_dir but don't depend on user-specified configuration
+          # parameters.
+          if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then
+            # The LINGUAS file contains the set of available languages.
+            if test -n "$OBSOLETE_ALL_LINGUAS"; then
+              test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete"
+            fi
+            ALL_LINGUAS_=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"`
+            # Hide the ALL_LINGUAS assigment from automake < 1.5.
+            eval 'ALL_LINGUAS''=$ALL_LINGUAS_'
+            POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS"
+          else
+            # The set of available languages was given in configure.in.
+            # Hide the ALL_LINGUAS assigment from automake < 1.5.
+            eval 'ALL_LINGUAS''=$OBSOLETE_ALL_LINGUAS'
+          fi
+          # Compute POFILES
+          # as      $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po)
+          # Compute UPDATEPOFILES
+          # as      $(foreach lang, $(ALL_LINGUAS), $(lang).po-update)
+          # Compute DUMMYPOFILES
+          # as      $(foreach lang, $(ALL_LINGUAS), $(lang).nop)
+          # Compute GMOFILES
+          # as      $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo)
+          case "$ac_given_srcdir" in
+            .) srcdirpre= ;;
+            *) srcdirpre='$(srcdir)/' ;;
+          esac
+          POFILES=
+          UPDATEPOFILES=
+          DUMMYPOFILES=
+          GMOFILES=
+          for lang in $ALL_LINGUAS; do
+            POFILES="$POFILES $srcdirpre$lang.po"
+            UPDATEPOFILES="$UPDATEPOFILES $lang.po-update"
+            DUMMYPOFILES="$DUMMYPOFILES $lang.nop"
+            GMOFILES="$GMOFILES $srcdirpre$lang.gmo"
+          done
+          # CATALOGS depends on both $ac_dir and the user's LINGUAS
+          # environment variable.
+          INST_LINGUAS=
+          if test -n "$ALL_LINGUAS"; then
+            for presentlang in $ALL_LINGUAS; do
+              useit=no
+              if test "%UNSET%" != "$LINGUAS"; then
+                desiredlanguages="$LINGUAS"
+              else
+                desiredlanguages="$ALL_LINGUAS"
+              fi
+              for desiredlang in $desiredlanguages; do
+                # Use the presentlang catalog if desiredlang is
+                #   a. equal to presentlang, or
+                #   b. a variant of presentlang (because in this case,
+                #      presentlang can be used as a fallback for messages
+                #      which are not translated in the desiredlang catalog).
+                case "$desiredlang" in
+                  "$presentlang"*) useit=yes;;
+                esac
+              done
+              if test $useit = yes; then
+                INST_LINGUAS="$INST_LINGUAS $presentlang"
+              fi
+            done
+          fi
+          CATALOGS=
+          if test -n "$INST_LINGUAS"; then
+            for lang in $INST_LINGUAS; do
+              CATALOGS="$CATALOGS $lang.gmo"
+            done
+          fi
+          test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile"
+          sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@POMAKEFILEDEPS@|$POMAKEFILEDEPS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile"
+          for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do
+            if test -f "$f"; then
+              case "$f" in
+                *.orig | *.bak | *~) ;;
+                *) cat "$f" >> "$ac_dir/Makefile" ;;
+              esac
+            fi
+          done
+        fi
+        ;;
+      esac
+    done]],
+   [# Capture the value of obsolete ALL_LINGUAS because we need it to compute
+    # POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES, CATALOGS. But hide it
+    # from automake < 1.5.
+    eval 'OBSOLETE_ALL_LINGUAS''="$ALL_LINGUAS"'
+    # Capture the value of LINGUAS because we need it to compute CATALOGS.
+    LINGUAS="${LINGUAS-%UNSET%}"
+   ])
+])
+
+dnl Postprocesses a Makefile in a directory containing PO files.
+AC_DEFUN([AM_POSTPROCESS_PO_MAKEFILE],
+[
+  # When this code is run, in config.status, two variables have already been
+  # set:
+  # - OBSOLETE_ALL_LINGUAS is the value of LINGUAS set in configure.in,
+  # - LINGUAS is the value of the environment variable LINGUAS at configure
+  #   time.
+
+changequote(,)dnl
+  # Adjust a relative srcdir.
+  ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'`
+  ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`"
+  ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'`
+  # In autoconf-2.13 it is called $ac_given_srcdir.
+  # In autoconf-2.50 it is called $srcdir.
+  test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir"
+  case "$ac_given_srcdir" in
+    .)  top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;;
+    /*) top_srcdir="$ac_given_srcdir" ;;
+    *)  top_srcdir="$ac_dots$ac_given_srcdir" ;;
+  esac
+
+  # Find a way to echo strings without interpreting backslash.
+  if test "X`(echo '\t') 2>/dev/null`" = 'X\t'; then
+    gt_echo='echo'
+  else
+    if test "X`(printf '%s\n' '\t') 2>/dev/null`" = 'X\t'; then
+      gt_echo='printf %s\n'
+    else
+      echo_func () {
+        cat <<EOT
+$*
+EOT
+      }
+      gt_echo='echo_func'
+    fi
+  fi
+
+  # A sed script that extracts the value of VARIABLE from a Makefile.
+  sed_x_variable='
+# Test if the hold space is empty.
+x
+s/P/P/
+x
+ta
+# Yes it was empty. Look if we have the expected variable definition.
+/^[     ]*VARIABLE[     ]*=/{
+  # Seen the first line of the variable definition.
+  s/^[  ]*VARIABLE[     ]*=//
+  ba
+}
+bd
+:a
+# Here we are processing a line from the variable definition.
+# Remove comment, more precisely replace it with a space.
+s/#.*$/ /
+# See if the line ends in a backslash.
+tb
+:b
+s/\\$//
+# Print the line, without the trailing backslash.
+p
+tc
+# There was no trailing backslash. The end of the variable definition is
+# reached. Clear the hold space.
+s/^.*$//
+x
+bd
+:c
+# A trailing backslash means that the variable definition continues in the
+# next line. Put a nonempty string into the hold space to indicate this.
+s/^.*$/P/
+x
+:d
+'
+changequote([,])dnl
+
+  # Set POTFILES to the value of the Makefile variable POTFILES.
+  sed_x_POTFILES=`$gt_echo "$sed_x_variable" | sed -e '/^ *#/d' -e 's/VARIABLE/POTFILES/g'`
+  POTFILES=`sed -n -e "$sed_x_POTFILES" < "$ac_file"`
+  # Compute POTFILES_DEPS as
+  #   $(foreach file, $(POTFILES), $(top_srcdir)/$(file))
+  POTFILES_DEPS=
+  for file in $POTFILES; do
+    POTFILES_DEPS="$POTFILES_DEPS "'$(top_srcdir)/'"$file"
+  done
+  POMAKEFILEDEPS=""
+
+  if test -n "$OBSOLETE_ALL_LINGUAS"; then
+    test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete"
+  fi
+  if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then
+    # The LINGUAS file contains the set of available languages.
+    ALL_LINGUAS_=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"`
+    POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS"
+  else
+    # Set ALL_LINGUAS to the value of the Makefile variable LINGUAS.
+    sed_x_LINGUAS=`$gt_echo "$sed_x_variable" | sed -e '/^ *#/d' -e 's/VARIABLE/LINGUAS/g'`
+    ALL_LINGUAS_=`sed -n -e "$sed_x_LINGUAS" < "$ac_file"`
+  fi
+  # Hide the ALL_LINGUAS assigment from automake < 1.5.
+  eval 'ALL_LINGUAS''=$ALL_LINGUAS_'
+  # Compute POFILES
+  # as      $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po)
+  # Compute UPDATEPOFILES
+  # as      $(foreach lang, $(ALL_LINGUAS), $(lang).po-update)
+  # Compute DUMMYPOFILES
+  # as      $(foreach lang, $(ALL_LINGUAS), $(lang).nop)
+  # Compute GMOFILES
+  # as      $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo)
+  # Compute PROPERTIESFILES
+  # as      $(foreach lang, $(ALL_LINGUAS), $(top_srcdir)/$(DOMAIN)_$(lang).properties)
+  # Compute CLASSFILES
+  # as      $(foreach lang, $(ALL_LINGUAS), $(top_srcdir)/$(DOMAIN)_$(lang).class)
+  # Compute QMFILES
+  # as      $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).qm)
+  # Compute MSGFILES
+  # as      $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(frob $(lang)).msg)
+  # Compute RESOURCESDLLFILES
+  # as      $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(frob $(lang))/$(DOMAIN).resources.dll)
+  case "$ac_given_srcdir" in
+    .) srcdirpre= ;;
+    *) srcdirpre='$(srcdir)/' ;;
+  esac
+  POFILES=
+  UPDATEPOFILES=
+  DUMMYPOFILES=
+  GMOFILES=
+  PROPERTIESFILES=
+  CLASSFILES=
+  QMFILES=
+  MSGFILES=
+  RESOURCESDLLFILES=
+  for lang in $ALL_LINGUAS; do
+    POFILES="$POFILES $srcdirpre$lang.po"
+    UPDATEPOFILES="$UPDATEPOFILES $lang.po-update"
+    DUMMYPOFILES="$DUMMYPOFILES $lang.nop"
+    GMOFILES="$GMOFILES $srcdirpre$lang.gmo"
+    PROPERTIESFILES="$PROPERTIESFILES \$(top_srcdir)/\$(DOMAIN)_$lang.properties"
+    CLASSFILES="$CLASSFILES \$(top_srcdir)/\$(DOMAIN)_$lang.class"
+    QMFILES="$QMFILES $srcdirpre$lang.qm"
+    frobbedlang=`echo $lang | sed -e 's/\..*$//' -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
+    MSGFILES="$MSGFILES $srcdirpre$frobbedlang.msg"
+    frobbedlang=`echo $lang | sed -e 's/_/-/g' -e 's/^sr-CS/sr-SP/' -e 's/@latin$/-Latn/' -e 's/@cyrillic$/-Cyrl/' -e 's/^sr-SP$/sr-SP-Latn/' -e 's/^uz-UZ$/uz-UZ-Latn/'`
+    RESOURCESDLLFILES="$RESOURCESDLLFILES $srcdirpre$frobbedlang/\$(DOMAIN).resources.dll"
+  done
+  # CATALOGS depends on both $ac_dir and the user's LINGUAS
+  # environment variable.
+  INST_LINGUAS=
+  if test -n "$ALL_LINGUAS"; then
+    for presentlang in $ALL_LINGUAS; do
+      useit=no
+      if test "%UNSET%" != "$LINGUAS"; then
+        desiredlanguages="$LINGUAS"
+      else
+        desiredlanguages="$ALL_LINGUAS"
+      fi
+      for desiredlang in $desiredlanguages; do
+        # Use the presentlang catalog if desiredlang is
+        #   a. equal to presentlang, or
+        #   b. a variant of presentlang (because in this case,
+        #      presentlang can be used as a fallback for messages
+        #      which are not translated in the desiredlang catalog).
+        case "$desiredlang" in
+          "$presentlang"*) useit=yes;;
+        esac
+      done
+      if test $useit = yes; then
+        INST_LINGUAS="$INST_LINGUAS $presentlang"
+      fi
+    done
+  fi
+  CATALOGS=
+  JAVACATALOGS=
+  QTCATALOGS=
+  TCLCATALOGS=
+  CSHARPCATALOGS=
+  if test -n "$INST_LINGUAS"; then
+    for lang in $INST_LINGUAS; do
+      CATALOGS="$CATALOGS $lang.gmo"
+      JAVACATALOGS="$JAVACATALOGS \$(DOMAIN)_$lang.properties"
+      QTCATALOGS="$QTCATALOGS $lang.qm"
+      frobbedlang=`echo $lang | sed -e 's/\..*$//' -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
+      TCLCATALOGS="$TCLCATALOGS $frobbedlang.msg"
+      frobbedlang=`echo $lang | sed -e 's/_/-/g' -e 's/^sr-CS/sr-SP/' -e 's/@latin$/-Latn/' -e 's/@cyrillic$/-Cyrl/' -e 's/^sr-SP$/sr-SP-Latn/' -e 's/^uz-UZ$/uz-UZ-Latn/'`
+      CSHARPCATALOGS="$CSHARPCATALOGS $frobbedlang/\$(DOMAIN).resources.dll"
+    done
+  fi
+
+  sed -e "s|@POTFILES_DEPS@|$POTFILES_DEPS|g" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@PROPERTIESFILES@|$PROPERTIESFILES|g" -e "s|@CLASSFILES@|$CLASSFILES|g" -e "s|@QMFILES@|$QMFILES|g" -e "s|@MSGFILES@|$MSGFILES|g" -e "s|@RESOURCESDLLFILES@|$RESOURCESDLLFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@JAVACATALOGS@|$JAVACATALOGS|g" -e "s|@QTCATALOGS@|$QTCATALOGS|g" -e "s|@TCLCATALOGS@|$TCLCATALOGS|g" -e "s|@CSHARPCATALOGS@|$CSHARPCATALOGS|g" -e 's,^#distdir:,distdir:,' < "$ac_file" > "$ac_file.tmp"
+  if grep -l '@TCLCATALOGS@' "$ac_file" > /dev/null; then
+    # Add dependencies that cannot be formulated as a simple suffix rule.
+    for lang in $ALL_LINGUAS; do
+      frobbedlang=`echo $lang | sed -e 's/\..*$//' -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
+      cat >> "$ac_file.tmp" <<EOF
+$frobbedlang.msg: $lang.po
+       @echo "\$(MSGFMT) -c --tcl -d \$(srcdir) -l $lang $srcdirpre$lang.po"; \
+       \$(MSGFMT) -c --tcl -d "\$(srcdir)" -l $lang $srcdirpre$lang.po || { rm -f "\$(srcdir)/$frobbedlang.msg"; exit 1; }
+EOF
+    done
+  fi
+  if grep -l '@CSHARPCATALOGS@' "$ac_file" > /dev/null; then
+    # Add dependencies that cannot be formulated as a simple suffix rule.
+    for lang in $ALL_LINGUAS; do
+      frobbedlang=`echo $lang | sed -e 's/_/-/g' -e 's/^sr-CS/sr-SP/' -e 's/@latin$/-Latn/' -e 's/@cyrillic$/-Cyrl/' -e 's/^sr-SP$/sr-SP-Latn/' -e 's/^uz-UZ$/uz-UZ-Latn/'`
+      cat >> "$ac_file.tmp" <<EOF
+$frobbedlang/\$(DOMAIN).resources.dll: $lang.po
+       @echo "\$(MSGFMT) -c --csharp -d \$(srcdir) -l $lang $srcdirpre$lang.po -r \$(DOMAIN)"; \
+       \$(MSGFMT) -c --csharp -d "\$(srcdir)" -l $lang $srcdirpre$lang.po -r "\$(DOMAIN)" || { rm -f "\$(srcdir)/$frobbedlang.msg"; exit 1; }
+EOF
+    done
+  fi
+  if test -n "$POMAKEFILEDEPS"; then
+    cat >> "$ac_file.tmp" <<EOF
+Makefile: $POMAKEFILEDEPS
+EOF
+  fi
+  mv "$ac_file.tmp" "$ac_file"
+])
diff --git a/m4/progtest.m4 b/m4/progtest.m4
new file mode 100644 (file)
index 0000000..a56365c
--- /dev/null
@@ -0,0 +1,92 @@
+# progtest.m4 serial 4 (gettext-0.14.2)
+dnl Copyright (C) 1996-2003, 2005 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+dnl
+dnl This file can can be used in projects which are not available under
+dnl the GNU General Public License or the GNU Library General Public
+dnl License but which still want to provide support for the GNU gettext
+dnl functionality.
+dnl Please note that the actual code of the GNU gettext library is covered
+dnl by the GNU Library General Public License, and the rest of the GNU
+dnl gettext package package is covered by the GNU General Public License.
+dnl They are *not* in the public domain.
+
+dnl Authors:
+dnl   Ulrich Drepper <drepper@cygnus.com>, 1996.
+
+AC_PREREQ(2.50)
+
+# Search path for a program which passes the given test.
+
+dnl AM_PATH_PROG_WITH_TEST(VARIABLE, PROG-TO-CHECK-FOR,
+dnl   TEST-PERFORMED-ON-FOUND_PROGRAM [, VALUE-IF-NOT-FOUND [, PATH]])
+AC_DEFUN([AM_PATH_PROG_WITH_TEST],
+[
+# Prepare PATH_SEPARATOR.
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+  echo "#! /bin/sh" >conf$$.sh
+  echo  "exit 0"   >>conf$$.sh
+  chmod +x conf$$.sh
+  if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
+    PATH_SEPARATOR=';'
+  else
+    PATH_SEPARATOR=:
+  fi
+  rm -f conf$$.sh
+fi
+
+# Find out how to test for executable files. Don't use a zero-byte file,
+# as systems may use methods other than mode bits to determine executability.
+cat >conf$$.file <<_ASEOF
+#! /bin/sh
+exit 0
+_ASEOF
+chmod +x conf$$.file
+if test -x conf$$.file >/dev/null 2>&1; then
+  ac_executable_p="test -x"
+else
+  ac_executable_p="test -f"
+fi
+rm -f conf$$.file
+
+# Extract the first word of "$2", so it can be a program name with args.
+set dummy $2; ac_word=[$]2
+AC_MSG_CHECKING([for $ac_word])
+AC_CACHE_VAL(ac_cv_path_$1,
+[case "[$]$1" in
+  [[\\/]]* | ?:[[\\/]]*)
+    ac_cv_path_$1="[$]$1" # Let the user override the test with a path.
+    ;;
+  *)
+    ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR
+    for ac_dir in ifelse([$5], , $PATH, [$5]); do
+      IFS="$ac_save_IFS"
+      test -z "$ac_dir" && ac_dir=.
+      for ac_exec_ext in '' $ac_executable_extensions; do
+        if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then
+          echo "$as_me: trying $ac_dir/$ac_word..." >&AS_MESSAGE_LOG_FD
+          if [$3]; then
+            ac_cv_path_$1="$ac_dir/$ac_word$ac_exec_ext"
+            break 2
+          fi
+        fi
+      done
+    done
+    IFS="$ac_save_IFS"
+dnl If no 4th arg is given, leave the cache variable unset,
+dnl so AC_PATH_PROGS will keep looking.
+ifelse([$4], , , [  test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4"
+])dnl
+    ;;
+esac])dnl
+$1="$ac_cv_path_$1"
+if test ifelse([$4], , [-n "[$]$1"], ["[$]$1" != "$4"]); then
+  AC_MSG_RESULT([$]$1)
+else
+  AC_MSG_RESULT(no)
+fi
+AC_SUBST($1)dnl
+])
diff --git a/po/ChangeLog b/po/ChangeLog
new file mode 100644 (file)
index 0000000..348f2bc
--- /dev/null
@@ -0,0 +1,11 @@
+2007-06-20  Marcus Brinkmann  <marcus@g10code.de>
+
+       * Makevars, LINGUAS, nsis-xgettext.sh, nsis-xgettext.awk,
+       nsis-msgfmt.c, Rules-nsis, de.po, README.nsis: New files.
+
+2007-06-20  gettextize  <bug-gnu-gettext@gnu.org>
+
+       * Makefile.in.in: New file, from gettext-0.16.1.
+       * remove-potcdate.sin: New file, from gettext-0.16.1.
+       * POTFILES.in: New file.
+
diff --git a/po/LINGUAS b/po/LINGUAS
new file mode 100644 (file)
index 0000000..073178d
--- /dev/null
@@ -0,0 +1,2 @@
+# Set of available languages.
+de
diff --git a/po/Makefile.in.in b/po/Makefile.in.in
new file mode 100644 (file)
index 0000000..5022b8b
--- /dev/null
@@ -0,0 +1,403 @@
+# Makefile for PO directory in any package using GNU gettext.
+# Copyright (C) 1995-1997, 2000-2006 by Ulrich Drepper <drepper@gnu.ai.mit.edu>
+#
+# This file can be copied and used freely without restrictions.  It can
+# be used in projects which are not available under the GNU General Public
+# License but which still want to provide support for the GNU gettext
+# functionality.
+# Please note that the actual code of GNU gettext is covered by the GNU
+# General Public License and is *not* in the public domain.
+#
+# Origin: gettext-0.16
+
+PACKAGE = @PACKAGE@
+VERSION = @VERSION@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+
+SHELL = /bin/sh
+@SET_MAKE@
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+
+prefix = @prefix@
+exec_prefix = @exec_prefix@
+datarootdir = @datarootdir@
+datadir = @datadir@
+localedir = @localedir@
+gettextsrcdir = $(datadir)/gettext/po
+
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+
+# We use $(mkdir_p).
+# In automake <= 1.9.x, $(mkdir_p) is defined either as "mkdir -p --" or as
+# "$(mkinstalldirs)" or as "$(install_sh) -d". For these automake versions,
+# @install_sh@ does not start with $(SHELL), so we add it.
+# In automake >= 1.10, @mkdir_p@ is derived from ${MKDIR_P}, which is defined
+# either as "/path/to/mkdir -p" or ".../install-sh -c -d". For these automake
+# versions, $(mkinstalldirs) and $(install_sh) are unused.
+mkinstalldirs = $(SHELL) @install_sh@ -d
+install_sh = $(SHELL) @install_sh@
+MKDIR_P = @MKDIR_P@
+mkdir_p = @mkdir_p@
+
+GMSGFMT_ = @GMSGFMT@
+GMSGFMT_no = @GMSGFMT@
+GMSGFMT_yes = @GMSGFMT_015@
+GMSGFMT = $(GMSGFMT_$(USE_MSGCTXT))
+MSGFMT_ = @MSGFMT@
+MSGFMT_no = @MSGFMT@
+MSGFMT_yes = @MSGFMT_015@
+MSGFMT = $(MSGFMT_$(USE_MSGCTXT))
+XGETTEXT_ = @XGETTEXT@
+XGETTEXT_no = @XGETTEXT@
+XGETTEXT_yes = @XGETTEXT_015@
+XGETTEXT = $(XGETTEXT_$(USE_MSGCTXT))
+MSGMERGE = msgmerge
+MSGMERGE_UPDATE = @MSGMERGE@ --update
+MSGINIT = msginit
+MSGCONV = msgconv
+MSGFILTER = msgfilter
+
+POFILES = @POFILES@
+GMOFILES = @GMOFILES@
+UPDATEPOFILES = @UPDATEPOFILES@
+DUMMYPOFILES = @DUMMYPOFILES@
+DISTFILES.common = Makefile.in.in remove-potcdate.sin \
+$(DISTFILES.common.extra1) $(DISTFILES.common.extra2) $(DISTFILES.common.extra3)
+DISTFILES = $(DISTFILES.common) Makevars POTFILES.in \
+$(POFILES) $(GMOFILES) \
+$(DISTFILES.extra1) $(DISTFILES.extra2) $(DISTFILES.extra3)
+
+POTFILES = \
+
+CATALOGS = @CATALOGS@
+
+# Makevars gets inserted here. (Don't remove this line!)
+
+.SUFFIXES:
+.SUFFIXES: .po .gmo .mo .sed .sin .nop .po-create .po-update
+
+.po.mo:
+       @echo "$(MSGFMT) -c -o $@ $<"; \
+       $(MSGFMT) -c -o t-$@ $< && mv t-$@ $@
+
+.po.gmo:
+       @lang=`echo $* | sed -e 's,.*/,,'`; \
+       test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \
+       echo "$${cdcmd}rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics -o $${lang}.gmo $${lang}.po"; \
+       cd $(srcdir) && rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics -o t-$${lang}.gmo $${lang}.po && mv t-$${lang}.gmo $${lang}.gmo
+
+.sin.sed:
+       sed -e '/^#/d' $< > t-$@
+       mv t-$@ $@
+
+
+all: all-@USE_NLS@
+
+all-yes: stamp-po
+all-no:
+
+# $(srcdir)/$(DOMAIN).pot is only created when needed. When xgettext finds no
+# internationalized messages, no $(srcdir)/$(DOMAIN).pot is created (because
+# we don't want to bother translators with empty POT files). We assume that
+# LINGUAS is empty in this case, i.e. $(POFILES) and $(GMOFILES) are empty.
+# In this case, stamp-po is a nop (i.e. a phony target).
+
+# stamp-po is a timestamp denoting the last time at which the CATALOGS have
+# been loosely updated. Its purpose is that when a developer or translator
+# checks out the package via CVS, and the $(DOMAIN).pot file is not in CVS,
+# "make" will update the $(DOMAIN).pot and the $(CATALOGS), but subsequent
+# invocations of "make" will do nothing. This timestamp would not be necessary
+# if updating the $(CATALOGS) would always touch them; however, the rule for
+# $(POFILES) has been designed to not touch files that don't need to be
+# changed.
+stamp-po: $(srcdir)/$(DOMAIN).pot
+       test ! -f $(srcdir)/$(DOMAIN).pot || \
+         test -z "$(GMOFILES)" || $(MAKE) $(GMOFILES)
+       @test ! -f $(srcdir)/$(DOMAIN).pot || { \
+         echo "touch stamp-po" && \
+         echo timestamp > stamp-poT && \
+         mv stamp-poT stamp-po; \
+       }
+
+# Note: Target 'all' must not depend on target '$(DOMAIN).pot-update',
+# otherwise packages like GCC can not be built if only parts of the source
+# have been downloaded.
+
+# This target rebuilds $(DOMAIN).pot; it is an expensive operation.
+# Note that $(DOMAIN).pot is not touched if it doesn't need to be changed.
+$(DOMAIN).pot-update: $(POTFILES) $(srcdir)/POTFILES.in remove-potcdate.sed
+       if test -n '$(MSGID_BUGS_ADDRESS)' || test '$(PACKAGE_BUGREPORT)' = '@'PACKAGE_BUGREPORT'@'; then \
+         msgid_bugs_address='$(MSGID_BUGS_ADDRESS)'; \
+       else \
+         msgid_bugs_address='$(PACKAGE_BUGREPORT)'; \
+       fi; \
+       $(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \
+         --add-comments=TRANSLATORS: $(XGETTEXT_OPTIONS) \
+         --files-from=$(srcdir)/POTFILES.in \
+         --copyright-holder='$(COPYRIGHT_HOLDER)' \
+         --msgid-bugs-address="$$msgid_bugs_address"
+       test ! -f $(DOMAIN).po || { \
+         if test -f $(srcdir)/$(DOMAIN).pot; then \
+           sed -f remove-potcdate.sed < $(srcdir)/$(DOMAIN).pot > $(DOMAIN).1po && \
+           sed -f remove-potcdate.sed < $(DOMAIN).po > $(DOMAIN).2po && \
+           if cmp $(DOMAIN).1po $(DOMAIN).2po >/dev/null 2>&1; then \
+             rm -f $(DOMAIN).1po $(DOMAIN).2po $(DOMAIN).po; \
+           else \
+             rm -f $(DOMAIN).1po $(DOMAIN).2po $(srcdir)/$(DOMAIN).pot && \
+             mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \
+           fi; \
+         else \
+           mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \
+         fi; \
+       }
+
+# This rule has no dependencies: we don't need to update $(DOMAIN).pot at
+# every "make" invocation, only create it when it is missing.
+# Only "make $(DOMAIN).pot-update" or "make dist" will force an update.
+$(srcdir)/$(DOMAIN).pot:
+       $(MAKE) $(DOMAIN).pot-update
+
+# This target rebuilds a PO file if $(DOMAIN).pot has changed.
+# Note that a PO file is not touched if it doesn't need to be changed.
+$(POFILES): $(srcdir)/$(DOMAIN).pot
+       @lang=`echo $@ | sed -e 's,.*/,,' -e 's/\.po$$//'`; \
+       if test -f "$(srcdir)/$${lang}.po"; then \
+         test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \
+         echo "$${cdcmd}$(MSGMERGE_UPDATE) $${lang}.po $(DOMAIN).pot"; \
+         cd $(srcdir) && $(MSGMERGE_UPDATE) $${lang}.po $(DOMAIN).pot; \
+       else \
+         $(MAKE) $${lang}.po-create; \
+       fi
+
+
+install: install-exec install-data
+install-exec:
+install-data: install-data-@USE_NLS@
+       if test "$(PACKAGE)" = "gettext-tools"; then \
+         $(mkdir_p) $(DESTDIR)$(gettextsrcdir); \
+         for file in $(DISTFILES.common) Makevars.template; do \
+           $(INSTALL_DATA) $(srcdir)/$$file \
+                           $(DESTDIR)$(gettextsrcdir)/$$file; \
+         done; \
+         for file in Makevars; do \
+           rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \
+         done; \
+       else \
+         : ; \
+       fi
+install-data-no: all
+install-data-yes: all
+       $(mkdir_p) $(DESTDIR)$(datadir)
+       @catalogs='$(CATALOGS)'; \
+       for cat in $$catalogs; do \
+         cat=`basename $$cat`; \
+         lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \
+         dir=$(localedir)/$$lang/LC_MESSAGES; \
+         $(mkdir_p) $(DESTDIR)$$dir; \
+         if test -r $$cat; then realcat=$$cat; else realcat=$(srcdir)/$$cat; fi; \
+         $(INSTALL_DATA) $$realcat $(DESTDIR)$$dir/$(DOMAIN).mo; \
+         echo "installing $$realcat as $(DESTDIR)$$dir/$(DOMAIN).mo"; \
+         for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \
+           if test -n "$$lc"; then \
+             if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \
+               link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \
+               mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \
+               mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \
+               (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \
+                for file in *; do \
+                  if test -f $$file; then \
+                    ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \
+                  fi; \
+                done); \
+               rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \
+             else \
+               if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \
+                 :; \
+               else \
+                 rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \
+                 mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \
+               fi; \
+             fi; \
+             rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \
+             ln -s ../LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \
+             ln $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \
+             cp -p $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \
+             echo "installing $$realcat link as $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo"; \
+           fi; \
+         done; \
+       done
+
+install-strip: install
+
+installdirs: installdirs-exec installdirs-data
+installdirs-exec:
+installdirs-data: installdirs-data-@USE_NLS@
+       if test "$(PACKAGE)" = "gettext-tools"; then \
+         $(mkdir_p) $(DESTDIR)$(gettextsrcdir); \
+       else \
+         : ; \
+       fi
+installdirs-data-no:
+installdirs-data-yes:
+       $(mkdir_p) $(DESTDIR)$(datadir)
+       @catalogs='$(CATALOGS)'; \
+       for cat in $$catalogs; do \
+         cat=`basename $$cat`; \
+         lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \
+         dir=$(localedir)/$$lang/LC_MESSAGES; \
+         $(mkdir_p) $(DESTDIR)$$dir; \
+         for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \
+           if test -n "$$lc"; then \
+             if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \
+               link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \
+               mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \
+               mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \
+               (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \
+                for file in *; do \
+                  if test -f $$file; then \
+                    ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \
+                  fi; \
+                done); \
+               rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \
+             else \
+               if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \
+                 :; \
+               else \
+                 rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \
+                 mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \
+               fi; \
+             fi; \
+           fi; \
+         done; \
+       done
+
+# Define this as empty until I found a useful application.
+installcheck:
+
+uninstall: uninstall-exec uninstall-data
+uninstall-exec:
+uninstall-data: uninstall-data-@USE_NLS@
+       if test "$(PACKAGE)" = "gettext-tools"; then \
+         for file in $(DISTFILES.common) Makevars.template; do \
+           rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \
+         done; \
+       else \
+         : ; \
+       fi
+uninstall-data-no:
+uninstall-data-yes:
+       catalogs='$(CATALOGS)'; \
+       for cat in $$catalogs; do \
+         cat=`basename $$cat`; \
+         lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \
+         for lc in LC_MESSAGES $(EXTRA_LOCALE_CATEGORIES); do \
+           rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \
+         done; \
+       done
+
+check: all
+
+info dvi ps pdf html tags TAGS ctags CTAGS ID:
+
+mostlyclean:
+       rm -f remove-potcdate.sed
+       rm -f stamp-poT
+       rm -f core core.* $(DOMAIN).po $(DOMAIN).1po $(DOMAIN).2po *.new.po
+       rm -fr *.o
+
+clean: mostlyclean
+
+distclean: clean
+       rm -f Makefile Makefile.in POTFILES *.mo
+
+maintainer-clean: distclean
+       @echo "This command is intended for maintainers to use;"
+       @echo "it deletes files that may require special tools to rebuild."
+       rm -f stamp-po $(GMOFILES)
+
+distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir)
+dist distdir:
+       $(MAKE) update-po
+       @$(MAKE) dist2
+# This is a separate target because 'update-po' must be executed before.
+dist2: stamp-po $(DISTFILES)
+       dists="$(DISTFILES)"; \
+       if test "$(PACKAGE)" = "gettext-tools"; then \
+         dists="$$dists Makevars.template"; \
+       fi; \
+       if test -f $(srcdir)/$(DOMAIN).pot; then \
+         dists="$$dists $(DOMAIN).pot stamp-po"; \
+       fi; \
+       if test -f $(srcdir)/ChangeLog; then \
+         dists="$$dists ChangeLog"; \
+       fi; \
+       for i in 0 1 2 3 4 5 6 7 8 9; do \
+         if test -f $(srcdir)/ChangeLog.$$i; then \
+           dists="$$dists ChangeLog.$$i"; \
+         fi; \
+       done; \
+       if test -f $(srcdir)/LINGUAS; then dists="$$dists LINGUAS"; fi; \
+       for file in $$dists; do \
+         if test -f $$file; then \
+           cp -p $$file $(distdir) || exit 1; \
+         else \
+           cp -p $(srcdir)/$$file $(distdir) || exit 1; \
+         fi; \
+       done
+
+update-po: Makefile
+       $(MAKE) $(DOMAIN).pot-update
+       test -z "$(UPDATEPOFILES)" || $(MAKE) $(UPDATEPOFILES)
+       $(MAKE) update-gmo
+
+# General rule for creating PO files.
+
+.nop.po-create:
+       @lang=`echo $@ | sed -e 's/\.po-create$$//'`; \
+       echo "File $$lang.po does not exist. If you are a translator, you can create it through 'msginit'." 1>&2; \
+       exit 1
+
+# General rule for updating PO files.
+
+.nop.po-update:
+       @lang=`echo $@ | sed -e 's/\.po-update$$//'`; \
+       if test "$(PACKAGE)" = "gettext-tools"; then PATH=`pwd`/../src:$$PATH; fi; \
+       tmpdir=`pwd`; \
+       echo "$$lang:"; \
+       test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \
+       echo "$${cdcmd}$(MSGMERGE) $$lang.po $(DOMAIN).pot -o $$lang.new.po"; \
+       cd $(srcdir); \
+       if $(MSGMERGE) $$lang.po $(DOMAIN).pot -o $$tmpdir/$$lang.new.po; then \
+         if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \
+           rm -f $$tmpdir/$$lang.new.po; \
+         else \
+           if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \
+             :; \
+           else \
+             echo "msgmerge for $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \
+             exit 1; \
+           fi; \
+         fi; \
+       else \
+         echo "msgmerge for $$lang.po failed!" 1>&2; \
+         rm -f $$tmpdir/$$lang.new.po; \
+       fi
+
+$(DUMMYPOFILES):
+
+update-gmo: Makefile $(GMOFILES)
+       @:
+
+Makefile: Makefile.in.in Makevars $(top_builddir)/config.status @POMAKEFILEDEPS@
+       cd $(top_builddir) \
+         && $(SHELL) ./config.status $(subdir)/$@.in po-directories
+
+force:
+
+# Tell versions [3.59,3.63) of GNU make not to export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/po/Makevars b/po/Makevars
new file mode 100644 (file)
index 0000000..ccea2a1
--- /dev/null
@@ -0,0 +1,47 @@
+# Makefile variables for PO directory in any package using GNU gettext.
+
+# Usually the message domain is the same as the package name.
+DOMAIN = $(PACKAGE)
+
+# These two variables depend on the location of this directory.
+subdir = po
+top_builddir = ..
+
+# These options get passed to xgettext.
+XGETTEXT_OPTIONS = -L c
+
+# We wrap XGETTEXT with a small script.
+
+# FIXME: We need to find BASH or fix the script.  Pass $(srcdir)!
+# The script can't stay in po/, as we don't have an EXTRA_DIST in the Makefile!
+XGETTEXT := /bin/bash $(srcdir)/nsis-xgettext.sh --srcdir=$(srcdir) $(XGETTEXT)
+
+# This is the copyright holder that gets inserted into the header of the
+# $(DOMAIN).pot file.  Set this to the copyright holder of the surrounding
+# package.  (Note that the msgstr strings, extracted from the package's
+# sources, belong to the copyright holder of the package.)  Translators are
+# expected to transfer the copyright for their translations to this person
+# or entity, or to disclaim their copyright.  The empty string stands for
+# the public domain; in this case the translators are expected to disclaim
+# their copyright.
+COPYRIGHT_HOLDER = g10 Code GmbH
+
+# This is the email address or URL to which the translators shall report
+# bugs in the untranslated strings:
+# - Strings which are not entire sentences, see the maintainer guidelines
+#   in the GNU gettext documentation, section 'Preparing Strings'.
+# - Strings which use unclear terms or require additional context to be
+#   understood.
+# - Strings which make invalid assumptions about notation of date, time or
+#   money.
+# - Pluralisation problems.
+# - Incorrect English spelling.
+# - Incorrect formatting.
+# It can be your email address, or a mailing list address where translators
+# can write to without being subscribed, or the URL of a web page through
+# which the translators can contact you.
+MSGID_BUGS_ADDRESS = 
+
+# This is the list of locale categories, beyond LC_MESSAGES, for which the
+# message catalogs shall be used.  It is usually empty.
+EXTRA_LOCALE_CATEGORIES =
diff --git a/po/POTFILES.in b/po/POTFILES.in
new file mode 100644 (file)
index 0000000..838a188
--- /dev/null
@@ -0,0 +1,15 @@
+# List of source files which contain translatable strings.
+src/g4wihelp.nsi
+src/installer.nsi
+src/inst-eudoragpg.nsi
+src/inst-gnupg.nsi
+src/inst-gpa.nsi
+src/inst-gpg4win.nsi
+src/inst-gpgee.nsi
+src/inst-gpgol.nsi
+src/inst-man_advanced_de.nsi
+src/inst-man_advanced_en.nsi
+src/inst-man_novice_de.nsi
+src/inst-man_novice_en.nsi
+src/inst-sylpheed-claws.nsi
+src/inst-winpt.nsi
diff --git a/po/README.nsis b/po/README.nsis
new file mode 100644 (file)
index 0000000..d1b01d8
--- /dev/null
@@ -0,0 +1,104 @@
+gettext integration in NSIS
+===========================
+
+This document describes briefly how the integration of gettext and
+NSIS works.
+
+
+1. Preparation of sources
+
+You can use gettextize, although it is overkill.  The following
+modifications to the standard gettextize procedure should be done:
+
+Remove the following files in m4/ unless needed otherwise:
+gettext.m4, iconv.m4, lib-ld.m4, lib-link.m4, lib-prefix.m4
+
+Use AM_PO_SUBDIRS in configure.ac instead of AM_GNU_GETTEXT([external]).
+
+You don't need gettext.h.
+
+Makevars needs to be modified as thus:
+
+XGETTEXT_OPTIONS = -L c
+
+XGETTEXT := /bin/bash $(srcdir)/nsis-xgettext.sh --srcdir=$(srcdir) $(XGETTEXT)
+
+You also need the following files in po/:
+nsis-msgfmt.c
+nsis-xgettext.awk
+nsis-xgettext.sh
+Rules-nsis
+
+
+2. xgettext wrapper
+
+The script nsis-xgettext.sh is a wrapper for xgettext which extracts
+all lines from the POFILES that start with "LangString" (with no
+whitespace at the beginning of the line).  Language strings stretching
+multiple lines via trailing backslashes are supported.  The AWK script
+nsis-xgettext.awk transforms these into C function calls which are
+then parsed by xgettext.  Because we use #line directives, positional
+indicators (filename/line number) are preserved in the .po file.
+
+The wrapper (currently) only supports input via --from-files, not via
+standard input or file names as arguments.
+
+
+3. msgfmt replacement
+
+We let the standard Makefile produce LANG.gmo files, but we do not use
+them (as gpg4win is never "make install"-ed).  Instead, the LANG.nsi
+files are generated as a side effect of LANG.gmo generation.  The
+LANG.nsi files replace the LANG.gmo files for all purposes of NSIS.
+
+The LANG.nsi files are created from the respective LANG.po files with
+the nsis-msgfmt.c program, which needs to be compiled on the build
+platform and uses the libgettextpo library to parse the LANG.po files
+and produces output suitable for NSIS.  The program can generate files
+usable for vanilla NSIS and Modern UI (hard coded in a global variable
+in the source code).
+
+LANG.nsi files are included in the distribution, just as LANG.gmo files.
+
+
+4. catalogs.nsi
+
+As a side-effect of "make all" (that is, at normal compile time), the
+Rules-nsis Makefile extension also creates a file catalogs.nsi, which
+contains one !include directive for every language from the catalogs
+the user selected at compile time.
+
+
+5. Preparation of NSIS project
+
+The NSIS project should only include the code for the English
+language.  All .nsi files which contain LangString directives should
+be added to POFILES.in.  The NSIS project should have a directive:
+
+!addincludedir "${TOP_SRCDIR}/po"
+
+so that inclusion of catalogs.nsi will find the LANG.nsi files.  Near
+the end of the project's master NSI file you should include all
+translation strings:
+
+!include "catalogs.nsi"
+
+That's it.  Enjoy!
+
+Marcus Brinkmann
+mb@g10code.com
+
+
+This file
+=========
+
+Copyright 2007 g10 Code GmbH
+
+This file is free software; as a special exception the author gives
+unlimited permission to copy and/or distribute it, with or without
+modifications, as long as this notice is preserved.
+
+This file is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
+implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+PURPOSE.
diff --git a/po/Rules-nsis b/po/Rules-nsis
new file mode 100644 (file)
index 0000000..455b297
--- /dev/null
@@ -0,0 +1,54 @@
+# Rules-nsis - Special Makefile rules for NSIS message catalogs.
+# Copyright (C) 2007 g10 Code GmbH
+# 
+# This file is part of GPG4Win.
+# 
+# GPG4Win is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+# 
+# GPG4Win is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+# 
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
+
+NSIFILES = $(GMOFILES:.gmo=.nsi)
+DISTFILES.extra1 = nsis-xgettext.sh nsis-xgettext.awk nsis-msgfmt.c $(NSIFILES) \
+       Rules-nsis README.nsis
+
+.SUFFIXES: .nsi
+
+# We build this little utility on the BUILD architecture!  FIXME: It
+# would not be unreasonable to use $(BUILD_CC) and corresponding tests
+# in configure.
+nsis-msgfmt: nsis-msgfmt.c
+       $(CC) -o nsis-msgfmt -lgettextpo $(srcdir)/nsis-msgfmt.c
+
+# We extend the GMO file mechanism to also handle NSIS files.
+$(GMOFILES): %.gmo: %.nsi
+
+%.nsi : %.po nsis-msgfmt
+       @lang=`echo $* | sed -e 's,.*/,,'`; \
+       test "$(srcdir)" = . && dir="" || dir="$(srcdir)/"; \
+       echo "rm -f $${dir}$${lang}.nsi && ./nsis-msgfmt $${dir}$${lang}.po > $${dir}$${lang}.nsi"; \
+       rm -f $${dir}$${lang}.nsi && ./nsis-msgfmt $${dir}$${lang}.po > $${dir}t-$${lang}.nsi && mv $${dir}t-$${lang}.nsi $${dir}$${lang}.nsi
+
+# Collect all NSI files we need to include.
+catalogs.nsi:
+       echo -n $(CATALOGS) \
+       | sed -e 's/\([^ ]*\).gmo */!include "\1.nsi"\n/g' > catalogs.nsi
+
+all: catalogs.nsi
+
+mostlyclean: mostlyclean-nsis
+mostlyclean-nsis:
+       rm -f nsis-msgfmt catalogs.nsi
+
+maintainer-clean: maintainer-clean-nsis
+maintainer-clean-nsis:
+       rm -f *.nsi
diff --git a/po/de.po b/po/de.po
new file mode 100644 (file)
index 0000000..cb1dfc9
--- /dev/null
+++ b/po/de.po
@@ -0,0 +1,416 @@
+# German translations for gpg4win package.
+# Copyright (C) 2007 g10 Code GmbH
+# This file is distributed under the same license as the gpg4win package.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: gpg4win 1.1.1-svn417\n"
+"Report-Msgid-Bugs-To: gpg4win-devel@wald.intevation.org\n"
+"POT-Creation-Date: 2007-06-20 03:04+0200\n"
+"PO-Revision-Date: 2007-06-19 05:21+0200\n"
+"Last-Translator: Marcus Brinkmann <mb@g10code.com>\n"
+"Language-Team: German <translation-team-de@lists.sourceforge.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ISO-8859-1\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: src/g4wihelp.nsi:21
+msgctxt "T_AlreadyRunning"
+msgid "An instance of this installer is already running."
+msgstr "Ein Exemplar dieses Installers läuft bereits."
+
+#: src/installer.nsi:201
+msgctxt "T_LangCode"
+msgid "en"
+msgstr "de"
+
+#: src/installer.nsi:204
+msgctxt "T_WelcomeTitle"
+msgid "${WELCOME_TITLE_ENGLISH}"
+msgstr "${WELCOME_TITLE_GERMAN}"
+
+#: src/installer.nsi:207
+msgctxt "T_About"
+msgid "${ABOUT_ENGLISH}"
+msgstr "${ABOUT_GERMAN}"
+
+#: src/installer.nsi:210
+msgctxt "T_GPLHeader"
+msgid ""
+"This software is licensed under the terms of the GNU General Public License "
+"(GPL) which guarantees your freedom to share and change Free Software."
+msgstr ""
+"Diese Software ist unter der GNU General Public License (GPL) lizensiert; "
+"dies gibt Ihnen die Freiheit, sie zu ändern und weiterzugeben."
+
+#: src/installer.nsi:215
+msgctxt "T_GPLShort"
+msgid ""
+"In short: You are allowed to run this software for any purpose. You may "
+"distribute it as long as you give the recipients the same rights you have "
+"received."
+msgstr ""
+"In aller Kürze: Sie haben das Recht, die Software zu jedem Zweck "
+"einzusetzen.  Sie können die Software weitergeben, sofern Sie dem EmpfÃ"
+"¤nger dieselben Rechte einräumen, die auch Sie erhalten haben."
+
+#: src/installer.nsi:220
+msgctxt "T_RunKeyManager"
+msgid "Run the key manager"
+msgstr "Die Schlüsselverwaltung aufrufen"
+
+#: src/installer.nsi:223
+msgctxt "T_MoreInfo"
+msgid "Click here for the project's homepage"
+msgstr "Hier klicken um zur Homepage des Projekts zu gelangen"
+
+#: src/installer.nsi:225
+msgctxt "T_MoreInfoURL"
+msgid "http://www.gpg4win.org"
+msgstr "http://www.gpg4win.de"
+
+#: src/installer.nsi:227
+msgctxt "T_ShowReadme"
+msgid "Show the README file"
+msgstr "Die README Datei anzeigen"
+
+#: src/installer.nsi:230
+msgctxt "T_NoKeyManager"
+msgid "No key manager has been installed, thus we can't run one now."
+msgstr ""
+"Es wurde keine Schlüsselverwaltung installiert.  Deswegen kann sie jetzt "
+"auch nicht ausgeführt werden."
+
+#: src/installer.nsi:415
+msgctxt "T_InstallOptions"
+msgid "Install Options"
+msgstr "Installationsoptionen"
+
+#: src/installer.nsi:418
+msgctxt "T_InstallOptLinks"
+msgid "Start links"
+msgstr "Startlinks"
+
+#: src/installer.nsi:420
+msgctxt "T_InstOptLabelA"
+msgid "Please select where Gpg4win shall install links:"
+msgstr "Bitte wählen Sie, welche Verknüpfungen angelegt werden sollen:"
+
+#: src/installer.nsi:423
+msgctxt "T_InstOptLabelB"
+msgid "(Only programs will be linked into the quick launch bar.)"
+msgstr ""
+"(In die Schnellstartleiste werden nur Verknüpfungen für Programme "
+"angelegt.)"
+
+#: src/installer.nsi:426
+msgctxt "T_InstOptFieldA"
+msgid "Start Menu"
+msgstr "Startmenü"
+
+#: src/installer.nsi:429
+msgctxt "T_InstOptFieldB"
+msgid "Desktop"
+msgstr "Arbeitsfläche"
+
+#: src/installer.nsi:432
+msgctxt "T_InstOptFieldC"
+msgid "Quick Launch Bar"
+msgstr "Schnellstartleiste"
+
+#: src/installer.nsi:438
+msgctxt "T_FoundExistingVersion"
+msgid ""
+"Version $R1 has already been installed.  $\\r$\\nDo you want to overwrite it "
+"with version ${VERSION}?"
+msgstr ""
+"Version $R1 ist hier bereits installiert. $\\r$\\n Möchten Sie diese mit "
+"Version ${VERSION} überschreiben? $\\r$\\n $\\r$\\n (Sie können in jedem "
+"Fall mit JA antworten, falls es sich um eine neuere oder dieselbe Version "
+"handelt.)"
+
+#: src/installer.nsi:441
+msgctxt "T_FoundExistingVersionB"
+msgid ""
+"A version of Gpg4Win has already been installed on the system. There will be "
+"no problem installing and thus overwriting this Version. $\\r$\\n$\\r$\\nDo "
+"you want to continue installing Gpg4win?"
+msgstr ""
+"Eine Version von Gpg4Win ist hier bereits installiert.  Es ist problemlos "
+"möglich, die Installation fortzuführen.  $\\r$\\n $\\r$\\n Möchten die "
+"die Installation von Gpg4Win fortführen?"
+
+#: src/installer.nsi:452
+msgctxt "T_FoundOldSeeManual"
+msgid ""
+"Please see the Gpg4win user manual to learn how to migrate existing keys "
+"from other GnuPG based installations to Gpg4win."
+msgstr ""
+"Bitte sehen Sie im Gpg4win für Einsteiger Handbuch nach, wie Sie Ihre "
+"Schlüssel aus anderen - GnuPG basierten - Installationen in Gpg4win "
+"überführen.  Es wird dringend geraten Gpg4Win nicht zusammen mit diesen "
+"anderen Installation zu betreiben."
+
+#: src/installer.nsi:457
+msgctxt "T_FoundOldGnuPP"
+msgid ""
+"An old installation of GnuPP (GNU Privacy Project) has been been detected.  "
+"That software is not maintained anymore and thus should be removed. $\\r$\\n$"
+"\\r$\\nDo you want to continue installing Gpg4win and take care of the old "
+"installation later?"
+msgstr ""
+"Eine alte Installation von GnuPP (GNU Privacy Project) wurde gefunden.  "
+"Diese Software wird nicht mehr gepflegt und sollte deshalb vom System "
+"entfernt werden.  $\\r$\\n $\\r$\\n Sie können die Installation von Gpg4win "
+"jetzt weiterdurchführen und danach entscheiden, ob Sie das alte GnuPP dann "
+"entfernen.  Sie finden hierzu Hinweise im Gpg4Win Handbuch für Einsteiger.  "
+"Falls Sie die alte Installation schon jetzt entfernen möchten, so "
+"exportieren Sie dort alle vorhandenen Schlüssel in eine Datei um sie so spÃ"
+"¤ter in Gpg4Win wieder importieren zu können. $\\r$\\n $\\r$\\n Möchten "
+"Sie die Installation von Gpg4win weiter durchführen und sich dann später "
+"um die Entfernung von GnuPP kümmern?"
+
+#: src/installer.nsi:466
+msgctxt "T_FoundOldGnuPT"
+msgid ""
+"An installation of GnuPT has been been detected.  This may cause problems "
+"when used along with Gpg4win. $\\r$\\n$\\r$\\nDo you want to continue "
+"installing Gpg4win?"
+msgstr ""
+"Eine Installation von GnuPT wurde gefunden.  Dies kann zu Problemen führen, "
+"falls GnuPT zusammem mit Gpg4win benutzt wird.  Falls Sie GnuPT "
+"zwischenzeitlich bereits entfernt haben, so ignorieren Sie diese Warnung "
+"bitte.  Die Deinstallation von GnuPT erfolgt nicht immer spurlos und Gpg4win "
+"kann deshalb nicht sicher erkennen, ob es vollständig entfernt wurde.  $\\r$"
+"\\n $\\r$\\n Sie können die Installation von Gpg4win jetzt weiterdurchführen "
+"und danach entscheiden, ob Sie das alte GnuPT dann entfernen.  Sie finden "
+"hierzu Hinweise im Gpg4Win Handbuch für Einsteiger.  Falls Sie die alte "
+"Installation schon jetzt entfernen möchten, so exportieren Sie dort alle "
+"vorhandenen Schlüssel in eine Datei um sie so später in Gpg4Win wieder "
+"importieren zu können.  $\\r$\\n $\\r$\\n Möchten Sie die Installation von "
+"Gpg4win fortführen?"
+
+#: src/installer.nsi:473
+msgctxt "T_FoundOldWinPTSF"
+msgid ""
+"An old installation of the Sourceforge hosted WinPT has been been detected.  "
+"That software is not maintained anymore and should be removed. $\\r$\\n$\\r$"
+"\\nDo you want to continue installing Gpg4win and take care of the old "
+"installation later?"
+msgstr ""
+"Eine alte Installation der Windows Privacy Tools von Sourceforge wurde "
+"gefunden.  Diese Software wird nicht mehr gepflegt und verträgt sich "
+"vermutlich nicht mit Gpg4win.  Sie sollte deshalb vom System entfernt "
+"werden.  $\\r$\\n $\\r$\\n Sie können versuchen, die Installation von "
+"Gpg4win jetzt weiterdurchführen und danach entscheiden, ob Sie die alte "
+"Installation entfernen.  Sie finden hierzu Hinweise im Gpg4Win Handbuch für "
+"Einsteiger.  $\\r$\\n $\\r$\\n Wir empfehlen alerdings, diese alte "
+"Installation vorher zu entfernen.  Brechen Sie hierzu die Installation von "
+"Gpg4win ab und exportieren Sie mittles dieser alten Version alle vorhandenen "
+"Schlüssel in eine Datei um sie so später in Gpg4Win wieder importieren zu "
+"können. $\\r$\\n $\\r$\\n Möchten Sie die Installation von Gpg4win trotzdem "
+"jetzt weiter durchführen?"
+
+#: src/installer.nsi:483
+msgctxt "T_FoundOldGnuPack"
+msgid ""
+"An installation of GnuPG-Pack has been been detected. You need to uninstall "
+"it before you can continue with Gpg4win installation. $\\r$\\n$\\r$\\nThe "
+"installation will be aborted now!"
+msgstr ""
+"Eine Installation von GnuPG-Pack wurde gefunden.  Sie müssen diese zuerst "
+"deinstallieren bevor Sie mit der Installation von Gpg4win fortfahren können. "
+"$\\r$\\n $\\r$\\n Die Installation von Gpg4win wird nun abgebrochen!"
+
+#: src/installer.nsi:492
+msgctxt "T_AdminNeeded"
+msgid ""
+"Warning: Administrator permissions required for a successful installation"
+msgstr ""
+"Achtung: Für eine erfolgreiche Installation werden Administratorrechte "
+"benötigt."
+
+#: src/installer.nsi:496
+msgctxt "T_CloseOtherApps"
+msgid ""
+"Please make sure that other applications are not running. In particular you "
+"should close Outlook and all Explorer windows.  Gpg4Win will try to install "
+"anyway but a reboot will be required then."
+msgstr ""
+"Bitte stellen Sie sicher, daß alle anderen Anwendugen geschlossen sind.  "
+"Insbesondere sollten Sie Outlook und alle Explorer Fenster schliessen bevor "
+"Sie die Installation fortsetzen.  Gpg4Win wird auf jeden Fall versuchen, "
+"eine Installation durchzuführen; es ist dann aber u.U. notwendig, das System "
+"neu zu starten."
+
+#: src/installer.nsi:501
+msgctxt "T_ShuttingDownWinPT"
+msgid "Trying to shutdown a possible running instance of WinPT."
+msgstr "Ein möglicherweise laufendes WinPT wird jetzt automatisch beendet."
+
+#: src/inst-eudoragpg.nsi:40
+msgctxt "DESC_SEC_eudoragpg"
+msgid "EudoraGPG is a plugin for the Eudora mail program"
+msgstr ""
+"EudoraGPG ist ein Plugin zur Verschlüsselung für das Eudora Mailprogramm"
+
+#: src/inst-gnupg.nsi:76
+msgctxt "DESC_SEC_gnupg"
+msgid "GNU Privacy Guard"
+msgstr ""
+"Der GNU Privacy Guard (GnuPG) ist der Kernbestandteil dieser Software.  "
+"GnuPG stellt die eigentliche Verschlüsselung sowie die Verwaltung der "
+"Schlüssel bereit."
+
+#: src/inst-gpa.nsi:50
+msgctxt "DESC_SEC_gpa"
+msgid "GNU Privacy Assistant"
+msgstr ""
+"GNU Privacy Assistent (GPA) ist ein Programm zum Verwalten von Schlüsseln "
+"welches für mehrere Plattformen verfügbar ist.  Es kann zusammen oder "
+"anstatt von WinPT benutzt werden."
+
+#: src/inst-gpa.nsi:53
+msgctxt "DESC_Menu_gpa"
+msgid ""
+"Run the GNU Privacy Assistant key management tool. This is an alternative to "
+"the WinPT key management tool."
+msgstr ""
+"Das Schlüsselverwaltungsprogramm GNU Privacy Assistent aufrufen.  Dies ist "
+"eine Alternative zu dem WinPT Programm."
+
+#: src/inst-gpg4win.nsi:43
+msgctxt "DESC_Menu_gpg4win_readme"
+msgid "General information on Gpg4Win"
+msgstr "Allgemeine Informationen zu Gpg4Win"
+
+#: src/inst-gpg4win.nsi:46
+msgctxt "DESC_Menu_gnupg_faq"
+msgid "Show the Frequently Asked Questions Document for GnuPG"
+msgstr "Das Dokument mit den häufig gestellten Fragen (FAQ) zu GnuPG anzeigen"
+
+#: src/inst-gpgee.nsi:65
+msgctxt "T_GPGee_RegFailed"
+msgid "Warning: Registration of the GPGee explorer extension failed."
+msgstr "Warnung: Registration der GPGee Explorer Extension ist fehlgeschlagen."
+
+#: src/inst-gpgee.nsi:68
+msgctxt "DESC_SEC_gpgee"
+msgid "GPG Explorer Extensions"
+msgstr ""
+"GPG Explorer Erweiterungen (GPGee) ist eine Erweiterung für den Explorer, "
+"die es ermöglicht, Dateien über das Kontextmenü zu verschlüsseln."
+
+#: src/inst-gpgee.nsi:71
+msgctxt "DESC_Menu_gpgee_hlp"
+msgid "Show the online manual of GPGee"
+msgstr "Das englische Handbuch zu GPGee anzeigen"
+
+#: src/inst-gpgol.nsi:54
+msgctxt "T_GPGol_RegFailed"
+msgid "Warning: Registration of the GPGol Outlook pluginfailed."
+msgstr "Warnung: Registration des GPGol Outlook Plugin ist fehlgeschlagen."
+
+#: src/inst-gpgol.nsi:57
+msgctxt "DESC_SEC_gpgol"
+msgid "GnuPG for Outlook"
+msgstr ""
+"GnuPG für Outlook (GPGol) is eine Erweiterung für Outlook 2003, die "
+"verwendet wird um Nachrichten mit OpenPGP zu verschlüsseln."
+
+#: src/inst-man_advanced_de.nsi:39
+msgctxt "DESC_Name_man_advanced_de"
+msgid "Advanced Manual (German)"
+msgstr "Durchblickerhandbuch"
+
+#: src/inst-man_advanced_de.nsi:42
+msgctxt "DESC_SEC_man_advanced_de"
+msgid "Gpg4Win Manual for the Advanced User (German)"
+msgstr "Gpg4Win Handbuch für den Durchblicker"
+
+#: src/inst-man_advanced_de.nsi:45
+msgctxt "DESC_Menu_man_advanced_de"
+msgid "Show the German online manual of Gpg4Win for advanced users"
+msgstr "Das Online-Handbuch von Gpg4Win für den Durchblicker anzeigen"
+
+#: src/inst-man_advanced_en.nsi:39
+msgctxt "DESC_Name_man_advanced_en"
+msgid "Advanced Manual"
+msgstr "Durchblickerhandbuch (Englisch)"
+
+#: src/inst-man_advanced_en.nsi:42
+msgctxt "DESC_SEC_man_advanced_en"
+msgid "Gpg4Win Manual for the Advanced User"
+msgstr "Gpg4Win Handbuch für den Durchblicker (Englisch)"
+
+#: src/inst-man_advanced_en.nsi:45
+msgctxt "DESC_Menu_man_advanced_en"
+msgid "Show the online manual of Gpg4Win for advanced users"
+msgstr ""
+"Das englische Online-Handbuch von Gpg4Win für den Durchblicker anzeigen"
+
+#: src/inst-man_novice_de.nsi:39
+msgctxt "DESC_Name_man_novice_de"
+msgid "Novice Manual (German)"
+msgstr "Einsteigerhandbuch"
+
+#: src/inst-man_novice_de.nsi:42
+msgctxt "DESC_SEC_man_novice_de"
+msgid "Gpg4Win Manual for the Novice User (German)"
+msgstr "Gpg4Win Handbuch für den Einsteiger"
+
+#: src/inst-man_novice_de.nsi:45
+msgctxt "DESC_Menu_man_novice_de"
+msgid "Show the German online manual of Gpg4Win for novice users"
+msgstr "Das Online-Handbuch von Gpg4Win für den Einsteiger anzeigen"
+
+#: src/inst-man_novice_en.nsi:39
+msgctxt "DESC_Name_man_novice_en"
+msgid "Novice Manual"
+msgstr "Einsteigerhandbuch (Englisch)"
+
+#: src/inst-man_novice_en.nsi:42
+msgctxt "DESC_SEC_man_novice_en"
+msgid "Gpg4Win Manual for the Novice User"
+msgstr "Gpg4Win Handbuch für den Einsteiger (Englisch)"
+
+#: src/inst-man_novice_en.nsi:45
+msgctxt "DESC_Menu_man_novice_en"
+msgid "Show the online manual of Gpg4Win for novice users"
+msgstr "Das englische Online-Handbuch von Gpg4Win für den Einsteiger anzeigen"
+
+#: src/inst-sylpheed-claws.nsi:51
+msgctxt "DESC_SEC_sylpheed"
+msgid "Sylpheed-Claws Mail-User-Agent"
+msgstr ""
+"Sylpheed-Claws ist ein vollständiges Mail- und News-Programm mit sehr guter "
+"Unterstützung für GnuPG."
+
+#: src/inst-sylpheed-claws.nsi:54
+msgctxt "DESC_Menu_sylpheed"
+msgid "Run the Sylpheed-Claws mailprogram."
+msgstr "Das Mailprogramm Sylpheed-Claws aufrufen."
+
+#: src/inst-sylpheed-claws.nsi:57
+msgctxt "DESC_Menu_sylpheed_pdf"
+msgid "Show the online manual of Sylpheed Claws"
+msgstr "Das englische Handbuch zu Sylpheed Claws anzeigen"
+
+#: src/inst-winpt.nsi:46
+msgctxt "DESC_SEC_winpt"
+msgid "Windows Privacy Tray"
+msgstr ""
+"Windows Privacy Tray (WinPT) ist ein vielseitiges Programm zur "
+"Schlüsselverwaltung sowie aller anderen Funktionen von GnuPG.  Es "
+"installiert sich in die Startleiste."
+
+#: src/inst-winpt.nsi:49
+msgctxt "DESC_Menu_winpt"
+msgid ""
+"Run the Windows Privacy Tray key management tool. This is a versatile key "
+"management and encryption tool."
+msgstr ""
+"Das Schlüsselverwaltungsprogramm Windows Privacy Tray aufrufen.  Dies ist "
+"ein vielseitiges Programm zur Schlüsselverwaltung und Verschlüsselung.  Es "
+"installiert sich in die Startleiste."
diff --git a/po/nsis-msgfmt.c b/po/nsis-msgfmt.c
new file mode 100644 (file)
index 0000000..f1996fc
--- /dev/null
@@ -0,0 +1,411 @@
+/* nsis-msgfmt.c - Replacement for msgfmt for NSIS projects.
+   Copyright (C) 2007 g10 Code GmbH
+  
+   This file is part of Gpg4win.
+  
+   Gpg4win is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2 of the License, or
+   (at your option) any later version.
+  
+   Gpg4win is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+  
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software
+   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+   MA 02110-1301, USA.  */
+
+#include <stdio.h>
+#include <string.h>
+#include <error.h>
+#include <errno.h>
+
+/* This file does NOT include config.h, as that one is for the host
+   target and not the build target.  But this file is run on the build
+   architecture at (cross-) compile time.  */
+#include <gettext-po.h>
+
+char *program_name;
+
+/* Set to TRUE if Modern UI is used.  */
+int modern_ui = 1;
+
+\f
+/* Map an ISO 639 two letter language code to an NSIS language
+   name.  */
+void
+iso639_to_nsis (const char *ll, char **lang, char **nlf)
+{
+  static struct
+  {
+    /* The ISO639 extended language code.  */
+    char *ll;
+    /* The LANG_* NSIS identifier.  */
+    char *lang;
+    /* The NSIS language file, if exists.  */
+    char *nlf;
+  } codes[] =
+    { { "af", "LANG_AFRIKAANS", NULL },
+      { "sq", "LANG_ALBANIAN", "Albanian" },
+      { "ar", "LANG_ARABIC", "Arabic" },
+      { "ar_SA", "SUBLANG_ARABIC_SAUDI_ARABIA", NULL },
+      { "ar_IQ", "SUBLANG_ARABIC_IRAQ", NULL },
+      { "ar_EG", "SUBLANG_ARABIC_EGYPT", NULL },
+      { "ar_LY", "SUBLANG_ARABIC_LIBYA", NULL },
+      { "ar_DZ", "SUBLANG_ARABIC_ALGERIA", NULL },
+      { "ar_MA", "SUBLANG_ARABIC_MOROCCO", NULL },
+      { "ar_TN", "SUBLANG_ARABIC_TUNISIA", NULL },
+      { "ar_OM", "SUBLANG_ARABIC_OMAN", NULL },
+      { "ar_YE", "SUBLANG_ARABIC_YEMEN", NULL },
+      { "ar_SY", "SUBLANG_ARABIC_SYRIA", NULL },
+      { "ar_JO", "SUBLANG_ARABIC_JORDAN", NULL },
+      { "ar_LB", "SUBLANG_ARABIC_LEBANON", NULL },
+      { "ar_KW", "SUBLANG_ARABIC_KUWAIT", NULL },
+      { "ar_AE", "SUBLANG_ARABIC_UAE", NULL },
+      { "ar_BH", "SUBLANG_ARABIC_BAHRAIN", NULL },
+      { "ar_QA", "SUBLANG_ARABIC_QATAR", NULL },
+      { "hy", "LANG_ARMENIAN", NULL },
+      { "as", "LANG_ASSAMESE", NULL },
+      { "az", "LANG_AZERI", NULL },
+      { "az_AZ", "SUBLANG_AZERI_LATIN", NULL },
+      { "az_??", "SUBLANG_AZERI_CYRILLIC", NULL },
+      { "eu", "LANG_BASQUE", "Basque" },
+      { "be", "LANG_BELARUSIEN", "Belarusian" },
+      { "bn", "LANG_BENGALI", NULL },
+      { "bs", "LANG_BOSNIAN", "Bosnian" },
+      { "br", "LANG_BRETON", "Breton" },
+      { "bg", "LANG_BULGARIAN", "Bulgarian" },
+      { "ca", "LANG_CATALAN", "Catalan" },
+      { "zh", "LANG_CHINESE", NULL },
+      { "zh_??", "SUBLANG_CHINESE_SIMPLIFIED", "SimpChinese" },
+      { "zh_??", "SUBLANG_CHINESE_TRADITIONAL", "TradChinese" },
+      { "zh_HK", "SUBLANG_CHINESE_HONGKONG", NULL },
+      { "zh_SG", "SUBLANG_CHINESE_SINGAPORE", NULL },
+      { "zh_MO", "SUBLANG_CHINESE_MACAU", NULL },
+      { "hr", "LANG_CROATIAN", "Croatian" },
+      { "cs", "LANG_CZECH", "Czech" },
+      { "da", "LANG_DANISH", "Danish" },
+      { "dv", "LANG_DIVEHI", NULL },
+      { "nl", "LANG_DUTCH", "Dutch" },
+      { "nl_NL", "SUBLANG_DUTCH", NULL },
+      { "nl_BE", "SUBLANG_DUTCH_BELGIAN", NULL },
+      { "en", "LANG_ENGLISH", "English" },
+      { "en_US", "SUBLANG_ENGLISH_US", NULL },
+      { "en_UK", "SUBLANG_ENGLISH_UK", NULL },
+      { "en_AU", "SUBLANG_ENGLISH_AUS", NULL },
+      { "en_CA", "SUBLANG_ENGLISH_CAN", NULL },
+      { "en_NZ", "SUBLANG_ENGLISH_NZ", NULL },
+      { "en_IE", "SUBLANG_ENGLISH_EIRE", NULL },
+      { "en_ZA", "SUBLANG_ENGLISH_SOUTH_AFRICA", NULL },
+      { "en_JM", "SUBLANG_ENGLISH_JAMAICA", NULL },
+      { "en_??", "SUBLANG_ENGLISH_CARIBBEAN", NULL },
+      { "en_BZ", "SUBLANG_ENGLISH_BELIZE", NULL },
+      { "en_TT", "SUBLANG_ENGLISH_TRINIDAD", NULL },
+      { "en_ZW", "SUBLANG_ENGLISH_ZIMBABWE", NULL },
+      { "en_PH", "SUBLANG_ENGLISH_PHILIPPINES", NULL },
+      { "et", "LANG_ESTONIAN", "Estonian" },
+      { NULL, "LANG_FARSI", "Farsi" },
+      { "fi", "LANG_FINNISH", "Finnisch" },
+      { "fr", "LANG_FRENCH", "French" },
+      { "fr_FR", "SUBLANG_FRENCH", "French" },
+      { "fr_BE", "SUBLANG_FRENCH_BELGIAN", NULL },
+      { "fr_CA", "SUBLANG_FRENCH_CANADAN", NULL },
+      { "fr_CH", "SUBLANG_FRENCH_SWISS", NULL },
+      { "fr_LU", "SUBLANG_FRENCH_LUXEMBOURG", NULL },
+      { "fr_MC", "SUBLANG_FRENCH_MONACO", NULL },
+      { "gl", "LANG_GALICIAN", NULL },
+      { "ka", "LANG_GEORGIAN", NULL },
+      { "de", "LANG_GERMAN", "German" },
+      { "de_DE", "SUBLANG_GERMAN", NULL },
+      { "de_CH", "SUBLANG_GERMAN_SWISS", NULL },
+      { "de_AT", "SUBLANG_GERMAN_AUSTRIAN", NULL },
+      { "de_LU", "SUBLANG_GERMAN_LUXEMBOURG", NULL },
+      { "de_LI", "SUBLANG_GERMAN_LIECHTENSTEIN", NULL },
+      { "el", "LANG_GREEK", "Greek" },
+      { "gu", "LANG_GUJARATI", NULL },
+      { "he", "LANG_HEBREW", "Hebrew" },
+      { "hi", "LANG_HINDI", NULL },
+      { "hu", "LANG_HUNGARIAN", "Hungarian" },
+      { "is", "LANG_ICELANDIC", "Icelandic" },
+      { "id", "LANG_INDONESIAN", "Indonesian" },
+      { "ga", NULL, "Irish" },
+      { "it", "LANG_ITALIAN", "Italian" },
+      { "it_IT", "SUBLANG_ITALIAN", NULL },
+      { "it_CH", "SUBLANG_ITALIAN_SWISS", NULL },
+      { "ja", "LANG_JAPANESE", "Japanese" },
+      { "kn", "LANG_KANNADA", NULL },
+      { "ks", "LANG_KASHMIRI", NULL },
+      { "ks_IN", "SUBLANG_KASHMIRI_INDIA", NULL },
+      { "kk", "LANG_KAZAK", NULL },
+      { "ko", "LANG_KOREAN", "Korean" },
+      { NULL, "SUBLANG_KOREAN", NULL },
+      { "kok", "LANG_KONKANI", NULL },
+      { "ku", NULL, "Kurdish" },
+      { NULL, "LANG_KYRGYZ", NULL },
+      { "lv", "LANG_LATVIAN", "Latvian" },
+      { "lt", "LANG_LITHUANIAN", "Lithuanian" },
+      { "lt_LT", "SUBLANG_LITHUANIAN", NULL },
+      { "lb", NULL, "Luxembourgish" },
+      { "mk", "LANG_MACEDONIAN", "Macedonian" },
+      { "ms", "LANG_MALAY", "Malay" },
+      { "ms_MY", "SUBLANG_MALAY_MALAYSIA", NULL },
+      { "ms_??", "SUBLANG_MALAY_BRUNEI_DARUSSALAM", NULL },
+      { "ml", "LANG_MALAYALAM", NULL },
+      { "mni", "LANG_MANIPURI", NULL },
+      { "mr", "LANG_MARATHI", NULL },
+      { "mn", "LANG_MONGOLIAN", "Mongolian" },
+      { "ne", "LANG_NEPALI", NULL },
+      { "ne_IN", "SUBLANG_NEPALI_INDIA", NULL },
+      { "no", "LANG_NORWEGIAN", "Norwegian" },
+      { "nb", "SUBLANG_NORWEGIAN_BOKMAL", NULL },
+      { "nn", "SUBLANG_NORWEGIAN_NYNORSK", "NorwegianNynorsk" },
+      { "or", "LANG_ORIYA", NULL },
+      { "pa", "LANG_PUNJABI", NULL },
+      { "pl", "LANG_POLISH", "Polish" },
+      { "pt", "LANG_PORTUGUESE", "Portuguese" },
+      { "pt_PT", "SUBLANG_PORTUGUESE", NULL },
+      { "pt_BR", "SUBLANG_PORTUGUESE_BRAZILIAN", "PortugueseBR" },
+      { "ro", "LANG_ROMANIAN", "Romanian" },
+      { "ru", "LANG_RUSSIAN", "Russian" },
+      { "sa", "LANG_SANSKRIT", NULL },
+      { "sr_??", "SUBLANG_SERBIAN_LATIN", "SerbianLatin" },
+      { "sr", "LANG_SERBIAN", "Serbian" },
+      { "sr_??", "SUBLANG_SERBIAN_LATIN", NULL },
+      { "sr_??", "SUBLANG_SERBIAN_CYRILLIC", NULL },
+      { "sd", "LANG_SINDHI", NULL },
+      { "sk", "LANG_SLOVAK", "Slovak" },
+      { "sl", "LANG_SLOVENIAN", "Slovenian" },
+      { "es", "LANG_SPANISH", "Spanish" },
+      { "es_??", "SUBLANG_SPANISH", NULL },
+      { "es_MX", "SUBLANG_SPANISH_MEXICAN", NULL },
+      { "es_??", "SUBLANG_SPANISH_MODERN", NULL },
+      { "es_GT", "SUBLANG_SPANISH_GUATEMALA", NULL },
+      { "es_??", "SUBLANG_SPANISH_COSTA_RICA", NULL },
+      { "es_PA", "SUBLANG_SPANISH_PANAMA", NULL },
+      { "es_DO", "SUBLANG_SPANISH_DOMINICAN_REPUBLIC", NULL },
+      { "es_VE", "SUBLANG_SPANISH_VENEZUELA", NULL },
+      { "es_CO", "SUBLANG_SPANISH_COLOMBIA", NULL },
+      { "es_PE", "SUBLANG_SPANISH_PERU", NULL },
+      { "es_AR", "SUBLANG_SPANISH_ARGENTINA", NULL },
+      { "es_EC", "SUBLANG_SPANISH_ECUADOR", NULL },
+      { "es_CL", "SUBLANG_SPANISH_CHILE", NULL },
+      { "es_UY", "SUBLANG_SPANISH_URUGAY", NULL },
+      { "es_PY", "SUBLANG_SPANISH_PARAGUAY", NULL },
+      { "es_BO", "SUBLANG_SPANISH_BOLIVIA", NULL },
+      { "es_SV", "SUBLANG_SPANISH_EL_SALVADOR", NULL },
+      { "es_HN", "SUBLANG_SPANISH_HONDURAS", NULL },
+      { "es_NI", "SUBLANG_SPANISH_NICARAGUA", NULL },
+      { "es_PR", "SUBLANG_SPANISH_PUERTO_RICO", NULL },
+      { "sw", "LANG_SWAHILI", NULL },
+      { NULL, "LANG_SYRIAC", NULL },
+      { "sv", "LANG_SWEDISH", "Swedish" },
+      { "sv_SE", "SUBLANG_SWEDISH", NULL },
+      { "sv_FI", "SUBLANG_SWEDISH_FINLAND", NULL },
+      { "ta", "LANG_TAMIL", NULL },
+      { "tt", "LANG_TATAR", NULL },
+      { "te", "LANG_TELUGU", NULL },
+      { "th", "LANG_THAI", "Thai" },
+      { "tr", "LANG_TURKISH", "Turkish" },
+      { "uk", "LANG_UKRAINIAN", "Ukrainian" },
+      { "ur", "LANG_URDU", NULL },
+      { "ur_PK", "SUBLANG_URDU_PAKISTAN", NULL },
+      { "ur_IN", "SUBLANG_URDU_INDIA", NULL },
+      { "uz", "LANG_UZBEK", NULL },
+      { "uz_UZ", "LANG_UZBEK_LATIN", NULL },
+      { "uz_??", "LANG_UZBEK_CYRILLIC", NULL },
+      { "vi", "LANG_VIETNAMESE", NULL },
+      { NULL, NULL, "Welsh" },
+      { NULL, NULL, NULL } };
+
+  int i = 0;
+  *lang = NULL;
+  *nlf = NULL;
+  while (codes[i].ll || codes[i].lang || codes[i].nlf)
+    {
+      if (codes[i].ll && codes[i].lang
+         && !strcmp (ll, codes[i].ll))
+       {
+         *lang = codes[i].lang;
+         *nlf = codes[i].nlf;
+         return;
+       }
+      i++;
+    }
+}
+
+\f
+void
+xerror (int severity, po_message_t message,
+       const char *filename, size_t lineno, size_t column,
+       int multiline_p, const char *message_text)
+{
+  fflush (stdout);
+  if (filename != NULL)
+    {
+      if (lineno != (size_t)(-1))
+       {
+         if (column != (size_t)(-1))
+           fprintf (stderr, "%s:%ld:%ld: %s\n", filename,
+                    (long) lineno, (long) column, message_text);
+         else
+           fprintf (stderr, "%s:%ld: %s\n", filename, (long) lineno,
+                    message_text);
+       }
+      else
+       fprintf (stderr, "%s: %s\n", filename, message_text);
+    }
+  else
+    fprintf (stderr, "%s: %s\n", program_name, message_text);
+
+  if (severity >= PO_SEVERITY_ERROR)
+    exit (EXIT_FAILURE);
+}
+
+
+void
+xerror2 (int severity, po_message_t message1,
+        const char *filename1, size_t lineno1, size_t column1,
+        int multiline_p1, const char *message_text1,
+        po_message_t message2,
+        const char *filename2, size_t lineno2, size_t column2,
+        int multiline_p2, const char *message_text2)
+{
+  fflush (stdout);
+  if (filename1 != NULL)
+    {
+      if (lineno1 != (size_t)(-1))
+       {
+         if (column1 != (size_t)(-1))
+           fprintf (stderr, "%s:%ld:%ld: %s...\n", filename1,
+                    (long) lineno1, (long) column1, message_text1);
+         else
+           fprintf (stderr, "%s:%ld: %s...", filename1, (long) lineno1,
+                    message_text1);
+       }
+      else
+       fprintf (stderr, "%s: %s...", filename1, message_text1);
+    }
+  else
+    fprintf (stderr, "%s: %s...", program_name, message_text1);
+  
+  if (filename2 != NULL)
+    {
+      if (lineno2 != (size_t)(-1))
+       {
+         if (column2 != (size_t)(-1))
+           fprintf (stderr, "%s:%ld:%ld: ...%s\n", filename2,
+                    (long) lineno2, (long) column2, message_text2);
+         else
+           fprintf (stderr, "%s:%ld: ...%s", filename2, (long) lineno2,
+                    message_text2);
+       }
+      else
+       fprintf (stderr, "%s: ...%s", filename2, message_text2);
+    }
+  else
+    fprintf (stderr, "%s: ...%s", program_name, message_text2);
+
+  if (severity >= PO_SEVERITY_ERROR)
+    exit (EXIT_FAILURE);
+}
+
+struct po_xerror_handler err_handler = { xerror, xerror2 };
+
+\f
+void
+fmt_one (char *filename)
+{
+  po_file_t file;
+  const char * const *domains;
+  const char * const *domainp;
+  char *ll;
+  char *llp;
+  char *lang;
+  char *nlf;
+
+  /* Grok the language code from the filename.  */
+  ll = strrchr (filename, '/');
+  if (ll)
+    ll++;
+  else
+    ll = filename;
+  ll = strdup (ll);
+  if (!ll)
+    error (EXIT_FAILURE, errno, "could not allocate memory");
+  llp = strchr (ll, '.');
+  if (llp)
+    *llp = '\0';
+  iso639_to_nsis (ll, &lang, &nlf);
+  if (!lang)
+    error (EXIT_FAILURE, errno, "%s: could not determine language %s of %s\n",
+          program_name, ll, filename);
+  if (!nlf)
+    {
+      fflush (stdout);
+      fprintf (stderr, "%s: warning: no NSIS Language File (.nlf) for %s\n",
+              program_name, lang);
+    }
+  else
+    {
+      if (modern_ui)
+       /* FIXME: Should test if file exists.  NSISDIR is available
+          via makensis -HDRINFO.  Files are in
+          "NSISDIR/Contrib/Modern UI/Language files".  */
+       printf ("!insertmacro MUI_LANGUAGE \"%s\"\n", nlf);
+      else
+       /* FIXME: Should test if file exists.  NSISDIR is available via
+          makensis -HDRINFO.  */
+       printf ("LoadLanguageFile "
+               "\"${NSISDIR}\\Contrib\\Language files\\%s.nlf\"\n", nlf);
+    }
+
+  file = po_file_read (filename, &err_handler);
+  if (file == NULL)
+    error (EXIT_FAILURE, errno, "couldn't open the PO file %s", filename);
+
+  domains = po_file_domains (file);
+  for (domainp = domains; *domainp; domainp++)
+    {
+      const char *domain = *domainp;
+      po_message_iterator_t iterator = po_message_iterator (file, domain);
+
+      for (;;)
+       {
+         po_message_t message = po_next_message (iterator);
+         const char *msgid;
+         const char *msgstr;
+         const char *msgctx;
+
+         if (message == NULL)
+           break;
+
+         msgid = po_message_msgid (message);
+         msgstr = po_message_msgstr (message);
+         msgctx = po_message_msgctxt (message);
+
+         if (msgctx != NULL)
+           /* FIXME: Replace newlines.  */
+           printf ("LangString %s ${%s} \"%s\"\n", msgctx, lang,
+                   (*msgstr == '\0') ? msgid : msgstr);
+       }
+      po_message_iterator_free (iterator);
+    }
+  po_file_free (file);  
+}      
+
+
+int
+main (int argc, char *argv[])
+{
+  int i;
+
+  program_name = argv[0];
+
+  for (i = 1; i < argc; i++)
+    fmt_one (argv[i]);
+
+  return 0;
+}
diff --git a/po/nsis-xgettext.awk b/po/nsis-xgettext.awk
new file mode 100644 (file)
index 0000000..1b43882
--- /dev/null
@@ -0,0 +1,54 @@
+#! /usr/bin/awk
+# Copyright (C) 2007 g10 Code GmbH
+# 
+# This file is part of GPG4Win.
+# 
+# GPG4Win is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+# 
+# GPG4Win is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+# 
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
+
+# Process an NSIS script and output something that xgettext can grok.
+# Requires variable "file" to be set at command line.
+
+BEGIN {
+  collect = 0;
+  context = "";
+  line = "";
+}
+
+# FIXME: Strictly we should check if we are still collecting or not.
+/^LangString/ {
+  collect = 1;
+  print "# " FNR " \"" file "\"";
+  context = $2;
+  line = "";
+}
+
+collect {
+  next_line = $0;
+  sub (/\\$/, "", next_line);
+  sub (/^ */, "", next_line);
+  line = (line next_line);
+}
+
+collect && !/\\$/ {
+  collect = 0;
+
+  # Snip everything up to the first double-quote.
+  sub (/^[^"]*/, "", line);
+  # Convert the \r characters that gettext doesn't like.
+  gsub (/\\r/, "\\\\r", line);
+  # Convert the \n characters as well.
+  gsub (/\\n/, "\\\\n", line);
+  print "pgettext (\"" context "\", " line ");";
+}
diff --git a/po/nsis-xgettext.sh b/po/nsis-xgettext.sh
new file mode 100644 (file)
index 0000000..9be8d02
--- /dev/null
@@ -0,0 +1,74 @@
+#! /bin/bash
+# Copyright (C) 2007 g10 Code GmbH
+# 
+# This file is part of GPG4Win.
+# 
+# GPG4Win is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+# 
+# GPG4Win is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+# 
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
+
+# FIXME!
+AWK=awk
+
+# We have to wrap xgettext for use with NSIS.
+
+# Limitations: Only supports --files-from for now, no files on the
+# command line or STDIN.
+
+srcdir=.
+argv=
+files_from=
+directory=.
+
+i=0
+prev=
+
+for opt in "$@"; do
+    case "${prev}" in
+       -D)
+       directory="${opt}"
+       prev=
+       continue
+       ;;
+       -f)
+       files_from="${opt}"
+       prev=
+       continue
+       ;;
+    esac
+
+    case "$opt" in
+       --directory=*)
+       directory=`echo "${opt}" | sed 's/^--directory=//'`
+       continue
+       ;;
+       --files-from=*)
+       files_from=`echo "${opt}" | sed 's/^--files-from=//'`
+       continue
+       ;;
+       -D|-f)
+       prev="${opt}"
+       continue
+       ;;
+       --srcdir=*)
+       srcdir=`echo "${opt}" | sed 's/^--srcdir=//'`
+       continue
+       ;;
+    esac
+
+    argv[i]="$opt"
+    i=$((${i} + 1))    
+done
+
+# Now we can create the required input for xgettext.
+(for f in `sed -n -e '/^[^#]/p' "${files_from}"`; do ${AWK} -f ${srcdir}/nsis-xgettext.awk -v "file=${f}" "${directory}/${f}"; done) | "${argv[@]}" -
diff --git a/po/remove-potcdate.sin b/po/remove-potcdate.sin
new file mode 100644 (file)
index 0000000..2436c49
--- /dev/null
@@ -0,0 +1,19 @@
+# Sed script that remove the POT-Creation-Date line in the header entry
+# from a POT file.
+#
+# The distinction between the first and the following occurrences of the
+# pattern is achieved by looking at the hold space.
+/^"POT-Creation-Date: .*"$/{
+x
+# Test if the hold space is empty.
+s/P/P/
+ta
+# Yes it was empty. First occurrence. Remove the line.
+g
+d
+bb
+:a
+# The hold space was nonempty. Following occurrences. Do nothing.
+x
+:b
+}
index faab6b8..f657408 100644 (file)
@@ -20,9 +20,6 @@
 
 LangString T_AlreadyRunning ${LANG_ENGLISH} \
    "An instance of this installer is already running."
-LangString T_AlreadyRunning ${LANG_GERMAN} \
-   "Ein Exemplar dieses Installers läuft bereits."
-
 
 #Function G4wTest
 #  Push $R0
index e42924f..28185fa 100644 (file)
@@ -19,6 +19,7 @@
 
 !cd "${BUILD_DIR}"
 !addincludedir "${TOP_SRCDIR}"
+!addincludedir "${TOP_SRCDIR}/po"
 !addincludedir "${SRCDIR}"
 !addplugindir "${BUILD_DIR}"
 !include "../include/config.nsi"
@@ -83,6 +84,8 @@ SetCompressor zlib
 !define SOURCES
 !include "inst-sections.nsi"
 
+# At long last, include all the translations.
+!include "../po/catalogs.nsi"
 
 # Now include the generic parts to end the installation.
 !include "installer-finish.nsi"
index dac95e3..5c1ff7b 100644 (file)
@@ -19,6 +19,7 @@
 
 !cd "${BUILD_DIR}"
 !addincludedir "${TOP_SRCDIR}"
+!addincludedir "${TOP_SRCDIR}/po"
 !addincludedir "${SRCDIR}"
 !addplugindir "${BUILD_DIR}"
 !include "../include/config.nsi"
@@ -106,6 +107,8 @@ SetCompressor lzma
 !define BINARIES
 !include "inst-sections.nsi"
 
+# At long last, include all the translations.
+!include "../po/catalogs.nsi"
 
 # Now include the generic parts to end the installation.
 !include "installer-finish.nsi"
index f30b4a3..277f371 100644 (file)
@@ -39,7 +39,3 @@ SectionEnd
 
 LangString DESC_SEC_eudoragpg ${LANG_ENGLISH} \
    "EudoraGPG is a plugin for the Eudora mail program"
-LangString DESC_SEC_eudoragpg ${LANG_GERMAN} \
-   "EudoraGPG ist ein Plugin zur Verschlüsselung für das Eudora Mailprogramm"
-
-
index 3b3eca9..cf9c34b 100644 (file)
@@ -75,13 +75,4 @@ SectionEnd
 
 LangString DESC_SEC_gnupg ${LANG_ENGLISH} \
    "GNU Privacy Guard"
-LangString DESC_SEC_gnupg ${LANG_GERMAN} \
-   "Der GNU Privacy Guard (GnuPG) ist der Kernbestandteil \
-    dieser Software.  GnuPG stellt die eigentliche \
-    Verschlüsselung sowie die Verwaltung der Schlüssel bereit."
-
-LangString DESC_Menu_gnupg_faq ${LANG_ENGLISH} \
-   "Show the Frequently Asked Questions Document for GnuPG"
-LangString DESC_Menu_gnupg_faq ${LANG_GERMAN} \
-   "Das Dokument mit den häufig gestellten Fragen (FAQ) zu GnuPG anzeigen"
 
index 94c754c..eef4264 100644 (file)
@@ -49,15 +49,7 @@ SectionEnd
 
 LangString DESC_SEC_gpa ${LANG_ENGLISH} \
    "GNU Privacy Assistant"
-LangString DESC_SEC_gpa ${LANG_GERMAN} \
-   "GNU Privacy Assistent (GPA) ist ein Programm zum Verwalten von Schlüsseln \
-    welches für mehrere Plattformen verfügbar ist.  Es kann zusammen \
-    oder anstatt von WinPT benutzt werden."
-
 
 LangString DESC_Menu_gpa ${LANG_ENGLISH} \
    "Run the GNU Privacy Assistant key management tool. \
     This is an alternative to the WinPT key management tool."
-LangString DESC_Menu_gpa ${LANG_GERMAN} \
-   "Das Schlüsselverwaltungsprogramm GNU Privacy Assistent aufrufen. \
-    Dies ist eine Alternative zu dem WinPT Programm."
index bdeee89..f02fa1c 100644 (file)
@@ -42,8 +42,6 @@ SectionEnd
 
 LangString DESC_Menu_gpg4win_readme ${LANG_ENGLISH} \
    "General information on Gpg4Win"
-LangString DESC_Menu_gpg4win_readme ${LANG_GERMAN} \
-   "Allgemeine Informationen zu Gpg4Win"
-
-
 
+LangString DESC_Menu_gnupg_faq ${LANG_ENGLISH} \
+   "Show the Frequently Asked Questions Document for GnuPG"
index 71e6a28..83e791d 100644 (file)
@@ -64,19 +64,9 @@ SectionEnd
 
 LangString T_GPGee_RegFailed ${LANG_ENGLISH} \
    "Warning: Registration of the GPGee explorer extension failed."
-LangString T_GPGee_RegFailed ${LANG_GERMAN} \
-   "Warnung: Registration der GPGee Explorer Extension ist fehlgeschlagen. "
 
 LangString DESC_SEC_gpgee ${LANG_ENGLISH} \
    "GPG Explorer Extensions"
-LangString DESC_SEC_gpgee ${LANG_GERMAN} \
-   "GPG Explorer Erweiterungen (GPGee) ist eine Erweiterung für \
-    den Explorer, die es ermöglicht, Dateien über das Kontextmenü zu \
-    verschlüsseln."
 
 LangString DESC_Menu_gpgee_hlp ${LANG_ENGLISH} \
    "Show the online manual of GPGee"
-LangString DESC_Menu_gpgee_hlp ${LANG_GERMAN} \
-   "Das englische Handbuch zu GPGee anzeigen"
-
-
index b6ec80d..d8c7e19 100644 (file)
@@ -53,12 +53,6 @@ SectionEnd
 
 LangString T_GPGol_RegFailed ${LANG_ENGLISH} \
    "Warning: Registration of the GPGol Outlook pluginfailed."
-LangString T_GPGol_RegFailed ${LANG_GERMAN} \
-   "Warnung: Registration des GPGol Outlook Plugin ist fehlgeschlagen. "
-
 
 LangString DESC_SEC_gpgol ${LANG_ENGLISH} \
    "GnuPG for Outlook"
-LangString DESC_SEC_gpgol ${LANG_GERMAN} \
-   "GnuPG für Outlook (GPGol) is eine Erweiterung für Outlook 2003, die \
-    verwendet wird um Nachrichten mit OpenPGP zu verschlüsseln."
index 81ef9f1..ca4a830 100644 (file)
@@ -38,16 +38,9 @@ SectionEnd
 
 LangString DESC_Name_man_advanced_de ${LANG_ENGLISH} \
    "Advanced Manual (German)"
-LangString DESC_Name_man_advanced_de ${LANG_GERMAN} \
-   "Durchblickerhandbuch"
 
 LangString DESC_SEC_man_advanced_de ${LANG_ENGLISH} \
    "Gpg4Win Manual for the Advanced User (German)"
-LangString DESC_SEC_man_advanced_de ${LANG_GERMAN} \
-   "Gpg4Win Handbuch für den Durchblicker"
-
 
 LangString DESC_Menu_man_advanced_de ${LANG_ENGLISH} \
    "Show the German online manual of Gpg4Win for advanced users"
-LangString DESC_Menu_man_advanced_de ${LANG_GERMAN} \
-   "Das Online-Handbuch von Gpg4Win für den Durchblicker anzeigen"
index 9823d52..0aac50a 100644 (file)
@@ -38,16 +38,9 @@ SectionEnd
 
 LangString DESC_Name_man_advanced_en ${LANG_ENGLISH} \
    "Advanced Manual"
-LangString DESC_Name_man_advanced_en ${LANG_GERMAN} \
-   "Durchblickerhandbuch (Englisch)"
 
 LangString DESC_SEC_man_advanced_en ${LANG_ENGLISH} \
    "Gpg4Win Manual for the Advanced User"
-LangString DESC_SEC_man_advanced_en ${LANG_GERMAN} \
-   "Gpg4Win Handbuch für den Durchblicker (Englisch)"
-
 
 LangString DESC_Menu_man_advanced_en ${LANG_ENGLISH} \
    "Show the online manual of Gpg4Win for advanced users"
-LangString DESC_Menu_man_advanced_en ${LANG_GERMAN} \
-   "Das englische Online-Handbuch von Gpg4Win für den Durchblicker anzeigen"
index aee66e6..9148596 100644 (file)
@@ -38,15 +38,9 @@ SectionEnd
 
 LangString DESC_Name_man_novice_de ${LANG_ENGLISH} \
    "Novice Manual (German)"
-LangString DESC_Name_man_novice_de ${LANG_GERMAN} \
-   "Einsteigerhandbuch"
 
 LangString DESC_SEC_man_novice_de ${LANG_ENGLISH} \
    "Gpg4Win Manual for the Novice User (German)"
-LangString DESC_SEC_man_novice_de ${LANG_GERMAN} \
-   "Gpg4Win Handbuch für den Einsteiger"
 
 LangString DESC_Menu_man_novice_de ${LANG_ENGLISH} \
    "Show the German online manual of Gpg4Win for novice users"
-LangString DESC_Menu_man_novice_de ${LANG_GERMAN} \
-   "Das Online-Handbuch von Gpg4Win für den Einsteiger anzeigen"
index 660db70..8401089 100644 (file)
@@ -38,15 +38,9 @@ SectionEnd
 
 LangString DESC_Name_man_novice_en ${LANG_ENGLISH} \
    "Novice Manual"
-LangString DESC_Name_man_novice_en ${LANG_GERMAN} \
-   "Einsteigerhandbuch (Englisch)"
 
 LangString DESC_SEC_man_novice_en ${LANG_ENGLISH} \
    "Gpg4Win Manual for the Novice User"
-LangString DESC_SEC_man_novice_en ${LANG_GERMAN} \
-   "Gpg4Win Handbuch für den Einsteiger (Englisch)"
 
 LangString DESC_Menu_man_novice_en ${LANG_ENGLISH} \
    "Show the online manual of Gpg4Win for novice users"
-LangString DESC_Menu_man_novice_en ${LANG_GERMAN} \
-   "Das englische Online-Handbuch von Gpg4Win für den Einsteiger anzeigen"
index 404d9fa..3fbba1e 100644 (file)
@@ -50,16 +50,9 @@ SectionEnd
 
 LangString DESC_SEC_sylpheed ${LANG_ENGLISH} \
    "Sylpheed-Claws Mail-User-Agent"
-LangString DESC_SEC_sylpheed ${LANG_GERMAN} \
-   "Sylpheed-Claws ist ein vollständiges Mail- und News-Programm mit sehr \
-    guter Unterstützung für GnuPG."
 
 LangString DESC_Menu_sylpheed ${LANG_ENGLISH} \
    "Run the Sylpheed-Claws mailprogram."
-LangString DESC_Menu_sylpheed ${LANG_GERMAN} \
-   "Das Mailprogramm Sylpheed-Claws aufrufen."
 
 LangString DESC_Menu_sylpheed_pdf ${LANG_ENGLISH} \
    "Show the online manual of Sylpheed Claws"
-LangString DESC_Menu_sylpheed_pdf ${LANG_GERMAN} \
-   "Das englische Handbuch zu Sylpheed Claws anzeigen"
index 53d5fbb..15c1925 100644 (file)
@@ -45,15 +45,7 @@ SectionEnd
 
 LangString DESC_SEC_winpt ${LANG_ENGLISH} \
    "Windows Privacy Tray"
-LangString DESC_SEC_winpt ${LANG_GERMAN} \
-   "Windows Privacy Tray (WinPT) ist ein vielseitiges Programm zur \
-   Schlüsselverwaltung sowie aller anderen Funktionen von GnuPG.  Es \
-   installiert sich in die Startleiste."
 
 LangString DESC_Menu_winpt ${LANG_ENGLISH} \
    "Run the Windows Privacy Tray key management tool. \
     This is a versatile key management and encryption tool."
-LangString DESC_Menu_winpt ${LANG_GERMAN} \
-   "Das Schlüsselverwaltungsprogramm Windows Privacy Tray aufrufen. \
-    Dies ist ein vielseitiges Programm zur Schlüsselverwaltung und \
-    Verschlüsselung.  Es installiert sich in die Startleiste."
index e82e191..adf44a8 100644 (file)
@@ -184,7 +184,6 @@ Var STARTMENU_FOLDER
 # before defining the translation strings.  Confusing.
 
 !insertmacro MUI_LANGUAGE "English"
-!insertmacro MUI_LANGUAGE "German"
 
 #!insertmacro MUI_RESERVEFILE_LANGDLL
 !insertmacro MUI_RESERVEFILE_INSTALLOPTIONS
@@ -200,58 +199,36 @@ ReserveFile "${TOP_SRCDIR}\doc\logo\gpg4win-logo-164x314.bmp"
 # Language support
 
 LangString T_LangCode ${LANG_ENGLISH} "en"
-LangString T_LangCode ${LANG_GERMAN}  "de"
-
 
 # The WelcomeTitle is displayed on the first page.
 LangString T_WelcomeTitle ${LANG_ENGLISH} "${WELCOME_TITLE_ENGLISH}"
-LangString T_WelcomeTitle ${LANG_GERMAN} "${WELCOME_TITLE_GERMAN}"
 
 # The About string as displayed on the first page.
 LangString T_About ${LANG_ENGLISH} "${ABOUT_ENGLISH}"
-LangString T_About ${LANG_GERMAN} "${ABOUT_GERMAN}"
 
 # Startup page
 LangString T_GPLHeader ${LANG_ENGLISH} \
   "This software is licensed under the terms of the GNU General Public \
    License (GPL) which guarantees your freedom to share and change Free \
    Software."
-LangString T_GPLHeader ${LANG_GERMAN}} \
-  "Diese Software ist unter der GNU General Public License \
-   (GPL) lizensiert; dies gibt Ihnen die Freiheit, sie \
-   zu ändern und weiterzugeben."
 
 LangString T_GPLShort ${LANG_ENGLISH} \
   "In short: You are allowed to run this software for any purpose. \
    You may distribute it as long as you give the recipients the same \
    rights you have received."
-LangString T_GPLShort ${LANG_GERMAN} \
-  "In aller Kürze: Sie haben das Recht, die Software zu jedem Zweck \
-   einzusetzen.  Sie können die Software weitergeben, sofern Sie dem \
-   Empfänger dieselben Rechte einräumen, die auch Sie erhalten haben."
 
 LangString T_RunKeyManager ${LANG_ENGLISH} \
    "Run the key manager"
-LangString T_RunKeyManager ${LANG_GERMAN} \
-   "Die Schlüsselverwaltung aufrufen"
 
 LangString T_MoreInfo ${LANG_ENGLISH} \
    "Click here for the project's homepage"
-LangString T_MoreInfo ${LANG_GERMAN} \
-   "Hier klicken um zur Homepage des Projekts zu gelangen"
 LangString T_MoreInfoURL ${LANG_ENGLISH} "http://www.gpg4win.org"
-LangString T_MoreInfoURL ${LANG_GERMAN}  "http://www.gpg4win.de"
 
 LangString T_ShowReadme ${LANG_ENGLISH} \
    "Show the README file"
-LangString T_ShowReadme ${LANG_GERMAN} \
-   "Die README Datei anzeigen"
 
 LangString T_NoKeyManager ${LANG_ENGLISH} \
    "No key manager has been installed, thus we can't run one now."
-LangString T_NoKeyManager ${LANG_GERMAN} \
-   "Es wurde keine Schlüsselverwaltung installiert. \
-    Deswegen kann sie jetzt auch nicht ausgeführt werden."
 
 
 # Functions
@@ -436,37 +413,24 @@ FunctionEnd
 
 # Installation options title
 LangString T_InstallOptions ${LANG_ENGLISH} "Install Options"
-LangString T_InstallOptions ${LANG_GERMAN}  "Installationsoptionen"
 
 # Installation options subtitle 1
 LangString T_InstallOptLinks ${LANG_ENGLISH} "Start links"
-LangString T_InstallOptLinks ${LANG_GERMAN}  "Startlinks"
 
 LangString T_InstOptLabelA  ${LANG_ENGLISH} \
      "Please select where Gpg4win shall install links:"
-LangString T_InstOptLabelA  ${LANG_GERMAN} \
-     "Bitte wählen Sie, welche Verknüpfungen angelegt werden sollen:"
 
 LangString T_InstOptLabelB  ${LANG_ENGLISH} \
      "(Only programs will be linked into the quick launch bar.)"
-LangString T_InstOptLabelB  ${LANG_GERMAN} \
-     "(In die Schnellstartleiste werden nur Verknüpfungen für \
-      Programme angelegt.) "
 
 LangString T_InstOptFieldA  ${LANG_ENGLISH} \
      "Start Menu"
-LangString T_InstOptFieldA  ${LANG_GERMAN} \
-     "Startmenü"
 
 LangString T_InstOptFieldB  ${LANG_ENGLISH} \
      "Desktop"
-LangString T_InstOptFieldB  ${LANG_GERMAN} \
-     "Arbeitsfläche"
 
 LangString T_InstOptFieldC  ${LANG_ENGLISH} \
      "Quick Launch Bar"
-LangString T_InstOptFieldC  ${LANG_GERMAN} \
-     "Schnellstartleiste"
 
 #------------------------------------------------
 # String pertaining to the existing version check
@@ -474,23 +438,12 @@ LangString T_InstOptFieldC  ${LANG_GERMAN} \
 LangString T_FoundExistingVersion ${LANG_ENGLISH} \
      "Version $R1 has already been installed.  $\r$\n\
       Do you want to overwrite it with version ${VERSION}?"
-LangString T_FoundExistingVersion ${LANG_GERMAN} \
-     "Version $R1 ist hier bereits installiert. $\r$\n\
-      Möchten Sie diese mit Version ${VERSION} überschreiben? $\r$\n\
-       $\r$\n\
-      (Sie können in jedem Fall mit JA antworten, falls es sich um \
-       eine neuere oder dieselbe Version handelt.)"
 LangString T_FoundExistingVersionB ${LANG_ENGLISH} \
      "A version of Gpg4Win has already been installed on the system. \
       There will be no problem installing and thus overwriting this \
       Version. $\r$\n\
        $\r$\n\
       Do you want to continue installing Gpg4win?"
-LangString T_FoundExistingVersionB ${LANG_GERMAN} \
-     "Eine Version von Gpg4Win ist hier bereits installiert. \
-      Es ist problemlos möglich, die Installation fortzuführen.  $\r$\n\
-        $\r$\n\
-      Möchten die die Installation von Gpg4Win fortführen?"
 
 
 #---------------------------------------------
@@ -499,11 +452,6 @@ LangString T_FoundExistingVersionB ${LANG_GERMAN} \
 LangString T_FoundOldSeeManual ${LANG_ENGLISH} \
      "Please see the Gpg4win user manual to learn how to migrate existing \
       keys from other GnuPG based installations to Gpg4win."
-LangString T_FoundOldSeeManual ${LANG_GERMAN} \
-     "Bitte sehen Sie im Gpg4win für Einsteiger Handbuch nach, wie Sie Ihre \
-      Schlüssel aus anderen - GnuPG basierten - Installationen in Gpg4win \
-      überführen.  Es wird dringend geraten Gpg4Win nicht zusammen mit \
-      diesen anderen Installation zu betreiben."
 
 #---------
 LangString T_FoundOldGnuPP ${LANG_ENGLISH} \
@@ -513,20 +461,6 @@ LangString T_FoundOldGnuPP ${LANG_ENGLISH} \
           $\r$\n\
       Do you want to continue installing Gpg4win and take care of the old \
       installation later?"
-LangString T_FoundOldGnuPP ${LANG_GERMAN} \
-     "Eine alte Installation von GnuPP (GNU Privacy Project) wurde gefunden. \
-      Diese Software wird nicht mehr gepflegt und sollte deshalb vom \
-      System entfernt werden.  $\r$\n\
-        $\r$\n\
-      Sie können die Installation von Gpg4win jetzt weiterdurchführen und \
-      danach entscheiden, ob Sie das alte GnuPP dann entfernen.  Sie finden \
-      hierzu Hinweise im Gpg4Win Handbuch für Einsteiger.  Falls Sie die alte \
-      Installation schon jetzt entfernen möchten, so exportieren Sie dort \
-      alle vorhandenen Schlüssel in eine Datei um sie so später in Gpg4Win \
-      wieder importieren zu können. $\r$\n\
-        $\r$\n\
-      Möchten Sie die Installation von Gpg4win weiter durchführen und sich \
-      dann später um die Entfernung von GnuPP kümmern?"
 
 #---------
 LangString T_FoundOldGnuPT ${LANG_ENGLISH} \
@@ -534,22 +468,6 @@ LangString T_FoundOldGnuPT ${LANG_ENGLISH} \
       problems when used along with Gpg4win. $\r$\n\
           $\r$\n\
       Do you want to continue installing Gpg4win?"
-LangString T_FoundOldGnuPT ${LANG_GERMAN} \
-     "Eine Installation von GnuPT wurde gefunden.  Dies kann zu Problemen \
-      führen, falls GnuPT zusammem mit Gpg4win benutzt wird.  Falls Sie GnuPT \
-      zwischenzeitlich bereits entfernt haben, so ignorieren Sie diese \
-      Warnung bitte.  Die Deinstallation von GnuPT erfolgt nicht immer \
-      spurlos und Gpg4win kann deshalb nicht sicher erkennen, ob es \
-      vollständig entfernt wurde.  $\r$\n\
-         $\r$\n\
-      Sie können die Installation von Gpg4win jetzt weiterdurchführen und \
-      danach entscheiden, ob Sie das alte GnuPT dann entfernen.  Sie finden \
-      hierzu Hinweise im Gpg4Win Handbuch für Einsteiger.  Falls Sie die alte \
-      Installation schon jetzt entfernen möchten, so exportieren Sie dort \
-      alle vorhandenen Schlüssel in eine Datei um sie so später in Gpg4Win \
-      wieder importieren zu können.  $\r$\n\
-          $\r$\n\
-      Möchten Sie die Installation von Gpg4win fortführen?"
 
 #---------
 LangString T_FoundOldWinPTSF ${LANG_ENGLISH} \
@@ -559,24 +477,6 @@ LangString T_FoundOldWinPTSF ${LANG_ENGLISH} \
           $\r$\n\
       Do you want to continue installing Gpg4win and take care of the old \
       installation later?"
-LangString T_FoundOldWinPTSF ${LANG_GERMAN} \
-     "Eine alte Installation der Windows Privacy Tools von Sourceforge \
-      wurde gefunden.  Diese Software wird nicht mehr gepflegt und verträgt \
-      sich vermutlich nicht mit Gpg4win.  Sie sollte deshalb vom System \
-      entfernt werden.  $\r$\n\
-        $\r$\n\
-      Sie können versuchen, die Installation von Gpg4win jetzt \
-      weiterdurchführen und danach entscheiden, ob Sie die alte Installation \
-      entfernen.  Sie finden hierzu Hinweise im Gpg4Win Handbuch für \
-      Einsteiger.  $\r$\n\
-        $\r$\n\
-      Wir empfehlen alerdings, diese alte Installation vorher zu entfernen. \
-      Brechen Sie hierzu die Installation von Gpg4win ab und exportieren Sie \
-      mittles dieser alten Version alle vorhandenen Schlüssel in eine Datei \
-      um sie so später in Gpg4Win wieder importieren zu können. $\r$\n\
-        $\r$\n\
-      Möchten Sie die Installation von Gpg4win trotzdem jetzt weiter \
-      durchführen?"
 
 
 #--------
@@ -585,21 +485,12 @@ LangString T_FoundOldGnuPack ${LANG_ENGLISH} \
       uninstall it before you can continue with Gpg4win installation. $\r$\n\
         $\r$\n\
       The installation will be aborted now!"
-LangString T_FoundOldGnuPack ${LANG_GERMAN} \
-     "Eine Installation von GnuPG-Pack wurde gefunden.  Sie müssen diese \
-      zuerst deinstallieren bevor Sie mit der Installation von Gpg4win \
-      fortfahren können. $\r$\n\
-        $\r$\n\
-      Die Installation von Gpg4win wird nun abgebrochen!"
 
 
 
 # From Function PrintNonAdminWarning
 LangString T_AdminNeeded ${LANG_ENGLISH} \
    "Warning: Administrator permissions required for a successful installation"
-LangString T_AdminNeeded ${LANG_GERMAN} \
-   "Achtung: Für eine erfolgreiche Installation werden \
-    Administratorrechte benötigt."
 
 # From Function PrintCloseOtherApps
 LangString T_CloseOtherApps ${LANG_ENGLISH} \
@@ -607,16 +498,8 @@ LangString T_CloseOtherApps ${LANG_ENGLISH} \
     In particular you should close Outlook and all Explorer \
     windows.  Gpg4Win will try to install anyway but a reboot \
     will be required then."
-LangString T_CloseOtherApps ${LANG_GERMAN} \
-   "Bitte stellen Sie sicher, daß alle anderen Anwendugen geschlossen \
-    sind.  Insbesondere sollten Sie Outlook und alle Explorer Fenster \
-    schliessen bevor Sie die Installation fortsetzen.  Gpg4Win wird auf \
-    jeden Fall versuchen, eine Installation durchzuführen; es ist dann aber \
-    u.U. notwendig, das System neu zu starten."
 LangString T_ShuttingDownWinPT ${LANG_ENGLISH} \
    "Trying to shutdown a possible running instance of WinPT."
-LangString T_ShuttingDownWinPT ${LANG_GERMAN} \
-   "Ein möglicherweise laufendes WinPT wird jetzt automatisch beendet."
 
 
 # FIXME: The GetAfterChar function comes from the NSIS wiki.