zend-framework – 在多模式下使用Zend_Translate时,是否可以将变量注入文本中

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了zend-framework – 在多模式下使用Zend_Translate时,是否可以将变量注入文本中脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试使用Zend_translate,我必须将一个变量值注入到结果字符串中,并使字符串尊重复数形式.在视图脚本中使用常规(非复数)视图助手$this-> translate()我可以将一个变量注入到字符串中:

$this->translate('You have %1$s questions to answer',3) 
// would result in "You have 3 questions to answer" being output

但是,当使用Zend所谓的复数符号的现代方式时,我该怎么做呢?显然$this-> translate()视图帮助器本身不支持复数表示法,而是我必须调用

$this->translate()->getTranslator()->translate( 
    array('You have %1$s question to answer','You have %1$s questions to answer',$someNr ) 
)

但是在那一点上我只有带有变量占位符的复数字符串,我没有带有注入值的字符串.换句话说,我得到的是:

我想要的是

所以问题是,Zend_Translate是否支持这种使用复数的方式?即将变量值注入复数字符串?或者我必须在复数形式之前和之后拆分字符串,单独翻译然后在输出处连接?

解决方法

在控制器(或其他地方):

<?PHP
        $translate = new Zend_Translate (array (
            'adapter' => 'Zend_Translate_Adapter_Array','content' => array (
                'test' => 'You have %1$s %2$s to answer'
            ),'locale' => 'en'
        ));

在视图中:

<?PHP
$x = 1;
echo $this->translate ('test',$x,$this->translate (array (
    'question','questions',$x 
)));
?>

但是你可能想看看http://framework.zend.com/manual/en/zend.translate.plurals.html以更智能的方式来做到这一点.

脚本宝典总结

以上是脚本宝典为你收集整理的zend-framework – 在多模式下使用Zend_Translate时,是否可以将变量注入文本中全部内容,希望文章能够帮你解决zend-framework – 在多模式下使用Zend_Translate时,是否可以将变量注入文本中所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。