瀏覽代碼

ZF-10352: the translate resource should use the same key as the Zend_Translate options

git-svn-id: http://framework.zend.com/svn/framework/standard/trunk@22968 44c647ce-9c0f-0410-b52a-842ac1e357ba
intiilapa 15 年之前
父節點
當前提交
90130e89b7

+ 1 - 1
documentation/manual/en/module_specs/Zend_Application-AvailableResources-Translate.xml

@@ -71,7 +71,7 @@
 
         <programlisting language="ini"><![CDATA[
 resources.translate.adapter = tmx
-resources.translate.data = APPLICATION_PATH "/../data/locales"
+resources.translate.content = APPLICATION_PATH "/../data/locales"
 resources.translate.scan = Zend_Translate::LOCALE_DIRECTORY
 
 ; Optionally you can also the cache template to use for caching:

+ 2 - 2
documentation/manual/fr/module_specs/Zend_Application-AvailableResources-Translate.xml

@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!-- EN-Revision:  -->
+<!-- EN-Revision: 22966 -->
 <!-- Reviewed: no -->
 <sect2 id="zend.application.available-resources.translate">
     <title>Zend_Application_Resource_Translate</title>
@@ -75,7 +75,7 @@
 
         <programlisting language="ini"><![CDATA[
 resources.translate.adapter = tmx
-resources.translate.data = APPLICATION_PATH "/../data/locales"
+resources.translate.content = APPLICATION_PATH "/../data/locales"
 resources.translate.scan = Zend_Translate::LOCALE_DIRECTORY
 
 ; Optionnellement, on peut utiliser un modèle du gestionnaire de cache :

+ 6 - 1
library/Zend/Application/Resource/Translate.php

@@ -67,9 +67,14 @@ class Zend_Application_Resource_Translate extends Zend_Application_Resource_Reso
         if (null === $this->_translate) {
             $options = $this->getOptions();
 
-            if (!isset($options['data'])) {
+            if (!isset($options['content']) && !isset($options['data'])) {
                 require_once 'Zend/Application/Resource/Exception.php';
                 throw new Zend_Application_Resource_Exception('No translation source data provided.');
+            } else if (array_key_exists('content', $options) && array_key_exists('data', $options)) {
+                require_once 'Zend/Application/Resource/Exception.php';
+                throw new Zend_Application_Resource_Exception(
+                    'Conflict on translation source data: choose only one key between content and data.'
+                );
             }
 
             if (empty($options['adapter'])) {

+ 44 - 0
tests/Zend/Application/Resource/TranslateTest.php

@@ -179,6 +179,50 @@ class Zend_Application_Resource_TranslateTest extends PHPUnit_Framework_TestCase
         $this->assertType('Zend_Cache_Core', Zend_Translate::getCache());
         Zend_Translate::clearCache();
     }
+
+    /**
+     * @group ZF-10352
+     */
+    public function testToUseTheSameKeyAsTheOptionsZendTranslate()
+    {
+        $options = array(
+            'adapter' => 'array',
+            'content' => array(
+                'm1' => 'message1',
+                'm2' => 'message2'
+            ),
+            'locale' => 'auto'
+        );
+
+        $resource = new Zend_Application_Resource_Translate($options);
+        $translator = $resource->init();
+
+        $this->assertEquals(new Zend_Translate($options), $translator);
+        $this->assertEquals('message2', $translator->_('m2'));
+    }
+
+    /**
+     * @group ZF-10352
+     * @expectedException Zend_Application_Resource_Exception
+     */
+    public function testToUseTheTwoKeysContentAndDataShouldThrowsException()
+    {
+        $options = array(
+            'adapter' => 'array',
+            'content' => array(
+                'm1' => 'message1',
+                'm2' => 'message2'
+            ),
+            'data' => array(
+                'm3' => 'message3',
+                'm4' => 'message4'
+            ),
+            'locale' => 'auto'
+        );
+
+        $resource = new Zend_Application_Resource_Translate($options);
+        $translator = $resource->init();
+    }
 }
 
 if (PHPUnit_MAIN_METHOD == 'Zend_Application_Resource_TranslateTest::main') {