0

Я работаю с ZF2, и я пользуюсь переводчиком. В конфигурации моего приложения я добавил переводчика на фабрики service_manager, поэтому он будет использоваться помощниками ZF2.Формы перевода ZF

Это как мой переводчик конфигурация выглядит следующим образом:

'translator' => array(
    'locale' => 'nl_NL', 
    'translation_file_patterns' => array(
     array(
      'type' => 'gettext', 
      'base_dir' => __DIR__ . '/../language', 
      'pattern' => '%s.mo', 
     ), 
    ), 
), 

В module.php файл моего приложения, у меня есть следующий фрагмент кода в моем методе onBootstrap:

/** 
* Magic to determine the right locale to be used. 
* 
* Check cookie 
* Check GET parameter 
* Check HOST (application can be used from several domain names) 
*/ 

$translator = $serviceManager->get('translator'); 

// We have to change the current locale if $locale is not null. 
if (!is_null($locale)) {   
    $translator->setLocale($locale); 

    // The translate helper of the view has some problems with what we're doing. 
    // So we'll manually add the translator with the correct locale to the view helper. 
    $serviceManager->get('viewhelpermanager')->get('translate')->setTranslator($translator); 
} 

As вы можете видеть, у меня уже были некоторые проблемы из-за модификации локали в методе onBootstrap.

Теперь есть две вещи, которые могут мне помочь: - Помогите мне найти способ повторного ввода правильного переводчика в хелпер формы; - Помогите мне найти способ сделать это, как нравится ZF2, или это должно быть сделано (мои поиски не привели к решению).

Надеюсь, вы, ребята, можете мне помочь!

ответ

1

Он должен работать аналогично для вспомогательного элемента формы.

$serviceManager->get('ViewHelperManager')->get('form')->setTranslator($translator); 

EDIT

И использовать MvcTranslator службу вместо translator.

if (!is_null($locale)) { 
    $translator = $serviceManager->get('MvcTranslator'); 
    $translator->setLocale($locale); 
    // ... 
} 

Если вы сделаете это, вы не должны даже нужны setTranslator() звонки.

+0

Unfortunatly это не работает .. –

+0

Вы должны попытаться использовать 'службу MvcTranslator' вместо' translator'. – jchampion

+0

Если я это сделаю: $ serviceManager-> get ('MvcTranslator') -> setLocale ($ locale); $ ServiceManager-> Get ('переводчик') -> Setlocale ($ локали); то это работает ... Это то, что вы имеете в виду? Потому что теперь мне нужно сделать $ serviceManager-> get ('MvcTranslator') -> setCache ($ cache); $ serviceManager-> get ('translator') -> setCache(). –

0

использование MvcTranslator вместо translator:

$translator = $serviceManager->get('MvcTranslator'); 
$translator->setLocale($locale); 
$serviceManager->get('ViewHelperManager') 
       ->get('translate')->setTranslator($translator); 

 Смежные вопросы

  • Нет связанных вопросов^_^