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)

NLP-er 08-20-2009 03:35 PM

Quote:

Originally Posted by imported_silkroad (Post 1871034)
Also, I wanted to add that if anyone has any ideas how to improve the issues that this mod seems to perform (2) a lot of joins without indexes and (2) write a lot of tmp tables to disk (see screen shots), that would be great :-)

Actually joins are made only if you use selecting by serie (which is configurable) and are joining by serie which is indexed and is a number (so it is very fast to compare).

I see your screen shots and I'm very surprised - you are sure that this is about this mod ;)

Look yourself to product file - each table has index for serie, and look in to vbenterprisetranslator_functions.php on SELECT queries - all 3 which joins tables are using serie to join... Maybe I miss something but I'm still sure that all joins in my mod are made with indexes. So - unless you show me exactly which query causes it I assume that the reason can be in other mod or vB.

About BLOBS. DB is optimized to handle long textes - it means what don't need be in BLOB isn't. Short texts are put into small and medium cache. Long - must be in blob and there is no other way. In SQL you will find VARCHAR(65000) but mySQL will change it to some BLOB or TEXT field. Medium cache is as long as it is possible to be possible to create unique indexes - one char more and unique will not be possible. Also VARCHAR(328) in medium cache statys as varchar. It appears that in older version of mySQL like 4.1.1 it is changed VARCHAR(328) to BLOB, but if someone choose to use old soft which is slower - for me means that he don't need speed, so I optimized it for those who use higher versions :)

Still - if someone have idea to improve - I will gladly read what solution will make it faster :)

NLP-er 08-20-2009 03:38 PM

Quote:

Originally Posted by imported_silkroad (Post 1871096)
Sorry! I thought you used the idea from the code he posted before on the topic, in the hl mod.

Nope :) Didn't know about this post. Just look in Google documentation, found key param and changed very few lines of code :)

imported_silkroad 08-20-2009 03:45 PM

Quote:

Originally Posted by NLP-er (Post 1871104)
AI see your screen shots and I'm very surprised - you are sure that this is about this mod ;)

Ah! That is from the old hl mod (or maybe another mod) .... !! But the issue only started with we installed the "old hl mod" cause I monitor DB performance rather carefully.....

I look forward to seeing the new performance after porting!

Thanks.

FYI, here is part of the T2x Google API code from "before" :

Code:

@curl_setopt($ch, CURLOPT_URL, "http://ajax.googleapis.com/ajax/services/language/translate?v=1.0&key=blahbalhjfkljfdlkjfdlkjfdkjfdkjfkdjfkdfjdkpNbYUjebhSesaThcIIYMEFOUC-VHLBB1KJQkw&langpair=".urlencode($fl.'|'.$tl)."&q=".urlencode($text));

NLP-er 08-20-2009 03:47 PM

Quote:

Originally Posted by T2x (Post 1870919)
Okay I have updated my code on page 13 to the latest after all of the fixes for the various bugs :D

Still a few to sort out but its looking very nice

I works on main page now, but all images dissapear. Only on main page - in other places images are ok.

NLP-er 08-20-2009 05:00 PM

Just want to all let you know that I'm ready to make 2.0.0 release :)

I changed code and now links will be generated according to SEO consensus (/en/address) - configurable. Also added some other requeste features :)

Just waiting till T2x fix his code to work appropriatelly in main page and in forums in subdirectories :) Great work T2x :D:up:

Also new release will not require any vbseo.php changes :)

imported_silkroad 08-20-2009 05:12 PM

Quote:

Originally Posted by NLP-er (Post 1871146)
Just want to all let you know that I'm ready to make 2.0.0 release :)

Amazing! :D

This will be MOTY (Mod of the Year!) :cool:

wolfstream 08-20-2009 05:22 PM

Quote:

Originally Posted by NLP-er (Post 1867874)
What is wrong with the paths? :)

Judging by your own base install, everything.
Use one of your own translation links, on the base install, you will see massive image problems and what appear to be script problems (stats loading, etc). This is because of how you have set this up, the paths are pointing to /en/images instead of /images/ , etc.

Sure, this could be just an install thing, but when you provide a demo, it should work, otherwise, people won't install the product.

yahoooh 08-20-2009 05:23 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.

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

how to make it work with addon not depend on vbseo like vba links and vba dyna which be only show flags when the requist_url is the setting

yahoooh 08-20-2009 05:25 PM

i hope Nlp can fix the issue related what i talk with him about vbseo_url and requist_url for pages in vba links and vba dyna

any solution to make it work in requist_url and make vbseo as requist_url by some change in vbseo files
it is eazy then to make all the site work

imported_silkroad 08-20-2009 05:38 PM

Quote:

Originally Posted by yahoooh (Post 1871163)
i hope Nlp can fix the issue related what i talk with him about vbseo_url and requist_url for pages in vba links and vba dyna

any solution to make it work in requist_url and make vbseo as requist_url by some change in vbseo files
it is eazy then to make all the site work

FWIW, we run vBa Links and everything works fine (with the old hl mod) and the new t2x_vbseo.php code.

Seems it should be OK with the new language= mod (this mod), since it is better :-)


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.02450 seconds
  • Memory Usage 1,807KB
  • 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
  • (8)bbcode_code_printable
  • (8)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