Procházet zdrojové kódy

[ZF-7508] Zend_Translate:

- no log when checking for translation

git-svn-id: http://framework.zend.com/svn/framework/standard/trunk@17784 44c647ce-9c0f-0410-b52a-842ac1e357ba
thomas před 16 roky
rodič
revize
67f29f991b
2 změnil soubory, kde provedl 24 přidání a 3 odebrání
  1. 3 3
      library/Zend/Translate/Adapter.php
  2. 21 0
      tests/Zend/TranslateTest.php

+ 3 - 3
library/Zend/Translate/Adapter.php

@@ -479,7 +479,9 @@ abstract class Zend_Translate_Adapter {
                 $this->_translate[$key] = array();
             }
 
-            $this->_translate[$key] = $temp[$key] + $this->_translate[$key];
+            if (array_key_exists($key, $temp) && is_array($temp[$key])) {
+                $this->_translate[$key] = $temp[$key] + $this->_translate[$key];
+            }
         }
 
         if ($this->_automatic === true) {
@@ -671,7 +673,6 @@ abstract class Zend_Translate_Adapter {
         if (!Zend_Locale::isLocale($locale, true, false)) {
             if (!Zend_Locale::isLocale($locale, false, false)) {
                 // language does not exist, return original string
-                $this->_log($messageId, $locale);
                 return false;
             }
 
@@ -693,7 +694,6 @@ abstract class Zend_Translate_Adapter {
         }
 
         // No translation found, return original
-        $this->_log($messageId, $locale);
         return false;
     }
 

+ 21 - 0
tests/Zend/TranslateTest.php

@@ -575,6 +575,27 @@ class Zend_TranslateTest extends PHPUnit_Framework_TestCase
     }
 
     /**
+     * ZF-7508
+     */
+    public function testDontLogUntranslatedMessageWithIsTranslated()
+    {
+        $lang = new Zend_Translate(Zend_Translate::AN_CSV, dirname(__FILE__) . '/Translate/Adapter/_files', 'en', array('delimiter' => ','));
+        $this->assertFalse($lang->isTranslated('ignored'));
+
+        $stream = fopen('php://memory', 'w+');
+        require_once 'Zend/Log/Writer/Stream.php';
+        $writer = new Zend_Log_Writer_Stream($stream);
+        require_once 'Zend/Log.php';
+        $log    = new Zend_Log($writer);
+
+        $lang->setOptions(array('logUntranslated' => true, 'log' => $log));
+        $this->assertFalse($lang->isTranslated('ignored'));
+
+        rewind($stream);
+        $this->assertNotContains('ignored', stream_get_contents($stream));
+    }
+
+    /**
      * Ignores a raised PHP error when in effect, but throws a flag to indicate an error occurred
      *
      * @param  integer $errno