Traductor de ZF2
Tengo dos módulos: Aplicación y StickyNotes. Necesito usar la traducción en todas las páginas.
Lo que hago:
1) A la vista:<?=$this->translate('Home');?>
2) En Application \ Module.php:
public function onBootstrap(MvcEvent $e)
{
$translator = $e->getApplication()->getServiceManager()->get('translator');
$eventManager = $e->getApplication()->getEventManager();
$moduleRouteListener = new ModuleRouteListener();
$moduleRouteListener->attach($eventManager);
$app = $e->getParam('application');
$app->getEventManager()->attach('render', array($this, 'setLayoutTitle'));
$translator->setLocale('ru_RU');
echo $translator->getLocale(); //ru_RU
}
3) En StickyNotes \ Module.php:
public function onBootstrap(MvcEvent $e)
{
$translator = $e->getApplication()->getServiceManager()->get('translator');
$translator->setLocale('ru_RU');
echo $translator->getLocale(); //ru_RU
}
4) Aplicación \ .. \ module.config.php:
'service_manager' => array(
'factories' => array(
'translator' => 'Zend\I18n\Translator\TranslatorServiceFactory',
),
),
'aliases' => array(
'translator' => 'MvcTranslator',
),
'translator' => array(
'locale' => 'en_US',
'translation_file_patterns' => array(
array(
'type' => 'gettext',
'base_dir' => __DIR__ . '/../language',
'pattern' => '%s.mo',
),
),
),
5) StickyNotes \ .. \ module.config.php mismo:
'service_manager' => array(
'factories' => array(
'translator' => 'Zend\I18n\Translator\TranslatorServiceFactory',
),
),
'aliases' => array(
'translator' => 'MvcTranslator',
),
'translator' => array(
'locale' => 'en_US',
'translation_file_patterns' => array(
array(
'type' => 'gettext',
'base_dir' => __DIR__ . '/../language',
'pattern' => '%s.mo',
),
),
),
Si lo intento$translator->getLocale();
salida 'ru_RU', pero la traducción no funciona.
Además, si cambio manualmente'locale' => 'en_US',
a'locale' => 'ru_RU',
trabajo de traducción bien. Gracias por las respuestas!