2014-01-27 64 views
0

如何更新中的translatation語言環境Module.php? 我已經試過這樣:在module.php中添加/更新translatation語言環境

$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', 
     ), 
    ), 
), 

我試圖評論翻譯文件路徑,但STIL它顯示EN_US文本。有什麼建議麼?

+0

也許這是因爲使用了回退語言環境。您確定,您將該文本翻譯爲'de_DE'語言環境嗎? – lku

+0

100%肯定。我也檢查了備用語言環境。它只適用於setLocale。 –

+0

是正確的路徑? (如果您的模塊位於/modules/YOURMODULE/Module.php中,則指向/ modules/language)。如果它是正確的,並且文件名稱正確(de_DE.mo),那麼代碼似乎是完美的。這可能是因爲你沒有在正確的地方使用它。你有哪些代碼?在自舉?大概如果你在發送之後,並在渲染之前,它會工作。我只是說,因爲我用它來做派遣活動。 –

回答

0

要在分配操作後但在呈現視圖之前更改區域設置,請將函數附加到分派事件。在你的bootstrap你可以這樣做:

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); 


    }