emisand
01-09-2011, 03:04 AM
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:
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'] == 0 || $vbulletin->userinfo['languageid'] == 3 )
{
$count = 0;
$uri = preg_replace("/langid=[\d]+/", "langid=1", $uri, -1, $count);
if( $count == 0 )
{
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'] == 1 )
{
$count = 0;
$uri = preg_replace("/langid=[\d]+/", "langid=3", $uri, -1, $count);
if( $count == 0 )
{
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!
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:
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'] == 0 || $vbulletin->userinfo['languageid'] == 3 )
{
$count = 0;
$uri = preg_replace("/langid=[\d]+/", "langid=1", $uri, -1, $count);
if( $count == 0 )
{
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'] == 1 )
{
$count = 0;
$uri = preg_replace("/langid=[\d]+/", "langid=3", $uri, -1, $count);
if( $count == 0 )
{
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!