[or-cvs] r19932: {} created a folder for this years GSoC and added the script wm (in translation/trunk/tools: . gsoc09)

runa at seul.org runa at seul.org
Mon Jul 6 15:21:33 UTC 2009


Author: runa
Date: 2009-07-06 11:21:33 -0400 (Mon, 06 Jul 2009)
New Revision: 19932

Added:
   translation/trunk/tools/gsoc09/
   translation/trunk/tools/gsoc09/wml2po.sh
Log:
created a folder for this years GSoC and added the script wml2po

Added: translation/trunk/tools/gsoc09/wml2po.sh
===================================================================
--- translation/trunk/tools/gsoc09/wml2po.sh	                        (rev 0)
+++ translation/trunk/tools/gsoc09/wml2po.sh	2009-07-06 15:21:33 UTC (rev 19932)
@@ -0,0 +1,117 @@
+#!/bin/bash
+#
+# Author: Runa Sandvik, <runa.sandvik at gmail.com>
+# Google Summer of Code 2009
+#
+# This script will convert all of the english wml files to po files and
+# keep them updated.
+#
+
+### start config ###
+
+# Location of the wml files, 
+# for example "/home/runa/website/wml"
+wmldir=""
+
+# We need to know which languages directories we are dealing with.
+# We can either read a simple text file, or look at the language
+# directories in /var/lib/pootle/pootle
+lang=`ls "/var/lib/pootle/pootle" | grep -v ^templates$`
+
+### end config ###
+
+# Create a lockfile to make sure that only one instance of the script
+# can run at any time.
+LOCKFILE=wml2po.lock
+
+if lockfile -! -l 60 -r 3 "$LOCKFILE"; 
+then
+	echo "unable to acquire lock" >2
+	exit 1
+fi
+
+trap "rm -f '$LOCKFILE'" exit
+
+# We only need the english wml files
+wml=`find $wmldir -regex '^'$wmldir'/.*en/.*\.wml' -type f`
+
+# For every wml, update po
+for file in $wml ; do
+	
+	# Get the basename of the file we are dealing with
+	wmlfile=`basename $file`
+
+	# Strip the file for its original extension and add .po
+	pofile="${wmlfile%%.*}.po"
+	
+	# Find out what directory the file is in
+	indir=`dirname $file`
+
+	# The path to the directory where the po files are
+	podir=`dirname $indir | sed 's/\<wml\>/po/'`
+
+	# Make sure the po file exist in every language directory
+	for dir in $lang ; do
+		
+		# We need to know if the po file exist before we run
+		# po4a-updatepo. If it doesn't, po4a-updatepo will
+		# create it.
+		if [ -e "$podir/$dir/$pofile" ]
+		then
+			poexist=1
+		else
+			poexist=0
+		fi
+		
+		# If the po file does exist, calculate the hash before
+		# the file is updated.	
+		if [ $poexist = 1 ]
+		then
+			before=`grep -v '^"POT-Creation-Date:'	"$podir/$dir/$pofile" | md5sum | cut -d " " -f1`
+		fi
+
+		# Update the file
+		po4a-updatepo -f wml -m "$file" -p "$podir/$dir/$pofile" --master-charset utf-8
+	
+		# Delete the backup
+		rm -f "$podir/$dir/$pofile~"
+	
+		# If the file existed before running po4a-updatepo,
+		# calculate the hash again.
+		if [ $poexist = 1 ]
+		then
+			after=`grep -v '^"POT-Creation-Date:' "$podir/$dir/$pofile" | md5sum | cut -d " " -f1`
+		fi
+		
+		# If the file did exist before running po4a-updatepo, we
+		# need to compare the before and after hash.
+		# If they match (i.e. nothing has changed), revert the
+		# file.
+		if [ $poexist = 1 ]
+		then
+			if [ $before = $after ]
+			then
+				svn revert "$podir/$dir/$pofile"
+			fi
+		fi
+		
+		# If the file did not exist before running
+		# po4a-updatepo but it does exist now, add the file to
+		# the repository and set the right encoding and charset.
+		if [ $poexist = 0 ]
+		then
+			if [ -e "$podir/$dir/$pofile" ]
+			then
+				# Add it to the repository
+				svn add "$podir/$onedirup/$dir/$pofile"
+
+				# And set the right encoding and charset
+				sed -i '1,/CHARSET/ s/CHARSET/UTF-8/' "$podir/$dir/$pofile"
+				sed -i '1,/ENCODING/ s/ENCODING/8bit/' "$podir/$dir/$pofile"
+			fi
+		fi
+	done
+
+	# Commit the files
+	svn ci -m 'automatically generated and updated the po files'
+done


Property changes on: translation/trunk/tools/gsoc09/wml2po.sh
___________________________________________________________________
Added: svn:executable
   + *



More information about the tor-commits mailing list