0

我正在使用 Zend Framework 2 开发一个应用程序,我需要翻译我在表单中创建的单选按钮(“显示”、“隐藏”)的文本:

    //within the Form

    public function addRadioButtons ()
        {
            $isPublicRadioButtons = new Element\Radio('isPublic');
            $isPublicRadioButtons->setAttribute('id', 'isPublic')
                    ->setAttribute('value', '0')
                    ->setValueOptions(array(
                        '0' => 'Show',
                        '1' => 'Hide',
                    ));

            $this->add($isPublicRadioButtons);
        }

我必须在视图侧做什么才能翻译它们?

我知道要翻译视图,我需要使用 $this→translate() 视图助手。所以在视图中我将不得不以某种方式调用单选按钮的文本..

//Whithin the view

echo $this->translate($someHowCallTheTextOfRadioButton('isPublic') , $textDomain, $locale);
4

3 回答 3

0

你可以让你的表单实现 TranslatorAwareInterface,如果你使用 PHP 5.4+,让它使用 TranslatorAwareTrait(否则你只需要自己实现接口)。您现在可以将翻译器实例注入到您的表单中,例如在表单的工厂中。然后您可以按如下方式翻译标签:

//within the Form

public function addRadioButtons ()
    {
        $isPublicRadioButtons = new Element\Radio('isPublic');
        $isPublicRadioButtons->setAttribute('id', 'isPublic')
                ->setAttribute('value', '0')
                ->setValueOptions(array(
                    '0' => $this->getTranslator()->translate('Show'),
                    '1' => $this->getTranslator()->translate('Hide'),
                ));

        $this->add($isPublicRadioButtons);
    }
于 2013-04-04T14:54:05.017 回答
0

查看FormLabel部分以了解如何在 zend 框架 2 中翻译标签。我认为要记住的最重要的事情是:

如果您在服务管理器中的键“翻译器”下有翻译器,则视图助手插件管理器将自动将翻译器附加到 FormLabel 视图助手。更多信息参见 Zend\View\HelperPluginManager::injectTranslator()。

如何正确设置ZendSkeletonApplication中的翻译器

于 2012-12-18T19:15:12.293 回答
0

在您看来,您可以执行以下操作:

$this->formRadio()->setTranslatorTextDomain('textdomainhere');

于 2012-12-20T15:22:16.753 回答