ZF2翻译器在控制器中不起作用?

Osk*_*kar 5 zend-framework2

我试图在控制器中进行翻译ServiceLocator,但这不是翻译,我在stackoverflow中尝试了许多索引但是没有成功.我的系统使用多种语言,我的目标是在视图,控制器,表单和过滤器中使用transtor.在我看来,翻译工作正在进行中.任何消化和帮助将不胜感激.

不在控制器中工作:

$this->getServiceLocator()->get('translator')->translate('my text',$myLocale);
Run Code Online (Sandbox Code Playgroud)

我的应用程序mudole.config.php:

'service_manager' => array(
     'abstract_factories' => array(
         'Zend\Cache\Service\StorageCacheAbstractServiceFactory',
         'Zend\Log\LoggerAbstractServiceFactory',
     ),
     'factories' => array(
         'translator' => 'Zend\I18n\Translator\TranslatorServiceFactory',
     ),
 ),
 'translator' => array(
     'locale' => 'en_US',// 'locale' => 'dk_DK',
     'translation_file_patterns' => array(
         array(

             'type'     => 'gettext',
             'base_dir' => __DIR__ . '/../language',
             'pattern'  => '%s.mo',
         ),
     ),
 ),
Run Code Online (Sandbox Code Playgroud)

我将mudole.config.php中的local更改为另一种语言,但仍未进行翻译.

Osk*_*kar 2

看来区域设置不是直接在翻译文本中设置的,而是通过 $this->getServiceLocator()->get('translator')->setLocale($locale),现在它正在翻译我的文本。

我的应用程序 mudole.config.php:

   'service_manager' => array(
         'factories' => array(
             'translator' => 'Zend\I18n\Translator\TranslatorServiceFactory',
         ),
     ),
     'translator' => array(
         'locale' => 'en_US',
         'translation_file_patterns' => array(
             array(
                 'type'     => 'gettext',
                 'base_dir' => __DIR__ . '/../language',
                 'pattern'  => '%s.mo',
             ),
         ),
     ),
Run Code Online (Sandbox Code Playgroud)

在控制器中:

$this->getServiceLocator()->get('translator')->setLocale($locale);
echo $c=$this->getServiceLocator()->get('translator')->translate('Book'); // Print(Danish): Bog
Run Code Online (Sandbox Code Playgroud)