传递翻译对象的设计模式?对于PHP

时间:2009-10-07 18:36:17

标签: model-view-controller design-patterns zend-framework translation

我正在更新一个基于Zend MVC框架的多语言php应用程序,我正在尝试找出将翻译对象传递给不同类/层的最佳方法。

我的大部分翻译都是在View级别完成的,但在某些情况下我需要从自定义库中返回状态消息。

我可以为库创建一个属性并设置翻译器,但我想知道是否有更好的方法将翻译器对象集成到现有的应用程序中?

5 个答案:

答案 0 :(得分:2)

将用户的语言保存在Memento中,并通过程序逻辑传递,当您需要进行翻译时,使用它来识别语言。

答案 1 :(得分:2)

如果使用Zend_Translate,最好使用寄存器。

Zend_Registry::set('Zend_Translate', $translate);

这样所有类都可以自动找到它(Zend_Form,Zend_Validate,...)

答案 2 :(得分:0)

您始终可以在bootstrap.php中实例化转换器,以便所有类都可以作为全局使用。我就是这样做的,因为你可能需要在任何地方使用它。它并不优雅,但它使您无需在类需要抛出异常或返回错误消息的地方添加代码。

答案 3 :(得分:0)

如果您没有那么多控制器设置,您是否可以扩展基本控制器并在那里实例化翻译器?它应该可以在整个系统中使用。

像这样延伸:

<?php
class BaseController extends Zend_Controller_Action
{
  public function init()
  {
    //setup translation object
  }
}
?>

答案 4 :(得分:0)

您可能需要考虑使用依赖项注入器容器,其中转换程序是您传递给所需对象的条目,而无需手动构造对象。这样您就可以轻松地测试和制作更高质量(和可测试)的代码

请在此处查看其他问题 How to use dependency injection in Zend Framework?

或关于将ZF 2 DI插入ZF1的文章 http://adam.lundrigan.ca/2011/06/using-zenddi-in-zf1/