8e0a769c903d2d1b6fcaf2720d8d06c430175905
Andrew Lewman first cut of the new, shiny...

Andrew Lewman authored 13 years ago

1) #!/bin/bash
2) #
3) # Author: Runa Sandvik, <runa.sandvik@gmail.com>
4) # Google Summer of Code 2009
5) # 
6) # This is Free Software (GPLv3)
7) # http://www.gnu.org/licenses/gpl-3.0.txt
8) #
9) # This script will convert all the translated po files back to wml
10) # files.
11) #
12) # For more information, see the HOWTO and README in
13) # translation/tools/gsoc09.
14) #
15) 
16) ### start config ###
17) 
18) # Location of the wml files
19) wmldir="$PWD"
20) 
21) # Location of the po files,
Andrew Lewman update to current scripts f...

Andrew Lewman authored 13 years ago

22) podir="`dirname $wmldir`/translation/projects/website/po"
Andrew Lewman first cut of the new, shiny...

Andrew Lewman authored 13 years ago

23) 
24) # A lot of the wml files have custom tags. These tags have been defined
25) # in website/include/versions.wmi. Tags that people usually forget to close,
26) # as well as tags that are not defined in versions.wmi have been added.
27) # See: https://svn.torproject.org/svn/website/trunk/include/versions.wmi
28) customtag=`echo $(cat "$wmldir/include/versions.wmi" | awk '{ printf "<%s> " , $2 }' | sed 's/<>//g') "<svnsandbox> <svnwebsite> <svnprojects> <input> <hr> <br> <img> <gitblob>"`
29) 
30) # We also need to use the nodefault option of po4a; space separated list
31) # of tags that the module should not try to set by default in any
32) # category. For now, we only need the input tag.
33) nodefault='<input>'
34) 
35) ### end config ###
36) 
37) # Create a lockfile to make sure that only one instance of the script
38) # can run at any time.
39) LOCKFILE=po2wml.lock
40) 
41) if lockfile -! -l 60 -r 3 "$LOCKFILE"; 
42) then
43) 	echo "unable to acquire lock" >2
44) 	exit 1
45) fi
46) 
47) trap "rm -f '$PWD/$LOCKFILE'" exit
48) 
49) # Check if translation/projects/website exist, i.e. has been checked out
50) if [ ! -d $podir ]
51) then
52) 	echo "Have you remembered to check out translation/projects/website?"
53) 	exit 1
54) fi
55) 
56) # cd to the right directory so we can commit the files later
57) cd "$wmldir"
58) 
59) # We need to find the po files
60) po=`find $podir -regex '^'$podir'/.*/.*\.po' -type f`
61) 
62) # For every wml, update po
63) for file in $po ; do
64) 	
65) 	# Get the basename of the file we are dealing with
66) 	pofile=`basename $file`
67) 
68) 	# Strip the file for its original extension and the translation
69) 	# priority, and add .wml
70) 	wmlfile="`echo $pofile | cut -d . -f 2`.wml"	
71) 
72) 	# Find out what directory the file is in.
73) 	indir=`dirname $file`
74) 
75) 	# We also need to know what one directory up is
76) 	onedirup=`dirname $indir`
77) 
78) 	# We need to find out what subdirectory we are in
79) 	subdir=`dirname $file | sed "s#$onedirup/##"`
80) 
81) 	# And which language we are dealing with
82) 	lang=`dirname $indir | sed "s#$podir/##"`
83) 
84) 	# Time to write the translated wml file.
85) 	# The translated document is written if 80% or more of the po
86) 	# file has been translated. Example: Use '-k 21' to set this
87) 	# number down to 21%. Also, po4a-translate will only write the
88) 	# translated document if 80% or more has been translated.
89) 	# However, it will delete the wml if less than 80% has been
90) 	# translated. To avoid having our current, translated wml files
91) 	# deleted, convert the po to a temp wml first. If this file was
92) 	# actually written, rename it to wml.
93) 
94) 	# Convert translations to directories such as website/nb/.
95) 	function nosubdir {
96) 		# The location of the english wml file
97) 		english="$wmldir/en/$wmlfile"
98) 
Andrew Lewman update to current scripts f...

Andrew Lewman authored 13 years ago

99) 		# Convert the translated file. Note that po4a will write the file and then delete it if less than 80% has been translated
100) 		po4a-translate -f wml -m "$english" -p "$file" -l "$wmldir/$subdir/$wmlfile" --master-charset utf-8 -L utf-8 -o customtag="$customtag" -o nodefault="$nodefault"
Andrew Lewman first cut of the new, shiny...

Andrew Lewman authored 13 years ago

101) 
102) 		# Check to see if the file was written
Andrew Lewman update to current scripts f...

Andrew Lewman authored 13 years ago

103)                 if [ -e "$wmldir/$subdir/$wmlfile" ]
Andrew Lewman first cut of the new, shiny...

Andrew Lewman authored 13 years ago

104) 		then
105)                         # Remove last three lines in file
106) 			sed -i -e :a -e '$d;N;2,3ba' -e 'P;D' "$wmldir/$subdir/$wmlfile"
107) 
108) 			# Include foot.wmi
109) 			echo "#include <foot.wmi>" >> "$wmldir/$subdir/$wmlfile"
Andrew Lewman update to current scripts f...

Andrew Lewman authored 13 years ago

110) 
111) 			# If the file is mirrors.wml, include mirrors-table.wmi
112) 			if [ $wmlfile == "mirrors.wml" ]
113) 			then
114) 				sed -i 's/<!--PO4ASHARPBEGIN/#/' "$wmldir/$subdir/$wmlfile"
115) 				sed -i 's/PO4ASHARPEND-->//' "$wmldir/$subdir/$wmlfile"
116) 			fi
Andrew Lewman first cut of the new, shiny...

Andrew Lewman authored 13 years ago

117) 		fi
118) 	}	
119) 
Andrew Lewman update to current scripts f...

Andrew Lewman authored 13 years ago

120) 	# Convert translations to directories such as website/torbrowser/nb/.
121) 	# Again, po4a will write the file and then delete it if less than 80% has been translated
Andrew Lewman first cut of the new, shiny...

Andrew Lewman authored 13 years ago

122) 	function subdir {
123) 		# The location of the english wml file
124)                 english="$wmldir/$subdir/en/$wmlfile"
125) 
126) 		# Convert the files
Andrew Lewman update to current scripts f...

Andrew Lewman authored 13 years ago

127) 		po4a-translate -f wml -m "$english" -p "$file" -l "$wmldir/$subdir/$lang/$wmlfile" --master-charset utf-8 -L utf-8 -o customtag="$customtag" -o nodefault="$nodefault"
Andrew Lewman first cut of the new, shiny...

Andrew Lewman authored 13 years ago

128) 
129) 		# Check to see if the file was written
Andrew Lewman update to current scripts f...

Andrew Lewman authored 13 years ago

130) 		if [ -e "$wmldir/$subdir/$lang/$wmlfile" ]