vb.org Archive

vb.org Archive (https://vborg.vbsupport.ru/index.php)
-   vBulletin 3.8 Add-ons (https://vborg.vbsupport.ru/forumdisplay.php?f=235)
-   -   Forum Display Enhancements - vB Enterprise Translator (https://vborg.vbsupport.ru/showthread.php?t=220886)

T2x 08-17-2009 05:44 PM

Hey guys, I decided to do some work and make this mod comply with vBSEO's link consensus idea.

What this will do is change all of the translation likes like so:

For example if a page.html is translated into danish, the url will normally be:

www.website.com/page.html?language=da

This will change the format to

www.website.com/da/page.html

This is much better for SEO so I am sure all of you with vBSEO will like this.

WARNING: this will only work properly if your forum is installed at the BASE of your domain, so something like www.website.com/index.php, if your forums are installed at www.website.com/forums/index.php some parts of my code will not work properly for you!!

All you need to do is open up your vbseo.php and add this code right BELOW error_reporting(0);

Make sure it is ABOVE the includes

Code:

if(isset($_GET['vbseourl']))
{
        $processuri = 0;
        if(preg_match('/^..(\/|$)/',$_GET['vbseourl']))
        {
                $processuri = 1;
                $_GET['language'] = substr($_GET['vbseourl'],0,2);
                $_GET['vbseourl'] = substr($_GET['vbseourl'],3);
        }
        else if(preg_match('/^\/..(\/|$)/',$_GET['vbseourl']))
        {
                $processuri = 1;
                $_GET['language'] = substr($_GET['vbseourl'],1,2);
                $_GET['vbseourl'] = substr($_GET['vbseourl'],3);
        }
        else if(substr($_GET['vbseourl'],0,5) == "zh-CN" || substr($_GET['vbseourl'],0,5) == "zh-TW")
        {
                $processuri = 1;
                $_GET['language'] = substr($_GET['vbseourl'],0,5);
                $_GET['vbseourl'] = substr($_GET['vbseourl'],6);
        }
        else if(substr($_GET['vbseourl'],1,5) == "zh-CN" || substr($_GET['vbseourl'],1,5) == "zh-TW")
        {
                $processuri = 1;
                $_GET['language'] = substr($_GET['vbseourl'],1,5);
                $_GET['vbseourl'] = substr($_GET['vbseourl'],6);
        }

        if($processuri == 1)
        {
                if(substr($_SERVER['REQUEST_URI'],0,2)=='//')
                        $_SERVER['REQUEST_URI'] = substr($_SERVER['REQUEST_URI'],1);
                $tempuri = isset($_SERVER['HTTP_X_REWRITE_URL']) ? $_SERVER['HTTP_X_REWRITE_URL'] :
                (isset($_SERVER['HTTP_X_ORIGINAL_URL']) ? $_SERVER['HTTP_X_ORIGINAL_URL'] :
                (isset($_SERVER['REQUEST_URI']) ? $_SERVER['REQUEST_URI'] :
                (isset($_ENV['REQUEST_URI']) ? $_ENV['REQUEST_URI'] : $_SERVER['SCRIPT_NAME']))
                );
                if (strstr($tempuri, 'vbseo.php') && $_GET['vbseourl'])
                        $tempuri = preg_replace('#vbseo\.php.*#', $_GET['vbseourl'] . ($_SERVER['QUERY_STRING']?'?'.$_SERVER['QUERY_STRING']:''), $tempuri);
                $tempuri = preg_replace('#\#.*$#', '', $tempuri);
                $_SERVER['REQUEST_URI'] = $tempuri;
                if(preg_match('/^\/..(\/|$)/',$_SERVER['REQUEST_URI']))
                        $_SERVER['REQUEST_URI'] = substr($_SERVER['REQUEST_URI'],3);
                else if(substr($_SERVER['REQUEST_URI'],1,5) == "zh-CN" || substr($_SERVER['REQUEST_URI'],1,5) == "zh-TW")
                        $_SERVER['REQUEST_URI'] = substr($_SERVER['REQUEST_URI'],6);
                $_SERVER['HTTP_X_REWRITE_URL'] = $_SERVER['REQUEST_URI'];
        }
}
else
{
        $processuri = 0;
        if(substr($_SERVER['REQUEST_URI'],0,2)=='//')
                $_SERVER['REQUEST_URI'] = substr($_SERVER['REQUEST_URI'],1);
        $tempuri = isset($_SERVER['HTTP_X_REWRITE_URL']) ? $_SERVER['HTTP_X_REWRITE_URL'] :
        (isset($_SERVER['HTTP_X_ORIGINAL_URL']) ? $_SERVER['HTTP_X_ORIGINAL_URL'] :
        (isset($_SERVER['REQUEST_URI']) ? $_SERVER['REQUEST_URI'] :
        (isset($_ENV['REQUEST_URI']) ? $_ENV['REQUEST_URI'] : $_SERVER['SCRIPT_NAME']))
        );
        $tempuri = preg_replace('#\#.*$#', '', $tempuri);

        if(preg_match('/^..(\/|$)/',$tempuri))
        {
                $processuri = 1;
                $_GET['language'] = substr($tempuri,0,2);
        }
        else if(preg_match('/^\/..(\/|$)/',$tempuri))
        {
                $processuri = 1;
                $_GET['language'] = substr($tempuri,1,2);
        }
        else if(substr($tempuri,0,5) == "zh-CN" || substr($tempuri,0,5) == "zh-TW")
        {
                $processuri = 1;
                $_GET['language'] = substr($tempuri,0,5);
        }
        else if(substr($tempuri,1,5) == "zh-CN" || substr($tempuri,1,5) == "zh-TW")
        {
                $processuri = 1;
                $_GET['language'] = substr($tempuri,1,5);
        }

        if($processuri == 1)
        {
                $_SERVER['REQUEST_URI'] = $tempuri;
                if(preg_match('/^\/..(\/|$)/',$_SERVER['REQUEST_URI']))
                        $_SERVER['REQUEST_URI'] = substr($_SERVER['REQUEST_URI'],3);
                else if(substr($_SERVER['REQUEST_URI'],1,5) == "zh-CN" || substr($_SERVER['REQUEST_URI'],1,5) == "zh-TW")
                        $_SERVER['REQUEST_URI'] = substr($_SERVER['REQUEST_URI'],6);
                $_SERVER['HTTP_X_REWRITE_URL'] = $_SERVER['REQUEST_URI'];
        }
}


If you want to 301 all of your old pages to the new link format, you can put this in your .htaccess above all of your existing rules

Code:

RewriteCond %{QUERY_STRING} (hl=|language=)(zh-TW|zh-CN|..)
RewriteRule ^(.*)$ http://%{HTTP_HOST}/%2/$1? [L,R=301]

Please note that this code assumes you are running vBSEO.

This code will fix translation for the base of your website if you want the following format. www.website.com/de or www.website.com/de/ . this only applies to your main page.

Code:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/?((zh-CN|zh-TW|..))/?$ vbseo.php?vbseourl=$1/index.php [L,QSA]

If you want to generate proper sitemaps with all of your new language urls, all you need to do is open up your vbseo_sitemap_functions.php in your vbseo_sitemap directory then:

find this code

Code:

}else
                                $freq = $vboptions['vbseo_sm_freq_t'];
                                   
                    vbseo_log_entry("[showthread] forum_id: $forumid, thread_id: $threadrow[threadid], total posts: $totalposts, pages: $totalpages, views: $threadrow[views] $prior");

                            for($p=1; $p<=$totalpages; $p++)
                            {

Add this code right after it:

Code:

$alanguages = array('ar', 'bg', 'zh-CN', 'zh-TW', 'hr', 'cs', 'da', 'nl', 'fi', 'fr', 'de', 'el', 'iw', 'hu', 'it', 'ja', 'ko', 'no', 'pl', 'pt', 'ro', 'ru', 'sr', 'sk', 'es', 'sv', 'th', 'tr');
                                        if(!$archived)
                                        foreach($alanguages as $hl) {
                                        $vbseo_stat['t']++;
                                        $currentthreadurl = vbseo_url_thread($threadrow, $p, $archived);
                                        $strlenhost = strlen($vbseo_vars['bburl']."/");
                                        vbseo_add_url(substr($currentthreadurl,0,$strlenhost).$hl."/".substr($currentthreadurl,$strlenhost), 0.3, $threadrow['lastpost'], $freq);
                                        }

make sure its before:

Code:

$vbseo_stat[$archived?'at':'t'] += vbseo_add_2urls(
                                    vbseo_url_thread($threadrow, $p, $archived),
                                    vbseo_url_thread($threadrow, $p, $archived, true),
                                    $prior,
                                    $threadrow['lastpost'],
                                        $freq
                            );
                               
                                }

                            if($showpost)
                            {

                    $getposts = $db->query("

If you notice there is an array in the code that looks like this
Code:

$alanguages = array('ar', 'bg', 'zh-CN', 'zh-TW', 'hr', 'cs', 'da', 'nl', 'fi', 'fr', 'de', 'el', 'iw', 'hu', 'it', 'ja', 'ko', 'no', 'pl', 'pt', 'ro', 'ru', 'sr', 'sk', 'es', 'sv', 'th', 'tr');
You should put the code of every language that you want added to your sitemap file in this array. Mine may differ from the languages you support so make sure you check it against your installation.


Just a note of caution: My fixes assume you are running a standard installation of apache with vBSEO. They may not work properly on some systems due to differences in the way that vBSEO handles some server variables. I recommend that you back up any files before editting them that way if you encounter problems you can restore your old versions.

I will be working on this code more so if any of you have issues please let me know and I will work on them.

If NLP-er would like he can provide a modified version of his flags in order to work with the new format or I will write up the code later today. This is necessary so that the flags show the proper links.

Anyway enjoy guys :D

NLP-er 08-17-2009 05:50 PM

Quote:

Originally Posted by imported_silkroad (Post 1869145)
The Google TOS, strictly interpreted, says translated pages cannot be cached for over 15 days.

However, if you modify them (fix bad translations), etc. I don't think you should necessarily dump them.

Also, the intent of the TOS is to "Do No Harm" to Google, Google's customers, and The World. If you are keeping a cache longer than 15 days and are not doing any harm, then I don't think your are violating the spirit of the TOS.

For example, if you are running Google Adsense and your translations are generating a lot of traffic for Google, and good revenue for Google, I don't think Google will be unhappy with you, but of course they cannot publish such a policy.

On the other hand, if you are caching translations and using them to drive traffic to Google's big competition, then Google might care.

So, if you want to be on the safe side, just drop all translations in the database that are older than 15 days, and you will be in compliance with the most strict interpretation of the TOS.

Don't Worry. Be Happy. Do No Harm.

That's why default value of cache time to live is 15. Every night mod automatically removes old cache. Everybody is happy :)

Sweeks 08-17-2009 06:04 PM

Quote:

Originally Posted by T2x (Post 1869296)
Hey guys, I decided to do some work and make this mod comply with vBSEO's link consensus idea.

What this will do is change all of the translation likes like so:

For example if a page.html is translated into danish, the url will normally be:

www.website.com/page.html?language=da

This will change the format to

www.website.com/da/page.html

This is much better for SEO so I am sure all of you with vBSEO will like this.

All you need to do is open up your vbseo.php and add this code right BELOW error_reporting(0);

Make sure it is ABOVE the includes

Code:

if(isset($_GET['vbseourl']))
{
        if(preg_match('/^..\//',$_GET['vbseourl']))
        {
                $_GET['language'] = substr($_GET['vbseourl'],0,2);
                $_GET['vbseourl'] = substr($_GET['vbseourl'],3);
        }
        else if(substr($_GET['vbseourl'],0,5) == "zh-CN" || substr($_GET['vbseourl'],0,5) == "zh-TW")
        {
                $_GET['language'] = substr($_GET['vbseourl'],0,5);
                $_GET['vbseourl'] = substr($_GET['vbseourl'],6);
        }

        if(preg_match('/^\/..\//',$_SERVER['REQUEST_URI']))
                $_SERVER['REQUEST_URI'] = substr($_SERVER['REQUEST_URI'],3);
        else if(substr($_SERVER['REQUEST_URI'],1,5) == "zh-CN" || substr($_SERVER['REQUEST_URI'],1,5) == "zh-TW")
                $_SERVER['REQUEST_URI'] = substr($_SERVER['REQUEST_URI'],6);

}


If you want to 301 all of your old pages to the new link format, you can put this in your .htaccess above all of your existing rules

Code:

RewriteCond %{QUERY_STRING} (language=)(..|zh-TW|zh-CN)$
RewriteRule ^(.*)$ http://www.YOURWEBSITEHERE.com/%2/$1? [L,R=301]

Just make sure to put the domain of your website instead of YOURWEBSITEHERE. Please note that this code assumes you are running vBSEO.

If you want to generate proper sitemaps with all of your new language urls, all you need to do is open up your vbseo_sitemap_functions.php in your vbseo_sitemap directory then:

find this code

Code:

}else
                                $freq = $vboptions['vbseo_sm_freq_t'];
                                   
                    vbseo_log_entry("[showthread] forum_id: $forumid, thread_id: $threadrow[threadid], total posts: $totalposts, pages: $totalpages, views: $threadrow[views] $prior");

                            for($p=1; $p<=$totalpages; $p++)
                            {

Add this code right after it:

Code:

$alanguages = array('ar', 'bg', 'zh-CN', 'zh-TW', 'hr', 'cs', 'da', 'nl', 'fi', 'fr', 'de', 'el', 'iw', 'hu', 'it', 'ja', 'ko', 'no', 'pl', 'pt', 'ro', 'ru', 'sr', 'sk', 'es', 'sv', 'th', 'tr');
                                        if(!$archived)
                                        foreach($alanguages as $hl) {
                                        $vbseo_stat['t']++;
                                        $currentthreadurl = vbseo_url_thread($threadrow, $p, $archived);
                                        $strlenhost = strlen($vbseo_vars['bburl']."/");
                                        vbseo_add_url(substr($currentthreadurl,0,$strlenhost).$hl."/".substr($currentthreadurl,$strlenhost), 0.3, $threadrow['lastpost'], $freq);
                                        }

make sure its before:

Code:

$vbseo_stat[$archived?'at':'t'] += vbseo_add_2urls(
                                    vbseo_url_thread($threadrow, $p, $archived),
                                    vbseo_url_thread($threadrow, $p, $archived, true),
                                    $prior,
                                    $threadrow['lastpost'],
                                        $freq
                            );
                               
                                }

                            if($showpost)
                            {

                    $getposts = $db->query("

If you notice there is an array in the code that looks like this
Code:

$alanguages = array('ar', 'bg', 'zh-CN', 'zh-TW', 'hr', 'cs', 'da', 'nl', 'fi', 'fr', 'de', 'el', 'iw', 'hu', 'it', 'ja', 'ko', 'no', 'pl', 'pt', 'ro', 'ru', 'sr', 'sk', 'es', 'sv', 'th', 'tr');
You should put the code of every language that you want added to your sitemap file in this array. Mine may differ from the languages you support so make sure you check it against your installation.


Just a note of caution: My fixes assume you are running a standard installation of apache with vBSEO. They may not work properly on some systems due to differences in the way that vBSEO handles some server variables. I recommend that you back up any files before editting them that way if you encounter problems you can restore your old versions.

I will be working on this code more so if any of you have issues please let me know and I will work on them.

If NLP-er would like he can provide a modified version of his flags in order to work with the new format or I will write up the code later today. This is necessary so that the flags show the proper links.

Anyway enjoy guys :D

It isnt working for us:

Teen Forums

Any ideas?

NLP-er 08-17-2009 06:12 PM

New in faq:

1. I have indexed pages from old translator (with hl=) - what to do?
Thanks for solution to T2x :)
Just set rewrite rule in .htaccess - google will know that page have new place and will reindex it withaout any loss :)
Code:

RewriteCond %{QUERY_STRING} (hl=)(..|zh-TW|zh-CN)$
RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1\?language=%2 [L,R=301]


NLP-er 08-17-2009 06:14 PM

Quote:

Originally Posted by Sweeks (Post 1869301)
It isnt working for us:

Teen Forums

Any ideas?

Also dont works on my forum - Page not found.

But thanks anyway - for now I have solition for redirect translations from old translator with hl= to new ones - see FAQ :)

Sweeks 08-17-2009 06:15 PM

I was getting this:

/a/

Invalid Forum specified. If you followed a valid link, please notify the administrator

jaconi 08-17-2009 06:53 PM

Quote:

Originally Posted by NLP-er (Post 1868895)
1.1.0 RELEASED :)

Thanks man :up:

just did the update and usernames where not translated :up: :up:

t.uzuner 08-17-2009 09:28 PM

hi;
i am not using vbseo but
1)click flag open same page example english
2) click another link page automatically web site original language. how is this.

www.okulonceciyiz.biz

Sweeks 08-17-2009 09:44 PM

Quote:

Originally Posted by t.uzuner (Post 1869403)
hi;
i am not using vbseo but
1)click flag open same page example english
2) click another link page automatically web site original language. how is this.

www.okulonceciyiz.biz

Use the tracking option in this mods options :)

Aclikyano 08-17-2009 10:44 PM

Quote:

Originally Posted by NLP-er (Post 1869293)
Strange. vbet_translateHTML is called only twice and in booth places there are 3 parametes (you can check it looking for vbet_translateHTML in includes/vbenterprisetranslator_functions.php and product file). Also I have other vB version cause my functions.php have empty line 5737. SO it is hard for me to help you.

1. Upload all files again.
2. If still happens give me code around line 5737 in your includes/functions.php

// parse PHP include ##################
($hook = vBulletinHook::fetch_hook('global_complete')) ? eval($hook) : false;


AFTER # signs starts line 5737
did what you said still got the errors...


All times are GMT. The time now is 09:12 PM.

Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2025, vBulletin Solutions Inc.

X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.01799 seconds
  • Memory Usage 1,825KB
  • Queries Executed 10 (?)
More Information
Template Usage:
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (14)bbcode_code_printable
  • (6)bbcode_quote_printable
  • (1)footer
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (6)option
  • (1)pagenav
  • (1)pagenav_curpage
  • (4)pagenav_pagelink
  • (4)pagenav_pagelinkrel
  • (1)post_thanks_navbar_search
  • (1)printthread
  • (10)printthreadbit
  • (1)spacer_close
  • (1)spacer_open 

Phrase Groups Available:
  • global
  • postbit
  • showthread
Included Files:
  • ./printthread.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/class_bbcode_alt.php
  • ./includes/class_bbcode.php
  • ./includes/functions_bigthree.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
  • printthread_start
  • pagenav_page
  • pagenav_complete
  • bbcode_fetch_tags
  • bbcode_create
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • printthread_post
  • printthread_complete