[or-cvs] r20667: {website} convert to po for all languages under translation/project/we (website/trunk)

runa at seul.org runa at seul.org
Fri Sep 25 16:12:04 UTC 2009


Author: runa
Date: 2009-09-25 12:12:04 -0400 (Fri, 25 Sep 2009)
New Revision: 20667

Modified:
   website/trunk/wml2po.sh
Log:
convert to po for all languages under translation/project/website and create the subdirectories needed

Modified: website/trunk/wml2po.sh
===================================================================
--- website/trunk/wml2po.sh	2009-09-25 07:29:33 UTC (rev 20666)
+++ website/trunk/wml2po.sh	2009-09-25 16:12:04 UTC (rev 20667)
@@ -6,8 +6,9 @@
 # This is Free Software (GPLv3)
 # http://www.gnu.org/licenses/gpl-3.0.txt
 #
-# This script will convert all of the english wml files to pot files and
-# keep them updated.
+# This script will convert all of the english wml files to po files, and
+# keep them updated. The script will also convert subdirectories that
+# exist in the english website module.
 #
 # For more information, see the HOWTO and README in
 # translation/tools/gsoc09.
@@ -18,11 +19,11 @@
 # Location of the wml files
 wmldir="$PWD"
 
-# Location of the pot files.
+# Location of the po files.
 # Assuming that the translation directory is relative to the website
-podir="`dirname $wmldir`/translation/projects/website/templates"
+podir="`dirname $wmldir`/translation/projects/website"
 
-# Set the copyright holder of the pot files,
+# Set the copyright holder of the po files,
 # for example "The Tor Project, Inc"
 copyright="The Tor Project, Inc"
 
@@ -75,172 +76,185 @@
 # Create the temp log
 touch $tmplog
 
-# cd to the right directory so we can commit the files later
-cd "$podir"
+# We need to find out which language directories we have.
+# We also need to excluse the website module directory itself, as well
+# as .svn
+langdir=`find "$podir" -maxdepth 1 -type d ! -path "$podir" ! -path "$podir/templates" ! -path "*\.*" | sed "s#$podir/##"`
 
 # We only need the english wml files, but we do not wish to translate
 # the eff documents.
 wml=`find $wmldir -regex '^'$wmldir'/.*en/.*\.wml' -type f | grep -v '^'$wmldir'/eff'`
 
-# For every wml, update po
-for file in $wml ; do
+# For every language directory, create and/or update the po files.
+for lang in $langdir ; do
 
-	# Get the basename of the file we are dealing with
-	wmlfile=`basename $file`
+	# For every english wml, see if the po needs to be created or
+	# updated
+	for file in $wml ; do
 
-	# Get the translation priority
-	priority=`cat $file | grep "# Translation-Priority" | awk '{print $3}'`
+		# Get the basename of the file we are dealing with
+		wmlfile=`basename $file`
 
-	# If the file doesn't have a translation-priority, we can assume
-	# that it doesn't need to be translated. Skip this file and
-	# continue on with the next.
-	if [ ! $priority ]
-	then
-		continue
-	fi
+		# Get the translation priority
+		priority=`cat $file | grep "# Translation-Priority" | awk '{print $3}'`
 
-	# Strip the file for its original extension and add .pot
-	pofile="$priority.${wmlfile%%.*}.pot"
+		# If the file doesn't have a translation-priority, we can assume
+		# that it doesn't need to be translated. Skip this file and
+		# continue on with the next.
+		if [ ! $priority ]
+		then
+			continue
+		fi
 
-	# Find out what directory the file is in.
-	# Also, remove the parth of the path that is $wmldir
-	indir=`dirname $file`
+		# Strip the file for its original extension and add .po
+		pofile="$priority.${wmlfile%%.*}.po"
+
+		# Find out what directory the file is in.
+		# Also, remove the parth of the path that is $wmldir
+		indir=`dirname $file`
 	
-	# We need to know what one dir up is
-	onedirup=`dirname $indir | sed "s#$wmldir/##"`
+		# We need to know what one dir up is
+		onedirup=`dirname $indir | sed "s#$wmldir/##"`
 
-	# We need to have the correct, full path to the pot
-	# directory for the file we are working on.
-	# Also, did the subdirectory exist prior to running this
-	# script? If not, create it now and add it to the
-	# repository.
-	if [ $onedirup = $wmldir ]
-	then
-		popath="$podir"
-	else
-		# We need to know if a subdirectory, such as torbutton,
-		# exist in the translation module. If it does not exist,
-		# the script will create it in all the directories under
-		# translation/projects/website (excluding .svn)
-		langdir=`find $(dirname "$podir") -maxdepth 1 -type d ! -path $(dirname "$podir") ! -path "*\.*"`
+		# We need to have the correct, full path to the po
+		# directory for the file we are working on.
+		# Also, did the subdirectory exist prior to running this
+		# script? If not, create it now and add it to the
+		# repository.
+		if [ $onedirup = $wmldir ]
+		then
+			popath="$podir/$lang"
+		else
 
-		for dir in $langdir ; do
-			if [ ! -d "$dir/$onedirup" ]
-			then
-				svn mkdir "$dir/$onedirup"
-			fi
-		done
+			# We need to know if a subdirectory, such as torbutton,
+			# exist in the translation module. If it does not exist,
+			# the script will create it in all the directories under
+			# translation/projects/website (excluding .svn)
+			subdir=`find "$podir/$lang" -maxdepth 1 -type d	! -path "$ppodir/$lang" ! -path "*\.*"`
 
-		# Set the path
-		popath="$podir/$onedirup"
-	fi
+			for dir in $subdir ; do
+				if [ ! -d "$podir/$lang/$onedirup" ]
+				then
+					svn mkdir "$podir/$lang/$onedirup"
+				fi
+			done
+
+			# Set the path
+			popath="$podir/$lang/$onedirup"
+
+		fi
 		
-	# Check to see if the pot file existed prior to running this
-	# script. If it didn't, check if there any files with the same
-	# filename, but different priority. If neither of the files
-	# exist, create with po4a-gettextize.
-	if [ -e "$popath/$pofile" ]
-	then
-		poexist=1
-	elif [ `find $popath -type f -name "*.$filename" | wc -l` -gt "0" ]
-	then
-		poexist=2
+		# Check to see if the po existed prior to running this
+		# script. If it didn't, check if there any files with the same
+		# filename, but different priority. If neither of the files
+		# exist, create with po4a-gettextize.
+		if [ -e "$popath/$pofile" ]
+		then
+			poexist=1
+		elif [ `find $popath -type f -name "*.$filename" | wc -l` -gt "0" ]
+		then
+			poexist=2
 
 		# We need to rename the other file
 		for file in `find $popath -type f -name "*.$filename"` ; do
 			svn mv "$file" "$popath/$pofile"
 			echo "$popath/$pofile" > $tmplog
 		done
-	else
-		poexist=0
-	fi
+	
+		else
+			poexist=0
+		fi
 
-	# If the pot file does not exist, convert it with
-	# po4a-gettextize, set the right encoding and charset
-	# and the correct copyright.
-	if [ $poexist = 0 ]
-	then
-		# Convert it
-		po4a-gettextize -f wml -m "$file" -p "$popath/$pofile" --master-charset utf-8 -o customtag="$customtag" -o nodefault="$nodefault"
-
-		# Check to see if the file exists
-		if [ -e "$popath/$pofile" ]
+		# If the po file does not exist, convert it with
+		# po4a-gettextize, set the right encoding and charset
+		# and the correct copyright.
+		if [ $poexist = 0 ]
 		then
-			# We don't want files without
-			# content, so check the file first.
-			content=`cat "$popath/$pofile" | grep '^#[.]' | wc -l`
+			# Convert it
+			po4a-gettextize -f wml -m "$file" -p "$popath/$pofile" --master-charset utf-8 -o customtag="$customtag" -o nodefault="$nodefault"
 
-			# If the file does not have any
-			# content, delete it.
-			if [ $content = 0 ] 
+			# Check to see if the file exists
+			if [ -e "$popath/$pofile" ]
 			then
-				rm -f "$popath/$pofile"
-				echo "$popath/$pofile" > $tmplog
-			else
-				# Set the right encoding and charset, as well
-				# as the correct copyright holder.
-				sed -i '0,/ENCODING/ s/ENCODING/8bit/' "$popath/$pofile"
-				sed -i '0,/CHARSET/ s/CHARSET/utf-8/' "$popath/$pofile"
-				sed -i "0,/Free Software Foundation, Inc/ s/Free Software Foundation, Inc/$copyright/" "$popath/$pofile"
+				# We don't want files without
+				# content, so check the file first.
+				content=`cat "$popath/$pofile" | grep '^#[.]' | wc -l`
 
-				# And add it to the repository
-				svn add "$popath/$pofile"
-				echo "$popath/$pofile" > $tmplog
+				# If the file does not have any
+				# content, delete it.
+				if [ $content = 0 ] 
+				then
+					rm -f "$popath/$pofile"
+					echo "$popath/$pofile" > $tmplog
+				else
+					# Set the right encoding and charset, as well
+					# as the correct copyright holder.
+					sed -i '0,/ENCODING/ s/ENCODING/8bit/' "$popath/$pofile"
+					sed -i '0,/CHARSET/ s/CHARSET/utf-8/' "$popath/$pofile"
+					sed -i "0,/Free Software Foundation, Inc/ s/Free Software Foundation, Inc/$copyright/" "$popath/$pofile"
+				
+					# And add it to the repository
+					svn add "$popath/$pofile"
+					echo "$popath/$pofile" > $tmplog
+				fi
 			fi
+
+			# Update the file with po4a-updatepo to make the
+			# word wrapping perfect
+			po4a-updatepo -f wml -m "$file" -p "$popath/$pofile" --master-charset utf-8 -o customtag="$customtag" -o nodefault="$nodefault"
+
+			# Delete the backup
+			rm -f "$popath/$pofile~"
 		fi
-	fi
 		
-	# If the pot file does exist, calculate the hash first,
-	# then update the file, then calculate the hash again.
-	if [ $poexist = 1 ]
-	then
-		# Calculate the hash before we update the file
-		before=`grep -vE '^("POT-Creation-Date:|#)' "$popath/$pofile" | md5sum | cut -d " " -f1`
+		# If the po file does exist, calculate the hash first,
+		# then update the file, then calculate the hash again.
+		if [ $poexist = 1 ]
+		then
+			# Calculate the hash before we update the file
+			before=`grep -vE '^("POT-Creation-Date:|#)' "$popath/$pofile" | md5sum | cut -d " " -f1`
 
-		# Update the pot file
-		po4a-updatepo -f wml -m "$file" -p "$popath/$pofile" --master-charset utf-8 -o customtag="$customtag" -o nodefault="$nodefault"
+			# Update the po file
+			po4a-updatepo -f wml -m "$file" -p "$popath/$pofile" --master-charset utf-8 -o customtag="$customtag" -o nodefault="$nodefault"
 
-		# Calculate the new hash
-		after=`grep -vE '^("POT-Creation-Date:|#)' "$popath/$pofile" | md5sum | cut -d " " -f1`
+			# Calculate the new hash
+			after=`grep -vE '^("POT-Creation-Date:|#)' "$popath/$pofile" | md5sum | cut -d " " -f1`
 
-		# Delete the backup
-		rm -f "$popath/$pofile~"
+			# Delete the backup
+			rm -f "$popath/$pofile~"
 
-		# Now we need to compare the before and after
-		# hash. If they match (i.e. nothing has
-		# changed), revert the file.
-		if [ $before = $after ]
+			# Now we need to compare the before and after
+			# hash. If they match (i.e. nothing has
+			# changed), revert the file.
+			if [ $before = $after ]
+			then
+				svn revert "$popath/$pofile"
+				echo "$popath/$pofile" > $tmplog
+			else
+				echo "$popath/$pofile" > $tmplog
+			fi
+		fi
+
+		# If a file with the same name but different priority
+		# exist, then rename the file (we have done so already)
+		# and update it with po4a-updatepo to make sure
+		# everything else is ok.
+		if [ $poexist = 2 ]
 		then
-			svn revert "$popath/$pofile"
-			echo "$popath/$pofile" > $tmplog
-		else
-			echo "$popath/$pofile" > $tmplog
+			# Update the file
+			po4a-updatepo -f wml -m "$file" -p "$popath/$pofile" --master-charset utf-8 -o customtag="$customtag" -o nodefault="$nodefault"
 		fi
-	fi
-
-	# If a file with the same name but different priority
-	# exist, then rename the file (we have done so already)
-	# and update it with po4a-updatepo to make sure
-	# everything else is ok.
-	if [ $poexist = 2 ]
-	then
-		# Update the file
-		po4a-updatepo -f wml -m "$file" -p "$popath/$pofile" --master-charset utf-8 -o customtag="$customtag" -o nodefault="$nodefault"
-	fi
 	
-	# Write to the logfile
-	if [ -e $logfile ]
-	then
-		if [ `cat $tmplog | grep "$popath/$pofile" | wc -l` -eq "0" ]
+		# Write to the logfile
+		if [ -e $logfile ]
 		then
-			echo "could not process: " "$file" >> $logfile
+			if [ `cat $tmplog | grep "$popath/$pofile" | wc -l` -eq "0" ]
+			then
+				echo "could not process: " "$file" >> $logfile
+			fi
 		fi
-	fi
 
-	# Delete the temp log
-	rm -f $tmplog
+		# Delete the temp log
+		rm -f $tmplog
+	done
 done
-
-	# If you want the script to commit the files automatically,
-	# uncomment the following line.
-	# svn ci -m 'automatically generated and updated the pot files'



More information about the tor-commits mailing list