aboutsummaryrefslogtreecommitdiffstats
path: root/bin
diff options
context:
space:
mode:
Diffstat (limited to 'bin')
-rwxr-xr-xbin/gettext-extract47
-rwxr-xr-xbin/gettext-nget-patch30
2 files changed, 40 insertions, 37 deletions
diff --git a/bin/gettext-extract b/bin/gettext-extract
index 24defd014..55623e86c 100755
--- a/bin/gettext-extract
+++ b/bin/gettext-extract
@@ -4,10 +4,8 @@
# Generate English language .po files from the source code and email templates,
# for FixMyStreet. Writes the output to appropriate .po files in locale/.
#
-# Copyright (c) 2008 UK Citizens Online Democracy. All rights reserved.
+# Copyright (c) 2011 UK Citizens Online Democracy. All rights reserved.
# Email: matthew@mysociety.org; WWW: http://www.mysociety.org/
-#
-# $Id: gettext-extract,v 1.14 2009-11-30 10:21:52 louise Exp $
if [ -e ../../locale ]
then
@@ -25,56 +23,31 @@ fi
fi
fi
-# Take chunk of text and escape each line in it for putting in catalogue
-function plain_gettext_escape() {
- IFS=""
- while read LINE
- do
- LINE=${LINE//\"/\\\"}
- echo \"$LINE\\n\"
- done
-}
-
# File to write to, clear it to start with
PO=locale/FixMyStreet.po
rm -f $PO
# Extract from Perl
-xgettext --add-comments=TRANS --language=Perl --keyword=_ --keyword=nget:1,2 --from-code=utf-8 -o $PO `find perllib -name "*.pm"` web/*.cgi bin/send-* db/*.pl web-admin/*.cgi
+xgettext.pl --gnu-gettext --verbose --output $PO --plugin perl=* --plugin tt2 --directory perllib --directory templates/web --directory db --directory bin
# Fix headers
TEMP=`tempfile`
+NOW=`date +"%Y-%m-%d %H:%M%z"`
cat $PO | sed "
s/SOME DESCRIPTIVE TITLE/FixMyStreet original .po file, autogenerated by gettext-extract/;
- s/YEAR THE PACKAGE'S COPYRIGHT HOLDER/2008 UK Citizens Online Democracy/;
+ s/YEAR THE PACKAGE'S COPYRIGHT HOLDER/2011 UK Citizens Online Democracy/;
s/PACKAGE package/main FixMyStreet code/;
- s/FIRST AUTHOR <EMAIL@ADDRESS>, YEAR./Matthew Somerville <matthew@mysociety.org>, 2008-04-15./;
+ s/FIRST AUTHOR <EMAIL@ADDRESS>, YEAR./Matthew Somerville <matthew@mysociety.org>, 2011-06-03./;
- s/PACKAGE VERSION/1.0/;
- s/Report-Msgid-Bugs-To: /Report-Msgid-Bugs-To: matthew@mysociety.org/;
+ s/PACKAGE VERSION/1.0\\\n\"\n\"Report-Msgid-Bugs-To: matthew@mysociety.org/;
+ s/POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE/POT-Creation-Date: $NOW/;
s/LL@li.org/team@fixmystreet.com/;
- s/charset=CHARSET/charset=UTF-8/;
+ s/charset=CHARSET/charset=UTF-8/;
+ s/8bit/8bit\\\n\"\n\"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;/;
" >> $TEMP
mv $TEMP $PO
-# XXX The XSL page needs including?
-
-# Extract email templates
-echo >> $PO
-echo '#. Please leave the first word "Subject:" untranslated' >> $PO
-for X in templates/emails/* templates/emails/emptyhomes/*
-do
- # TODO: Should check for "*~" type filenames too, and do the *-livesimply case
- # with wildcards rather than checking per template
- if [ ! -d "$X" ]
- then
- echo >> $PO
- echo "#: $X" >> $PO
- echo msgid \"\" >> $PO
- cat "$X" | plain_gettext_escape >> $PO
- echo msgstr \"\" >> $PO
- fi
-done
+echo "$( bin/gettext-nget-patch )" >> $PO
bin/make_emptyhomes_po
diff --git a/bin/gettext-nget-patch b/bin/gettext-nget-patch
new file mode 100755
index 000000000..8f8dbc346
--- /dev/null
+++ b/bin/gettext-nget-patch
@@ -0,0 +1,30 @@
+#!/usr/bin/perl
+#
+# xgettext doesn't deal with TT files, but xgettext.pl doesn't find nget()s, sigh.
+# This will find the nget()s and output a .po file excerpt.
+
+use File::Find qw/find/;
+
+find( sub {
+ next unless -f;
+ open (FP, $_) or die $!;
+ while (<FP>) {
+ next unless /nget/;
+ my $line = $.;
+ my $text = $_;
+ do {
+ $text .= <FP>;
+ } until $text =~ /\)/;
+ $text =~ /nget\(\s*"(.*?)"\s*,\s*"(.*?)"\s*,\s*(.*?)\s*\)/s;
+ print <<EOF;
+
+#: $File::Find::name:$line
+#, perl-format
+msgid "$1"
+msgid_plural "$2"
+msgstr[0] ""
+msgstr[1] ""
+EOF
+ }
+ close FP;
+}, 'templates');