Zend Framework:模型中的可翻译内容

时间:2011-02-02 09:03:28

标签: model-view-controller zend-framework internationalization model

我的应用程序中有一个模型负责创建初始数据库结构(一种安装程序)。我最近添加了可翻译内容(使用gettext)。我想使初始内容语言依赖。

在模型中使用可翻译内容的最佳方法是什么?有没有办法在模型中使用view->translate()函数,或者我是否需要从外部传递已翻译的字符串,例如作为参数?

1 个答案:

答案 0 :(得分:15)

假设您已经使用了靴子Zend_Locale和Zend_Translate,并且它们保存在Zend_Registry中(默认情况下它们分别位于键'Zend_Locale'和'Zend_Translate'下的注册表中),您可以在模型中访问translate()方法如下:

    /*@var $translator Zend_Translate */
    $translator = Zend_Registry::get('Zend_Translate');

    /*@var $adapter Zend_Translate_Adapter */
    $adapter = $translator->getAdapter();

    var_dump($adapter->translate('Text to be translated'));

上述示例中的翻译将根据您的Zend_Locale执行。

在您的模型中翻译数据的最佳方法是什么?我不确定。如果你想让你的控制器甚至模型的翻译“隐形”或“透明”,你可以重载Zend_DB_Table_Row的神奇方法__get和__set,并在那里嵌入translate()方法。