mirror of
https://github.com/e107inc/e107.git
synced 2025-08-04 13:47:31 +02:00
multi-lingual troubles, more fixes are coming
This commit is contained in:
@@ -263,9 +263,14 @@ class admin_shortcodes
|
|||||||
<select name='sitelanguage' id='sitelanguage' class='tbox' onchange='this.form.submit()'>";
|
<select name='sitelanguage' id='sitelanguage' class='tbox' onchange='this.form.submit()'>";
|
||||||
foreach($lanperms as $lng)
|
foreach($lanperms as $lng)
|
||||||
{
|
{
|
||||||
$langval = ($lng == $pref['sitelanguage'] && $lng == 'English') ? "" : $lng;
|
// FIXME - language detection is a mess - db handler, mysql handler, session handler and language handler + constants invlolved
|
||||||
$selected = ($lng == $sql->mySQLlanguage || ($lng == $pref['sitelanguage'] && !$sql->mySQLlanguage)) ? " selected='selected'" : "";
|
// Too complex, doesn't work!!! SIMPLIFY!!!
|
||||||
$select .= "<option value='".$langval."'{$selected}>$lng</option>\n";
|
//$langval = ($lng == $pref['sitelanguage'] && $lng == 'English') ? "" : $lng;
|
||||||
|
//$selected = ($lng == $sql->mySQLlanguage || ($lng == $pref['sitelanguage'] && !$sql->mySQLlanguage)) ? " selected='selected'" : "";
|
||||||
|
//$select .= "<option value='".$langval."'{$selected}>$lng</option>\n";
|
||||||
|
$selected = ($lng == e_LANGUAGE) ? " selected='selected'" : "";
|
||||||
|
$select .= "<option value='".$lng."'{$selected}>$lng</option>\n";
|
||||||
|
|
||||||
}
|
}
|
||||||
$select .= "</select> ".(!isset($params['nobutton']) ? "<button class='update e-hide-if-js' type='submit' name='setlanguage' value='no-value'><span>".UTHEME_MENU_L1."</span></button>" : '')."
|
$select .= "</select> ".(!isset($params['nobutton']) ? "<button class='update e-hide-if-js' type='submit' name='setlanguage' value='no-value'><span>".UTHEME_MENU_L1."</span></button>" : '')."
|
||||||
".e107::getForm()->hidden('setlanguage', '1')."
|
".e107::getForm()->hidden('setlanguage', '1')."
|
||||||
|
@@ -23,11 +23,17 @@ class language{
|
|||||||
// http://www.loc.gov/standards/iso639-2/php/code_list.php
|
// http://www.loc.gov/standards/iso639-2/php/code_list.php
|
||||||
|
|
||||||
// Valid Language Pack Names are shown directly below on the right.
|
// Valid Language Pack Names are shown directly below on the right.
|
||||||
var $detect = FALSE;
|
public $detect = FALSE;
|
||||||
var $e_language = 'English'; // replaced later with $pref
|
public $e_language = 'English'; // replaced later with $pref
|
||||||
var $_cookie_domain = '';
|
public $_cookie_domain = '';
|
||||||
|
|
||||||
var $list = array(
|
/**
|
||||||
|
* Cached list of Installed Language Packs
|
||||||
|
* @var array
|
||||||
|
*/
|
||||||
|
protected $lanlist = null; // null is important!!!
|
||||||
|
|
||||||
|
protected $list = array(
|
||||||
"aa" => "Afar",
|
"aa" => "Afar",
|
||||||
"ab" => "Abkhazian",
|
"ab" => "Abkhazian",
|
||||||
"af" => "Afrikaans",
|
"af" => "Afrikaans",
|
||||||
@@ -188,7 +194,7 @@ class language{
|
|||||||
"zu" => "Zulu"
|
"zu" => "Zulu"
|
||||||
);
|
);
|
||||||
|
|
||||||
var $names = array(
|
protected $names = array(
|
||||||
"Arabic" => "العربية",
|
"Arabic" => "العربية",
|
||||||
"Bosnian" => "Bosanski",
|
"Bosnian" => "Bosanski",
|
||||||
"Bulgarian" => "Български",
|
"Bulgarian" => "Български",
|
||||||
@@ -322,9 +328,12 @@ class language{
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Return a list of Installed Language Packs
|
* Return a list of Installed Language Packs
|
||||||
|
*
|
||||||
* @return array
|
* @return array
|
||||||
*/
|
*/
|
||||||
function installed()
|
function installed()
|
||||||
|
{
|
||||||
|
if(null == $this->lanlist)
|
||||||
{
|
{
|
||||||
$handle = opendir(e_LANGUAGEDIR);
|
$handle = opendir(e_LANGUAGEDIR);
|
||||||
$lanlist = array();
|
$lanlist = array();
|
||||||
@@ -337,9 +346,10 @@ class language{
|
|||||||
}
|
}
|
||||||
closedir($handle);
|
closedir($handle);
|
||||||
|
|
||||||
$filtered = array_intersect($lanlist,$this->list);
|
$this->lanlist = array_intersect($lanlist,$this->list);
|
||||||
|
}
|
||||||
|
|
||||||
return $filtered;
|
return $this->lanlist;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -388,7 +398,7 @@ class language{
|
|||||||
global $pref;
|
global $pref;
|
||||||
|
|
||||||
|
|
||||||
if(false !== $this->detect && !$foce) return $this->detect;
|
if(false !== $this->detect && !$force) return $this->detect;
|
||||||
$this->_cookie_domain = '';
|
$this->_cookie_domain = '';
|
||||||
if(varsettrue($pref['multilanguage_subdomain']) && $this->isLangDomain(e_DOMAIN) && (defset('MULTILANG_SUBDOMAIN') !== FALSE))
|
if(varsettrue($pref['multilanguage_subdomain']) && $this->isLangDomain(e_DOMAIN) && (defset('MULTILANG_SUBDOMAIN') !== FALSE))
|
||||||
{
|
{
|
||||||
@@ -510,6 +520,8 @@ class language{
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Set Language-specific Constants
|
* Set Language-specific Constants
|
||||||
|
* FIXME - language detection is a mess - db handler, mysql handler, session handler and language handler + constants invlolved,
|
||||||
|
* SIMPLIFY, test, get feedback
|
||||||
* @param string $language
|
* @param string $language
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
@@ -518,14 +530,18 @@ class language{
|
|||||||
global $pref;
|
global $pref;
|
||||||
|
|
||||||
$language = $this->e_language;
|
$language = $this->e_language;
|
||||||
$session = e107::getSession();
|
//$session = e107::getSession();
|
||||||
|
|
||||||
if(!$session->is('language-list'))
|
// SecretR - don't register lanlist in session, confusions, save it as class property (lan class is singleton)
|
||||||
|
e107::getSession()->set('language-list', null); // cleanup test installs, will be removed soon
|
||||||
|
|
||||||
|
/*if(!$session->is('language-list'))
|
||||||
{
|
{
|
||||||
$session->set('language-list', implode(',',$this->installed()));
|
$session->set('language-list', implode(',',$this->installed()));
|
||||||
}
|
}*/
|
||||||
|
|
||||||
define('e_LANLIST', $session->get('language-list'));
|
//define('e_LANLIST', $session->get('language-list'));
|
||||||
|
define('e_LANLIST', implode(',', $this->installed()));
|
||||||
define('e_LANGUAGE', $language);
|
define('e_LANGUAGE', $language);
|
||||||
define('USERLAN', $language); // Keep USERLAN for backward compatibility
|
define('USERLAN', $language); // Keep USERLAN for backward compatibility
|
||||||
$iso = $this->convert($language);
|
$iso = $this->convert($language);
|
||||||
|
Reference in New Issue
Block a user