Web multiple languages
-
Sveiki. Reik trupucio pagalbos. Notiu kad vietoj tbox saraso man butu mygtukai language, kuri paspausi ta ir ijungs. Taciau padarius neveikia. Originalas:
$languageList = explode(',', e_LANLIST);
sort($languageList);
$action = (e_QUERY && ! $_GET['elan']) ? e_SELF.'?'.e_QUERY : e_SELF;
$text = '
<form method="post" action="'.$action.'">
<div class="center">
<select name="sitelanguage" class="tbox form-control">';
foreach($languageList as $languageFolder)
{
$selected = ($languageFolder == e_LANGUAGE) ? ' selected="selected"' : '';
$text .= '
<option value="'.$languageFolder.'"'.$selected.'>'.$languageFolder.'</option>'.$selected.'
'.$languageFolder.'';
}
$text .= '
</select>
<br />
<br />
<button class="btn btn-default button" type="submit" name="setlanguage" value="no-value"><span>'.UTHEME_MENU_L1.'</span></button>';
$text .= '
</div>
</form>';
Mano variantas:
$action = (e_QUERY && ! $_GET['elan']) ? e_SELF.'?'.e_QUERY : e_SELF;
$text = '
<form method="post" action="'.$action.'">
<div class="center">';
foreach($languageList as $languageFolder)
{
$text .= '
<button class="btn btn-default button" type="submit" name="setlanguage" value="'.$languageFolder.'">'.$languageFolder.'</button>
';
}
$text .= '
</div>
</form>';
Ant mygtuku rodomi pavadinimai, taciau paspaudus niekas nevyksta. Gal bus zinantis ko dar truksta. Dekui is anksto ! :) Paskutinį kartą redagavo: 1 Lapkričio 2016 - 18:37
1 Lapkričio 2016 - 18:36 / #1
-
Sveikas, Jeigu vadovaujantis originalu, tai pas tave nėra nustatytas <select>
, <option>
elementai, t.y $_POST['sitelanguage']
. Tikriausiai yra tikrinamas isset($_POST['sitelanguage'])
, o jeigu jis nėra nurodytas, skriptas nebus vykdomas.
11 Lapkričio 2016 - 21:06 / #2
-
Greisis7, Hmm, nu padarius toki button visvien neveikia. <button class="btn btn-default button" type="submit" name="sitelanguage" value="Lithuanian"><span>'Lithuanian'</span></button>
12 Lapkričio 2016 - 21:33 / #3
-
Parašyk skriptą pilnai ir pataisysiu. Dabar nematau tikrinimų. O padarius ankstesnį pakeitimą, tai tada $_POST['setlanguage'] nėra nurodytas, skriptas nebus vykdomas. Ištrink isset($_POST['setlanguage']) ir veiks. O nenori naudoti $_GET metodą kalbos pasirinkimui?
15 Lapkričio 2016 - 09:35 / #4
-
Sunkiai man su php dar :D require_once(e_HANDLER.'language_class.php');
$slng = new language;
$languageList = explode(',', e_LANLIST);
sort($languageList);
if(varset($pref['multilanguage_subdomain']))
{
$action = (e_QUERY) ? e_SELF.'?'.e_QUERY : e_SELF;
$text = '
<div style="text-align:center">
<select class="tbox form-control" name="lang_select" style="width:95%" onchange="location.href=this.options[selectedIndex].value">';
foreach($languageList as $languageFolder)
{
$selected = ($languageFolder == e_LANGUAGE) ? ' selected="selected"' : '';
$urlval = $slng->subdomainUrl($languageFolder);
$text .= '
<option value="'.$urlval.'"'.$selected.'>'.$languageFolder.'</option>';
}
$text .= '
</select>
</div>';
}
else
{
//FIXME may not work with session
$action = (e_QUERY && ! $_GET['elan']) ? e_SELF.'?'.e_QUERY : e_SELF;
$text = '
<form method="post" action="'.$action.'">
<div class="center">
<select name="sitelanguage" class="tbox form-control">';
foreach($languageList as $languageFolder)
{
$selected = ($languageFolder == e_LANGUAGE) ? ' selected="selected"' : '';
$text .= '
<option value="'.$languageFolder.'"'.$selected.'>'.$languageFolder.'</option>'.$selected.'
'.$languageFolder.'';
}
$text .= '
</select>
<br />
<br />
<button class="btn btn-default button" type="submit" name="setlanguage" value="no-value"><span>'.UTHEME_MENU_L1.'</span></button>';
$text .= '
</div>
</form>';
}
$ns->tablerender(UTHEME_MENU_L2, $text, 'user_lan');
15 Lapkričio 2016 - 19:30 / #5
-
Trūksta language_class.php kodo.
15 Lapkričio 2016 - 20:28 / #6
-
Va :) class language{
public $detect = false;
public $e_language = 'English';
public $_cookie_domain = '';
protected $lanlist = null;
protected $list = array(
"na" => "Nauru",
"nv" => "Navajo",
"zu" => "Zulu"
);
protected $names = array(
"Vietnamese" => "Tiếng Việt",
"Welsh" => "Cymraeg"
);
function convert($data){
if(strlen($data) > 2)
{
$tmp = array_flip($this->list);
return isset($tmp[$data]) ? $tmp[$data] : false;
}
else
{
return (isset($this->list[$data])) ? $this->list[$data] : false;
}
}
function isValid($lang='')
{
if(empty($lang))
{
return false;
}
global $pref;
if(!$lang)
{
return (ADMIN_AREA && vartrue($pref['adminlanguage'])) ? $pref['adminlanguage'] : $pref['sitelanguage'];
}
if(strpos($lang,"debug")!==false)
{
return false;
}
if($lang == 'E_SITELANGUAGE')
{
$lang = $pref['sitelanguage'];
}
if($lang == 'E_ADMINLANGUAGE')
{
$lang = $pref['adminlanguage'];
}
if(strlen($lang)== 2)
{
$iso = $lang;
$lang = $this->convert($lang);
}
else
{
$iso = $this->convert($lang);
}
if($iso==false || $lang==false)
{
$diz = ($lang) ? $lang : $iso;
trigger_error("The selected language (".$diz.") is invalid. See e107_handlers/language_class.php for a list of valid languages. ", E_USER_ERROR);
return false;
}
if(is_readable(e_LANGUAGEDIR.$lang.'/'.$lang.'.php'))
{
return $lang;
}
else
{
trigger_error("The selected language (".$lang.") was not found.", E_USER_ERROR);
return false;
}
}
function isLangDomain($domain='')
{
if(!$domain)
{
return false;
}
global $pref;
$mtmp = explode("\n", $pref['multilanguage_subdomain']);
foreach($mtmp as $val)
{
if($domain == trim($val))
{
return true;
}
}
if(!empty($pref['multilanguage_domain']) && is_array($pref['multilanguage_domain']))
{
foreach($pref['multilanguage_domain'] as $lng=>$val)
{
if($domain == trim($val))
{
return $lng;
}
}
}
return false;
}
function translate($lan, $array= array())
{
foreach($array as $k=>$v)
{
$search[] = "[".$k."]";
$replace[] = "<b>".$v."</b>";
}
return str_replace($search, $replace, $lan);
}
function installed($type='english')
{
if(null == $this->lanlist)
{
$fl = e107::getFile();
$dirArray = $fl->get_dirs(e_LANGUAGEDIR);
$lanlist = array();
foreach($dirArray as $file)
{
if ($file != '.' && $file != '..' && is_readable(e_LANGUAGEDIR.$file.'/'.$file.'.php'))
{
$lanlist[] = $file;
}
}
$this->lanlist = array_intersect($lanlist,$this->list);
}
if($type == 'native')
{
$natList = array();
foreach($this->lanlist as $lang)
{
$natList[$lang] = $this->toNative($lang);
}
natsort($natList);
return $natList;
}
return $this->lanlist;
}
function toNative($lang)
{
return (!empty($this->names[$lang])) ? $this->names[$lang] : $lang;
}
function subdomainUrl($language, $url=e_REQUEST_URL)
{
global $pref;
$iso = (strlen($language) == 2) ? $language : $this->convert($language);
$codelnk = ($language == $pref['sitelanguage']) ? "www" : $iso;
if($codelnk == '')
{
$codelnk = 'www';
}
$domain = deftrue('e_DOMAIN','example.com');
$urlval = str_replace($_SERVER['HTTP_HOST'], $codelnk.'.'.$domain, $url) ;
return (string) $urlval;
}
function detect($force = false)
{
global $pref;
if(false !== $this->detect && !$force) return $this->detect;
$this->_cookie_domain = '';
if(defined('e_PAGE_LANGUAGE') && ($detect_language = $this->isValid(e_PAGE_LANGUAGE)))
{
}
elseif(vartrue($pref['multilanguage_subdomain']) && $this->isLangDomain(e_DOMAIN) && (defset('MULTILANG_SUBDOMAIN') !== false))
{
$detect_language = (e_SUBDOMAIN) ? $this->isValid(e_SUBDOMAIN) : $pref['sitelanguage'];
$this->_cookie_domain = ".".e_DOMAIN;
define('MULTILANG_SUBDOMAIN',true);
}
elseif(!empty($pref['multilanguage_domain']) && ($newLang = $this->isLangDomain(e_DOMAIN)))
{
$detect_language = $this->isValid($newLang);
$this->_cookie_domain = ".".e_DOMAIN;
}
elseif(e_MENU && ($detect_language = $this->isValid(e_MENU)))
{
define("e_LANCODE",true);
}
elseif(isset($_GET['elan']) && ($detect_language = $this->isValid($_GET['elan'])))
{
}
elseif(isset($_POST['setlanguage']) && ($detect_language = $this->isValid($_POST['sitelanguage'])))
{
}
elseif(isset($GLOBALS['elan']) && ($detect_language = $this->isValid($GLOBALS['elan'])))
{
}
else
{
$detect_language = false;
}
$this->detect = $detect_language;
return $detect_language;
}
public function getCookieDomain()
{
return $this->_cookie_domain;
}
function set($language = null)
{
$pref = e107::getPref();
$session = e107::getSession();
if($language && ($language = $this->isValid($language)))
{
$this->detect = $language;
}
if($this->detect)
{
$oldlan = $session->get('e_language');
if(!$session->has('e_language') || (($session->get('e_language') != $this->detect) && $this->isValid($this->detect)))
{
$session->set('e_language', $this->detect);
}
if(varset($_COOKIE['e107_language'])!=$this->detect && (defset('MULTILANG_SUBDOMAIN') != TRUE))
{
setcookie('e107_language', $this->detect, time() + 86400, e_HTTP);
$_COOKIE['e107_language'] = $this->detect;
}
else
{
if(isset($_COOKIE['e107_language']))
{
unset($_COOKIE['e107_language']);
}
}
$user_language = $this->detect;
if($oldlan && $oldlan !== $this->detect)
{
e107::getEvent()->trigger('lanset', array('new' => $this->detect, 'old' => $oldlan));
}
}
else
{
if($session->has('e_language'))
{
$user_language = $session->get('e_language');
}
elseif(isset($_COOKIE['e107_language']) && ($user_language = $this->isValid($_COOKIE['e107_language'])))
{
$session->set('e_language', $user_language);
}
else
{
$user_language = $pref['sitelanguage'];
if($session->is('e_language'))
{
$session->clear('e_language');
}
if(isset($_COOKIE['e107_language']))
{
unset($_COOKIE['e107_language']);
}
}
}
$this->e_language = $user_language;
$this->setDefs();
return;
}
function setDefs()
{
global $pref;
$language = $this->e_language;
e107::getSession()->set('language-list', null);
define('e_LANLIST', implode(',', $this->installed()));
define('e_LANGUAGE', $language);
define('USERLAN', $language);
$iso = $this->convert($language);
define("e_LAN", $iso);
if(defined('e_LANCODE') && varset($pref['multilanguage']) && ($language != $pref['sitelanguage']))
{
define("e_LANQRY", "[".$iso."]");
}
else
{
define("e_LANCODE", '');
define("e_LANQRY", false);
}
}
public function getLanSelectArray($force = false)
{
if($force ||null === $this->_select_array)
{
$lanlist = explode(',', e_LANLIST);
$this->_select_array = array();
foreach ($lanlist as $lan)
{
$this->_select_array[$this->convert($lan)] = $this->toNative($lan);
}
}
return $this->_select_array;
}
public function getList()
{
return $this->list;
}
public function bcDefs($bcList = null)
{
if(empty($bcList))
{
$bcList = array(
'LAN_180' => 'LAN_SEARCH'
);
}
foreach($bcList as $old => $new)
{
if(!defined($old) && defined($new))
{
define($old, constant($new));
}
}
}
}
15 Lapkričio 2016 - 20:45 / #7
-
Oho kiek dėmesio skirta kalbos pasirinkimui. Pataisiau, dabar turėtų veikti.
<?php
class language{
public $detect = false;
public $e_language = 'English';
public $_cookie_domain = '';
protected $lanlist = null;
protected $list = array(
"na" => "Nauru",
"nv" => "Navajo",
"zu" => "Zulu"
);
protected $names = array(
"Vietnamese" => "Tiếng Việt",
"Welsh" => "Cymraeg"
);
function convert($data){
if(strlen($data) > 2)
{
$tmp = array_flip($this->list);
return isset($tmp[$data]) ? $tmp[$data] : false;
}
else
{
return (isset($this->list[$data])) ? $this->list[$data] : false;
}
}
function isValid($lang='')
{
if(empty($lang))
{
return false;
}
global $pref;
if(!$lang)
{
return (ADMIN_AREA && vartrue($pref['adminlanguage'])) ? $pref['adminlanguage'] : $pref['sitelanguage'];
}
if(strpos($lang,"debug")!==false)
{
return false;
}
if($lang == 'E_SITELANGUAGE')
{
$lang = $pref['sitelanguage'];
}
if($lang == 'E_ADMINLANGUAGE')
{
$lang = $pref['adminlanguage'];
}
if(strlen($lang)== 2)
{
$iso = $lang;
$lang = $this->convert($lang);
}
else
{
$iso = $this->convert($lang);
}
if($iso==false || $lang==false)
{
$diz = ($lang) ? $lang : $iso;
trigger_error("The selected language (".$diz.") is invalid. See e107_handlers/language_class.php for a list of valid languages. ", E_USER_ERROR);
return false;
}
if(is_readable(e_LANGUAGEDIR.$lang.'/'.$lang.'.php'))
{
return $lang;
}
else
{
trigger_error("The selected language (".$lang.") was not found.", E_USER_ERROR);
return false;
}
}
function isLangDomain($domain='')
{
if(!$domain)
{
return false;
}
global $pref;
$mtmp = explode("\n", $pref['multilanguage_subdomain']);
foreach($mtmp as $val)
{
if($domain == trim($val))
{
return true;
}
}
if(!empty($pref['multilanguage_domain']) && is_array($pref['multilanguage_domain']))
{
foreach($pref['multilanguage_domain'] as $lng=>$val)
{
if($domain == trim($val))
{
return $lng;
}
}
}
return false;
}
function translate($lan, $array= array())
{
foreach($array as $k=>$v)
{
$search[] = "[".$k."]";
$replace[] = "<b>".$v."</b>";
}
return str_replace($search, $replace, $lan);
}
function installed($type='english')
{
if(null == $this->lanlist)
{
$fl = e107::getFile();
$dirArray = $fl->get_dirs(e_LANGUAGEDIR);
$lanlist = array();
foreach($dirArray as $file)
{
if ($file != '.' && $file != '..' && is_readable(e_LANGUAGEDIR.$file.'/'.$file.'.php'))
{
$lanlist[] = $file;
}
}
$this->lanlist = array_intersect($lanlist,$this->list);
}
if($type == 'native')
{
$natList = array();
foreach($this->lanlist as $lang)
{
$natList[$lang] = $this->toNative($lang);
}
natsort($natList);
return $natList;
}
return $this->lanlist;
}
function toNative($lang)
{
return (!empty($this->names[$lang])) ? $this->names[$lang] : $lang;
}
function subdomainUrl($language, $url=e_REQUEST_URL)
{
global $pref;
$iso = (strlen($language) == 2) ? $language : $this->convert($language);
$codelnk = ($language == $pref['sitelanguage']) ? "www" : $iso;
if($codelnk == '')
{
$codelnk = 'www';
}
$domain = deftrue('e_DOMAIN','example.com');
$urlval = str_replace($_SERVER['HTTP_HOST'], $codelnk.'.'.$domain, $url) ;
return (string) $urlval;
}
function detect($force = false)
{
global $pref;
if(false !== $this->detect && !$force) return $this->detect;
$this->_cookie_domain = '';
if(defined('e_PAGE_LANGUAGE') && ($detect_language = $this->isValid(e_PAGE_LANGUAGE)))
{
}
elseif(vartrue($pref['multilanguage_subdomain']) && $this->isLangDomain(e_DOMAIN) && (defset('MULTILANG_SUBDOMAIN') !== false))
{
$detect_language = (e_SUBDOMAIN) ? $this->isValid(e_SUBDOMAIN) : $pref['sitelanguage'];
$this->_cookie_domain = ".".e_DOMAIN;
define('MULTILANG_SUBDOMAIN',true);
}
elseif(!empty($pref['multilanguage_domain']) && ($newLang = $this->isLangDomain(e_DOMAIN)))
{
$detect_language = $this->isValid($newLang);
$this->_cookie_domain = ".".e_DOMAIN;
}
elseif(e_MENU && ($detect_language = $this->isValid(e_MENU)))
{
define("e_LANCODE",true);
}
elseif(isset($_GET['elan']) && ($detect_language = $this->isValid($_GET['elan'])))
{
}
elseif(isset($_POST['sitelanguage']) && ($detect_language = $this->isValid($_POST['sitelanguage'])))
{
$detect_language = (e_SUBDOMAIN) ? $this->isValid(e_SUBDOMAIN) : $pref['sitelanguage'];
$this->_cookie_domain = ".".e_DOMAIN;
define('MULTILANG_SUBDOMAIN',true);
}
elseif(isset($GLOBALS['elan']) && ($detect_language = $this->isValid($GLOBALS['elan'])))
{
}
else
{
$detect_language = false;
}
$this->detect = $detect_language;
return $detect_language;
}
public function getCookieDomain()
{
return $this->_cookie_domain;
}
function set($language = null)
{
$pref = e107::getPref();
$session = e107::getSession();
if($language && ($language = $this->isValid($language)))
{
$this->detect = $language;
}
if($this->detect)
{
$oldlan = $session->get('e_language');
if(!$session->has('e_language') || (($session->get('e_language') != $this->detect) && $this->isValid($this->detect)))
{
$session->set('e_language', $this->detect);
}
if(varset($_COOKIE['e107_language'])!=$this->detect && (defset('MULTILANG_SUBDOMAIN') != TRUE))
{
setcookie('e107_language', $this->detect, time() + 86400, e_HTTP);
$_COOKIE['e107_language'] = $this->detect;
}
else
{
if(isset($_COOKIE['e107_language']))
{
unset($_COOKIE['e107_language']);
}
}
$user_language = $this->detect;
if($oldlan && $oldlan !== $this->detect)
{
e107::getEvent()->trigger('lanset', array('new' => $this->detect, 'old' => $oldlan));
}
}
else
{
if($session->has('e_language'))
{
$user_language = $session->get('e_language');
}
elseif(isset($_COOKIE['e107_language']) && ($user_language = $this->isValid($_COOKIE['e107_language'])))
{
$session->set('e_language', $user_language);
}
else
{
$user_language = $pref['sitelanguage'];
if($session->is('e_language'))
{
$session->clear('e_language');
}
if(isset($_COOKIE['e107_language']))
{
unset($_COOKIE['e107_language']);
}
}
}
$this->e_language = $user_language;
$this->setDefs();
return;
}
function setDefs()
{
global $pref;
$language = $this->e_language;
e107::getSession()->set('language-list', null);
define('e_LANLIST', implode(',', $this->installed()));
define('e_LANGUAGE', $language);
define('USERLAN', $language);
$iso = $this->convert($language);
define("e_LAN", $iso);
if(defined('e_LANCODE') && varset($pref['multilanguage']) && ($language != $pref['sitelanguage']))
{
define("e_LANQRY", "[".$iso."]");
}
else
{
define("e_LANCODE", '');
define("e_LANQRY", false);
}
}
public function getLanSelectArray($force = false)
{
if($force ||null === $this->_select_array)
{
$lanlist = explode(',', e_LANLIST);
$this->_select_array = array();
foreach ($lanlist as $lan)
{
$this->_select_array[$this->convert($lan)] = $this->toNative($lan);
}
}
return $this->_select_array;
}
public function getList()
{
return $this->list;
}
public function bcDefs($bcList = null)
{
if(empty($bcList))
{
$bcList = array(
'LAN_180' => 'LAN_SEARCH'
);
}
foreach($bcList as $old => $new)
{
if(!defined($old) && defined($new))
{
define($old, constant($new));
}
}
}
}
?>
16 Lapkričio 2016 - 08:46 / #8
-
Skubėjimo klaida. Šis veiks. <?php
class language{
public $detect = false;
public $e_language = 'English';
public $_cookie_domain = '';
protected $lanlist = null;
protected $list = array(
"na" => "Nauru",
"nv" => "Navajo",
"zu" => "Zulu"
);
protected $names = array(
"Vietnamese" => "Tiếng Việt",
"Welsh" => "Cymraeg"
);
function convert($data){
if(strlen($data) > 2)
{
$tmp = array_flip($this->list);
return isset($tmp[$data]) ? $tmp[$data] : false;
}
else
{
return (isset($this->list[$data])) ? $this->list[$data] : false;
}
}
function isValid($lang='')
{
if(empty($lang))
{
return false;
}
global $pref;
if(!$lang)
{
return (ADMIN_AREA && vartrue($pref['adminlanguage'])) ? $pref['adminlanguage'] : $pref['sitelanguage'];
}
if(strpos($lang,"debug")!==false)
{
return false;
}
if($lang == 'E_SITELANGUAGE')
{
$lang = $pref['sitelanguage'];
}
if($lang == 'E_ADMINLANGUAGE')
{
$lang = $pref['adminlanguage'];
}
if(strlen($lang)== 2)
{
$iso = $lang;
$lang = $this->convert($lang);
}
else
{
$iso = $this->convert($lang);
}
if($iso==false || $lang==false)
{
$diz = ($lang) ? $lang : $iso;
trigger_error("The selected language (".$diz.") is invalid. See e107_handlers/language_class.php for a list of valid languages. ", E_USER_ERROR);
return false;
}
if(is_readable(e_LANGUAGEDIR.$lang.'/'.$lang.'.php'))
{
return $lang;
}
else
{
trigger_error("The selected language (".$lang.") was not found.", E_USER_ERROR);
return false;
}
}
function isLangDomain($domain='')
{
if(!$domain)
{
return false;
}
global $pref;
$mtmp = explode("\n", $pref['multilanguage_subdomain']);
foreach($mtmp as $val)
{
if($domain == trim($val))
{
return true;
}
}
if(!empty($pref['multilanguage_domain']) && is_array($pref['multilanguage_domain']))
{
foreach($pref['multilanguage_domain'] as $lng=>$val)
{
if($domain == trim($val))
{
return $lng;
}
}
}
return false;
}
function translate($lan, $array= array())
{
foreach($array as $k=>$v)
{
$search[] = "[".$k."]";
$replace[] = "<b>".$v."</b>";
}
return str_replace($search, $replace, $lan);
}
function installed($type='english')
{
if(null == $this->lanlist)
{
$fl = e107::getFile();
$dirArray = $fl->get_dirs(e_LANGUAGEDIR);
$lanlist = array();
foreach($dirArray as $file)
{
if ($file != '.' && $file != '..' && is_readable(e_LANGUAGEDIR.$file.'/'.$file.'.php'))
{
$lanlist[] = $file;
}
}
$this->lanlist = array_intersect($lanlist,$this->list);
}
if($type == 'native')
{
$natList = array();
foreach($this->lanlist as $lang)
{
$natList[$lang] = $this->toNative($lang);
}
natsort($natList);
return $natList;
}
return $this->lanlist;
}
function toNative($lang)
{
return (!empty($this->names[$lang])) ? $this->names[$lang] : $lang;
}
function subdomainUrl($language, $url=e_REQUEST_URL)
{
global $pref;
$iso = (strlen($language) == 2) ? $language : $this->convert($language);
$codelnk = ($language == $pref['sitelanguage']) ? "www" : $iso;
if($codelnk == '')
{
$codelnk = 'www';
}
$domain = deftrue('e_DOMAIN','example.com');
$urlval = str_replace($_SERVER['HTTP_HOST'], $codelnk.'.'.$domain, $url) ;
return (string) $urlval;
}
function detect($force = false)
{
global $pref;
if(false !== $this->detect && !$force) return $this->detect;
$this->_cookie_domain = '';
if(defined('e_PAGE_LANGUAGE') && ($detect_language = $this->isValid(e_PAGE_LANGUAGE)))
{
}
elseif(vartrue($pref['multilanguage_subdomain']) && $this->isLangDomain(e_DOMAIN) && (defset('MULTILANG_SUBDOMAIN') !== false))
{
$detect_language = (e_SUBDOMAIN) ? $this->isValid(e_SUBDOMAIN) : $pref['sitelanguage'];
$this->_cookie_domain = ".".e_DOMAIN;
define('MULTILANG_SUBDOMAIN',true);
}
elseif(!empty($pref['multilanguage_domain']) && ($newLang = $this->isLangDomain(e_DOMAIN)))
{
$detect_language = $this->isValid($newLang);
$this->_cookie_domain = ".".e_DOMAIN;
}
elseif(e_MENU && ($detect_language = $this->isValid(e_MENU)))
{
define("e_LANCODE",true);
}
elseif(isset($_GET['elan']) && ($detect_language = $this->isValid($_GET['elan'])))
{
}
elseif(isset($_POST['sitelanguage']) && ($detect_language = $this->isValid($_POST['sitelanguage'])))
{
$detect_language = $_POST['sitelanguage'];
$this->_cookie_domain = ".".e_DOMAIN;
}
elseif(isset($GLOBALS['elan']) && ($detect_language = $this->isValid($GLOBALS['elan'])))
{
}
else
{
$detect_language = false;
}
$this->detect = $detect_language;
return $detect_language;
}
public function getCookieDomain()
{
return $this->_cookie_domain;
}
function set($language = null)
{
$pref = e107::getPref();
$session = e107::getSession();
if($language && ($language = $this->isValid($language)))
{
$this->detect = $language;
}
if($this->detect)
{
$oldlan = $session->get('e_language');
if(!$session->has('e_language') || (($session->get('e_language') != $this->detect) && $this->isValid($this->detect)))
{
$session->set('e_language', $this->detect);
}
if(varset($_COOKIE['e107_language'])!=$this->detect && (defset('MULTILANG_SUBDOMAIN') != TRUE))
{
setcookie('e107_language', $this->detect, time() + 86400, e_HTTP);
$_COOKIE['e107_language'] = $this->detect;
}
else
{
if(isset($_COOKIE['e107_language']))
{
unset($_COOKIE['e107_language']);
}
}
$user_language = $this->detect;
if($oldlan && $oldlan !== $this->detect)
{
e107::getEvent()->trigger('lanset', array('new' => $this->detect, 'old' => $oldlan));
}
}
else
{
if($session->has('e_language'))
{
$user_language = $session->get('e_language');
}
elseif(isset($_COOKIE['e107_language']) && ($user_language = $this->isValid($_COOKIE['e107_language'])))
{
$session->set('e_language', $user_language);
}
else
{
$user_language = $pref['sitelanguage'];
if($session->is('e_language'))
{
$session->clear('e_language');
}
if(isset($_COOKIE['e107_language']))
{
unset($_COOKIE['e107_language']);
}
}
}
$this->e_language = $user_language;
$this->setDefs();
return;
}
function setDefs()
{
global $pref;
$language = $this->e_language;
e107::getSession()->set('language-list', null);
define('e_LANLIST', implode(',', $this->installed()));
define('e_LANGUAGE', $language);
define('USERLAN', $language);
$iso = $this->convert($language);
define("e_LAN", $iso);
if(defined('e_LANCODE') && varset($pref['multilanguage']) && ($language != $pref['sitelanguage']))
{
define("e_LANQRY", "[".$iso."]");
}
else
{
define("e_LANCODE", '');
define("e_LANQRY", false);
}
}
public function getLanSelectArray($force = false)
{
if($force ||null === $this->_select_array)
{
$lanlist = explode(',', e_LANLIST);
$this->_select_array = array();
foreach ($lanlist as $lan)
{
$this->_select_array[$this->convert($lan)] = $this->toNative($lan);
}
}
return $this->_select_array;
}
public function getList()
{
return $this->list;
}
public function bcDefs($bcList = null)
{
if(empty($bcList))
{
$bcList = array(
'LAN_180' => 'LAN_SEARCH'
);
}
foreach($bcList as $old => $new)
{
if(!defined($old) && defined($new))
{
define($old, constant($new));
}
}
}
}
?>
16 Lapkričio 2016 - 10:28 / #9
|