在module.php中添加/更新翻译区域设置

在module.php中添加/更新翻译区域设置,php,zend-framework2,Php,Zend Framework2,如何更新Module.php中的翻译区域设置? 我试过这个: $locale = 'de_DE';//will be generated dynamically $translator = $e->getApplication()->getServiceManager()->get('translator'); $translator->setLocale($locale)->setFallbackLocale('en_US'); 在module

如何更新Module.php中的翻译区域设置? 我试过这个:

$locale = 'de_DE';//will be generated dynamically
$translator = $e->getApplication()->getServiceManager()->get('translator');         
$translator->setLocale($locale)->setFallbackLocale('en_US');
在module.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',
        ),
    ),
),

我试过对翻译文件路径进行注释,但它仍然显示en_US文本。有什么建议吗?

要在发布操作后但在呈现视图之前更改区域设置,请将函数附加到调度事件。在引导过程中,您可以执行以下操作:

    public function onBootstrap(MvcEvent $e) {

    $sm = $e->getApplication ()->getServiceManager ();

    $em = $e->getApplication ()->getEventManager ();

     $em->attach ( MvcEvent::EVENT_DISPATCH, function ($e) use($sm) {


                 $locale = 'de_DE';//will be generated dynamically
                 $translator = $sm->get('translator');         
                 $translator->setLocale($locale)->setFallbackLocale('en_US');



             }, - 100 );


     }

可能是因为使用了备用区域设置。你确定,你已经把文本翻译成语言环境了吗?是的,100%确定。我还检查了备用区域设置。它只针对setLocale。路径正确吗?(如果您的模块位于/modules/YOURMODULE/module.php中,则指向/modules/language)。如果它是正确的,并且文件名是ok(de_de.mo),那么代码似乎是完美的。可能是因为您没有在正确的位置使用它。你哪里有密码?在引导程序中?如果您在分派之后和渲染之前执行此操作,它可能会工作。我只是说,因为我在分派事件中使用它。路径是正确的。我在onBootstrap函数中有这个代码。还有“发送后,呈现前”,你能再解释一下吗?我写了一个答案,所以我可以包含一些代码