| 
					
				 | 
			
			
				@@ -1,117 +1,139 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-##      Instructions for helping translate text for Vidalia and TorButton 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+##      Instructions for helping translate text for Vidalia, TorButton and TorCheck 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ##  ( More translation information for Tor related apps will accumulate here ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-You'll need an account on launchpad[0] and you'll want to request access. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-Access will need to be granted by either Matt or Jacob. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+Our translations are handled in one of two places. The Tor Translation Portal 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+handles all of the translations for Vidalia, Torbutton and TorCheck. The Tor 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+website itself is currently handled by hand translations using subversion. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-Uploading new translations is quite simple. First you'll need to checkout  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-the source to Vidalia. Then you'll want to change into the i18n directory: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+All three of the above projects check in their respective .po files into the following subversion urls: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	cd vidalia/src/vidalia/i18n; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    https://tor-svn.freehaven.net/svn/translation/trunk/projects/torbutton 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    https://tor-svn.freehaven.net/svn/translation/trunk/projects/torcheck 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    https://tor-svn.freehaven.net/svn/translation/trunk/projects/vidalia 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-Now you'll run the proper commands[1] to convert from the native QT .ts format. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-This is because of a known issues in Rosetta, the software that drives 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-Launchpad. You can read more about this bug here: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-https://bugs.launchpad.net/rosetta/+bug/68959 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+The current pootle configuration is checked into subversion as well: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-Because Rosetta doesn't support .ts files, you'll want to convert the .ts 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-format into gnugettext .po files. Do so like so: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	for file in `ls -1|grep .ts$|cut -f1 -d.`; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	do 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	echo "Attempting to convert" $file.ts; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	ts2po --input=$file.ts --output=$file.po; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	done 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-This is pretty straight forward but also error prone. You'll want to check for 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-proper formatting of the .po files like so: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	for file in `ls -1|grep .po$` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	do 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	msgfmt -c $file; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	done 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-You have to remove all duplicate strings and all errors before uploading: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    https://tor-svn.freehaven.net/svn/translation/trunk/pootle 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				      
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    for file in `ls -1|grep .po$|cut -f1 -d.` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    do 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    msguniq -o $file.po $file-uniq.po; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    done 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-Ensure that the .po files are valid, possibly by compiling them into .mo files: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+TorCheck uses our translation portal to accept translations. Users use the portal to check in their changes. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+To make use of the translations that users have commited to the translations/ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+subversion module, you'll need to ensure that you have a current checked out 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+copy of TorCheck: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    cd check/trunk/i18n/ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    check/trunk/i18n$ svn up 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	for file in `ls -1|grep .po$|cut -f1 -d.` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	do 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	msgfmt -o $file.mo $file.po; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	file $file.mo; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	done 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+You should see something like the following: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-If you're able to make proper .mo files and you have no errors, you're probably  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-ready to upload the .po files for translation. A proper .mo file may look like: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Fetching external item into 'pootle' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    External at revision 15300. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	"GNU message catalog (little endian), revision 0, 11 messages" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    At revision 15300. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+Now if you had changes, you'd simply want to move the newly updated .po files 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+into the current stable directory.  Moving the .po files from 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+'check/trunk/i18n/pootle/' into 'check/trunk/i18n' properly naming the files 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+for their respective locale. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-Once you have the current selection of .po files, you'll want to make a .tgz: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+Here's an example of how to move all of the current pootle translations into 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+the svn trunk area of TorCheck: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	tar -cvzf vidalia.tar.gz *.po; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    cd check/trunk/i18n/ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    for locale in `ls -1 pootle/|grep -v template`; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    do  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    mv -v pootle/$locale/TorCheck_$locale.po TorCheck_$locale.po; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    done 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-Now you're ready to upload 'vidalia.tar.gz' by visiting translation upload  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-area of launchpad: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+Now check the differences (ensure the output looks reasonable): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    svn diff 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	https://translations.launchpad.net/vidalia/trunk/+translations-upload 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+Ensure that msgfmt has no errors: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-Once you've performed your upload, you will have to wait for admin approval. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-After approval, translators will be able to download the files and translate. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    msgfmt -C *.po 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-When the files are ready to be put back into Vidalia's trunk repository, visit: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+And finally check in the changes: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	https://translations.launchpad.net/vidalia/trunk/+export 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    svn commit 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-Download the files in the .po format by following the instructions on the above  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-page. You should see something like: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+Torbutton uses our translation portal to accept translations. Users use the portal to check in their changes. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+To make use of the translations that users have commited to the translations/ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+subversion module, you'll need to ensure that you have a current checked out 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+copy of Torbutton: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    cd torbutton/trans_tools  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    torbutton/trans_tools$ svn up 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+You should see something like the following: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Fetching external item into 'pootle' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    External at revision 15300. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    At revision 15300. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+Now if you had changes, you need to convert from .po and move the newly updated mozilla files 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+into the current stable locale directory. First convert them with the 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+'mkmoz.sh' script and then moving the proper mozilla files from 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+'torbutton/trans_tools/moz/' into 'torbutton/src/chrome/locale/' directory 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+while properly naming the files for their respective locale. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+Here's an example of how to move all of the current pootle translations into 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+the svn trunk area of Torbutton: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    cd torbutton/trans_tools  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    ./mkmoz.sh 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    for locale in `ls -1 moz/`; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    do  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    mv -v moz/$locale/*.{rdf,dtd,properties} ../src/chrome/locale/$locale/; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    done 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	"When these translations have been exported, a message will be sent  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	to your-launchpad-email@yourdoma.example. This message will tell you  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	where you can download your file." 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+Now check the differences (ensure the output looks reasonable): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    svn diff 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-Once you have the .po files, you'll want to make .ts files from them. To reverse  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-the process and send .ts files to Matt, you'll want to do the following: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+And finally check in the changes: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        for file in `ls -1|grep .po$|cut -f1 -d.`; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        do 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        echo "Attempting to convert" $file.po; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        po2ts --input=$file.po --output=$file.ts; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        done 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    svn commit 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				----------------------------------------------------------------------------- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+XXX: Update this to make it correct :XXX 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-If you're interested in helping to translate Torbutton, it uses Babelzilla[2]. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-You'll need a login to Babelzilla just as you do with Launchpad. Once logged  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-in visit the following page for progress information and downloads of templates: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+Vidalia uses our translation portal to accept translations. Users use the 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+portal to check in their changes.  To make use of the translations that users 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+have commited to the translations/ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+subversion module, you'll need to ensure that you have a current checked out 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+copy of Vidalia: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    cd vidalia/src/vidalia/i18n/  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    vidalia/src/vidalia/i18n/$ svn up 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	http://www.babelzilla.org/index.php?option=com_wts&Itemid=88&extension=3510&type=lang 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+You should see something like the following: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-All information about locales can be viewed at the above url. Click on  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-different languages to see their respective statistics. Explore. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Fetching external item into 'pootle' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Updated external to revision 15319. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-To download all locale strings with missing transations in their original  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-form, you can visit this url: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Updated to revision 2744. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	http://www.babelzilla.org/index.php?option=com_wts&Itemid=88&type=downloadtar&extension=3510 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+Now if you had changes, you need to convert from .po and move the newly updated .ts files 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+into the current stable locale directory. First convert them with the 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+'mkts.sh' script and then moving the proper .ts files from 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+'vidalia/src/vidalia/i18n/ts/' into 'vidalia/src/vidalia/i18n/' directory 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+while properly naming the files for their respective locale. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-To download all locale strings with missing translations as an empty string,  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-you can visit this url: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+Here's an example of how to move all of the current pootle translations into 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+the svn trunk area of Torbutton: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	http://www.babelzilla.org/index.php?option=com_wts&Itemid=88&type=downloadempty&extension=3510 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    cd vidalia/src/vidalia/i18n/  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    ./mkts.sh 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    for locale in `ls -1 ts/`; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    do  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    mv -v ts/$locale/vidalia_$locale.ts vidalia_$locale.ts; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    done 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-If you plan to translate using Babelzilla often, you'll want to email  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-tor-translation@torproject.org and discuss your desires. Sadly, there is a  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-fixed number of translators allowed per project. To read more about Babelzilla  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-please read their Q&A section: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+Now check the differences (ensure the output looks reasonable): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    svn diff 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	http://www.babelzilla.org/index.php?option=com_content&task=category§ionid=3&id=7&Itemid=25 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+And finally check in the changes: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-[0] https://www.launchpad.net/ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-[1] These tools can be found in the Debian package 'translate-toolkit' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-[2] http://www.babelzilla.org/ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    svn commit 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 |