在module.php中添加/更新翻译区域设置
如何更新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
$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函数中有这个代码。还有“发送后,呈现前”,你能再解释一下吗?我写了一个答案,所以我可以包含一些代码