Source for file jLocale.class.php

Documentation is available at jLocale.class.php

  1. <?php
  2. /**
  3. @package    jelix
  4. @subpackage core
  5. @author     Laurent Jouanneau
  6. @author     Gerald Croes
  7. @contributor Julien Issler, Yannick Le Guédart
  8. @copyright  2001-2005 CopixTeam, 2005-2009 Laurent Jouanneau
  9. *  Some parts of this file are took from Copix Framework v2.3dev20050901, CopixI18N.class.php, http://www.copix.org.
  10. *  copyrighted by CopixTeam and released under GNU Lesser General Public Licence.
  11. *  initial authors : Gerald Croes, Laurent Jouanneau.
  12. *  enhancement by Laurent Jouanneau for Jelix.
  13. @copyright 2008 Julien Issler, 2008 Yannick Le Guédart
  14. @link        http://www.jelix.org
  15. @licence    GNU Lesser General Public Licence see LICENCE file or http://www.gnu.org/licenses/lgpl.html
  16. */
  17.  
  18. /**
  19.  * static class to get a localized string
  20.  * @package  jelix
  21.  * @subpackage core
  22.  */
  23. class jLocale {
  24.     /**
  25.      *
  26.      */
  27.     static $bundles array();
  28.  
  29.     /**
  30.      * static class...
  31.      */
  32.     private function __construct(){}
  33.  
  34.     /**
  35.      * gets the current lang
  36.      * @return string 
  37.      */
  38.     static function getCurrentLang(){
  39.         $s=$GLOBALS['gJConfig']->locale;
  40.         return substr($s,0strpos($s,'_'));
  41.     }
  42.     /**
  43.      * gets the current country.
  44.      * @return string 
  45.      */
  46.     static function getCurrentCountry (){
  47.         $s=$GLOBALS['gJConfig']->locale;
  48.         return substr($s,strpos($s,'_')+1);
  49.     }
  50.  
  51.     /**
  52.     * gets the correct string, for a given language.
  53.     *   if it can't get the correct language, it will try to gets the string
  54.     *   from the default language.
  55.     *   if both fails, it will raise an exception.
  56.     * @param string $key the key of the localized string
  57.     * @param array $args arguments to apply to the localized string with sprintf
  58.     * @param string $locale  the lang code. if null, use the default language
  59.     * @param string $charset the charset code. if null, use the default charset
  60.     * @return string the localized string
  61.     */
  62.     static function get ($key$args=null$locale=null$charset=null{
  63.         global $gJConfig;
  64.         try {
  65.             $file new jSelectorLoc($key$locale$charset);
  66.         }
  67.         catch(jExceptionSelector $e{
  68.             if ($e->getCode(== 12throw $e;
  69.             if ($locale === null)  $locale $gJConfig->locale;
  70.             if ($charset === null$charset $gJConfig->charset;
  71.             throw new Exception('(200)The given locale key "'.$key
  72.                                 .'" is invalid (for charset '.$charset
  73.                                 .', lang '.$locale.')');
  74.         }
  75.  
  76.         $locale $file->locale;
  77.         $keySelector $file->module.'~'.$file->fileKey;
  78.         if (!isset (self::$bundles[$keySelector][$locale])) {
  79.             self::$bundles[$keySelector][$locale=  new jBundle ($file$locale);
  80.         }
  81.         $bundle self::$bundles[$keySelector][$locale];
  82.  
  83.         //try to get the message from the bundle.
  84.         $string $bundle->get ($file->messageKey$file->charset);
  85.         if ($string === null{
  86.             //if the message was not found, we're gonna
  87.             //use the default language and country.
  88.             if ($locale == $gJConfig->locale{
  89.                 throw new Exception('(210)The given locale key "'.$file->toString().'" does not exists in the default lang for the '.$file->charset.' charset');
  90.             }
  91.             return jLocale::get ($key$args$gJConfig->locale);
  92.         }
  93.         else {
  94.             //here, we know the message
  95.             if ($args !== null && $args !== array()) {
  96.                 $string call_user_func_array('sprintf'array_merge (array ($string)is_array ($args$args array ($args)));
  97.             }
  98.             return $string;
  99.         }
  100.     }
  101. }

Documentation generated on Thu, 22 Mar 2012 22:16:26 +0100 by phpDocumentor 1.4.3