Changeset 28913


Ignore:
Timestamp:
Jul 2, 2014, 10:12:16 AM (10 years ago)
Author:
mistic100
Message:

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

Location:
trunk/include
Files:
2 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}
  • trunk/include/functions_mail.inc.php

    r28587 r28913  
    309309    {
    310310      foreach ($language_files as $dirname => $files)
    311         foreach ($files as $filename)
    312           load_language($filename, $dirname, array('language'=>$language) );
     311      {
     312        foreach ($files as $filename => $options)
     313        {
     314          $options['language'] = $language;
     315          load_language($filename, $dirname, $options);
     316        }
     317      }
    313318    }
    314319   
     
    331336 * Switch back language pushed with switch_lang_to() function.
    332337 * @see switch_lang_to()
     338 * Language files are not reloaded
    333339 */
    334340function switch_lang_back()
Note: See TracChangeset for help on using the changeset viewer.