Ticket #1484434: roundcube_http-accept-language.patch

File roundcube_http-accept-language.patch, 2.1 kB (added by thomasb, 18 months ago)
  • program/include/main.inc

    diff -Nuar roundcubemail-0.1beta2.orig/program/include/main.inc roundcubemail-0.1beta2/program/include/main.inc
    old new  
    3939  // check client 
    4040  $BROWSER = rcube_browser(); 
    4141 
     42  // Get HTTP_ACCEPT_LANGUAGE 
     43  $accept_lang = explode(',', $_SERVER['HTTP_ACCEPT_LANGUAGE']); 
     44  $accept_lang = str_replace('-', '_', $accept_lang[0]); 
     45 
    4246  // load config file 
    4347  include_once('config/main.inc.php'); 
    4448  $CONFIG = is_array($rcmail_config) ? $rcmail_config : array(); 
     
    9296  // create session and set session vars 
    9397  if (!isset($_SESSION['auth_time'])) 
    9498    { 
    95     $_SESSION['user_lang'] = rcube_language_prop($CONFIG['locale_string']); 
     99    if (!empty($accept_lang)) 
     100      $_SESSION['user_lang'] = rcube_language_prop($accept_lang); 
     101    else 
     102      $_SESSION['user_lang'] = rcube_language_prop($CONFIG['locale_string']); 
     103 
    96104    $_SESSION['auth_time'] = mktime(); 
    97105    setcookie('sessauth', rcmail_auth_hash($sess_id, $_SESSION['auth_time'])); 
    98106    } 
     
    119127 
    120128 
    121129  // set localization 
    122   if ($CONFIG['locale_string']) 
    123     setlocale(LC_ALL, $CONFIG['locale_string']); 
    124   else if ($sess_user_lang) 
     130  if ($sess_user_lang) 
    125131    setlocale(LC_ALL, $sess_user_lang); 
     132  else if ($CONFIG['locale_string']) 
     133    setlocale(LC_ALL, $CONFIG['locale_string']); 
    126134 
    127135 
    128136  register_shutdown_function('rcmail_shutdown'); 
     
    302310// check the given string and returns language properties 
    303311function rcube_language_prop($lang, $prop='lang') 
    304312  { 
    305   global $INSTALL_PATH; 
     313  global $INSTALL_PATH, $CONFIG; 
    306314  static $rcube_languages, $rcube_language_aliases, $rcube_charsets; 
    307315 
    308316  if (empty($rcube_languages)) 
     
    319327    $lang = rcube_language_prop($lang); 
    320328    } 
    321329 
     330  if (!isset($rcube_languages[$lang]) && (isset($rcube_languages[$CONFIG['locale_string']]) || isset($rcube_languages[substr($CONFIG['local_string'], 0, 2)]))) 
     331    $lang = rcube_language_prop($CONFIG['locale_string']); 
     332 
    322333  if (!isset($rcube_languages[$lang])) 
    323334    $lang = 'en_US'; 
    324335