2015-10-06 93 views
0

我有用不同語言運行的應用程序。自定義標籤,標題$this->translate('message')可以完美解決任何問題。我只是在翻譯zend錯誤消息表單時遇到問題。這是我在module.config.php中添加的內容。任何人都可以幫助我以不同語言顯示錯誤消息表單。翻譯Zend表單驗證錯誤消息?

'translator' => array(
    'locale' => 'pl', 
    'translation_file_patterns' => array(
     array(
      'type'  => 'gettext', 
      'base_dir' => __DIR__ . '/../language', 
      'pattern' => '%s.mo', 
     ), 
     array(
      'type' => 'phpArray', 
      'base_dir' => 'vendor/zendframework/zend-i18n-resources/languages', 
      'pattern' => '%s/Zend_Captcha.php', 
      'text_domain' => 'formvalidation', 
     ), 
     array(
      'type' => 'phpArray', 
      'base_dir' => 'vendor/zendframework/zend-i18n-resources/languages', 
      'pattern' => '%s/Zend_Validate.php', 
      'text_domain' => 'formvalidation', 
     ), 
    ), 
), 

回答

0

這就是我在getInputFilter窗體函數中做到的。通過這種方式,我可以檢索Poedit中的字符串並進行翻譯:

public function getInputFilter() { 
if (!$this->filter) { 
    $inputFilter = new InputFilter(); 
    $factory = new InputFactory(); 

    $inputFilter->add($factory->createInput(array(
     'name' => 'email', 
     'filters' => array(
      array(
       'name' => 'StripTags' 
       ), 
      array(
       'name' => 'StringTrim' 
       ) 
      ), 
     'validators' => array(
      array(
       'name' => 'EmailAddress', 
       'options' => array(
        'messages' => array(
         'emailAddressInvalidFormat' => _('Email address format is not invalid') 
         ) 
        ) 
       ), 
      array(
       'name' => 'NotEmpty', 
       'options' => array(
        'messages' => array(
         'isEmpty' => _('Email address is required') 
         ) 
        ) 
       ), 
      array(
       'name' => 'StringLength', 
       'options' => array(
        'min'=>6, 
        'max'=>128, 
        'messages' => array(
         \Zend\Validator\StringLength::TOO_LONG => _('Invalid length for this field') 
         ) 
        ) 
       ) 
      ) 
     ))); 
     $this->filter = $inputFilter; 
} 
return $this->filter; 
}