Onun yürekten kimse ben solüsyonu ve kendi soruyu yanıtlayan nihayet değilim işte benim soruya cevap olduğunu hayal kırıklığı.
Varsayılan olarak bir dilden diğerine metin çevirmek için PHPTAL tarafından belirlenen hiçbir çevirmen yoktur. Yani kendi başınıza yapmak ettik. Bunun için aşağıda vereceğim bazı adımlar vardır. . .
Step 1., yeni bir php dosyası (örneğin, MyTranslator.php) oluşturun ve PHPTAL_MyTranslator, örneğin yeni bir sınıf oluşturmak ve bunu PHPTAL klasörünün içinde saklayın. Bu sınıf arabirimini uygulayan PHPTAL_TranslationService. Orada beş fonksiyonları bu arayüzde ama bizim endişe fonksiyon sadece translate olduğunu. Yani sadece fonksiyonların geri kalanı için bir deklarasyon eklemek ve tercüme fonksiyonu için kod yazmak. Ben yazılı ve benim durumumda kullandım sınıftır:
class PHPTAL_MyTranslator implements PHPTAL_TranslationService {
/**
* current execution context
*/
protected $_context = null;
/**
* @param string (name of the language)
* @return string (language you've just set)
*
* This method sets translation language.
* Name of the language is a dir name where you keep your translation files
*/
public function setLanguage() {
}
public function __construct( $context ) {
$this->_context = $context;
}
/**
* @param string (translation file name)
* @return void
*
* You can separate translations in several files, and use only when needed.
* Use this method to specify witch translation file you want to
* use for current controller.
*/
public function useDomain( $domain ) {
}
/**
* Set an interpolation var.
* Replace all ${key}s with values in translated strings.
*/
public function setVar( $key, $value ) {
}
/**
* Translate a text and interpolate variables.
*/
public function translate( $key, $htmlescape=true ) {
$value = $key;
if( empty( $value ) ) {
return $key;
}
while( preg_match( '/\${(.*?)\}/sm', $value, $m ) ) {
list( $src, $var ) = $m;
if( !array_key_exists( $var, $this->_context ) ) {
$err = sprintf( 'Interpolation error, var "%s" not set', $var );
throw new Exception( $err );
}
$value = str_replace( $src, $this->_context->$var, $value );
}
return gettext( $value );
}
/**
* Not implemented yet, default encoding is used
*/
public function setEncoding( $encoding ) {
}
}
Code>
Code>
Step 2. Şimdi PHPTAL.php dosyasını açın ve PHPTAL sınıfının kurucusunu değiştirme. Aşağıda gösterildiği gibi, bu işlev için bir satır ekleyin. . . . .
Before
public function __construct($path=false)
{
$this->_path = $path;
$this->_globalContext = new StdClass();
$this->_context = new PHPTAL_Context();
$this->_context->setGlobal($this->_globalContext);
if (function_exists('sys_get_temp_dir')) {
............
Code>
Code>
After
public function __construct($path=false)
{
$this->_path = $path;
$this->_globalContext = new StdClass();
$this->_context = new PHPTAL_Context();
$this->_context->setGlobal($this->_globalContext);
//Set translator here
$this->setTranslator( new PHPTAL_MyTranslator( $this->_context ) );
if (function_exists('sys_get_temp_dir')) {
.............
Code>
Code>
Bu iki basit adım için i18n:attributes gibi i18n:translate düzgün çalışması için bağlıyor yapacaktır.
Şerefe ...