put the scripts in website
Runa A. Sandvik authored 15 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)
|
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" ])
|
put the scripts in website
Runa A. Sandvik authored 15 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)
|
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" ])
|