aeb6df643065db322fc40ff3a49354a6493f53b2
Runa A. Sandvik put the scripts in website

Runa A. Sandvik authored 14 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,
22) podir="`dirname $wmldir`/translation/projects/website"
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> <input> <hr> <br> <img>"`
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.
87) 	# Example: Use '-k 21' to set this number down to 21%.
88) 	
89) 	# The nice thing with po4a-translate is that it will only write
90) 	# the translated document if 80% or more has been translated.
91) 	# But it will delete the wml if less than 80% has been
92) 	# translated. To avoid having our current, translated wml files
93) 	# deleted, we first convert the po to a temp wml. If this file
94) 	# was written, we'll rename it.
95) 
96) 	# If $onedirup is equal to $lang, that means we do not have a
97) 	# subdirectory. Also, we don't want to convert english po back
98) 	# to english wml.
99) 	if [ $onedirup == $lang ]
100) 	then
101) 		# The location of the english wml file
102) 		english="$wmldir/en/$wmlfile"
103) 
Runa A. Sandvik if the directory is zh_CN w...

Runa A. Sandvik authored 14 years ago

104) 		# If the current subdirectory is "zh_CN" use "zh-cn" instead
105) 		if [ $subdir = "zh_CN" ]
106) 		then
107) 			po4a-translate -f wml -m "$english" -p "$file" -l "$wmldir/zh-cn/tmp-$wmlfile" --master-charset utf-8 -L utf-8 -o customtag="$customtag" -o nodefault="$nodefault"
108) 
109) 			# Check to see if the file was written
110) 			if [ -e "$wmldir/zh-cn/tmp-$wmlfile" ]
111) 			then
112) 				mv "$wmldir/zh-cn/tmp-$wmlfile" "$wmldir/zh-cn/$wmlfile"
113) 			fi
114) 		fi
115) 		
116) 		# Convert everything else
117) 		if ([ $subdir != "en" ] && [ $subdir != "zh_CN" ])
Runa A. Sandvik put the scripts in website

Runa A. Sandvik authored 14 years ago

118) 		then
119) 			po4a-translate -f wml -m "$english" -p "$file" -l "$wmldir/$subdir/tmp-$wmlfile" --master-charset utf-8 -L utf-8 -o customtag="$customtag" -o nodefault="$nodefault"
120) 
121) 			# Check to see if the file was written
122) 			if [ -e "$wmldir/$subdir/tmp-$wmlfile" ]
123) 			then
124) 				mv "$wmldir/$subdir/tmp-$wmlfile" "$wmldir/$subdir/$wmlfile"
125) 			fi
126) 		fi
127) 	else
128) 		# The location of the english wml file
129) 		english="$wmldir/$subdir/en/$wmlfile"
130) 		
Runa A. Sandvik if the directory is zh_CN w...

Runa A. Sandvik authored 14 years ago

131) 		# If the current language is "zh_CN" use "zh-cn" instead
132) 		if [ $lang = "zh_CN" ]
133) 		then
134) 			po4a-translate -f wml -m "$english" -p "$file" -l "$wmldir/$subdir/zh-cn/tmp-$wmlfile" --master-charset utf-8 -L utf-8 -o customtag="$customtag" -o nodefault="$nodefault"
135) 
136) 			# Check to see if the file was written
137) 			if [ -e "$wmldir/$subdir/zh-cn/tmp-$wmlfile" ]
138) 			then
139) 				mv "$wmldir/$subdir/zh-cn/tmp-$wmlfile" "$wmldir/$subdir/zh-cn/$wmlfile"
140) 			fi
141) 		fi
142) 		
143) 		# Convert everything else
144) 		if ([ $lang != "en" ] && [ $lang != "zh_CN" ])