The Arcive of Official vBulletin Modifications Site.It is not a VB3 engine, just a parsed copy! |
|
|
vB Global Translator - Multiply your indexed pages & put search traffic on autopilot Details »» | |||||||||||||||||||||||||||
vB Global Translator - Multiply your indexed pages & put search traffic on autopilot
Developer Last Online: Dec 2013
**Text Removed**
Show Your Support
|
Comments |
#152
|
||||
|
||||
v2.2
* More improvements to database code, better speed and lower data size * Flag files combined size reduced from 40kb to 3kb for faster page load speed To upgrade download new package, upload new translate.php and /flags/ folder. Run the following MySQL query on your DB via phpmyadmin. Code:
alter table wt_cache_short drop index tl; create index originaltext on wt_cache_short (originaltext, tl); alter table wt_cache_medium drop index tl; create index originaltext on wt_cache_medium (originaltext, tl); alter table wt_cache drop index tl; create index originaltext on wt_cache (originaltext(50), tl); |
#153
|
||||
|
||||
I been on holiday since 21st Jun.
You mean I have to do this all over again? |
#154
|
|||
|
|||
Quote:
|
#155
|
||||
|
||||
If you want to run the better version yes, it's called progression. ;P
|
#156
|
||||
|
||||
Installed.
I noticed the overloadcache file is no longer in the zip file, can I just delete the old file that is still on my server? |
#157
|
||||
|
||||
Since some users complains that when cache enabled white screan apperas I made solution for that. Testes on one server with problem, if doesn't solve yours it will give at least some more information now.
Note that some IP can suffer penalties for google and translation is terribly slow then (1 known case with domain banned in AdSense). During that our connection was passing out. So this update will reestablish connection even if goole gives you really long time to wait. It allows you to fululfill cache, so after that You will not need google anymore (only for new content). NOTE: I know also one case when google give other penalty that time to wait. The penalty was - empty response to all queries. In such case It is between you and google Change translate.php to this one and set up DB and other params. Dave - It would be good to have it in official release Code:
<?php //////////////////////////////////////////////////// // Global Translator API //////////////////////////////////////////////////// global $enablesession, $enablecache, $originalEncoding, $fl; global $dbusername, $dbpassword, $mysqlserver, $dbname; //////////////////////////////////////////////////// // SETTINGS //////////////////////////////////////////////////// $enablesession = false; //ignore $enablecache = true; //true - enable cache setting, false - disable cache setting $originalEncoding = 'iso-8859-1'; //refer to your forum source code for your base encoding $fl = 'en'; //current language (original) - refer table for language varibles $dbusername = "SET IT"; $dbpassword = "SET IT"; $mysqlserver = "localhost"; $dbname = "SET IT"; //////////////////////////////////////////////////// if ($enablesession) { @session_name("iPWTLang"); @session_start(); } set_time_limit(0); //////////////////////////////////////////////////// if ($enablecache) { establishConnection(); } function establishConnection() { global $dbusername, $dbpassword, $mysqlserver, $dbname; mysql_connect ($mysqlserver, $dbusername, $dbpassword) or die('Could not connect: ' . mysql_error()); mysql_select_db ($dbname) or die('Could not select database'); mysql_set_charset('utf8'); } //////////////////////////////////////////////////// function api_strip ($dt) { $dt = str_replace("\\\\", '\\', $dt); return ($dt); } function emodfix ($dt) { $dt = str_replace('\"', '"', $dt); return ($dt); } function remove_tags ($html) { /* Remove reserved triple tags in html */ return preg_replace ("|<<<([^><]*)>>>|e", "emodfix('\\1')", $html); } function add_tags ($buffer) { /* Inject triple tags to html to preserve html content from translation using ob_start */ return preg_replace("/(^|>\/?)([^><]*)($|\/?<)/e", "emodfix('\\1').'<<<'.emodfix('\\2').'>>>'.emodfix('\\3')", $buffer); } function getServerLoad($windows=false) { //MY CODE TO DISABLE SERVER LOAD CHEcKING return 1; //END $os = strtolower(PHP_OS); if (strpos($os, "win") === false) { if (file_exists("/proc/loadavg")) { $data = file_get_contents("/proc/loadavg"); $load = explode(' ', $data); return $load[0]; } elseif (function_exists("shell_exec")) { $load = explode(' ', `uptime`); return $load[count($load)-1]; } else { return false; } } elseif($windows) { if(class_exists("COM")) { $wmi = new COM("WinMgmts:\\\\."); $cpus = $wmi->InstancesOf("Win32_Processor"); $cpuload = 0; $i = 0; if(version_compare('4.50.0', PHP_VERSION) == 1) { // PHP 4 while ($cpu = $cpus->Next()) { $cpuload += $cpu->LoadPercentage; $i++; } } else { // PHP 5 foreach ( $cpus as $cpu ) { $cpuload += $cpu->LoadPercentage; $i++; } } $cpuload = round($cpuload / $i, 2); return "$cpuload%"; } else { return false; } } } function translate($text, $fl, $tl){ if (trim($text) == null) return $text; //skip translation if string empty /* Retain left and right spaces after translation */ $lsto = substr($text, 0, strlen($text) - strlen(ltrim($text))); $rsto = substr($text, strlen(rtrim($text)), strlen($text) - strlen(rtrim($text))); /* -- */ /* Declare global */ global $enablecache,$overloadval,$disinterval; if(floatval(getServerLoad()) >= 1.5) // Numeral = server load on which to crash { // Write current time to file. $fp = fopen("overloadcache.txt","w"); fwrite($fp, time() . ""); fclose($fp); if($nfh= @fopen("overloadcache.txt","r")) { $overloadtime = fgets($nfh); if($overloadtime > time()-30) // Numeral = # seconds after overload not to cache! { $enablecache = false; } fclose($nfh); } } /* Check for server overloads (modification by DeViAnThans3)*/ global $originalEncoding; if ($originalEncoding != 'utf-8') { $text = iconv($originalEncoding, 'utf-8', trim($text)); } else { $text = trim($text); } /* Check cache for translation */ if ($enablecache) { $sql=null; $length = strlen($text); /* if (!mysql_ping()) { mysql_close(); establishConnection(); } */ if ($length<=50) { $sql = mysql_query("SELECT translated FROM wt_cache_short WHERE originaltext='".addslashes($text)."' AND tl='".addslashes($tl)."' LIMIT 1") or die('Query to short cache failed: ' . mysql_error()); } else if ($length > 255) { $sql = mysql_query("SELECT translated FROM wt_cache WHERE originaltext='".addslashes($text)."' AND tl='".addslashes($tl)."' LIMIT 1") or die('Query to normal cache failed: ' . mysql_error()); } else { $sql = mysql_query("SELECT translated FROM wt_cache_medium WHERE originaltext='".addslashes($text)."' AND tl='".addslashes($tl)."' LIMIT 1") or die('Query to medium cache failed: ' . mysql_error()); } while($t = mysql_fetch_array($sql)) { return $lsto.$t['translated'].$rsto; } } /* -- if not found, proceed with Google Translate */ /* -Establish cURL connection to Google Translate API server- */ $ch = @curl_init(); //@curl_setopt($ch, CURLOPT_URL, "http://ajax.googleapis.com/ajax/services/language/translate?v=1.0&langpair=".urlencode($fl.'|'.$tl)."&q=".urlencode($text)); @curl_setopt($ch, CURLOPT_URL, "http://ajax.googleapis.com/ajax/services/language/translate?v=1.0&langpair=".urlencode($fl.'|'.$tl)."&q=".urlencode($text)); //$postParams = "v=1.0&langpair=".$fl.'|'.$tl."&q=".iconv('iso-8859-2', 'utf-8', $text); //@curl_setopt($ch, CURLOPT_URL, "http://ajax.googleapis.com/ajax/services/language/translate"); //@curl_setopt ($Curl_Session, CURLOPT_POST, 1); //@curl_setopt ($Curl_Session, CURLOPT_POSTFIELDS, $postParams); @curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.4) Gecko/20030624 Netscape/7.1 (ax)"); @curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); @curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); $in = @curl_exec ($ch); /* -End connection- */ preg_match('/{"translatedText":"(.*?)"}/', $in, $out); //$ttext = conv(api_strip($out[1])); $ttext = str_replace ('\u0026', '&' , api_strip($out[1])); //$ttext = api_strip($out[1]); //$ttext = unicode_encode(api_strip($out[1]), 'utf-8'); /* Save to cache */ if ($enablecache) { $length = strlen($text); if (!mysql_ping()) { mysql_close(); establishConnection(); } if ($length<=50) { mysql_query("INSERT INTO wt_cache_short SET tl='".addslashes($tl)."', originaltext='".addslashes($text)."', translated='".addslashes(trim($ttext))."'") or die('Insert to short cache failed: ' . mysql_error()); } else if ($length > 255) { mysql_query("INSERT INTO wt_cache SET tl='".addslashes($tl)."', originaltext='".addslashes($text)."', translated='".addslashes(trim($ttext))."'") or die('Insert to normal cache failed: ' . mysql_error()); } else { mysql_query("INSERT INTO wt_cache_medium SET tl='".addslashes($tl)."', originaltext='".addslashes($text)."', translated='".addslashes(trim($ttext))."'") or die('Insert to medium cache failed: ' . mysql_error()); } } /* -- */ return $lsto.$ttext.$rsto; } function callback($buffer){ global $fl; $modifyhref = false; //------------------------------------------------------------------------------- global $enablesession; // Get language setting from queries: $lang = stripslashes(@$_GET['hl']); if ($enablesession) { // Save setting to server session [1] // If language setting not found in queries, check session data: [2] if (checklang($lang)) $_SESSION['lang'] = $lang; else $lang = @$_SESSION['lang']; } if (!checklang($lang) || $lang == $fl) { // If invalid language setting or language = original language, skip translation. $tp = $buffer; $tp = preg_replace("/<disp_lang>/is", checklang($fl), $tp); return remove_tags($tp); } else { // Extract BUFFER $tp = preg_replace("/(^|>\/?)([^><]*)($|\/?<)/e", "emodfix('\\1').translate(emodfix('\\2'),'$fl','$lang').emodfix('\\3')", $buffer); if ($modifyhref) { $tp = preg_replace('/(<a [^><]*href\=")([^"]*)("[^><]*>)/e', "emodfix('\\1').langconv('$lang',emodfix('\\2')).emodfix('\\3')", $tp); $tp = preg_replace('/(<form [^><]*action\=")([^"]*)("[^><]*>)/e', "emodfix('\\1').langconv('$lang',emodfix('\\2')).emodfix('\\3'))", $tp); } $tp = preg_replace("/<disp_lang>/is", checklang($lang), $tp); $tp = remove_tags($tp); return $tp; } //---end function } function langconv($hl, $href){ if ($href && substr($href, 0, 7) != 'http://' && substr($href, 0, 11) != 'javascript:' && strpos($href, "#") === false) { if(strpos($href, "?") === false) return $href.'?hl='.urlencode($hl); else return $href.'&hl='.urlencode($hl); } else { return $href; } } function checklang($hl){ $langvar = array ("sq"=>"Albanian","ar"=>"Arabic","bg"=>"Bulgarian","ca"=>"Catalan","zh-CN"=>"Chinese","hr"=>"Croatian","cs"=>"Czech","da"=>"Danish","nl"=>"Dutch","en"=>"English","et"=>"Estonian","tl"=>"Filipino","fi"=>"Finnish","fr"=>"French","gl"=>"Galician","de"=>"German","el"=>"Greek","iw"=>"Hebrew","hi"=>"Hindi","hu"=>"Hungarian","id"=>"Indonesian","it"=>"Italian","ja"=>"Japanese","ko"=>"Korean","lv"=>"Latvian","lt"=>"Lithuanian","mt"=>"Maltese","no"=>"Norwegian","pl"=>"Polish","pt"=>"Portuguese","ro"=>"Romanian","ru"=>"Russian","sr"=>"Serbian","sk"=>"Slovak","sl"=>"Slovenian","es"=>"Spanish","sv"=>"Swedish","zh-TW"=>"Taiwanese","th"=>"Thai","tr"=>"Turkish","uk"=>"Ukrainian","vi"=>"Vietnamese"); foreach ($langvar as $i => $val){ if ($i == $hl) return $val; } return false; } function clearlangsetting(){ global $enablesession; if ($enablesession) $_SESSION['lang'] = null; /* -Clear lang session data on server- */ } /* Unicode UTF-8 Support Libraries */ /* function conv($str) { $str = preg_replace("/\\\u([a-zA-Z0-9]{4})/e", "unichr('\\1')", $str); return html_entity_decode_utf8($str); //return $str; } function unichr($hex) { $dec = hexdec($hex); if ($dec < 128) { $utf = chr($dec); } else if ($dec < 2048) { $utf = chr(192 + (($dec - ($dec % 64)) / 64)); $utf .= chr(128 + ($dec % 64)); } else { $utf = chr(224 + (($dec - ($dec % 4096)) / 4096)); $utf .= chr(128 + ((($dec % 4096) - ($dec % 64)) / 64)); $utf .= chr(128 + ($dec % 64)); } return $utf; } function html_entity_decode_utf8($string) { static $trans_tbl; // replace numeric entities $string = preg_replace('~&#x([0-9a-f]+);~ei', 'code2utf(hexdec("\\1"))', $string); $string = preg_replace('~&#([0-9]+);~e', 'code2utf(\\1)', $string); // replace literal entities if (!isset($trans_tbl)) { $trans_tbl = array(); foreach (get_html_translation_table(HTML_ENTITIES) as $val=>$key) $trans_tbl[$key] = utf8_encode($val); } return strtr($string, $trans_tbl); } // Returns the utf string corresponding to the unicode value function code2utf($num) { if ($num < 128) return chr($num); if ($num < 2048) return chr(($num >> 6) + 192) . chr(($num & 63) + 128); if ($num < 65536) return chr(($num >> 12) + 224) . chr((($num >> 6) & 63) + 128) . chr(($num & 63) + 128); if ($num < 2097152) return chr(($num >> 18) + 240) . chr((($num >> 12) & 63) + 128) . chr((($num >> 6) & 63) + 128) . chr(($num & 63) + 128); return ''; } */ /* -- */ ?> |
#158
|
||||
|
||||
You need to delete everything and fresh install, that included all files, flags and a brand new database and plugins. Everything.
|
#159
|
||||
|
||||
Quote:
IT IS IMPORTANT TO NOTE THE USER BANNED FROM THE TRANSLATE IP WAS ALREADY BANNED IN ADSENSE, THIS SCRIPT DID NOT CAUSE THE BAN! |
#160
|
||||
|
||||
I'll hang on before making it an official release, seems silly to update daily.
|
#161
|
||||
|
||||
Those who didn't made update yet will have only one...
|
|
|
X vBulletin 3.8.12 by vBS Debug Information | |
---|---|
|
|
More Information | |
Template Usage:
Phrase Groups Available:
|
Included Files:
Hooks Called:
|