-1

我从 Zend Translate 得到一个丑陋的例外:

致命错误:在 C:\www\libraries\ZendFramework-1.10.5-minimal\library\Zend\Translate\Adapter\Ini.php:54 中未捕获异常 'Zend_Translate_Exception' 并带有消息 'Ini file 'Array' not found'

应用程序.ini

resources.translate.registry_key = "Zend_Translate"
resources.translate.adapter = "ini"
resources.translate.data.directory = APPLICATION_PATH "/languages"
resources.translate.options.scan = "目录"
resources.translate.locale = "en "

目录结构

application\languages\
application\languages\en\component1.ini
application\languages\en\component2.ini
application\languages\el\component1.ini
application\languages\el\component2.ini

罪魁祸首 - Zend\Translate\Adapter\Ini.php

protected function _loadTranslationData($data, $locale, array $options = array()) {  
  $this->_data = array();  

  if (!file_exists($data)) {  
      require_once 'Zend/Translate/Exception.php';  
      throw new Zend_Translate_Exception("Ini file '".$data."' not found");  
  }
}

此时 var_dump($data) 返回 *

array(1) { 
   ["directory"] =>string(45) "C:\www\projects\helloworld\application/languages" 
}*  

我究竟做错了什么?

4

1 回答 1

2

只是因为您的 $data 是“数组”,但应该是包含文件名的“字符串”。

为了检查文件是否存在于字符串数组中,您应该遍历该数组:

foreach ($data as $file) {
    if (!file_exists($file)) {  
         require_once 'Zend/Translate/Exception.php';  
         throw new Zend_Translate_Exception("Ini file '".$file."' not found");
    }
}
于 2011-04-13T16:44:21.230 回答