1<?php 2/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */ 3 4/** 5 * Contains the Translation2_Decorator_UTF8 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: UTF8.php 305985 2010-12-05 22:55:33Z clockwerx $ 36 * @link http://pear.php.net/package/Translation2 37 */ 38 39/** 40 * Load Translation2 decorator base class 41 */ 42require_once 'Translation2/Decorator.php'; 43 44/** 45 * Decorator to convert UTF-8 strings to ISO-8859-1 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: UTF8.php 305985 2010-12-05 22:55:33Z clockwerx $ 53 * @link http://pear.php.net/package/Translation2 54 */ 55class Translation2_Decorator_UTF8 extends Translation2_Decorator 56{ 57 // {{{ get() 58 59 /** 60 * Get translated string 61 * 62 * Decode the UTF-8 string to ISO-8859-1 63 * 64 * @param string $stringID string ID 65 * @param string $pageID page/group ID 66 * @param string $langID language ID 67 * @param string $defaultText Text to display when the strings in both 68 * the default and the fallback lang are empty 69 * 70 * @return string 71 */ 72 function get($stringID, $pageID = TRANSLATION2_DEFAULT_PAGEID, $langID = null, $defaultText = null) 73 { 74 $str = $this->translation2->get($stringID, $pageID, $langID); 75 if (PEAR::isError($str)) { 76 return $str; 77 } 78 if (!empty($str)) { 79 $str = utf8_decode($str); //decodes an UTF-8 string to ISO-8859-1 80 } 81 return $str; 82 } 83 84 // }}} 85 // {{{ getPage() 86 87 /** 88 * Same as getRawPage, but resort to fallback language and 89 * replace parameters when needed 90 * 91 * Decode each UTF-8 string in the group to ISO-8859-1 92 * 93 * @param string $pageID page/group ID 94 * @param string $langID language ID 95 * 96 * @return array 97 */ 98 function getPage($pageID = TRANSLATION2_DEFAULT_PAGEID, $langID = null) 99 { 100 $data = $this->translation2->getPage($pageID, $langID); 101 if (PEAR::isError($data)) { 102 return $data; 103 } 104 foreach ($data as $key => $val) { 105 if (!empty($val)) { 106 $data[$key] = utf8_decode($val); 107 } 108 } 109 return $data; 110 } 111 112 // }}} 113} 114?>