#!/bin/bash # # fixmystreet/bin/gettext-extract # 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. # 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 cd ../../ else if [ -e ../locale ] then cd ../ else if [ -e locale ] then cd . else echo "Please run with current directory fixmystreet/bin" exit 1 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 # Fix headers TEMP=`tempfile` 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/PACKAGE package/main FixMyStreet code/; s/FIRST AUTHOR , YEAR./Matthew Somerville , 2008-04-15./; s/PACKAGE VERSION/1.0/; s/Report-Msgid-Bugs-To: /Report-Msgid-Bugs-To: matthew@mysociety.org/; s/LL@li.org/team@fixmystreet.com/; s/charset=CHARSET/charset=UTF-8/; " >> $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 bin/make_emptyhomes_po