vb.org Archive

vb.org Archive (https://vborg.vbsupport.ru/index.php)
-   vB3 Programming Discussions (https://vborg.vbsupport.ru/forumdisplay.php?f=15)
-   -   Help with Language Change by Code (https://vborg.vbsupport.ru/showthread.php?t=256804)

emisand 01-09-2011 03:04 AM

Help with Language Change by Code
 
Hello,

I am developing a plugin that automatically changes the forum language depending on the hostname used to access to it.

So if the user tries to access from forum.mysite.com and the language was set to Spanish, it will automatically change the forum language to English.

Then if the user tries to access from foro.mysite.com and the language was set to English, it will automatically change the forum language to Spanish.

I have made my plugin with this code:

PHP Code:

    require_once('./global.php');

    
$name $_SERVER['SERVER_NAME'];
    
$uri $_SERVER['REQUEST_URI'];

    if( 
stripos($name"forum.mysite") !== false )
    {
        if( 
stripos($uri"langid=3") !== false )
        {
            
$newurl "http://forum.mysite.com" $uri;

            if( !
headers_sent() )
            {
                
header("Location: " $newurl "");
                die();
            }
            else
            {
                echo 
"<meta http-equiv=\"refresh\" content=\"0;url=" $newurl ."\">";
                die();
            }
        }
        else if( 
$vbulletin->userinfo['languageid'] == || $vbulletin->userinfo['languageid'] == )
        {
            
$count 0;
            
$uri preg_replace("/langid=[\d]+/""langid=1"$uri, -1$count);

            if( 
$count == )
            {
                if( 
stripos($uri"?") !== false )
                {
                    
$uri .= "&langid=1";
                }
                else
                {
                    
$uri .= "?langid=1";
                }
            }

            
$newurl "http://foro.mysite.com" $uri;

            if( !
headers_sent() )
            {
                
header("Location: " $newurl "");
                die();
            }
            else
            {
                echo 
"<meta http-equiv=\"refresh\" content=\"0;url=" $newurl ."\">";
                die();
            }
        }
    }
    else if( 
stripos($name"foro.mysite") !== false )
    {
        if( 
stripos($uri"langid=1") )
        {
            
$newurl "http://forum.mysite.com" $uri;

            if( !
headers_sent() )
            {
                
header("Location: " $newurl "");
                die();
            }
            else
            {
                echo 
"<meta http-equiv=\"refresh\" content=\"0;url=" $newurl ."\">";
                die();
            }
        }
        else if( 
$vbulletin->userinfo['languageid'] == )
        {
            
$count 0;
            
$uri preg_replace("/langid=[\d]+/""langid=3"$uri, -1$count);

            if( 
$count == )
            {
                if( 
stripos($uri"?") !== false )
                {
                    
$uri .= "&langid=3";
                }
                else
                {
                    
$uri .= "?langid=3";
                }
            }

            
$newurl "http://foro.mysite.com" $uri;

            if( !
headers_sent() )
            {
                
header("Location: " $newurl "");
                die();
            }
            else
            {
                echo 
"<meta http-equiv=\"refresh\" content=\"0;url=" $newurl ."\">";
                die();
            }
        }
    } 

So what I am doing is to redirect the browser with the proper langid HTTP GET Value.

It works, but I would like to be able to change the forum language without doing redirects.

So when the hook is excecuted I can change by code the language.

The things I need to know are:
- Where should I hook the plugin so I can change the language before the language is initialized/updated?
- How can I change the forum language by code?

Thank you!

kh99 01-09-2011 12:38 PM

Quote:

Originally Posted by emisand (Post 2146253)
- Where should I hook the plugin so I can change the language before the language is initialized/updated?
- How can I change the forum language by code?

I think you can use hook location init_startup and set $_REQUEST['langid'] to the language id that you want. It should be the same as putting langid on the url. (look in includes/init.php and search for langid if you want to see what's going on).

emisand 01-09-2011 03:52 PM

It worked!

This is the new code:

PHP Code:

    $name $_SERVER['SERVER_NAME'];
    
$uri $_SERVER['REQUEST_URI'];

    if( 
stripos($name"forum.herogamers") !== false )
    {
        if( 
stripos($uri"langid=3") !== false )
        {
            
$newurl "http://foro.herogamers.net" $uri;

            if( !
headers_sent() )
            {
                
header("Location: " $newurl "");
                die();
            }
        }
        else
        {
            
$_REQUEST['langid'] = 1;
        }
    }
    else if( 
stripos($name"foro.herogamers") !== false )
    {
        if( 
stripos($uri"langid=1") !== false )
        {
            
$newurl "http://forum.herogamers.net" $uri;

            if( !
headers_sent() )
            {
                
header("Location: " $newurl "");
                die();
            }
        }
        else
        {
            
$_REQUEST['langid'] = 3;
        }
    } 

I had to remove the $vbulletin->userinfo['languageid'] thing because in init_startup that information is not initialized yet.


All times are GMT. The time now is 12:40 AM.

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.01088 seconds
  • Memory Usage 1,767KB
  • 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
  • (2)bbcode_php_printable
  • (1)bbcode_quote_printable
  • (1)footer
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (6)option
  • (1)post_thanks_navbar_search
  • (1)printthread
  • (3)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
  • bbcode_fetch_tags
  • bbcode_create
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • printthread_post
  • printthread_complete