Browse code

convert to po for all languages under translation/project/website and create the subdirectories needed

Runa A. Sandvik authored on25/09/2009 18:12:04
Showing1 changed files
... ...
@@ -6,8 +6,9 @@
6 6
 # This is Free Software (GPLv3)
7 7
 # http://www.gnu.org/licenses/gpl-3.0.txt
8 8
 #
9
-# This script will convert all of the english wml files to pot files and
10
-# keep them updated.
9
+# This script will convert all of the english wml files to po files, and
10
+# keep them updated. The script will also convert subdirectories that
11
+# exist in the english website module.
11 12
 #
12 13
 # For more information, see the HOWTO and README in
13 14
 # translation/tools/gsoc09.
... ...
@@ -18,11 +19,11 @@
18 19
 # Location of the wml files
19 20
 wmldir="$PWD"
20 21
 
21
-# Location of the pot files.
22
+# Location of the po files.
22 23
 # Assuming that the translation directory is relative to the website
23
-podir="`dirname $wmldir`/translation/projects/website/templates"
24
+podir="`dirname $wmldir`/translation/projects/website"
24 25
 
25
-# Set the copyright holder of the pot files,
26
+# Set the copyright holder of the po files,
26 27
 # for example "The Tor Project, Inc"
27 28
 copyright="The Tor Project, Inc"
28 29
 
... ...
@@ -75,172 +76,185 @@ fi
75 76
 # Create the temp log
76 77
 touch $tmplog
77 78
 
78
-# cd to the right directory so we can commit the files later
79
-cd "$podir"
79
+# We need to find out which language directories we have.
80
+# We also need to excluse the website module directory itself, as well
81
+# as .svn
82
+langdir=`find "$podir" -maxdepth 1 -type d ! -path "$podir" ! -path "$podir/templates" ! -path "*\.*" | sed "s#$podir/##"`
80 83
 
81 84
 # We only need the english wml files, but we do not wish to translate
82 85
 # the eff documents.
83 86
 wml=`find $wmldir -regex '^'$wmldir'/.*en/.*\.wml' -type f | grep -v '^'$wmldir'/eff'`
84 87
 
85
-# For every wml, update po
86
-for file in $wml ; do
88
+# For every language directory, create and/or update the po files.
89
+for lang in $langdir ; do
87 90
 
88
-	# Get the basename of the file we are dealing with
89
-	wmlfile=`basename $file`
91
+	# For every english wml, see if the po needs to be created or
92
+	# updated
93
+	for file in $wml ; do
90 94
 
91
-	# Get the translation priority
92
-	priority=`cat $file | grep "# Translation-Priority" | awk '{print $3}'`
95
+		# Get the basename of the file we are dealing with
96
+		wmlfile=`basename $file`
93 97
 
94
-	# If the file doesn't have a translation-priority, we can assume
95
-	# that it doesn't need to be translated. Skip this file and
96
-	# continue on with the next.
97
-	if [ ! $priority ]
98
-	then
99
-		continue
100
-	fi
98
+		# Get the translation priority
99
+		priority=`cat $file | grep "# Translation-Priority" | awk '{print $3}'`
101 100
 
102
-	# Strip the file for its original extension and add .pot
103
-	pofile="$priority.${wmlfile%%.*}.pot"
101
+		# If the file doesn't have a translation-priority, we can assume
102
+		# that it doesn't need to be translated. Skip this file and
103
+		# continue on with the next.
104
+		if [ ! $priority ]
105
+		then
106
+			continue
107
+		fi
108
+
109
+		# Strip the file for its original extension and add .po
110
+		pofile="$priority.${wmlfile%%.*}.po"
104 111
 
105
-	# Find out what directory the file is in.
106
-	# Also, remove the parth of the path that is $wmldir
107
-	indir=`dirname $file`
112
+		# Find out what directory the file is in.
113
+		# Also, remove the parth of the path that is $wmldir
114
+		indir=`dirname $file`
108 115
 	
109
-	# We need to know what one dir up is
110
-	onedirup=`dirname $indir | sed "s#$wmldir/##"`
111
-
112
-	# We need to have the correct, full path to the pot
113
-	# directory for the file we are working on.
114
-	# Also, did the subdirectory exist prior to running this
115
-	# script? If not, create it now and add it to the
116
-	# repository.
117
-	if [ $onedirup = $wmldir ]
118
-	then
119
-		popath="$podir"
120
-	else
121
-		# We need to know if a subdirectory, such as torbutton,
122
-		# exist in the translation module. If it does not exist,
123
-		# the script will create it in all the directories under
124
-		# translation/projects/website (excluding .svn)
125
-		langdir=`find $(dirname "$podir") -maxdepth 1 -type d ! -path $(dirname "$podir") ! -path "*\.*"`
126
-
127
-		for dir in $langdir ; do
128
-			if [ ! -d "$dir/$onedirup" ]
129
-			then
130
-				svn mkdir "$dir/$onedirup"
131
-			fi
132
-		done
116
+		# We need to know what one dir up is
117
+		onedirup=`dirname $indir | sed "s#$wmldir/##"`
118
+
119
+		# We need to have the correct, full path to the po
120
+		# directory for the file we are working on.
121
+		# Also, did the subdirectory exist prior to running this
122
+		# script? If not, create it now and add it to the
123
+		# repository.
124
+		if [ $onedirup = $wmldir ]
125
+		then
126
+			popath="$podir/$lang"
127
+		else
128
+
129
+			# We need to know if a subdirectory, such as torbutton,
130
+			# exist in the translation module. If it does not exist,
131
+			# the script will create it in all the directories under
132
+			# translation/projects/website (excluding .svn)
133
+			subdir=`find "$podir/$lang" -maxdepth 1 -type d	! -path "$ppodir/$lang" ! -path "*\.*"`
134
+
135
+			for dir in $subdir ; do
136
+				if [ ! -d "$podir/$lang/$onedirup" ]
137
+				then
138
+					svn mkdir "$podir/$lang/$onedirup"
139
+				fi
140
+			done
133 141
 
134
-		# Set the path
135
-		popath="$podir/$onedirup"
136
-	fi
142
+			# Set the path
143
+			popath="$podir/$lang/$onedirup"
144
+
145
+		fi
137 146
 		
138
-	# Check to see if the pot file existed prior to running this
139
-	# script. If it didn't, check if there any files with the same
140
-	# filename, but different priority. If neither of the files
141
-	# exist, create with po4a-gettextize.
142
-	if [ -e "$popath/$pofile" ]
143
-	then
144
-		poexist=1
145
-	elif [ `find $popath -type f -name "*.$filename" | wc -l` -gt "0" ]
146
-	then
147
-		poexist=2
147
+		# Check to see if the po existed prior to running this
148
+		# script. If it didn't, check if there any files with the same
149
+		# filename, but different priority. If neither of the files
150
+		# exist, create with po4a-gettextize.
151
+		if [ -e "$popath/$pofile" ]
152
+		then
153
+			poexist=1
154
+		elif [ `find $popath -type f -name "*.$filename" | wc -l` -gt "0" ]
155
+		then
156
+			poexist=2
148 157
 
149 158
 		# We need to rename the other file
150 159
 		for file in `find $popath -type f -name "*.$filename"` ; do
151 160
 			svn mv "$file" "$popath/$pofile"
152 161
 			echo "$popath/$pofile" > $tmplog
153 162
 		done
154
-	else
155
-		poexist=0
156
-	fi
157
-
158
-	# If the pot file does not exist, convert it with
159
-	# po4a-gettextize, set the right encoding and charset
160
-	# and the correct copyright.
161
-	if [ $poexist = 0 ]
162
-	then
163
-		# Convert it
164
-		po4a-gettextize -f wml -m "$file" -p "$popath/$pofile" --master-charset utf-8 -o customtag="$customtag" -o nodefault="$nodefault"
165
-
166
-		# Check to see if the file exists
167
-		if [ -e "$popath/$pofile" ]
163
+	
164
+		else
165
+			poexist=0
166
+		fi
167
+
168
+		# If the po file does not exist, convert it with
169
+		# po4a-gettextize, set the right encoding and charset
170
+		# and the correct copyright.
171
+		if [ $poexist = 0 ]
168 172
 		then
169
-			# We don't want files without
170
-			# content, so check the file first.
171
-			content=`cat "$popath/$pofile" | grep '^#[.]' | wc -l`
173
+			# Convert it
174
+			po4a-gettextize -f wml -m "$file" -p "$popath/$pofile" --master-charset utf-8 -o customtag="$customtag" -o nodefault="$nodefault"
172 175
 
173
-			# If the file does not have any
174
-			# content, delete it.
175
-			if [ $content = 0 ] 
176
+			# Check to see if the file exists
177
+			if [ -e "$popath/$pofile" ]
176 178
 			then
177
-				rm -f "$popath/$pofile"
179
+				# We don't want files without
180
+				# content, so check the file first.
181
+				content=`cat "$popath/$pofile" | grep '^#[.]' | wc -l`
182
+
183
+				# If the file does not have any
184
+				# content, delete it.
185
+				if [ $content = 0 ] 
186
+				then
187
+					rm -f "$popath/$pofile"
188
+					echo "$popath/$pofile" > $tmplog
189
+				else
190
+					# Set the right encoding and charset, as well
191
+					# as the correct copyright holder.
192
+					sed -i '0,/ENCODING/ s/ENCODING/8bit/' "$popath/$pofile"
193
+					sed -i '0,/CHARSET/ s/CHARSET/utf-8/' "$popath/$pofile"
194
+					sed -i "0,/Free Software Foundation, Inc/ s/Free Software Foundation, Inc/$copyright/" "$popath/$pofile"
195
+				
196
+					# And add it to the repository
197
+					svn add "$popath/$pofile"
198
+					echo "$popath/$pofile" > $tmplog
199
+				fi
200
+			fi
201
+
202
+			# Update the file with po4a-updatepo to make the
203
+			# word wrapping perfect
204
+			po4a-updatepo -f wml -m "$file" -p "$popath/$pofile" --master-charset utf-8 -o customtag="$customtag" -o nodefault="$nodefault"
205
+
206
+			# Delete the backup
207
+			rm -f "$popath/$pofile~"
208
+		fi
209
+		
210
+		# If the po file does exist, calculate the hash first,
211
+		# then update the file, then calculate the hash again.
212
+		if [ $poexist = 1 ]
213
+		then
214
+			# Calculate the hash before we update the file
215
+			before=`grep -vE '^("POT-Creation-Date:|#)' "$popath/$pofile" | md5sum | cut -d " " -f1`
216
+
217
+			# Update the po file
218
+			po4a-updatepo -f wml -m "$file" -p "$popath/$pofile" --master-charset utf-8 -o customtag="$customtag" -o nodefault="$nodefault"
219
+
220
+			# Calculate the new hash
221
+			after=`grep -vE '^("POT-Creation-Date:|#)' "$popath/$pofile" | md5sum | cut -d " " -f1`
222
+
223
+			# Delete the backup
224
+			rm -f "$popath/$pofile~"
225
+
226
+			# Now we need to compare the before and after
227
+			# hash. If they match (i.e. nothing has
228
+			# changed), revert the file.
229
+			if [ $before = $after ]
230
+			then
231
+				svn revert "$popath/$pofile"
178 232
 				echo "$popath/$pofile" > $tmplog
179 233
 			else
180
-				# Set the right encoding and charset, as well
181
-				# as the correct copyright holder.
182
-				sed -i '0,/ENCODING/ s/ENCODING/8bit/' "$popath/$pofile"
183
-				sed -i '0,/CHARSET/ s/CHARSET/utf-8/' "$popath/$pofile"
184
-				sed -i "0,/Free Software Foundation, Inc/ s/Free Software Foundation, Inc/$copyright/" "$popath/$pofile"
185
-
186
-				# And add it to the repository
187
-				svn add "$popath/$pofile"
188 234
 				echo "$popath/$pofile" > $tmplog
189 235
 			fi
190 236
 		fi
191
-	fi
192
-		
193
-	# If the pot file does exist, calculate the hash first,
194
-	# then update the file, then calculate the hash again.
195
-	if [ $poexist = 1 ]
196
-	then
197
-		# Calculate the hash before we update the file
198
-		before=`grep -vE '^("POT-Creation-Date:|#)' "$popath/$pofile" | md5sum | cut -d " " -f1`
199
-
200
-		# Update the pot file
201
-		po4a-updatepo -f wml -m "$file" -p "$popath/$pofile" --master-charset utf-8 -o customtag="$customtag" -o nodefault="$nodefault"
202
-
203
-		# Calculate the new hash
204
-		after=`grep -vE '^("POT-Creation-Date:|#)' "$popath/$pofile" | md5sum | cut -d " " -f1`
205
-
206
-		# Delete the backup
207
-		rm -f "$popath/$pofile~"
208
-
209
-		# Now we need to compare the before and after
210
-		# hash. If they match (i.e. nothing has
211
-		# changed), revert the file.
212
-		if [ $before = $after ]
237
+
238
+		# If a file with the same name but different priority
239
+		# exist, then rename the file (we have done so already)
240
+		# and update it with po4a-updatepo to make sure
241
+		# everything else is ok.
242
+		if [ $poexist = 2 ]
213 243
 		then
214
-			svn revert "$popath/$pofile"
215
-			echo "$popath/$pofile" > $tmplog
216
-		else
217
-			echo "$popath/$pofile" > $tmplog
244
+			# Update the file
245
+			po4a-updatepo -f wml -m "$file" -p "$popath/$pofile" --master-charset utf-8 -o customtag="$customtag" -o nodefault="$nodefault"
218 246
 		fi
219
-	fi
220
-
221
-	# If a file with the same name but different priority
222
-	# exist, then rename the file (we have done so already)
223
-	# and update it with po4a-updatepo to make sure
224
-	# everything else is ok.
225
-	if [ $poexist = 2 ]
226
-	then
227
-		# Update the file
228
-		po4a-updatepo -f wml -m "$file" -p "$popath/$pofile" --master-charset utf-8 -o customtag="$customtag" -o nodefault="$nodefault"
229
-	fi
230 247
 	
231
-	# Write to the logfile
232
-	if [ -e $logfile ]
233
-	then
234
-		if [ `cat $tmplog | grep "$popath/$pofile" | wc -l` -eq "0" ]
248
+		# Write to the logfile
249
+		if [ -e $logfile ]
235 250
 		then
236
-			echo "could not process: " "$file" >> $logfile
251
+			if [ `cat $tmplog | grep "$popath/$pofile" | wc -l` -eq "0" ]
252
+			then
253
+				echo "could not process: " "$file" >> $logfile
254
+			fi
237 255
 		fi
238
-	fi
239 256
 
240
-	# Delete the temp log
241
-	rm -f $tmplog
257
+		# Delete the temp log
258
+		rm -f $tmplog
259
+	done
242 260
 done
243
-
244
-	# If you want the script to commit the files automatically,
245
-	# uncomment the following line.
246
-	# svn ci -m 'automatically generated and updated the pot files'