是否可以翻译部分视图?

时间:2014-05-15 20:50:21

标签: zend-framework translation

我正在使用Zend Translate翻译和本地化视图。因此,我使用像en.php和fr.php这样的数组翻译文件来设置翻译器应用范围。 现在我有例如index.phtml:

  • 英文标题
  • 英语中的Subject1
  • 英语中的Subject2

如果我想要用另一种语言翻译视图的一部分,这可能吗? index.phtml的期望结果是:

  • 英文标题
  • Sujet1 en francais
  • 英语中的Subject2

在同一视图中。 我尝试在Subject1

之前添加我的viewfile
<?php $translate =  new Zend_Translate('array', APPLICATION_PATH .'/../language/fr.php', 'fr'); ?>

<?php echo $this->translate('Subject1 in English');?>

但是应用程序范围的翻译否决了。是否有可能在一个视图中从一个翻译改为另一个翻译,我该怎么做?

1 个答案:

答案 0 :(得分:3)

它看起来比它简单。只需翻译使用您的新翻译:

<?php $translate =  new Zend_Translate('array', APPLICATION_PATH .'/../language/fr.php', 'fr'); ?>

<?php echo $this->translate('SUBJECT1');?>//this will be in English
<?php echo $translate->translate('SUBJECT1');?>//this will be in French

<?php echo $translate->_('SUBJECT1');?>//same as above, just shorter

您还可以尝试一些更永久的解决方案,也不需要您更改标准的翻译方式:

<?= $this->translate('SUBJECT');?> //this will be in standard language

<?php
$old = $this->translate()->getTranslator(); //save current translator
$this->translate()->setTranslator($newTranslator); //set new translator
?>

<?= $this->translate('SUBJECT');?> //this will be in new language

$this->translate()->setTranslator($old); //restore original translator

<?= $this->translate('SUBJECT');?> //this again will be in original language