Changeset 663

Show
Ignore:
Timestamp:
10/22/06 14:40:12 (2 years ago)
Author:
misja
Message:

Some gettext fixes, locale now defaults correctly to setting in config.php for non logged out users.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • devel/units/gettext/library.php

    r661 r663  
    7171            $browser_lang = $_SERVER['HTTP_ACCEPT_LANGUAGE']; 
    7272        } 
    73          
     73        else 
     74        { 
     75            // No values 
     76            return; 
     77        } 
     78 
    7479        // getting http instruction if not provided 
    7580        $str = $str ? $str : $browser_lang; 
     
    237242        } 
    238243         
    239         // Setup some variables to hold the user language 
     244        // Setup variables to hold the user language 
    240245        $USER->locale = $CFG->defaultlocale; 
    241246 
     
    245250            $_SESSION['userlocale'] = ''; 
    246251        } 
    247          
     252 
    248253        // Now, grab user preference 
    249         if ($result = get_record('user_flags','flag','language','user_id',$USER->ident)) 
    250         { 
    251             $_SESSION['userlocale'] = $result->value; 
    252             $USER->locale = $result->value; 
    253         } 
    254         else 
    255         { 
    256             // No flag set yet, try extract from the browser 
    257             $setting = ''; 
    258  
    259             if (!empty($USER->languages_browser)) 
    260             { 
    261                 $keys = array_keys($USER->languages_browser); 
     254         
     255        if (logged_on && $USER->ident != 0) 
     256        { 
     257            // User is logged in and has a session 
     258             
     259            if ($result = get_record('user_flags','flag','language','user_id',$USER->ident)) 
     260            { 
     261                $_SESSION['userlocale'] = $result->value; 
     262                $USER->locale = $result->value; 
     263            } 
     264            else 
     265            { 
     266                // No flag set yet, try extract from the browser 
     267                $setting = ''; 
     268 
     269                if (!empty($USER->languages_browser)) 
     270                { 
     271                    $keys = array_keys($USER->languages_browser); 
     272                     
     273                    if ($browser = $USER->languages_browser[$keys[0]]) 
     274                    { 
     275                        $setting = $browser['fullcode']; 
     276                    } 
     277                } 
     278                else 
     279                { 
     280                    // No browser preference, get defaultlocale 
     281                    $setting = $CFG->defaultlocale; 
     282                } 
    262283                 
    263                 if ($browser = $USER->languages_browser[$keys[0]]) 
    264                 { 
    265                     $setting = $browser['fullcode']; 
    266                 } 
    267             } 
    268              
    269             // Store the value 
    270             $flag = new StdClass; 
    271             $flag->flag = 'language'; 
    272             $flag->user_id = $USER->ident; 
    273             $flag->value = $setting; 
    274             insert_record('user_flags',$flag); 
    275  
    276             $_SESSION['userlocale'] = $setting; 
    277             $USER->locale = $setting; 
     284                // Store the value 
     285                $flag = new StdClass; 
     286                $flag->flag = 'language'; 
     287                $flag->user_id = $USER->ident; 
     288                $flag->value = $setting; 
     289                insert_record('user_flags',$flag); 
     290 
     291                $_SESSION['userlocale'] = $setting; 
     292                $USER->locale = $setting; 
     293            } 
     294        } 
     295        else 
     296        { 
     297            // User is logged out 
     298             
     299            // TODO special actions? For now language will be set 
     300            // to $CFG-defaultlocale for non logged in users or via 
     301            // a session, see below. 
     302 
     303            // TODO This is here to set the pref via a session for 
     304            // non logged in so they could also use the language 
     305            // selection widget. Should perhaps get stored in a cookie. 
     306 
     307            if (isset($_SESSION['userlocale']) && $_SESSION['userlocale'] != '') 
     308            { 
     309                $USER->locale = $_SESSION['userlocale']; 
     310            } 
     311            else 
     312            { 
     313                $USER->locale = $CFG->defaultlocale; 
     314            } 
    278315        } 
    279316 
    280317        // Handle explicit language setting via widget. Here for now because 
    281         // else it will get called to late to set the user language. 
     318        // else it will get called too late to set the user language. 
    282319        $params = explode('?',$_SERVER['REQUEST_URI']); 
    283320        if ($params[1]) 
     
    286323            if ($lang[0] == 'lang') 
    287324            { 
    288                 if ($lang[1] != 'default'
     325                if ($lang[1] != 'default' && array_key_exists($lang[1], $CFG->languages_available)
    289326                { 
    290327                    $USER->locale = $lang[1]; 
     
    297334 
    298335            // Store it in the user preferences 
    299             if (logged_on
     336            if (logged_on && $USER->ident != 0
    300337            { 
    301338                // Have to replicate flag setting because of including order 
     
    310347                insert_record('user_flags',$flag); 
    311348            } 
    312          
     349 
    313350            // Set session variable 
    314351            $_SESSION['userlocale'] = $USER->locale;