1
0
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:
secretr
2011-04-19 11:20:12 +00:00
parent 6d378ca306
commit 92cc1d574b
2 changed files with 44 additions and 23 deletions

View File

@@ -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')."

View File

@@ -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);