Go Back   vb.org Archive > vBulletin Modifications > vBulletin 3.8 Modifications > vBulletin 3.8 Add-ons
FAQ Community Calendar Today's Posts Search

Reply
 
Thread Tools
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
Version: 2.5, by Dave Hybrid Dave Hybrid is offline
Developer Last Online: Dec 2013 Show Printable Version Email this Page

Category: Miscellaneous Hacks - Version: 3.8.4 Rating:
Released: 10-27-2009 Last Update: 10-27-2009 Installs: 31
Uses Plugins Template Edits
Additional Files  
No support by the author.

vB Global Translator - 100% FREE!


Accept no substitutes, the ORIGINAL and BEST translation MOD.

Below is a graph showing visits from search engines to new generated translated pages ONLY over a 4 month period straight after MOD install.

Yes, that's right, 9000 EXTRA visits per day, and growing. Nearly 3/4 of a MILLION uniques EXTRA in total. :up:



So what does this do?

vB Global Translator automatically translates your forum into 31 other languages via the Google translate API, stores those translations in a MySQL database then rewrites new URLs so you end up with 31 new pages in 31 new languages for every current page.

So, if you have 10,000 pages, this MOD will translate those pages into 31 languages making a total of 310,000 pages in 31 languages. This results in a flood of international traffic and referrals from the search engines. If you are getting 1,000 visits a day from your 10,000 pages imagine how many referrals you will get from 310,000 pages!

The current languages this MOD works with are all supported and allowed by AdSense so you can expect your income to rise accordingly without issue. I have this running on a 20,000 thread forum and after a few months I have more than quadrupled my search engine traffic.

Note - This script runs off a database. The 1st time a translated page is loaded by a user or search bot the words need to be sent to the Google Translation service, the words are then saved into the database, this can take a varying amount of seconds depending on how heavy your pages are with content. The next time the page is requested it loads from cache and speed is instant. Over time, users and bots will cache your entire site automatically and all translated pages will load the same as normal pages. Please be patient, this is a long term MOD, Google doesn't index normal pages overnight and these translated pages are no different.

LIVE DEMO

How do I Install?

Note - This script uses cURL, make sure it is installed and enabled on your server. If in doubt ask your host.

Download the zip and open it, if you are using standard vBulletin URLs (like vbulletin.org) use that folder for your base files. If you are using mod-rewrite vBSEO URLs (like vbseo.com) then use that folders files.

You need to add a new MySQL database to your domain to store the translated pages. Setup the database in your domain control panel. Open the database in phpmyadmin or similar and run the following query's to import the tables.

First you need to add a new MySQL database to your domain to store the translated pages. Setup the database in your domain control panel. Open the database in phpmyadmin or similar and run the following query's to import the tables.

Code:
CREATE TABLE wt_cache (
id INT AUTO_INCREMENT NOT NULL PRIMARY KEY,
tl VARCHAR(10),
originaltext VARCHAR(65000),
translated TEXT,
INDEX(originaltext(323), tl)
) ENGINE = MYISAM, CHARACTER SET utf8 COLLATE utf8_bin;

CREATE TABLE wt_cache_medium (
id INT AUTO_INCREMENT NOT NULL PRIMARY KEY,
tl VARCHAR(10),
originaltext VARCHAR(255),
translated VARCHAR(1000),
UNIQUE (originaltext, tl)
) ENGINE = MYISAM, CHARACTER SET utf8 COLLATE utf8_bin;

CREATE TABLE wt_cache_short (
id INT AUTO_INCREMENT NOT NULL PRIMARY KEY,
tl VARCHAR(10),
originaltext VARCHAR(50),
translated VARCHAR(255),
UNIQUE (originaltext, tl)
) ENGINE = MYISAM, CHARACTER SET utf8 COLLATE utf8_bin;
Next open translate.php, we need to change a few variables to make this work, they are all at the top of the file.

Add your new database details in the relevant fields.

Code:
$dbusername = "dbusername";
$dbpassword = "dbpassword";
$mysqlserver = "localhost";
$dbname = "dbname";
Now change $originalEncoding variable to match your forum base encoding. The default is English (iso-8859-1). You can find your default by viewing the source of one of your forum pages, it is at the top.

Next, change the $fl setting to also match your forum base language. The default again is english (en). If different swap with the relevant code from the table below.

Code:
"ar"=>"Arabic",
"bg"=>"Bulgarian",
"zh-CN"=>"Chinese (Simplified",
"zh-TW"=>"Chinese (Traditional)",
"hr"=>"Croatian",
"cs"=>"Czech",
"da"=>"Danish",
"nl"=>"Dutch",
"en"=>"English",
"fi"=>"Finnish",
"fr"=>"French",
"de"=>"German",
"el"=>"Greek",
"iw"=>"Hebrew",
"hu"=>"Hungarian",
"it"=>"Italian",
"ja"=>"Japanese",
"ko"=>"Korean",
"lv"=>"Latvian",
"lt"=>"Lithuanian",
"no"=>"Norwegian",
"pl"=>"Polish",
"pt"=>"Portuguese",
"ro"=>"Romanian",
"ru"=>"Russian",
"sr"=>"Serbian",
"sk"=>"Slovak",
"es"=>"Spanish",
"sv"=>"Swedish",
"th"=>"Thai",
"tr"=>"Turkish",
"uk"=>"Ukrainian"
Next save translate.php and open translateflags.php.

You need to comment out (remove the code) the flag for your base language otherwise you can cause duplicate URLs for those pages and this can be bad for SEO.

All the flags are on separate lines in alpha order, find your language and add <!-- to the start and --> to the end of the line.

eg; <!-- language flag code -->

Upload both php files to your forum root, if your forums are in a /forums/ folder, subdomain or similar upload the files there. Upload the /flags/ folder to your domain root, thats the domain root.

In your vBulletin admin panel add a new plugin with the following settings.

Hook Location: global_complete
Title: vB Global Translator
Execution Order: 50
Plugin PHP Code:

Code:
// Enable UTF-8 characters
if(isset($_GET['hl'])) {
$output = str_replace('lang="en"', 'lang="'.$_GET['hl'].'"', $output); 
 header ('Content-type: text/html; charset=utf-8');
// Keep remainders of <style and <script tags!
    $time = time(); // Unique Tag Identifier!
    preg_match_all('|<script[^>]*>(.*?)</script>|si', $output,$scripttags, PREG_SET_ORDER);
    for($i=0;$i<count($scripttags);$i++)
    {
        $output = str_replace($scripttags[$i][0], "<a name=\"$i\"></a>",$output);
    }       
    //preg_match_all("<style[^>]*>.*</style>",$buffer,$styletags);
    preg_match_all('|<style[^>]*>(.*?)</style>|si',$output,$styletags);
    for($i=0;$i<count($styletags);$i++)
    {
        $output = str_replace($styletags[1][$i], "<a name=\"s$i\"></a>",$output);
    }
$output = str_replace("&nbsp;", "<&nbsp;>", $output);
require_once("translate.php");
$output=callback($output);
$output = str_replace("<&nbsp;>", "&nbsp;", $output);
// Place back remainders of <style and <script tags!
    for($i=0;$i<count($styletags);$i++)
    {
        $output = str_replace("<a name=\"s$i\"></a>", $styletags[1][$i], $output);
    }
    for($i=0;$i<count($scripttags);$i++)
    {
        $output = str_replace("<a name=\"$i\"></a>",$scripttags[$i][0] ,$output);
    }

// Translate META tags.
preg_match_all("|<meta[^>]+name=\"([^\"]*)\"[^>]" . "+content=\"([^\"]*)\"[^>]+>|i",$output, $out,PREG_PATTERN_ORDER);
$meta = array();
for ($i=0;$i < count($out[1]);$i++) {
        if (strtolower($out[1][$i]) == "keywords") $meta['keywords'] = $out[2][$i];
        if (strtolower($out[1][$i]) == "description") $meta['description'] = $out[2][$i];
    }

// Start replacing the original META tags with translated tags.
$output=str_replace("<meta name=\"description\" content=\"".$meta['description']."\" />","<meta name=\"description\" content=\"".html_entity_decode(callback($meta['description']))."\" />",$output);
$output=str_replace("<meta name=\"keywords\" content=\"".$meta['keywords']."\" />","<meta name=\"keywords\" content=\"".html_entity_decode(callback($meta['keywords']))."\" />",$output);
}
Next, edit the en part of 'lang="en"' code on line 3 above to also match your forum base language. The default again is english (en). If different swap to the relevant code from the language table above.

Save the plugin and activate.

In your vBulletin admin panel add another new plugin with the following settings.

Hook Location: global_start
Title: vB Global Translator Flags
Execution Order: 5
Plugin PHP Code:

Code:
ob_start();
  include('translateflags.php');
  $translateflags = ob_get_contents();
  ob_end_clean();
Save and activate.

Finally add the code below to your template so the flags to select languages appear. This is typically the header, navbar or footer so that they display on every page. You can wrap the in an if condition if you want to just show them on just thread pages or certain forums.

Code:
<!-- vBGT Code Start-->
<div align="center">
<!-- google_ad_section_start(weight=ignore) -->
$translateflags
<!-- google_ad_section_end -->
</div>
<!-- vBGT Code End -->
To test the system translate a few pages and make sure your database tables are filling with data. View them in phpmyadmin.

That's it.

Please rate and click install to receive updates.

THANK YOU!


Version History:

v2.5

* Updated to include more adsense supported languages - Lithuanian, Ukrainian, and Latvian.

Upgrade Info; https://vborg.vbsupport.ru/showpost....09&postcount=2

v2.4

* More DB optimization, fastest ever read/write cache speed

Upgrade Info; https://vborg.vbsupport.ru/showpost....&postcount=294

v2.3b

* Small change to database optimization

Upgrade info; https://vborg.vbsupport.ru/showpost....&postcount=267

v2.3a

* Small fix to avoid translation of non braking spaces to normal spaces

Upgrade info; https://vborg.vbsupport.ru/showpost....&postcount=218

v2.3

* More change to database optimization.

Upgrade info; https://vborg.vbsupport.ru/showpost....&postcount=198

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

Upgrade info; https://vborg.vbsupport.ru/showpost....&postcount=151

v2.1

* Meta description and meta keywords now translated in the output source code, better for SEO and search engine indexing
* Note no change to files so download v2.0 below is v2.1

Upgrade info; https://vborg.vbsupport.ru/showpost....&postcount=133

v2.0

New database system

* Pages now cache very fast and cached pages load instant
* No added server load whatsoever, none
* No false database errors, test sites got 1 or 2 in 24hrs
* Fixed lang="en" meta issue, now matches language of translation
* Fixed issues with encoding not working 100%
* Fixed issue with duplicate URLs of base language

Upgrade info; https://vborg.vbsupport.ru/showpost....30&postcount=2

v1.7

* Removed ioncube encryption to bring script inline with vBulletin.org rules

v1.6

* Fixed nofollow block on flag links for users with vbseo sites
* Fixed adsense ads showing for translation services etc. by adding section targeting ignore tags

v1.5

* Fixed database speed issues by using InnoDB instead of MyISAM
* Code encrypted with ioncube

v1.0

* Script base version

Donations received from:

Sweeks
puertoblack2003
tpearl5
45wheelgun
imported_silkroad
cyc

Thank you!

Download Now

File Type: zip vBGT v2.4.zip (26.5 KB, 33 views)
File Type: zip vBGT v2.5.zip (26.1 KB, 210 views)

Screenshots

File Type: gif graph.gif (18.7 KB, 0 views)

Show Your Support

  • This modification may not be copied, reproduced or published elsewhere without author's permission.

Comments
  #2  
Old 10-28-2009, 06:44 PM
Dave Hybrid's Avatar
Dave Hybrid Dave Hybrid is offline
 
Join Date: Mar 2007
Posts: 463
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Version 2.5 release.

* Updated to include more adsense supported languages - Lithuanian, Ukrainian, and Latvian.

To upgrade upload the latest flag images and translateflags.php
Reply With Quote
  #3  
Old 10-28-2009, 06:46 PM
COBRAws's Avatar
COBRAws COBRAws is offline
 
Join Date: Oct 2002
Location: Buenos Aires
Posts: 864
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Great theory, but these translation services wont translate properly.
Reply With Quote
  #4  
Old 10-28-2009, 08:51 PM
mbc100 mbc100 is offline
 
Join Date: Feb 2009
Location: K.S.A
Posts: 81
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

do think it will make truble with forum has a big MySQL database
Reply With Quote
  #5  
Old 10-28-2009, 09:03 PM
Dave Hybrid's Avatar
Dave Hybrid Dave Hybrid is offline
 
Join Date: Mar 2007
Posts: 463
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by mbc100 View Post
do think it will make truble with forum has a big MySQL database
Hi, this runs off a separate mysql database so will not interfere at all with your current DB.
Reply With Quote
  #6  
Old 10-28-2009, 09:04 PM
Dave Hybrid's Avatar
Dave Hybrid Dave Hybrid is offline
 
Join Date: Mar 2007
Posts: 463
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by COBRAws View Post
Great theory, but these translation services wont translate properly.
I agree they are not perfect, it is machine translation. The key point is the new pages do pull traffic and you can then convert that traffic via adsense, affiliate offers or into signing up in your forums native language. Thanks.
Reply With Quote
  #7  
Old 10-28-2009, 09:12 PM
TheLastSuperman's Avatar
TheLastSuperman TheLastSuperman is offline
Senior Member
 
Join Date: Sep 2008
Location: North Carolina
Posts: 5,844
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Hmm nice to see this one released and separate DB used too

Marked as Installed, I'll test this out on my private forum later most likely tomorrow or Friday any problems I'll let you know otherwise thanks!
Reply With Quote
  #8  
Old 10-29-2009, 01:54 PM
abdobasha2004's Avatar
abdobasha2004 abdobasha2004 is offline
 
Join Date: Aug 2008
Posts: 541
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

I think i t is no good for SEO
For a website to rank high, it should target certain language for certain country also ...
I did not see any multilingual sit rank high in search results
I thought to install this mod a lot but I think it is just duplicating content - translated content is considered duplicate too ! ....
however it will be really handfull for a forum that have world wide visitors
Reply With Quote
  #9  
Old 10-29-2009, 02:18 PM
Dave Hybrid's Avatar
Dave Hybrid Dave Hybrid is offline
 
Join Date: Mar 2007
Posts: 463
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by abdobasha2004 View Post
I did not see any multilingual sit rank high in search results
Mine rank just fine. So do many others using this and similar MODs. See the graph below.
Quote:
Originally Posted by abdobasha2004 View Post
I thought to install this mod a lot but I think it is just duplicating content - translated content is considered duplicate too
That is not true, the content is a different language so it is not duplicate, it is 100% different. Again, see the analytics graph below.

Graph showing visits from search engines to translated pages ONLY over 4 months.

Yes, that's right, 9000 EXTRA visits per day, and growing. Nearly 3/4 of a MILLION uniques EXTRA in total. :up:

Reply With Quote
  #10  
Old 10-30-2009, 05:14 PM
gwerzal's Avatar
gwerzal gwerzal is offline
 
Join Date: Oct 2007
Posts: 317
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

if i have the other mod installed will this change the urls or am i ok to change
Reply With Quote
Reply


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT. The time now is 05:14 PM.


Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2024, vBulletin Solutions Inc.
X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.06778 seconds
  • Memory Usage 2,356KB
  • Queries Executed 24 (?)
More Information
Template Usage:
  • (1)SHOWTHREAD
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (1)ad_showthread_beforeqr
  • (6)bbcode_code
  • (4)bbcode_quote
  • (1)footer
  • (1)forumjump
  • (1)forumrules
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (1)modsystem_post
  • (1)navbar
  • (4)navbar_link
  • (120)option
  • (1)pagenav
  • (1)pagenav_curpage
  • (2)pagenav_pagelink
  • (10)post_thanks_box
  • (10)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (10)post_thanks_postbit_info
  • (9)postbit
  • (3)postbit_attachment
  • (10)postbit_onlinestatus
  • (10)postbit_wrapper
  • (1)spacer_close
  • (1)spacer_open
  • (1)tagbit_wrapper 

Phrase Groups Available:
  • global
  • inlinemod
  • postbit
  • posting
  • reputationlevel
  • showthread
Included Files:
  • ./showthread.php
  • ./global.php
  • ./includes/init.php
  • ./includes/class_core.php
  • ./includes/config.php
  • ./includes/functions.php
  • ./includes/class_hook.php
  • ./includes/modsystem_functions.php
  • ./includes/functions_bigthree.php
  • ./includes/class_postbit.php
  • ./includes/class_bbcode.php
  • ./includes/functions_reputation.php
  • ./includes/functions_post_thanks.php 

Hooks Called:
  • init_startup
  • init_startup_session_setup_start
  • init_startup_session_setup_complete
  • cache_permissions
  • fetch_threadinfo_query
  • fetch_threadinfo
  • fetch_foruminfo
  • style_fetch
  • cache_templates
  • global_start
  • parse_templates
  • global_setup_complete
  • showthread_start
  • showthread_getinfo
  • forumjump
  • showthread_post_start
  • showthread_query_postids
  • showthread_query
  • bbcode_fetch_tags
  • bbcode_create
  • showthread_postbit_create
  • postbit_factory
  • postbit_display_start
  • post_thanks_function_post_thanks_off_start
  • post_thanks_function_post_thanks_off_end
  • post_thanks_function_fetch_thanks_start
  • post_thanks_function_fetch_thanks_end
  • post_thanks_function_thanked_already_start
  • post_thanks_function_thanked_already_end
  • fetch_musername
  • postbit_imicons
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • postbit_attachment
  • postbit_display_complete
  • post_thanks_function_can_thank_this_post_start
  • pagenav_page
  • pagenav_complete
  • tag_fetchbit_complete
  • forumrules
  • navbits
  • navbits_complete
  • showthread_complete