Quellcode durchsuchen

[ZF-10051] Zend_Translate:

- added logPriority option

git-svn-id: http://framework.zend.com/svn/framework/standard/trunk@22725 44c647ce-9c0f-0410-b52a-842ac1e357ba
thomas vor 15 Jahren
Ursprung
Commit
9d39775cde

+ 41 - 0
documentation/manual/en/module_specs/Zend_Translate-Additional.xml

@@ -182,6 +182,16 @@ $translate->addTranslation(
                     </row>
 
                     <row>
+                        <entry>logPriority</entry>
+                        <entry>all</entry>
+                        <entry>The priority which is used to write the message into the log</entry>
+
+                        <entry>
+                            <emphasis>5</emphasis>
+                        </entry>
+                    </row>
+
+                    <row>
                         <entry>logUntranslated</entry>
                         <entry>all</entry>
 
@@ -1158,6 +1168,37 @@ $translate->setOptions(
 $translate->translate('unknown string');
 ]]></programlisting>
         </example>
+
+        <para>
+            Additionally you are also able to change the priority which is used to write the message
+            into the log. Per default the priority <emphasis>Zend_Log::NOTICE</emphasis> is used.
+            It equals with <emphasis>5</emphasis>. When you want to change the priority you can use
+            any of <classname>Zend_Log</classname>'s priorities. See the following example:
+        </para>
+
+        <example id="zend.translate.additional.logging.example3">
+            <title>Self defined log priority</title>
+
+            <programlisting language="php"><![CDATA[
+// Create a log instance
+$writer = new Zend_Log_Writer_Stream('/path/to/file.log');
+$log    = new Zend_Log($writer);
+
+$translate = new Zend_Translate(
+    array(
+        'adapter' => 'gettext',
+        'content' => $path,
+        'locale'  => 'de',
+        'log'             => $log,
+        'logMessage'      => "Missing '%message%' within locale '%locale%'",
+        'logPriority'     => Zend_Log::ALERT,
+        'logUntranslated' => true
+    )
+);
+
+$translate->translate('unknown string');
+]]></programlisting>
+        </example>
     </sect2>
 
     <sect2 id="zend.translate.additional.sourcedata">

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

@@ -101,6 +101,7 @@ abstract class Zend_Translate_Adapter {
         'locale'          => 'auto',
         'log'             => null,
         'logMessage'      => "Untranslated message within '%locale%': %message%",
+        'logPriority'     => 5,
         'logUntranslated' => false,
         'reload'          => false,
         'route'           => null,
@@ -423,7 +424,7 @@ abstract class Zend_Translate_Adapter {
             if (!isset($this->_translate[$temp[0]]) and !isset($this->_translate[$locale])) {
                 if (!$this->_options['disableNotices']) {
                     if ($this->_options['log']) {
-                        $this->_options['log']->notice("The language '{$locale}' has to be added before it can be used.");
+                        $this->_options['log']->log("The language '{$locale}' has to be added before it can be used.", $this->_options['logPriority']);
                     } else {
                         trigger_error("The language '{$locale}' has to be added before it can be used.", E_USER_NOTICE);
                     }
@@ -436,7 +437,7 @@ abstract class Zend_Translate_Adapter {
         if (empty($this->_translate[$locale])) {
             if (!$this->_options['disableNotices']) {
                 if ($this->_options['log']) {
-                    $this->_options['log']->notice("No translation for the language '{$locale}' available.");
+                    $this->_options['log']->log("No translation for the language '{$locale}' available.", $this->_options['logPriority']);
                 } else {
                     trigger_error("No translation for the language '{$locale}' available.", E_USER_NOTICE);
                 }
@@ -817,7 +818,7 @@ abstract class Zend_Translate_Adapter {
             $message = str_replace('%message%', $message, $this->_options['logMessage']);
             $message = str_replace('%locale%', $locale, $message);
             if ($this->_options['log']) {
-                $this->_options['log']->notice($message);
+                $this->_options['log']->log($message, $this->_options['logPriority']);
             } else {
                 trigger_error($message, E_USER_NOTICE);
             }

+ 32 - 0
tests/Zend/TranslateTest.php

@@ -866,6 +866,38 @@ class Zend_TranslateTest extends PHPUnit_Framework_TestCase
     }
 
     /**
+     * @ZF-10051
+     */
+    public function testSettingLogPriorityForLog()
+    {
+        $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 = new Zend_Translate(array(
+            'adapter'     => Zend_Translate::AN_CSV,
+            'content'     => dirname(__FILE__) . '/Translate/Adapter/_files',
+            'locale'      => 'en',
+            'delimiter'   => ',',
+            'logPriority' => 3,
+            'log'         => $log)
+        );
+
+        $lang->setLocale('ru');
+
+        rewind($stream);
+        $this->assertContains('ERR (3)', stream_get_contents($stream));
+
+        $lang->setOptions(array('logPriority' => 1));
+        $lang->setLocale('sv');
+
+        rewind($stream);
+        $this->assertContains('ALERT (1)', stream_get_contents($stream));
+    }
+
+    /**
      * Ignores a raised PHP error when in effect, but throws a flag to indicate an error occurred
      *
      * @param  integer $errno