| 
									
										
										
										
											2009-07-07 20:13:39 +00:00
										 |  |  | #!/usr/bin/env php
 | 
					
						
							| 
									
										
										
										
											2008-08-17 12:04:51 -04:00
										 |  |  | <?php | 
					
						
							| 
									
										
										
										
											2009-07-07 20:13:39 +00:00
										 |  |  | /* | 
					
						
							|  |  |  |  * Laconica - a distributed open-source microblogging tool | 
					
						
							|  |  |  |  * Copyright (C) 2008, 2009, Control Yourself, Inc. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * This program is free software: you can redistribute it and/or modify | 
					
						
							|  |  |  |  * it under the terms of the GNU Affero General Public License as published by | 
					
						
							|  |  |  |  * the Free Software Foundation, either version 3 of the License, or | 
					
						
							|  |  |  |  * (at your option) any later version. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * This program is distributed in the hope that it will be useful, | 
					
						
							|  |  |  |  * but WITHOUT ANY WARRANTY; without even the implied warranty of | 
					
						
							|  |  |  |  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | 
					
						
							|  |  |  |  * GNU Affero General Public License for more details. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * You should have received a copy of the GNU Affero General Public License | 
					
						
							|  |  |  |  * along with this program.  If not, see <http://www.gnu.org/licenses/>. | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // Abort if called from a web server
 | 
					
						
							|  |  |  | if (isset($_SERVER) && array_key_exists('REQUEST_METHOD', $_SERVER)) { | 
					
						
							|  |  |  |     print "This script must be run from the command line\n"; | 
					
						
							|  |  |  |     exit(); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | define('INSTALLDIR', realpath(dirname(__FILE__) . '/..')); | 
					
						
							|  |  |  | define('LACONICA', true); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | require_once(INSTALLDIR . '/lib/common.php'); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // Master Laconica .pot file location (created by update_pot.sh)
 | 
					
						
							|  |  |  | $laconica_pot = INSTALLDIR . '/locale/laconica.po'; | 
					
						
							| 
									
										
										
										
											2008-08-17 12:04:51 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | set_time_limit(60); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /* Languages to pull */ | 
					
						
							| 
									
										
										
										
											2009-07-07 20:13:39 +00:00
										 |  |  | $languages = get_all_languages(); | 
					
						
							| 
									
										
										
										
											2008-08-17 12:04:51 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | /* Update the languages */ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-07-07 20:13:39 +00:00
										 |  |  | foreach ($languages as $language) { | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     $code = $language['lang']; | 
					
						
							| 
									
										
										
										
											2009-07-08 01:10:19 +00:00
										 |  |  |     $file_url = 'http://laconi.ca/pootle/' . $code . | 
					
						
							| 
									
										
										
										
											2009-07-07 20:13:39 +00:00
										 |  |  |         '/laconica/LC_MESSAGES/laconica.po'; | 
					
						
							|  |  |  |     $lcdir = INSTALLDIR . '/locale/' . $code; | 
					
						
							|  |  |  |     $msgdir = "$lcdir/LC_MESSAGES"; | 
					
						
							|  |  |  |     $pofile = "$msgdir/laconica.po"; | 
					
						
							|  |  |  |     $mofile = "$msgdir/laconica.mo"; | 
					
						
							| 
									
										
										
										
											2008-09-25 05:28:54 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-07-07 20:13:39 +00:00
										 |  |  |     /* Check for an existing */ | 
					
						
							|  |  |  |     if (!is_dir($msgdir)) { | 
					
						
							|  |  |  |         mkdir($lcdir); | 
					
						
							|  |  |  |         mkdir($msgdir); | 
					
						
							|  |  |  |         $existingSHA1 = ''; | 
					
						
							|  |  |  |     } else { | 
					
						
							|  |  |  |         $existingSHA1 = file_exists($pofile) ? sha1_file($pofile) : ''; | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2008-09-25 05:28:54 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-07-07 20:13:39 +00:00
										 |  |  |     /* Get the remote one */ | 
					
						
							| 
									
										
										
										
											2009-07-08 01:10:19 +00:00
										 |  |  |     $new_file = curl_get_file($file_url); | 
					
						
							| 
									
										
										
										
											2008-09-25 05:28:54 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-07-08 01:10:19 +00:00
										 |  |  |     if ($new_file === FALSE) { | 
					
						
							|  |  |  |         echo "Couldn't retrieve .po file for $code: $file_url\n"; | 
					
						
							| 
									
										
										
										
											2009-07-07 20:13:39 +00:00
										 |  |  |         continue; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     // Update if the local .po file is different to the one downloaded, or
 | 
					
						
							|  |  |  |     // if the .mo file is not present.
 | 
					
						
							| 
									
										
										
										
											2009-07-08 01:10:19 +00:00
										 |  |  |     if (sha1($new_file) != $existingSHA1 || !file_exists($mofile)) { | 
					
						
							| 
									
										
										
										
											2009-07-07 20:13:39 +00:00
										 |  |  |         echo "Updating ".$code."\n"; | 
					
						
							| 
									
										
										
										
											2009-07-08 01:10:19 +00:00
										 |  |  |         file_put_contents($pofile, $new_file); | 
					
						
							| 
									
										
										
										
											2009-07-07 20:13:39 +00:00
										 |  |  |         system(sprintf('msgmerge -U %s %s', $pofile, $laconica_pot)); | 
					
						
							|  |  |  |         system(sprintf('msgfmt -f -o %s %s', $mofile, $pofile)); | 
					
						
							|  |  |  |     } else { | 
					
						
							|  |  |  |         echo "Unchanged - ".$code."\n"; | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2008-09-25 05:28:54 -04:00
										 |  |  | } | 
					
						
							| 
									
										
										
										
											2009-07-07 20:13:39 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-09-25 05:28:54 -04:00
										 |  |  | echo "Finished\n"; | 
					
						
							| 
									
										
										
										
											2009-07-08 01:10:19 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | function curl_get_file($url) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     $c = curl_init(); | 
					
						
							|  |  |  |     curl_setopt($c, CURLOPT_RETURNTRANSFER, 1); | 
					
						
							|  |  |  |     curl_setopt($c, CURLOPT_URL, $url); | 
					
						
							|  |  |  |     $contents = curl_exec($c); | 
					
						
							|  |  |  |     curl_close($c); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     if (!empty($contents)) { | 
					
						
							|  |  |  |         return $contents; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     return FALSE; | 
					
						
							|  |  |  | } |