Install the mo files on W32 platforms
authorWerner Koch <wk@gnupg.org>
Mon, 18 Oct 2010 18:19:45 +0000 (18:19 +0000)
committerWerner Koch <wk@gnupg.org>
Mon, 18 Oct 2010 18:19:45 +0000 (18:19 +0000)
ChangeLog
Makefile.am
scripts/potomo [new file with mode: 0755]

index ef0c0c1..fb65ad8 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2010-10-18  Werner Koch  <wk@g10code.com>
+
+       * Makefile.am (install-data-hook): Add W32 specific hook.
+
 2010-10-08  Werner Koch  <wk@g10code.com>
 
        * configure.ac: Add option --enable-dirmngr-auto-start.
index 1bda6ff..5776413 100644 (file)
@@ -22,7 +22,7 @@ ACLOCAL_AMFLAGS = -I m4 -I gl/m4
 AUTOMAKE_OPTIONS = dist-bzip2 no-dist-gzip
 DISTCHECK_CONFIGURE_FLAGS = --enable-symcryptrun --enable-mailto
 
-EXTRA_DIST = scripts/config.rpath autogen.sh README.SVN
+EXTRA_DIST = scripts/config.rpath scripts/potomo autogen.sh README.SVN
 DISTCLEANFILES = g10defs.h 
 
 if BUILD_GPGSM
@@ -93,7 +93,19 @@ dist_doc_DATA = README
 dist-hook:
        echo "$(VERSION)" > $(distdir)/VERSION
 
+if HAVE_W32_SYSTEM
+install-data-hook:
+       set -e; \
+       for i in $$($(top_srcdir)/scripts/potomo \
+                     --get-linguas $(top_srcdir)/po) ; do \
+           $(MKDIR_P) "$(DESTDIR)$(localedir)/$$i/LC_MESSAGES" || true; \
+           rm -f "$(DESTDIR)$(localedir)/$$i/LC_MESSAGES/gnupg2.mo" \
+                                                 2>/dev/null || true; \
+           $(top_srcdir)/scripts/potomo $(top_srcdir)/po/$$i.po \
+              "$(DESTDIR)$(localedir)/$$i/LC_MESSAGES/gnupg2.mo" ; \
+       done
+endif
+
 stowinstall: 
        $(MAKE) $(AM_MAKEFLAGS) install prefix=/usr/local/stow/gnupg
 
-
diff --git a/scripts/potomo b/scripts/potomo
new file mode 100755 (executable)
index 0000000..2061728
--- /dev/null
@@ -0,0 +1,64 @@
+#!/bin/sh
+# potomo - Convert a .po file to an utf-8 encoded .mo file.
+# Copyright 2008 g10 Code GmbH
+# Copyright 2010 Free Software Foundation, Inc.
+#
+# 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.
+
+# This script is used to create the mo files for applications using
+# the simple gettext implementation provided by libgpg-error.  That
+# gettext can only cope with utf-8 encoded mo files; thus we make this
+# sure while creating the mo.  A conversion is not done if the source
+# file does not exist or if it is not newer than the mo file.
+
+if [ "$1" = "--get-linguas" -a $# -eq 2 ]; then
+   if [ ! -f "$2/LINGUAS" ]; then
+       echo "potomo: directory '$2' has no LINGUAS file" >&2
+       exit 1
+   fi
+   echo $(sed -e "/^#/d" -e "s/#.*//" "$2"/LINGUAS)
+   exit 0
+fi
+
+if [ $# -ne 2 ]; then
+  echo "usage: potomo INFILE.PO OUTFILE.MO" >&2
+  echo "       potomo --get-linguas DIR"    >&2
+  exit 1
+fi
+infile="$1"
+outfile="$2"
+
+if [ ! -f "$infile" ]; then
+  echo "potomo: '$infile' not found - ignored" 2>&1
+  exit 0
+fi
+
+if [ "$outfile" -nt "$infile" ]; then
+  echo "potomo: '$outfile' is newer than source - keeping" 2>&1
+  exit 0
+fi
+  
+# Note that we could use the newer msgconv.  However this tool was not
+# widely available back in 2008.
+
+fromset=`sed -n '/^"Content-Type:/ s/.*charset=\([a-zA-Z0-9_-]*\).*/\1/p' \
+         "$infile"`
+
+case "$fromset" in 
+    utf8|utf-8|UTF8|UTF-8) 
+        echo "potomo: '$infile' keeping $fromset" >&2 
+        msgfmt --output-file="$outfile" "$infile"
+        ;;   
+    *)
+        echo "potomo: '$infile' converting from $fromset to utf-8" >&2
+        iconv --silent --from-code=$fromset --to-code=utf-8 < "$infile" |\
+            sed "/^\"Content-Type:/ s/charset=[a-zA-Z0-9_-]*/charset=utf-8/"|\
+            msgfmt --output-file="$outfile" -
+        ;;
+esac