Ignore:
Timestamp:
07/02/14 10:12:16 (5 years ago)
Author:
mistic100
Message:

feature 3046: Add option "force_fallback" to load_language + clean code

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/include/functions.inc.php

    r28691 r28913  
    14361436 *     @option bool return - if true the file content is returned 
    14371437 *     @option bool no_fallback - if true do not load default language 
     1438 *     @option bool|string force_fallback - force pre-loading of another language 
     1439 *        default language if *true* or specified language 
    14381440 *     @option bool local - if true load file from local directory 
    14391441 * @return boolean|string 
     
    14431445  global $user, $language_files; 
    14441446 
    1445   if ( !empty($dirname) and !empty($filename) ) 
    1446   { 
    1447     if ( empty($language_files[$dirname]) or !in_array($filename,$language_files[$dirname]) ) 
    1448     { 
    1449       $language_files[$dirname][] = $filename; 
    1450     } 
    1451   } 
    1452  
    1453   if (! @$options['return'] ) 
    1454   { 
    1455     $filename .= '.php'; //MAYBE to do .. load .po and .mo localization files 
     1447  // keep trace of plugins loaded files for switch_lang_to() function 
     1448  if (!empty($dirname) && !empty($filename) && !@$options['return'] 
     1449    && !isset($language_files[$dirname][$filename])) 
     1450  { 
     1451    $language_files[$dirname][$filename] = $options; 
     1452  } 
     1453 
     1454  if (!@$options['return']) 
     1455  { 
     1456    $filename .= '.php'; 
    14561457  } 
    14571458  if (empty($dirname)) 
     
    14611462  $dirname .= 'language/'; 
    14621463 
     1464  $default_language = defined('PHPWG_INSTALLED') ? 
     1465      get_default_language() : PHPWG_DEFAULT_LANGUAGE; 
     1466 
     1467  // construct list of potential languages 
    14631468  $languages = array(); 
    1464   if ( !empty($options['language']) ) 
    1465   { 
     1469  if (!empty($options['language'])) 
     1470  { // explicit language 
    14661471    $languages[] = $options['language']; 
    14671472  } 
    1468   if ( !empty($user['language']) ) 
    1469   { 
     1473  if (!empty($user['language'])) 
     1474  { // use language 
    14701475    $languages[] = $user['language']; 
    14711476  } 
    1472   if ( ($parent = get_parent_language()) != null) 
    1473   { 
     1477  if (($parent = get_parent_language()) != null) 
     1478  { // parent language 
     1479    // this is only for when the "child" language is missing 
    14741480    $languages[] = $parent; 
    14751481  } 
    1476   if ( ! @$options['no_fallback'] ) 
    1477   { 
    1478     if ( defined('PHPWG_INSTALLED') ) 
    1479     { 
    1480       $languages[] = get_default_language(); 
    1481     } 
    1482     $languages[] = PHPWG_DEFAULT_LANGUAGE; 
     1482  if (isset($options['force_fallback'])) 
     1483  { // fallback language 
     1484    // this is only for when the main language is missing 
     1485    if ($options['force_fallback'] === true) 
     1486    { 
     1487      $options['force_fallback'] = $default_language; 
     1488    } 
     1489    $languages[] = $options['force_fallback']; 
     1490  } 
     1491  if (!@$options['no_fallback']) 
     1492  { // default language 
     1493    $languages[] = $default_language; 
    14831494  } 
    14841495 
    14851496  $languages = array_unique($languages); 
    14861497 
    1487   /*Note: target charset is always utf-8 
    1488   if ( empty($options['target_charset']) ) 
    1489   { 
    1490     $target_charset = get_pwg_charset(); 
    1491   } 
    1492   else 
    1493   { 
    1494     $target_charset = $options['target_charset']; 
    1495   } 
    1496   $target_charset = strtolower($target_charset);*/ 
     1498  // find first existing 
    14971499  $source_file       = ''; 
    14981500  $selected_language = ''; 
     
    15101512    } 
    15111513  } 
    1512  
    1513   if ( !empty($source_file) ) 
    1514   { 
    1515     if (! @$options['return'] ) 
    1516     { 
     1514   
     1515  if ($dirname == GUESTBOOK_PATH.'language/') var_dump($languages); 
     1516 
     1517  if (!empty($source_file)) 
     1518  { 
     1519    if (!@$options['return']) 
     1520    { 
     1521      // load forced fallback 
     1522      if (isset($options['force_fallback']) && $options['force_fallback'] != $selected_language) 
     1523      { 
     1524        @include(str_replace($selected_language, $options['force_fallback'], $source_file)); 
     1525      } 
     1526 
     1527      // load language content 
    15171528      @include($source_file); 
    15181529      $load_lang = @$lang; 
    15191530      $load_lang_info = @$lang_info; 
    15201531 
     1532      // access already existing values 
    15211533      global $lang, $lang_info; 
    1522       if ( !isset($lang) ) $lang=array(); 
    1523       if ( !isset($lang_info) ) $lang_info=array(); 
    1524  
    1525       $parent_language = !empty($load_lang_info['parent']) ? $load_lang_info['parent'] : ( 
    1526                             !empty($lang_info['parent']) ? $lang_info['parent'] : null ); 
    1527       if (!empty($parent_language) and $parent_language != $selected_language) 
     1534      if (!isset($lang)) $lang = array(); 
     1535      if (!isset($lang_info)) $lang_info = array(); 
     1536 
     1537      // load parent language content directly in global 
     1538      if (!empty($load_lang_info['parent'])) 
     1539        $parent_language = $load_lang_info['parent']; 
     1540      else if (!empty($lang_info['parent'])) 
     1541        $parent_language = $lang_info['parent']; 
     1542      else  
     1543        $parent_language = null; 
     1544 
     1545      if (!empty($parent_language) && $parent_language != $selected_language) 
    15281546      { 
    15291547        @include(str_replace($selected_language, $parent_language, $source_file)); 
    15301548      } 
    15311549 
    1532       /* Note: target charset is always utf-8 
    1533       if ( 'utf-8'!=$target_charset) 
    1534       { 
    1535         if ( is_array($load_lang) ) 
    1536         { 
    1537           foreach ($load_lang as $k => $v) 
    1538           { 
    1539             if ( is_array($v) ) 
    1540             { 
    1541               $func = create_function('$v', 'return convert_charset($v, "utf-8", "'.$target_charset.'");' ); 
    1542               $lang[$k] = array_map($func, $v); 
    1543             } 
    1544             else 
    1545               $lang[$k] = convert_charset($v, 'utf-8', $target_charset); 
    1546           } 
    1547         } 
    1548         if ( is_array($load_lang_info) ) 
    1549         { 
    1550           foreach ($load_lang_info as $k => $v) 
    1551           { 
    1552             $lang_info[$k] = convert_charset($v, 'utf-8', $target_charset); 
    1553           } 
    1554         } 
    1555       } 
    1556       else 
    1557       {*/ 
    1558         $lang = array_merge( $lang, (array)$load_lang ); 
    1559         $lang_info = array_merge( $lang_info, (array)$load_lang_info ); 
    1560       //} 
     1550      // merge contents 
     1551      $lang = array_merge($lang, (array)$load_lang); 
     1552      $lang_info = array_merge($lang_info, (array)$load_lang_info); 
    15611553      return true; 
    15621554    } 
     
    15681560    } 
    15691561  } 
     1562 
    15701563  return false; 
    15711564} 
Note: See TracChangeset for help on using the changeset viewer.