Translation2
[ class tree: Translation2 ] [ index: Translation2 ] [ all elements ]

Source for file Lang.php

Documentation is available at Lang.php

  1. <?php
  2. /* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
  3.  
  4. /**
  5.  * Contains the Translation2_Decorator_Lang class
  6.  *
  7.  * PHP versions 4 and 5
  8.  *
  9.  * LICENSE: Redistribution and use in source and binary forms, with or without
  10.  * modification, are permitted provided that the following conditions are met:
  11.  * 1. Redistributions of source code must retain the above copyright
  12.  *    notice, this list of conditions and the following disclaimer.
  13.  * 2. Redistributions in binary form must reproduce the above copyright
  14.  *    notice, this list of conditions and the following disclaimer in the
  15.  *    documentation and/or other materials provided with the distribution.
  16.  * 3. The name of the author may not be used to endorse or promote products
  17.  *    derived from this software without specific prior written permission.
  18.  *
  19.  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED
  20.  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
  21.  * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
  22.  * IN NO EVENT SHALL THE FREEBSD PROJECT OR CONTRIBUTORS BE LIABLE FOR ANY
  23.  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
  24.  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
  25.  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
  26.  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
  27.  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
  28.  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  29.  *
  30.  * @category  Internationalization
  31.  * @package   Translation2
  32.  * @author    Lorenzo Alberton <l.alberton@quipo.it>
  33.  * @copyright 2004-2007 Lorenzo Alberton
  34.  * @license   http://www.debian.org/misc/bsd.license  BSD License (3 Clause)
  35.  * @version   CVS: $Id: Lang.php,v 1.15 2008/11/09 19:56:04 quipo Exp $
  36.  * @link      http://pear.php.net/package/Translation2
  37.  */
  38.  
  39. /**
  40.  * Load Translation2 decorator base class
  41.  */
  42. require_once 'Translation2/Decorator.php';
  43.  
  44. /**
  45.  * Decorator to provide a fallback language for empty strings.
  46.  *
  47.  * @category  Internationalization
  48.  * @package   Translation2
  49.  * @author    Lorenzo Alberton <l.alberton@quipo.it>
  50.  * @copyright 2004-2007 Lorenzo Alberton
  51.  * @license   http://www.debian.org/misc/bsd.license  BSD License (3 Clause)
  52.  * @version   CVS: $Id: Lang.php,v 1.15 2008/11/09 19:56:04 quipo Exp $
  53.  * @link      http://pear.php.net/package/Translation2
  54.  */
  55. {
  56.     // {{{ class vars
  57.  
  58.     /**
  59.      * fallback lang
  60.      * @var string 
  61.      * @access protected
  62.      */
  63.     var $fallbackLang;
  64.  
  65.     // }}}
  66.     // {{{ setOption()
  67.  
  68.     /**
  69.      * set Decorator option (intercept 'fallbackLang' option).
  70.      * I don't know why it's needed, but it doesn't work without.
  71.      *
  72.      * @param string $option option name
  73.      * @param mixed  $value  option value
  74.      *
  75.      * @return self 
  76.      */
  77.     function setOption($option$value=null)
  78.     {
  79.         if ($option == 'fallbackLang'{
  80.             $this->fallbackLang = $value;
  81.             return $this;
  82.         }
  83.         return parent::setOption($option$value);
  84.     }
  85.  
  86.     // }}}
  87.     // {{{ get()
  88.  
  89.     /**
  90.      * Get translated string
  91.      *
  92.      * If the string is empty, check the fallback language
  93.      *
  94.      * @param string $stringID    string ID
  95.      * @param string $pageID      page/group ID
  96.      * @param string $langID      language ID
  97.      * @param string $defaultText Text to display when the strings in both
  98.      *                             the default and the fallback lang are empty
  99.      *
  100.      * @return string 
  101.      */
  102.     function get($stringID$pageID = TRANSLATION2_DEFAULT_PAGEID$langID = null$defaultText '')
  103.     {
  104.         $str $this->translation2->get($stringID$pageID$langID$defaultText);
  105.         if (empty($str)) {
  106.             $str $this->translation2->get($stringID$pageID$this->fallbackLang);
  107.         }
  108.         return $str;
  109.     }
  110.  
  111.     // }}}
  112.     // {{{ getPage()
  113.  
  114.     /**
  115.      * Same as getRawPage, but resort to fallback language and
  116.      * replace parameters when needed
  117.      *
  118.      * @param string $pageID page/group ID
  119.      * @param string $langID language ID
  120.      *
  121.      * @return array 
  122.      */
  123.     function getPage($pageID = TRANSLATION2_DEFAULT_PAGEID$langID = null)
  124.     {
  125.         $data1 $this->translation2->getPage($pageID$langID);
  126.         if (PEAR::isError($data1)) {
  127.             return $data1;
  128.         }
  129.         $data2 $this->translation2->getPage($pageID$this->fallbackLang);
  130.         if (PEAR::isError($data2)) {
  131.             return $data2;
  132.         }
  133.         foreach ($data1 as $key => $val{
  134.             if (empty($val)) {
  135.                 $data1[$key$data2[$key];
  136.             }
  137.         }
  138.         // append keys when fallback lang contains more than current
  139.         $diff array_diff(array_keys($data2)array_keys($data1));
  140.         foreach ($diff as $key{
  141.             $data1[$key$data2[$key];
  142.         }
  143.         return $data1;
  144.     }
  145.  
  146.     // }}}
  147. }
  148. ?>

Documentation generated on Fri, 14 Nov 2008 11:30:24 -0500 by phpDocumentor 1.4.0. PEAR Logo Copyright © PHP Group 2004.